Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
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
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
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
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
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.