Blog (83)
Komentarze (2k)
Recenzje (1)
@cyrylloLN HUB32IO — moduł z aktywnym hubem USB i 32 pinami IO dla Banana PRO

LN HUB32IO — moduł z aktywnym hubem USB i 32 pinami IO dla Banana PRO

09.08.2015 14:34, aktualizacja: 10.08.2015 21:10

Kolejny drugi moduł dla Banana PRO, który opiszę i przetestuję to LN HUB‑32IO posiadający aż 32 piny GPIO oraz aktywny hub USB. Moduł posiada dwa układy mcp23017 komunikujące się poprzez interfejs i2c. Również jak ostatnio do sterowania modułem użyjemy biblioteki WiringBP.

562746

Moduł posiada 32 złącza cyfrowych pinów GPIO, każdy pin ma podłączoną diodę. Obok złącz IO wyprowadzone jest też 3,3V oraz GND łącznie 4 (po 2 na każdy układ). Hub posiada 4 złącza USB oraz dwa złącza microUSB jedno do zasilenia hub‑a drugi do podłączenia USB z Banana PRO

złącza USB
złącze zasilania oraz wejściowe USB

[join][img=hub(3)][join][img=hub(4)]

Jako że mamy w tym przypadku do czynienia z i2c warto przeskanować magistralę i  znaleźć adres naszych układów. W moim przypadku układy posiadają adres 0x20 oraz 0x21, które użyłem do poniższych przykładów.


# i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 21 -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Program testowy testi2c.c


#include <stdio.h>
#include <wiringPi.h>
#include <mcp23017.h>

int main (void)
{
  int i, bit ;

  wiringPiSetup () ;
  mcp23017Setup (100, 0x20) ;
  mcp23017Setup (116, 0x21) ;
  printf ("LN HUB-32IO - Test\n") ;

  for (i = 0 ; i < 16 ; ++i){
    pinMode (100 + i, OUTPUT) ;
}
   for (bit = 0 ; bit < 16 ; ++bit){
   digitalWrite (100 + bit, 1) ;
      delay (200) ;
}
   for (bit = 15 ; bit >= 0 ; --bit){
   digitalWrite (100 + bit, 0) ;
      delay (200) ;
}

for (i = 0 ; i < 16 ; ++i){
    pinMode (116 + i, OUTPUT) ;
}
   for (bit = 0 ; bit < 16 ; ++bit){
   digitalWrite (116 + bit, 1) ;
      delay (200) ;
}
   for (bit = 15 ; bit >= 0 ; --bit){
   digitalWrite (116 + bit, 0) ;
      delay (200) ;
}
  return 0 ;
}

Kompilacja

gcc -Wall -o test2 testi2c.c -lwiringPi

Program ustawia kolejno piny na stan wysoki na obydwu układach a następnie je wyłącza ustawiając je na stan niski. Status testu możemy obserwować na diodach.

Również z poziomu konsoli (programów w bash-u) możemy sterować pinami za pomocą narzędzia gpio


 gpio -x mcp23017:100:0x20:0 mode 100 out
 gpio -x mcp23017:100:0x20:0 write 100 1
 gpio -x mcp23017:100:0x20:0 read 100
 gpio -x mcp23017:100:0x20:0 mode 101 in

Więcej na stronie projektu WiringPi

Moduł bardzo dobrze sprawdzi się do projektów, które potrzebują więcej złącz IO jak również potrzebujących dodatkowego zasilania dla urządzeń USB. Jedynym minusem można uznać to, że aby podłączyć hub musimy użyć kabla USB łącząc moduł z Banana PRO.

Wybrane dla Ciebie
Komentarze (0)