Spisu treści:

Sniffer Arduino I2C: 4 kroki
Sniffer Arduino I2C: 4 kroki

Wideo: Sniffer Arduino I2C: 4 kroki

Wideo: Sniffer Arduino I2C: 4 kroki
Wideo: Arduino I2C связь между контроллерами 2024, Lipiec
Anonim
Sniffer Arduino I2C
Sniffer Arduino I2C

I2C to protokół szeregowy służący do komunikacji mikrokontrolera z zewnętrznymi peryferiami podłączonymi do tego samego obwodu. Każde urządzenie peryferyjne musi mieć unikalny numer identyfikacyjny zwany adresem, który służy do identyfikowania go jako zamierzonego odbiorcę danej wiadomości. Adresy te są przydzielane przez producenta urządzenia i w większości przypadków nie można ich zmienić. Sniffer skanuje wszystkie możliwe adresy w poszukiwaniu podłączonych urządzeń i zgłasza te, które znajdzie. Pomaga to zidentyfikować nieoznaczone chipy, ponieważ wtedy adres można wyszukać w Google, aby uzyskać więcej informacji na temat chipa.

To urządzenie naśladuje na Arduino UNO zachowanie skryptu i2cdetect Raspberry Pi, wąchając wszystkie możliwe adresy i2c w poszukiwaniu podłączonych urządzeń i ładnie drukując wyniki na ekranie LCD 16x02.

Aby zmieścić wszystko na ekranie, zarówno górna, jak i dolna część adresu są drukowane nad wynikami, a wysoka część jest pogrubiona. Dwa przyciski umożliwiają nawigację pomiędzy adresami, wyświetlając jednocześnie 16 adresów. W przypadku wykrycia urządzenia, zostanie wydrukowane W, aby pokazać je jako adres do zapisu, a R zostanie wyświetlone, jeśli jest to adres do odczytu. Jeśli nic nie zostanie wykryte pod tym adresem, na ekranie pojawi się myślnik (-).

Krok 1: Materiały

Materiały
Materiały
Materiały
Materiały

opcja 1

1 x Arduino UNO

1x16x02 ekran LCD

Potencjometr 1x10 K

1x rezystor 330 omów, 3x przyciski

Kable rozruchowe

1x przesuwnik poziomu I2C (nie na zdjęciu materiałów)

Opcja 2

1 x Arduino UNO

Osłona klawiatury LCD (przyciski na osłonie nie będą używane)

3x przyciski

Kable rozruchowe

1x przesuwnik poziomu I2C (nie na zdjęciu materiałów)

Opcja 2 to ta, która zostanie zbudowana, ponieważ w tej chwili miałem ją pod ręką. Przesuwnik poziomu jest ważną częścią układu, ponieważ obecnie większość urządzeń korzysta z logiki 3,3 V, a 5 V z Arduino je uszkadza.

(Na zdjęciach przekreślony materiał nie jest wymagany.)

Krok 2: Obwód

Okrążenie
Okrążenie
Okrążenie
Okrążenie
Okrążenie
Okrążenie

Obwód jest dość prosty, wykorzystując standardowe piny dla przykładów Arduino dla wyświetlacza LCD, domyślne piny dla I2C i 3 zapasowe piny dla przycisków.

W przypadku korzystania z osłony klawiatury LCD zmienia się pinout wyświetlacza LCD, ale jest to już uwzględnione w kodzie. Przyciski osłony klawiatury LCD nie są używane, ponieważ wymagają analogowej metody odpytywania, która przerywa kompatybilność między dwoma możliwymi obwodami implementacyjnymi (osłona i samodzielny wyświetlacz LCD)

Krok 3: Kod

Kod
Kod

W przypadku użycia osłony klawiatury LCD, #define LCD_SHIELD musi być pozostawione bez komentarza na początku szkicu. W przeciwnym razie skomentuj go, aby użyć pierwszego diagramu.

Krok 4: Wnioski

Wnioski
Wnioski
Wnioski
Wnioski
Wnioski
Wnioski

Do testowania kodu i układu wykorzystano układ BQ32000 RTC oraz akcelerometr MMA8452Q. Jak widać na zdjęciach, urządzenie wykrywa 4 adresy: 0x3A i 0xD0 jako adresy zapisu oraz 0x3B i 0xD1 jako adresy odczytu. Te adresy odpowiadają urządzeniom testowym, więc kod działa.

Chciałbym podziękować życzliwym dziewczynom z Beijing Makerspace, Fu Yao i Liu Xin, za pomoc w zdobyciu materiałów potrzebnych do przetestowania tego projektu w tak krótkim czasie.

Zalecana: