Jak mogę używać I2C do komunikowania się z czujnikami?

29

Jak mogę rozmawiać z czujnikami cyfrowymi przez interfejs I²C?

Sprzęt: Z
których pinów GPIO Raspberry Pi mogę korzystać?

Oprogramowanie:
jakie biblioteki I²C są dostępne?

Alex L.
źródło

Odpowiedzi:

23

Istnieje wiele informacji o GPIO RPi tutaj: http://elinux.org/Rpi_Low-level_peripherals

Zgodnie z nim możesz zaprogramować dowolne piny GPIO dla I²C, ale:

Styki 3 (SDA0) i styki 5 (SCL0) są wstępnie ustawione do użycia jako interfejs I²C. Tak więc na płytce znajduje się rezystor podciągający 1,8 kilooma.

Ta strona wiki zawiera również przykłady kodów niskiego poziomu GPIO dla różnych języków, które powinny zacząć. Jeśli potrzebujesz odświeżenia tego, czym właściwie jest I²C, oto taki, który bierze również pod uwagę RPi.

W przypadku konkretnego sterowania I²C ta biblioteka python może być pomocna, omówiono ją w tym poście na blogu , który zawiera przykładowy kod.

Tapio
źródło
Wszelkie uwagi na temat możliwości dostosowania pinów GPIO Edison Sparkfun do I2C?
geotheory,
7

Wiele dyskusji na ten temat. Oto, co pokazuje moje czytanie i gadanie:

  1. Obsługa I2C nie jest wbudowana w domyślne jądro z „squeeze” Debiana
  2. Niestandardowe jądro będzie musiało zostać skompilowane z modułem i2cspi ( oto fragment drzewa GIT )
  3. Dotychczasowe sterowniki są przeznaczone tylko dla jądra 3.2 i późniejszych, a autor nie zamierza obsługiwać wersji 3.1.9+ ze względu na luki w zabezpieczeniach ( Chris Boot omawia sterownik )
  4. Przy odrobinie szczęścia dystrybucja „wheezy” Debiana, obecnie w wersji beta dla RasPi, będzie miała ten sterownik. Pochodzi z jądrem 3.2.
zerolagtime
źródło
2
Tak, jak wspomniałeś, jest teraz wbudowany w standardowe jądro - zarówno oficjalne dystrybucje wheezy Raspbian, jak i Debian. Postępowałem zgodnie z kilkoma radami, które są łatwe do naśladowania i mam urządzenia I2C wyświetlane w / dev ... raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 W razie potrzeby jest tu trochę więcej szczegółów: robot- electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder
Aby uzyskać więcej szczegółów, przechowuj dane tutaj, a nie w linkach internetowych, mając nadzieję, że to nie będzie nieaktualne: od obrazu Wheezy 2012-09-18 edytujesz /etc/modprobe.d/raspi-blacklist.confi komentujesz wpis dla i2c-bcm2708; następnie edytuj /etc/modulesi dołącz i2c-dev; następnie uruchom ponownie. Powinieneś teraz mieć /dev/i2c-0specjalny plik, który jest bardzo łatwy w użyciu.
damian
2

Sprzęt komputerowy:

Jak wspomniano w Tapio, sprzęt jest dobrze udokumentowany na stronie http://elinux.org/Rpi_Low-level_peripherals

Oprogramowanie:

W przestrzeni użytkownika Linuksa ( #include <linux/i2c-dev.h>) znajduje się nagłówek i2c-dev . Ponadto potrzebujesz postaci decyzyjnej do czytania. Można to zrobić, ładując odpowiednie moduły. i2c_bcm2708dla niskopoziomowego sterownika i i2c-devdo generowania znaków dla autobusów. Zastosować ...

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

do ładowania ich w locie. Zastosować ...

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

i odblokuj i2c_bcm2708na, /etc/modprobe.d/raspi-blacklist.confaby tworzyć /dev/i2c-0i /dev/i2c-1wyświetlać się na stałe.

Od teraz możesz podążać za wskazówkami, jak sam korzystać z I²C del maestro.

Wolę tę metodę od innych, ponieważ jest ona platformaagnostyczna. Możesz używać go także linux/i2c-dev.hz innymi urządzeniami, o ile istnieje sterownik niskiego poziomu I²C.

pozdrowienia

ManuelSchneid3r
źródło