Indholdsfortegnelse:

Arduino I2C Sniffer: 4 trin
Arduino I2C Sniffer: 4 trin

Video: Arduino I2C Sniffer: 4 trin

Video: Arduino I2C Sniffer: 4 trin
Video: How I2C Communication Works and How To Use It with Arduino 2024, Juli
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

I2C er en seriel protokol, der bruges til at kommunikere en mikrokontroller med eksterne perifere enheder forbundet til det samme kredsløb. Hver periferiudstyr skal have et unikt ID -nummer kaldet adresse, der bruges til at identificere det som den tiltænkte modtager af en given meddelelse. Disse adresser tildeles af enhedsproducenten, og de fleste gange kan de ikke ændres. En sniffer scanner alle mulige adresser på udkig efter tilsluttede enheder og rapporterer dem, den finder. Dette hjælper med at identificere umærkede chips, da adressen kan googles for mere information om chippen.

Denne enhed efterligner på en Arduino UNO opførslen af Raspberry Pi i2cdetect -scriptet, snuser alle mulige i2c -adresser på udkig efter tilsluttede enheder og udskriver resultaterne pænt på en 16x02 LCD -skærm.

For at passe alt på skærmen udskrives både de høje og lave dele af adressen over resultaterne, den høje del er med et fed skrift. To trykknapper giver mulighed for at navigere mellem adresserne og viser 16 adresser ad gangen. Hvis en enhed opdages, udskrives W for at vise den som en skriveadresse, og R ville blive vist, hvis det er en læseadresse. Hvis der ikke registreres noget på den adresse, vises en bindestreg (-) på skærmen.

Trin 1: Materialer

Materialer
Materialer
Materialer
Materialer

Mulighed 1

1 x Arduino UNO

1 x 16x02 LCD -skærm

1x 10K potentiometer

1x 330 ohm modstand

3x trykknapper

Jumper kabler

1x I2C niveauskifter (ikke på materialebilledet)

Mulighed 2

1 x Arduino UNO

LCD -tastaturskærm (knapperne på skjoldet bruges ikke)

3x trykknapper

Jumper kabler

1x I2C niveauskifter (ikke på materialebilledet)

Mulighed 2 er den, der skal bygges, fordi det var det, jeg havde lige ved hånden i øjeblikket. Niveauskifteren er en vigtig del af kredsløbet, da de fleste enheder i dag bruger 3.3V logik, og 5V fra Arduino skader dem.

(På billederne er det overstreget materiale ikke påkrævet.)

Trin 2: Kredsløb

Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb

Kredsløbet er ret lige frem, ved hjælp af standard pinout til Arduino -eksemplerne til LCD'et, standardstifterne til I2C og 3 ekstra ben til trykknapperne.

Hvis du bruger LCD -tastaturskærmen, ændres pinout for LCD'et, men det overvejes allerede inden for koden. LCD -tastaturets skærmknapper bruges ikke, fordi de kræver en analog afstemningsmetode, der bryder kompatibiliteten mellem de to mulige implementeringskredsløb (Shield og stand alone LCD)

Trin 3: Kode

Kode
Kode

Hvis LCD -tastaturskærmen bruges, skal #define LCD_SHIELD efterlades ukommenteret i begyndelsen af skitsen. Ellers kan du kommentere det for at bruge det første diagram.

Trin 4: Konklusioner

Konklusioner
Konklusioner
Konklusioner
Konklusioner
Konklusioner
Konklusioner

Til test af koden og kredsløbet blev der brugt en BQ32000 RTC -chip og et MMA8452Q -accelerometer. Som det kan ses på billederne, registrerer enheden 4 adresser: 0x3A og 0xD0 som skriveadresser og 0x3B og 0xD1 som læste adresser. Disse adresser svarer til testenhederne, så koden fungerer.

Jeg vil gerne takke de venlige piger i Beijing Makerspace, Fu Yao og Liu Xin, for at have hjulpet mig med at få de nødvendige materialer til at teste dette projekt med så kort varsel.

Anbefalede: