Komunikacja po magistrali i2c



Oprócz podłączania diod i buzzerów, malina ma możliwość obsługi bardziej złożonych elementów wykonawczych. Bardziej złożonych czyli też bardziej wymagających, w szczególności w zakresie komunikacji. W tym celu możliwe jest posłużenie się magistralą i2c.

Jej zaletą jest możliwość przyłączenia dużej ilości urządzeń zewnętrznych wykorzystując przy tym jedynie cztery piny na Raspberry Pi. W tym celu potrzebne jest zasilanie (VCC), masa(GND), kanał dla zegara taktującego magistralę (SCL) i kanał transmisji danych (SDA).



Kwestia zasilania jest indywidualną sprawą stosowanego urządzenia zwenętrznego i może ono wymagać np 5V. Wtedy można skorzystać z PIN'ów po drugiej stronie.

No dobrze, zainstalujmy obsługę magistrali i2c na naszej malinie.

Kiedyś wymagało to wchodzenia do narzędzia konfiguracyjnego malinę raspi-config tj. BIOS'u (Basic Input/Output System), czyli zestawu podstawowych procedur pośredniczących pomiędzy systemem operacyjnym a sprzętem. Dziś wykonuje się to środowisku okienkowym maliny.

Klikamy w Menu/Preferences/Raspberry Pi Configuration.



Nastęnie wybieramy zakładkę Interfaces i zaznaczamy opcję Enable przy i2c



Po wykonaniu powyższego, malina poinformuje nas, że musi się zrestartować. Pozwólmy jej na to. :)

Pozostałe działania wykonamy w LXTermianl'u. Odpalmy go i w pierwszym kroku sprawdzamy czy jest dodany moduł i2c. Wpisujemy następującą komendę:

sudo nano /etc/modules


Otworzy to kreatora plików w którym możemy sprawdzić czy znajduje się linijka o następującej treści:

i2c-dev


Jeżeli nie to dopisujemy ją na końcu pliku, potem Ctrl+X i dwa razy naciskamy Enter i ten etap jest załatwiony.
Teraz musimy zaimportować biblioteki. Najpierw instalujemy narzędzia do obsługi i2c, wpisując komendę:

sudo apt-get install i2c-tools


Następnie instalujemy bibliotekę smbus, dzięki której będziemy się komunikować z i2c pisząc programy w Python'ie. W terminalu wpisujemy komendę:

sudo apt-get install python-smbus


Na sam koniec pozostało nam wpisać:

sudo adduser pi i2c


Zainstalowaliśmy już wszystko, teraz trzeba zrestartować malinę.

Po zrobieniu powyższego możemy sprawdzić czy malina obsługuje komunikację i2c. W tym celu włączamy terminal i wpisujemy komendę:

i2cdetect -y 1


Wyświetla nam się taka oto siatka:



Jak można zauważyć jest to "macierz", w której kolumny oznaczają kolejne liczby jedności, a wiersze oznaczają kolejne liczby dziesiętne. Jest to trochę nieprecyzyjne określenie, ponieważ posługuje się ona zapisem szesnastkowym, czyli hexadecymalnym. Na poniższym rysunku można zobaczyć w tabeli trzy cyfry. Są to trzy czujniki podłaczone jednocześnie. Dzięki tej tabeli wiemy pod jakim adresem się one znajdują, czyli jak je będziemy wywoływać.



W tym konkretnym przypadku jest to MPU6050 (żyroskop i akcelerometr), HMC5883L (magnetometr) i MPL3115A2 (czujnik ciśnienia).

Jeżeli powyższe się powiodło, mamy działającą komunikację i2c i możemy podłączać bardziej zaawansowane urządzenia, aniżeli diody. :)

:)