Innehållsförteckning:

Arduino I2C Sniffer: 4 steg
Arduino I2C Sniffer: 4 steg

Video: Arduino I2C Sniffer: 4 steg

Video: Arduino I2C Sniffer: 4 steg
Video: Урок 26.3 Соединяем две arduino по шине I2C #iarduino 2024, November
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

I2C är ett seriellt protokoll som används för att kommunicera en mikrokontroller med externa kringutrustning anslutna till samma krets. Varje kringutrustning måste ha ett unikt ID -nummer som kallas adress som används för att identifiera det som den avsedda mottagaren av ett givet meddelande. Dessa adresser tilldelas av enhetstillverkaren och kan oftast inte ändras. En sniffer skannar alla möjliga adresser som letar efter anslutna enheter och rapporterar dem som den hittar. Detta hjälper till att identifiera omärkta marker, eftersom adressen då kan googlas för mer information om chipet.

Denna enhet efterliknar på en Arduino UNO beteendet hos Raspberry Pi i2cdetect -skriptet, sniffar alla möjliga i2c -adresser som letar efter anslutna enheter och skriver ut resultaten snyggt på en 16x02 LCD -skärm.

För att passa allt på skärmen, skrivs både de höga och låga delarna av adressen ovanför resultaten, den höga delen är med ett fetstil. Två tryckknappar gör det möjligt att navigera mellan adresserna och visar 16 adresser åt gången. Om en enhet upptäcks kommer W att skrivas ut för att visa den som en skrivadress och R skulle visas om det är en läsadress. Om ingenting upptäcks på den adressen visas ett bindestreck (-) på skärmen.

Steg 1: Material

Material
Material
Material
Material

Alternativ 1

1 x Arduino UNO

1 x 16x02 LCD -skärm

1x 10K potentiometer

1x 330 ohm motstånd

3x tryckknappar

Startkablar

1x I2C nivåreglage (inte på materialbilden)

Alternativ 2

1 x Arduino UNO

LCD -knappsatsskärm (knapparna på skärmen används inte)

3x tryckknappar

Startkablar

1x I2C nivåreglage (inte på materialbilden)

Alternativ 2 är det som kommer att byggas eftersom det är vad jag hade till hands för tillfället. Nivåförskjutaren är en viktig del av kretsen eftersom de flesta enheter numera använder 3.3V logik och 5V från Arduino skadar dem.

(På bilderna krävs inte det överstrukna materialet.)

Steg 2: Krets

Krets
Krets
Krets
Krets
Krets
Krets

Kretsen är ganska rak framåt, med standard pinout för Arduino -exemplen för LCD -skärmen, standardstiften för I2C och 3 reservstift för tryckknapparna.

Om du använder LCD -knappsatsskyddet ändras pinout för LCD -skärmen men det beaktas redan i koden. LCD -knappsatsens skärmknappar används inte eftersom de kräver en analog pollingmetod som bryter kompatibiliteten mellan de två möjliga implementeringskretsarna (Shield och fristående LCD)

Steg 3: Kod

Koda
Koda

Om LCD -knappsatsskärmen används måste #define LCD_SHIELD lämnas obekommenterat i början av skissen. Annars kommenterar du det för att använda det första diagrammet.

Steg 4: Slutsatser

Slutsatser
Slutsatser
Slutsatser
Slutsatser
Slutsatser
Slutsatser

För att testa koden och kretsen användes ett BQ32000 RTC -chip och en MMA8452Q -accelerometer. Som kan ses på bilderna detekterar enheten 4 adresser: 0x3A och 0xD0 som skrivadresser och 0x3B och 0xD1 som lästa adresser. Denna adress motsvarar testenheterna så att koden fungerar.

Jag vill tacka de snälla tjejerna i Beijing Makerspace, Fu Yao och Liu Xin, för att de hjälpte mig att få det material som krävs för att testa detta projekt med så kort varsel.

Rekommenderad: