Innholdsfortegnelse:

Arduino I2C Sniffer: 4 trinn
Arduino I2C Sniffer: 4 trinn

Video: Arduino I2C Sniffer: 4 trinn

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

I2C er en seriell protokoll som brukes til å kommunisere en mikrokontroller med eksterne eksterne enheter koblet til den samme kretsen. Hver perifer enhet må ha et unikt ID -nummer kalt adresse som brukes til å identifisere den som den tiltenkte mottakeren av en gitt melding. Disse adressene er tilordnet av enhetsprodusenten, og de fleste ganger kan ikke endres. En sniffer skanner alle mulige adresser på jakt etter tilkoblede enheter og rapporterer dem den finner. Dette hjelper til med å identifisere umerkede sjetonger, da kan adressen googles for mer informasjon om brikken.

Denne enheten etterligner på en Arduino UNO oppførselen til Raspberry Pi i2cdetect -skriptet, snuser alle mulige i2c -adresser på jakt etter tilkoblede enheter og skriver ut resultatene pent på en 16x02 LCD -skjerm.

For å passe alt på skjermen, skrives både de høye og lave delene av adressen over resultatene, den høye delen er med et fet skrift. To trykknapper lar deg navigere mellom adressene, og viser 16 adresser om gangen. Hvis en enhet oppdages, skrives W ut for å vise den som en skriveadresse, og R vil bli vist i tilfelle det er en leseadresse. Hvis ingenting blir oppdaget på den adressen, vises en bindestrek (-) på skjermen.

Trinn 1: Materialer

Materialer
Materialer
Materialer
Materialer

valg 1

1 x Arduino UNO

1 x 16x02 LCD -skjerm

1x 10K potensiometer

1x 330 ohm motstand

3x trykknapper

Hoppekabler

1x I2C nivåskifter (ikke på materialebilde)

Alternativ 2

1 x Arduino UNO

LCD -tastaturskjerm (knappene på skjermen brukes ikke)

3x trykknapper

Hoppekabler

1x I2C nivåskifter (ikke på materialebilde)

Alternativ 2 er det som skal bygges fordi det var det jeg hadde for øyeblikket. Nivåskifteren er en viktig del av kretsen, ettersom de fleste enheter i dag bruker 3,3V logikk og 5V fra Arduino skader dem.

(På bildene er ikke overstreket materiale nødvendig.)

Trinn 2: Krets

Krets
Krets
Krets
Krets
Krets
Krets

Kretsen er ganske rett frem, ved å bruke standard pinout for Arduino -eksemplene for LCD -en, standardpinnene for I2C og 3 reservepinner for trykknappene.

Hvis du bruker LCD -tastaturet, endres pinout for LCD -skjermen, men det er allerede vurdert i koden. Knappene på LCD -tastaturet brukes ikke fordi de krever en analog avstemningsmetode som bryter kompatibiliteten mellom de to mulige implementeringskretsene (skjerm og frittstående LCD)

Trinn 3: Kode

Kode
Kode

Hvis LCD -tastaturet brukes, må #define LCD_SHIELD stå ukommentert i begynnelsen av skissen. Ellers kan du kommentere det for å bruke det første diagrammet.

Trinn 4: Konklusjoner

Konklusjoner
Konklusjoner
Konklusjoner
Konklusjoner
Konklusjoner
Konklusjoner

For å teste koden og kretsen ble det brukt en BQ32000 RTC -brikke og et MMA8452Q -akselerometer. Som det kan sees på bildene, oppdager enheten 4 adresser: 0x3A og 0xD0 som skriveadresser, og 0x3B og 0xD1 som leseadresser. Denne adressene tilsvarer testenhetene slik at koden fungerer.

Jeg vil takke de snille jentene i Beijing Makerspace, Fu Yao og Liu Xin, for å ha hjulpet meg med å få materialene som kreves for å teste dette prosjektet på så kort varsel.

Anbefalt: