I2C를 사용하여 센서와 통신하려면 어떻게해야합니까?


29

I²C 인터페이스를 통해 디지털 센서와 통신하려면 어떻게해야합니까?

하드웨어 :
Raspberry Pi의 GPIO에서 어떤 핀을 사용할 수 있습니까?

소프트웨어 :
어떤 I²C 라이브러리를 사용할 수 있습니까?

답변:


23

RPi의 GPIO에 대한 많은 정보가 여기 있습니다 : http://elinux.org/Rpi_Low-level_peripherals

이에 따르면 I²C 용 GPIO 핀을 프로그래밍 할 수 있지만

핀 3 (SDA0) 및 핀 5 (SCL0)는 I²C 인터페이스로 사용하도록 사전 설정되어 있습니다. 따라서이 핀에 대해 보드에 1.8 킬로그램의 풀업 저항이 있습니다.

이 위키 페이지에는 다양한 언어를위한 저수준 GPIO 코드 예제도 있습니다. I²C가 실제로 무엇인지에 대한 정보가 필요하다면 여기 RPi도 고려하십시오.

특정 I²C 제어의 경우이 python 라이브러리 가 도움이 될 수 있습니다 .이 블로그 게시물 ( 코드 샘플 포함)에서 설명합니다.


I2C에 Edison Sparkfun GPIO 핀을 적용 할 수있는 가능성에 대한 의견이 있습니까?
지리학

7

이에 관한 많은 토론이 있습니다. 내 독서와 엉망으로 나를 보여주는 것은 다음과 같습니다.

  1. I2C 지원은 데비안 "squeeze"를 사용하여 기본 커널에 내장되어 있지 않습니다
  2. 커스텀 커널은 i2cspi 모듈로 컴파일해야합니다 ( GIT 트리 발췌 ).
  3. 지금까지 작성된 드라이버는 3.2 커널 이상에 대해서만 작성되었으며 보안 허점으로 인해 3.1.9 이상을 지원할 의도가 없습니다 ( Chris Boot가 드라이버에 대해 설명 )
  4. 운 좋게도, 현재 RasPi의 베타 버전 인 데비안 "wheezy"배포판에는이 드라이버가 포함되어 있습니다. 3.2 커널과 함께 제공됩니다.

2
예, 언급했듯이 표준 커널에 내장되어 있습니다. 공식 Raspbian 및 Debian wheezy 배포판입니다. 내가 쉽게 따라 여기에 몇 가지 조언을 따라 나는 / dev에 ...에서 보여주는 I2C 장치가 raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 필요한 경우 좀 더 세부 여기에있다을 : robot- electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder

좀 더 자세한 정보를 얻으려면 웹 링크가 아닌 여기에 데이터를 유지하고 이것이 오래되지 않기를 바랍니다. Wheezy 2012-09-18 이미지에서 ;에 /etc/modprobe.d/raspi-blacklist.conf대한 항목을 편집 하고 주석 처리합니다 i2c-bcm2708. 그런 다음 편집 /etc/modules하고 추가하십시오 i2c-dev. 그런 다음 재부팅하십시오. 이제 /dev/i2c-0사용하기 매우 쉬운 특수 파일 이 있어야 합니다.
damian


2

하드웨어:

Tapio에서 언급했듯이 하드웨어는 http://elinux.org/Rpi_Low-level_peripherals에 잘 설명되어 있습니다 .

소프트웨어:

Linux 사용자 공간 ( #include <linux/i2c-dev.h>) 에는 i2c-dev 헤더가 있습니다. 또한 읽을 문자가 필요합니다. 올바른 모듈을로드하면됩니다. i2c_bcm2708로우 레벨 드라이버와 i2c-dev버스에 대한 문자 결정을 생성합니다. 적용 ...

sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>

즉시로드 할 수 있습니다. 적용 ...

sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf

및 unblacklist i2c_bcm2708에서이 /etc/modprobe.d/raspi-blacklist.conf만드는 /dev/i2c-0하고 /dev/i2c-1영구적으로 표시됩니다.

이제부터는 I²C 델 마에스트로 를 사용하는 방법에 대한 힌트를 따를 수 있습니다 .

이 방법은 플랫폼에 구애받지 않기 때문에 다른 방법보다 선호합니다. linux/i2c-dev.h저수준 I²C 드라이버가있는 한 다른 장치에서도 사용할 수 있습니다 .

문안 인사

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.