2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
I2C on jadaprotokoll, mida kasutatakse mikrokontrolleri suhtlemiseks sama vooluahela külge ühendatud välisseadmetega. Igal välisseadmel peab olema kordumatu ID -number, mida nimetatakse aadressiks, mida kasutatakse selle tuvastamiseks antud sõnumi adressaadina. Need aadressid määrab seadme tootja ja enamasti ei saa neid muuta. Nuusutaja skannib ühendatud seadmeid otsides kõiki võimalikke aadresse ja teatab leitud seadmetest. See aitab tuvastada märgistamata kiipe, kuna siis saab aadressi tehniliselt kiibi kohta lisateabe saamiseks googeldada.
See seade jäljendab Arduino UNO -l Raspberry Pi i2cdetect skripti käitumist, nuusutades kõiki võimalikke i2c -aadresse, mis otsivad ühendatud seadmeid, ja prindib tulemused kenasti 16x02 LCD -ekraanile.
Ekraanile sobitumiseks trükitakse tulemuste kohale nii aadressi kõrge kui ka madal osa, kõrge osa on paksus kirjas. Kaks surunuppu võimaldavad aadresside vahel navigeerida, näidates korraga 16 aadressi. Seadme tuvastamise korral prinditakse W, et näidata seda kirjutamisaadressina ja R näidatakse juhul, kui see on lugemisaadress. Kui sellel aadressil midagi ei tuvastata, kuvatakse ekraanil sidekriips (-).
Samm: materjalid
valik 1
1 x Arduino UNO
1 x 16x02 LCD -ekraan
1x 10K potentsiomeeter
1x 330 oomi takisti
3x nupud
Jumper kaablid
1x I2C taseme nihutaja (mitte materjalide pildil)
2. valik
1 x Arduino UNO
LCD klahvistiku kilp (kilbi nuppe ei kasutata)
3x nupud
Jumper kaablid
1x I2C taseme nihutaja (mitte materjalide pildil)
Variant 2 on see, mis ehitatakse, sest see oli mul hetkel käepärast. Taseme nihutaja on ahela oluline osa, kuna tänapäeval kasutab enamik seadmeid 3,3 V loogikat ja Arduino 5 V kahjustab neid.
(Piltidel pole kriipsutatud materjali vaja.)
2. samm: ahel
Vooluahel on üsna sirge, kasutades LCD -ekraani Arduino näidete jaoks mõeldud tavalist pistikut, I2C vaikimisi tihvte ja 3 varunõela nuppude jaoks.
Kui kasutate LCD -klahvistiku kaitsekilpi, LCD -ekraani pinout muutub, kuid seda arvestatakse juba koodis. LCD -klahvistiku kilbi nuppe ei kasutata, kuna need nõuavad analoogküsitlusmeetodit, mis katkestab ühilduvuse kahe võimaliku rakendusahela vahel (kilp ja eraldiseisev LCD)
3. samm: kood
Kui kasutatakse LCD -klaviatuuri kaitsekilpi, tuleb #define LCD_SHIELD visandi alguses märkimata jätta. Vastasel juhul kommenteerige seda esimese diagrammi kasutamiseks.
4. samm: järeldused
Koodi ja vooluahela testimiseks kasutati BQ32000 RTC kiipi ja kiirendusmõõturit MMA8452Q. Nagu piltidelt näha, tuvastab seade 4 aadressi: 0x3A ja 0xD0 kirjutusaadressidena ning 0x3B ja 0xD1 lugemisaadressidena. Need aadressid vastavad testimisseadmetele, nii et kood töötab.
Tahaksin tänada Pekingi Makerspace'i lahkeid tüdrukuid Fu Yao ja Liu Xini, kes aitasid mul selle projekti testimiseks vajalikud materjalid nii lühikese etteteatamisega kätte saada.