Obsah:

Sniffer Arduino I2C: 4 kroky
Sniffer Arduino I2C: 4 kroky

Video: Sniffer Arduino I2C: 4 kroky

Video: Sniffer Arduino I2C: 4 kroky
Video: Декодер протоколов | Часть первая I2C сниффер 2024, Červenec
Anonim
Sniffer Arduino I2C
Sniffer Arduino I2C

I2C je sériový protokol používaný ke komunikaci mikrokontroléru s externími periferiemi připojenými ke stejnému obvodu. Každá periferie musí mít jedinečné ID číslo, kterému se říká adresa, které se používá k identifikaci zamýšleného příjemce dané zprávy. Tyto adresy jsou přiřazeny výrobcem zařízení a většinu času nelze změnit. Sniffer skenuje všechny možné adresy a hledá připojená zařízení a hlásí ta, která najde. To pomáhá identifikovat neoznačené čipy, protože adresu lze poté googlit pro další informace týkající se čipu.

Toto zařízení napodobuje na Arduino UNO chování skriptu Raspberry Pi i2cdetect, očichává všechny možné adresy i2c, hledá připojená zařízení a tiskne výsledky pěkně na LCD obrazovku 16x02.

Aby se na obrazovku vešlo vše, jsou nad výsledky vytištěny vysoké i nízké části adresy, přičemž vysoká část je vyznačena tučným písmem. Dvě tlačítka umožňují navigaci mezi adresami a zobrazují 16 adres najednou. V případě detekce zařízení bude vytištěno W, aby se zobrazilo jako adresa pro zápis, a R by se zobrazilo v případě, že se jedná o adresu pro čtení. V případě, že na dané adrese není nic detekováno, zobrazí se na obrazovce spojovník (-).

Krok 1: Materiály

Materiály
Materiály
Materiály
Materiály

Možnost 1

1 x Arduino UNO

1 x 16x02 LCD displej

1x 10K potenciometr

1x odpor 330 ohmů

3x tlačítka

Propojovací kabely

1x řadič úrovně I2C (není na obrázku materiálů)

Možnost 2

1 x Arduino UNO

Štít klávesnice LCD (tlačítka na štítu nebudou použita)

3x tlačítka

Propojovací kabely

1x řadič úrovně I2C (není na obrázku materiálů)

Možnost 2 je ta, která bude postavena, protože to je to, co jsem měl v tuto chvíli po ruce. Přepínač úrovně je důležitou součástí obvodu, protože v dnešní době většina zařízení používá logiku 3,3 V a 5 V od Arduina je poškozuje.

(Na obrázcích není přeškrtnutý materiál vyžadován.)

Krok 2: Okruh

Obvod
Obvod
Obvod
Obvod
Obvod
Obvod

Obvod je docela přímočarý, používá standardní pinout pro příklady Arduino pro LCD, výchozí piny pro I2C a 3 náhradní piny pro tlačítka.

V případě, že používáte štít klávesnice LCD, změní se vývod pro LCD, ale to je již zahrnuto v kódu. Tlačítka štítu klávesnice LCD se nepoužívají, protože vyžadují analogový způsob dotazování, který narušuje kompatibilitu mezi dvěma možnými implementačními obvody (štít a samostatný LCD)

Krok 3: Kód

Kód
Kód

V případě, že je použit štít klávesnice LCD, #define LCD_SHIELD musí být na začátku náčrtu ponechán bez komentáře. V opačném případě ho komentujte a použijte první diagram.

Krok 4: Závěry

Závěry
Závěry
Závěry
Závěry
Závěry
Závěry

Pro testování kódu a obvodu byl použit čip BQ32000 RTC a akcelerometr MMA8452Q. Jak je vidět na obrázcích, zařízení detekuje 4 adresy: 0x3A a 0xD0 jako adresy pro zápis a 0x3B a 0xD1 jako adresy pro čtení. Tato adresa odpovídá testovacím zařízením, takže kód funguje.

Chtěl bych poděkovat laskavým dívkám z Beijing Makerspace, Fu Yao a Liu Xin, že mi pomohly získat materiály potřebné pro testování tohoto projektu v tak krátkém čase.

Doporučuje: