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 i2cPo 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. 🙂

Zainteresowany/a zabawką?

skontaktuj się z nami

Zrobsobiecos.pl
ul. Marlicza 34/2, 71-246 Szczecin
e-mail: biuro@zrobsobiecos.pl