2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
I2C je sériový protokol používaný na komunikáciu mikrokontroléra s externými perifériami pripojenými k rovnakému obvodu. Každá periféria musí mať jedinečné identifikačné číslo nazývané adresa, ktoré sa používa na jej identifikáciu ako predpokladaného príjemcu danej správy. Tieto adresy sú priradené výrobcom zariadenia a väčšinou ich nemožno zmeniť. Sniffer skenuje všetky možné adresy a hľadá pripojené zariadenia a hlási tie, ktoré nájde. To pomáha identifikovať neoznačené čipy, pretože potom je možné adresu vyhľadať v googli, aby sa získali ďalšie informácie o čipe.
Toto zariadenie napodobňuje na skripte Arduino UNO správanie skriptu Raspberry Pi i2cdetect, očucháva všetky možné adresy i2c a hľadá pripojené zariadenia a pekne tlačí výsledky na LCD obrazovku 16 x 02.
Aby sa zmestilo všetko na obrazovku, nad výsledky sa vytlačia vysoké aj nízke časti adresy, pričom najvyššia časť je na hrubom písme. Dve tlačidlá umožňujú navigáciu medzi adresami a zobrazujú 16 adries naraz. V prípade zistenia zariadenia sa vytlačí W, aby sa ukázalo ako adresa na zápis, a R by sa zobrazilo v prípade, že ide o adresu na čítanie. V prípade, že na danej adrese nie je nič zistené, na obrazovke sa zobrazí spojovník (-).
Krok 1: Materiály
možnosť 1
1 x Arduino UNO
1 x 16x02 LCD displej
1x 10K potenciometer
1x odpor 330 ohmov
3x tlačidlá
Prepojovacie káble
1x radič úrovne I2C (nie na obrázku materiálu)
Možnosť 2
1 x Arduino UNO
Štít klávesnice LCD (tlačidlá na štíte nebudú použité)
3x tlačidlá
Prepojovacie káble
1x menič úrovne I2C (nie na obrázku materiálov)
Možnosť 2 bude postavená, pretože práve to som mal v tejto chvíli k dispozícii. Posuvník úrovne je dôležitou súčasťou obvodu, pretože v dnešnej dobe väčšina zariadení používa logiku 3,3 V a 5 V od Arduina ich poškodzuje.
(Na obrázkoch nie je preškrtnutý materiál potrebný.)
Krok 2: Okruh
Obvod je celkom priamy, pričom používa štandardný vývod pre príklady Arduino pre LCD, predvolené piny pre I2C a 3 náhradné piny pre tlačidlá.
V prípade, že použijete štít klávesnice LCD, vývod na LCD sa zmení, ale to je už zahrnuté v kóde. Tlačidlá štítu klávesnice LCD sa nepoužívajú, pretože vyžadujú analógový spôsob pollingu, ktorý narúša kompatibilitu medzi dvoma možnými implementačnými obvodmi (štít a samostatný LCD displej)
Krok 3: Kód
V prípade, že sa používa štít klávesnice LCD, #define LCD_SHIELD musí byť na začiatku náčrtu ponechaný bez komentárov. V opačnom prípade ho komentujte a použite prvý diagram.
Krok 4: Závery
Na testovanie kódu a obvodu bol použitý čip BQ32000 RTC a akcelerometer MMA8452Q. Ako je vidieť na obrázkoch, zariadenie detekuje 4 adresy: 0x3A a 0xD0 ako adresy na zápis a 0x3B a 0xD1 ako adresy na čítanie. Táto adresa zodpovedá testovacím zariadeniam, takže kód funguje.
Chcel by som poďakovať láskavým dievčatám z Beijing Makerspace, Fu Yao a Liu Xin, že mi pomohli získať materiály potrebné na testovanie tohto projektu v takom krátkom čase.