Raspberry Pi – I2C – sterowanie RGB

 

Raspberry Pi – I2C – konfiguracja i sterowanie


Do sterowania diodą LED RGB wykorzystałem płytkę testową KAmodRGB. Na płytce znajduje się dioda RGB i dioda czerwona. Do sterowania został tam zastosowany układ PCA9633 który sterujemy poprzez interfejs I2C. Układ ten został również wykorzystany w zaprojektowanej przeze mnie karcie rozszerzeń dla komputerka Raspberry Pi a nazwanej Frontpanelem. Do sterowania tym i innymi modułami została napisana prosta aplikacja opisana w dokumencie „Aplikacja php„.

UWAGA!! W przypadku dołączenia modułu KAmodRGB należy zwrócić uwagę na wartość napięcia zasilania. Moduł ten prawidłowo pracuje przy napięciu 3,3V a dołączenie go do napięcia 5V jak sugeruje to napis na płytce drukowanej może spowodować uszkodzenie linii GPIO komputera Raspberry PI.

Wygląd modułu KAmodRGB

Rys. Wygląd modułu KAmodRGB.

KAmodRGB dołączony

Rys. Widok podłączonego modułu KAmodRGB.

Schemat połączeń modułu KAmodRGB z komputerkiem Raspberry Pi

 Rys. Schemat połączeń modułu KAmodRGB z komputerkiem Raspberry Pi.


Po wykonaniu przedstawionych powyżej połączeń należy zainstalować oprogramowanie wiringPi oraz libi2c-dev opisane na stronie dotyczącej GPIO. Przydatne może być oprogramowanie diagnostyczne i2ctools. Aby je zainstalować wydajemy komendę:

sudo apt-get install i2ctools

Musimy dokonać modyfikacji dwóch plików: /etc/modprobe.d/raspi-blacklist.conf i /etc/modules. W pierwszym z wymienionych komentujemy linie aby uzyskać efekt przedstawiony jak poniżej (dodajemy znak komentarza #):

# blacklist spi-bcm2708
# blacklist i2c-bcm2708

W drugim z plików dodajemy linię:

i2c-dev

Zainstalowanie pakietu i2ctools daje nam dostęp do ciekawej aplikacji o nazwie i2cdetect.
Użycie tej aplikacji:

sudo i2cdetect -y 1

spowoduje wyświetlenie informacji o wszystkich układach dołączonych do magistrali I2C. Szerzej zostało ta funkcja opisana w artykule o Frontpanelu dla RPi. Cyfra 1 w poleceniu oznacza, że polecenie wyświetli informacje dotyczące magistrali nr 1 a taka jest dostępna w płytce raspberry wersja 2. Wersja 1 udostępniała magistralę nr 0.

Po zainstalowaniu wymienionych pakietów możemy zapisywać w układach danych z wykorzystaniem opisywanej magistrali. Do zapisu mamy do dyspozycji komendę i2cset. Przykład użycia:

sudo i2cset -y 1 0×07 0×08 0xff

W powyższym przykładzie  cyfra 1 oznacza numer magistrali, 0×07 to adres urządzenia, 0×08 to adres rejestru do którego chcemy zapisać dane a 0xff to wartość którą chcemy zapisać pod wcześniej wskazany adres. W celu prawidłowego skonfigurowania układu PCA9633 wpisujemy kolejno wartości zgodnie z poniższym listingiem:

sudo i2cset -y 1 0×07 0×00 0×00
sudo i2cset -y 1 0×07 0×01 0×00
sudo i2cset -y 1 0×07 0×08 0xff
sudo i2cset -y 1 0×07 0×02 0xff
sudo i2cset -y 1 0×07 0×03 0xff
sudo i2cset -y 1 0×07 0×04 0xff
sudo i2cset -y 1 0×07 0×05 0xff

Aby dokonać odczytu wartości spod wskazanego adresy wydajemy komendę:

sudo i2cget -y 1 0×07 0×4

Składnia powyższej komendy jest analogiczna do opisanej wcześniej komendy i2cset.

copyright: systemypomiarowe.pl