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. :)