Koncentrator czujników cyfrowych Grove

Koncentrator czujników cyfrowych Grove

Gdy aplikacja rozrasta się o kolejne czujniki lub elementy wykonawcze i użyliśmy już ostatnich wolnych wyprowadzeń GPIO procesora, z pomocą może przyjść nam koncentrator I²C. W magistralę I²C wyposażony jest praktycznie każdy współczesny procesor oraz komputer SBC, a przy wsparciu koncentratora możemy obejść ograniczenia liczby wolnych pinów, przynajmniej do momentu, gdy nie przekroczymy dopuszczalnej liczby koncentratorów na tej samej magistrali.

Podstawowe parametry:
  • osiem kanałów GPIO sterowanych przez interfejs I²C,
  • wbudowane rezystory pull-down,
  • wbudowane diody LED sygnalizujące stan poszczególnych linii GPIO,
  • możliwość kaskadowego połączenia do 8 koncentratorów (łącznie do 64 linii GPIO),
  • adres I²C ustawiany za pomocą mostków lutowniczych,
  • wbudowane mikroprzełączniki do mostkowania linii GPIO,
  • złącza zgodne ze standardem Grove,
  • napięcie zasilania: 3,3…5,5 V.

Koncentrator zrealizowany jest w oparciu na układzie programowalnego ekspandera GPIO typu MCP23008, za pomocą którego możemy monitorować lub sterować poprzez magistralę I²C nawet ośmioma dodatkowymi liniami GPIO. Ekspander ma trzy wyprowadzenia A0, A1 i A2 ustalające adres, dzięki czemu umożliwia podłączenie do 8 koncentratorów na jednej magistrali I²C oraz rozszerzenie zestawu linii GPIO o maksymalnie 64 dodatkowe wyprowadzenia. Schemat koncentratora pokazano na rysunkach 1a i 1b.

Rysunek 1a. Schemat ideowy koncentratora
Rysunek 1b. Schemat ideowy koncentratora

Sygnały GPIO doprowadzone są do 8 złączy I0...I7 w standardzie Grove oraz do gniazd w standardzie Arduino Sensor S0, S4. Każde z gniazd ma podłączone zasilanie (GND, VCC), a  wszystkie linie GPIO wyposażone zostały w rezystory pull-down R4...R11, ustalające stan niewykorzystanych w aplikacji wyprowadzeń. Bufory U3...U6 sterują diodami LD0...LD7 sygnalizującymi fizyczne stany wyprowadzeń linii GPIO, co okazuje się bardzo przydatne podczas uruchamiania układu. Przełączniki SW03, SW47 umożliwiają zmostkowanie sygnałów ze złączy I0/I1, I2/I3, I4/I5, I6/I7, co okazuje się przydatne w przypadku czujników lub elementów wykonawczych korzystających z obu sygnałów GPIO złącza Grove, bez konieczności używania nietypowych przewodów. W tym przypadku do podłączenia modułów stosowane są odpowiednio złącza I0, I2, I4, I6. Normalnie przełączniki powinny znajdować się w pozycji OFF, wtedy każde z wyprowadzeń GPIO doprowadzone jest tylko do jednego złącza Grove. Rezystory RP1,2 separują U1 od złączy i zapobiegają jego ewentualnemu uszkodzeniu w wyniku błędnych połączeń lub konfiguracji. Układ U2 zapewnia poprawny reset U1 po włączeniu zasilania. Magistrala I²C wraz z zasilaniem doprowadzona jest do złączy I²CA/B, umieszczonych przelotowo, co ułatwia kaskadowe łączenie kilku koncentratorów. Dodajmy, że układ działa poprawnie w zakresie napięcia zasilania 3,3…5,5 V. Dioda LD8 sygnalizuje obecność zasilania.

Grove_SensorHUB zmontowany jest na dwustronnej płytce drukowanej mechanicznie zgodnej ze standardem Grove – rozmieszczenie elementów zaprezentowano na rysunkach 2 a i 2b. Montaż jest typowy i nie wymaga szczegółowego opisu, a sam układ nie narzuca konieczności specjalnego uruchamiania – należy tylko ustalić położenie zwór adresowych. Adres bazowy koncentratora to 0x20, gdy wszystkie zwory są zalutowane w położeniach „0”. Gotowy układ pokazuje fotografia tytułowa.

Rysunek 2. Rozmieszczenie elementów

Sprawdzenie działania koncentratora najłatwiej wykonać za pomocą Raspberry Pi. Po podłączeniu do magistrali I²C, poleceniem i2cdetect –y 1 sprawdzamy obecność układu na magistrali, zgodnie z rysunkiem 3.

Rysunek 3. Detekcja koncentratora na magistrali I²C

Konfiguracja GPIO MCP23008 ustalana jest w rejestrach wewnętrznych. Do obsługi GPIO wystarcza konfiguracja trzech rejestrów:

  • IODIR – 0x00 (ustala kierunek GPIO: 0 – wyjście, 1 – wejście),
  • IOPOL – 0x01 (neguje stan pinu wejściowego GPIO: 0 – proste, 1 – negowane),
  • GPPU – 0x06 (aktywuje rezystory pull-up GPIO: 0 – wyłączone, 1 – załączone).

W przypadku aktywacji rezystorów pull-up, wyprowadzenie podciągnięte zostaje poprzez rezystor wbudowany w U1 do napięcia VCC, co sygnalizowane jest w module poprzez zaświecenie odpowiadającej diody GPIO – należy o tym pamiętać.

Stan linii wejścia/wyjścia odczytywany jest z rejestru GPIO – 0x09, a zmiana stanu wyjść odbywa się poprzez rejestr OLAT – 0x0A.

Przykładowo: konfigurujemy GPIO0...3 jako wejścia, a GPIO4...7 jako wyjścia.

i2cset –y 1 0x20 0x00 0x0F

Po zmianie stanu wyprowadzeń 0...3 (poprzez połączenie ich do masy lub zasilania) możemy odczytać stan linii GPIO poleceniem:

i2cget -y 1 0x20 0x09

Stan wyjść ustawiamy z użyciem komendy:

i2cset -y 1 0x20 0x0a 0x5F

Jeżeli wszystko działa poprawnie, moduł można zastosować we własnej aplikacji. W przypadku kaskadowego łączenia koncentratorów, szczególnie przy dłuższych połączeniach, należy zwrócić uwagę na pojemności rozproszone, zdolne zakłócić działanie magistrali – w takich przypadkach rekomendowane jest zastosowanie buforów I²C np. na bazie układu TCA9511.

Adam Tatuś, EP

Wykaz elementów:
Rezystory:
  • R1, R2: 10 kΩ (SMD 0603, 5%)
  • R3: 2,2 kΩ (SMD 0603, 5%)
  • R4...R11: 1 MΩ (SMD 0603, 5%)
  • RP1, RP2: 100 Ω (drabinka CRA06S08)
  • RP3, RP4: 2,2 kΩ (drabinka CRA06S08)
Kondensatory: (SMD 0603, X7R, 10 V)
  • C1, C2: 1 μF
  • C3, C5, C6: 100 nF
  • C4: 10 μF
Półprzewodniki:
  • LD0...7: dioda LED zielona (SMD 0603)
  • LD8: dioda LED czerwona (SMD 0603)
  • U1: MCP23008SS (SSOP20_230)
  • U2: MCP100T-315I/TT (SOT-23)
  • U3...U6: 74LVC2G34GW.125 (SC88)
Pozostałe:
  • G0, G4: złącze SIP4 niebieskie
  • I0...I7: złącze Grove proste
  • I²CA, I²CB: złącze Grove kątowe
  • S0, S4: złącze SIP4 białe
  • SW03, SW47: mikroprzełącznik DIP2 Omron (A6H-2101)
  • V0,V4: złącze SIP4 czerwone
Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2024
DO POBRANIA
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich grudzień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów