Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
I2C on sarjaprotokolla, jota käytetään kommunikoimaan mikro -ohjaimen kanssa samaan piiriin liitettyjen ulkoisten oheislaitteiden kanssa. Jokaisella oheislaitteella on oltava yksilöllinen tunnistenumero, jota kutsutaan osoitteeksi, jota käytetään tunnistamaan se tietyn viestin aiotuksi vastaanottajaksi. Laitteen valmistaja on määrittänyt nämä osoitteet, eikä useimmiten voi muuttaa niitä. Haistelija skannaa kaikki mahdolliset osoitteet ja etsii yhdistettyjä laitteita ja ilmoittaa löytämistään. Tämä auttaa tunnistamaan merkitsemättömiä siruja, koska osoite voidaan googlettaa saadaksesi lisätietoja sirusta.
Tämä laite jäljittelee Arduino UNO: lla Raspberry Pi i2cdetect -skriptin käyttäytymistä, haistaa kaikki mahdolliset i2c -osoitteet, jotka etsivät yhdistettyjä laitteita, ja tulostaa tulokset hienosti 16x02 LCD -näytölle.
Jotta kaikki ruudulle mahtuvat, sekä osoitteen ylä- että alaosa tulostetaan tulosten yläpuolelle, ja yläosa on lihavoitu. Kahdella painikkeella voit navigoida osoitteiden välillä ja näyttää 16 osoitetta kerrallaan. Jos laite havaitaan, W tulostetaan sen osoittamiseksi kirjoitusosoitteena ja R näytetään, jos se on lukuosoite. Jos kyseisessä osoitteessa ei havaita mitään, näytössä näkyy yhdysviiva (-).
Vaihe 1: Materiaalit
Vaihtoehto 1
1 x Arduino UNO
1 x 16x02 LCD -näyttö
1x 10K potentiometri
1x 330 ohmin vastus
3x painikkeet
Käynnistyskaapelit
1x I2C -tasonvaihtaja (ei materiaalikuvassa)
Vaihtoehto 2
1 x Arduino UNO
LCD -näppäimistön suoja (suojan painikkeita ei käytetä)
3x painikkeet
Käynnistyskaapelit
1x I2C -tasonvaihtaja (ei materiaalikuvassa)
Vaihtoehto 2 rakennetaan, koska se oli tällä hetkellä käsilläni. Tasonvaihtaja on tärkeä osa piiriä, koska nykyään useimmat laitteet käyttävät 3,3 V: n logiikkaa ja Arduinon 5 V vahingoittaa niitä.
(Kuvissa yliviivattua materiaalia ei vaadita.)
Vaihe 2: Piiri
Piiri on melko suoraviivainen käyttämällä LCD -näytön Arduino -esimerkkien vakiopistoketta, I2C: n oletusneuloja ja 3 painonappien varatappia.
Jos käytät LCD -näppäimistön suojaa, nestekidenäytön pistoke muuttuu, mutta se on jo otettu huomioon koodissa. LCD -näppäimistön suojapainikkeita ei käytetä, koska ne edellyttävät analogista pollausmenetelmää, joka rikkoo yhteensopivuuden kahden mahdollisen toteutuspiirin (suoja ja erillinen LCD) välillä
Vaihe 3: Koodi
Jos käytetään LCD -näppäimistön suojaa, #define LCD_SHIELD on jätettävä luonnoksen alussa kommentoimatta. Muussa tapauksessa kommentoi sitä käyttääksesi ensimmäistä kaaviota.
Vaihe 4: Johtopäätökset
Koodin ja piirin testaamiseen käytettiin BQ32000 RTC -sirua ja MMA8452Q -kiihtyvyysmittaria. Kuten kuvista näkyy, laite tunnistaa 4 osoitetta: 0x3A ja 0xD0 kirjoitusosoitteina ja 0x3B ja 0xD1 lukuosoitteina. Nämä osoitteet vastaavat testilaitteita, joten koodi toimii.
Haluan kiittää Pekingin Makerspacen ystävällisiä tyttöjä, Fu Yaoa ja Liu Xinia, jotka auttoivat minua saamaan tämän projektin testaamiseen tarvittavat materiaalit niin lyhyellä varoitusajalla.