Sisällysluettelo:
- Vaihe 1: Näin pääset alkuun I2C: n kanssa - IC Inter -viestinnän upea maailma
- Vaihe 2: Yleiskatsaus I2C: stä
- Vaihe 3: I²C -anturien määrittäminen
- Vaihe 4: Aloita liikkeellä - kiihtyvyysmittari
- Vaihe 5: Liitäntä ohjaimeen
- Vaihe 6: Liitännät
- Vaihe 7: Koodi
- Vaihe 8: Ota I2C -laitteesi toimintaan
Video: Aloittaminen I2C -anturiliitännän kanssa ?? - Liitä MMA8451 ESP32: n avulla: 8 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
Tässä opetusohjelmassa opit kaiken I2C -laitteen (kiihtyvyysmittarin) käynnistämisestä, yhdistämisestä ja hankkimisesta ohjaimen kanssa (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Vaihe 1: Näin pääset alkuun I2C: n kanssa - IC Inter -viestinnän upea maailma
Arduino, ESP -sarja, PIC, Rasberry PI jne. Ovat kaikki uskomattomia. Mutta mitä teet sen kanssa, kun sinulla on sellainen?
Parasta on lisätä antureita ja vastaavia. Nykyään suuri osa uudesta kuumasta tekniikasta käyttää I2C -protokollaa, jotta tietokone, puhelimet, tabletit tai mikro -ohjaimet voivat puhua antureista. Älypuhelimet olisivat vähemmän älykkäitä, jos he eivät pystyisi puhumaan tuolle kiihtyvyysanturianturille tietääkseen puhelimesi suunnan.
Vaihe 2: Yleiskatsaus I2C: stä
I2C on sarjamuotoinen, synkroninen, puolidupleksinen tiedonsiirtoprotokolla, joka mahdollistaa useiden isäntien ja orjien rinnakkaiselon samassa väylässä. I2C -väylä koostuu kahdesta linjasta: sarjatietolinja (SDA) ja sarjakello (SCL). Molemmat linjat vaativat vetovastuksia.
SDA (sarjatiedot) - linja isännälle ja orjalle lähettää ja vastaanottaa tietoja. SCL (sarjakello) - linja, joka välittää kellosignaalin. Yksinkertaisuudella ja alhaisilla valmistuskustannuksilla I2C: tä käytetään enimmäkseen pienen nopeuden oheislaitteiden viestintään lyhyillä etäisyyksillä (yhden jalan sisällä).
Haluatko oppia lisää I2C: stä? ……
Vaihe 3: I²C -anturien määrittäminen
Ennen kuin aloitat projektin, sinun on ymmärrettävä muutamia anturin perusasioita. Joten kaada itsellesi kuppi kahvia ennen sukellusta:)? …
I2C: n suuri vahvuus on, että voit laittaa niin monta anturia samaan neljään johtoon. Yksiköissä, joihin on kytketty useita valmiita moduuleja, saatat joutua poistamaan muutamia smd-vastuksia katkoksista, muuten väylän vetäminen saattaa muuttua liian aggressiiviseksi.
Mitä tietoja haluamme tietolomakkeelta ??
- Anturin toimivuus
- Nastat ja nastat
- Käyttöliittymän kuvaus (Älä unohda katsoa”I2c -osoitteen valintataulukkoa”)
- Rekisterit !!
Kaikki on hyvin, löydät sen helposti, mutta rekisterit ?? REKISTERIT ovat yksinkertaisesti muistipaikkoja I²C -laitteen sisällä. Yhteenvetoa siitä, kuinka monta rekisteriä tietyssä anturissa on ja mitä ne ohjaavat tai sisältävät, kutsutaan rekisterikarttaksi. Suurin osa anturin tietolomakkeen tiedoista kertoo kunkin rekisterin toiminnasta, ja ne voivat olla melko hitaita lukea, koska tiedot esitetään harvoin suoraan.
Jotta voisit ymmärtää, mitä tarkoitan sillä: rekistereitä on monenlaisia, mutta tätä johdantoa varten aion ryhmitellä ne kahteen yleiseen tyyppiin: valvonta- ja tietorekisterit.
1) Ohjausrekisterit
Useimmat anturit muuttavat toimintaansa ohjausrekistereihin tallennettujen arvojen perusteella. Ajattele ohjausrekistereitä On/Off-kytkimien pankeiksi, jotka kytket päälle asettamalla bitin 1 ja sammuttamalla asettamalla bitin 0. I²C-sirupohjaisilla antureilla on usein kymmenkunta tai useampia toiminta-asetuksia esimerkiksi bitti- Tilat, keskeytykset, luku-kirjoitusohjaus, syvyys, näytteenottonopeus, kohinanvaimennus jne., Joten sinun on yleensä asetettava bittejä useisiin eri ohjausrekistereihin, ennen kuin voit todella lukea.
2) Datarekisterit Toisin kuin ohjausyksikkö rekisteröi pankkien kytkimiä, ajattelen datan tulostusrekistereitä säiliöinä, joissa on numeroita, jotka sattuvat vain olemaan tallennettuina binäärimuodossa. Joten haluat tietää tiedot, lue aina tietorekisterit, kuten kuka olen rekisteröitynyt laitteen tunnistamiseen, tilarekisteriin jne.
I²C-anturin alustaminen on siis monivaiheinen prosessi, ja oikea toimintatapa selitetään usein kirjallisesti päinvastaiseen suuntaan, eikä yksinkertaisesti taulukossa. luettelossa ei koskaan sanota "Saadaksesi lukeman tästä anturista, tee (1), (2), (3), (4) jne.", mutta löydät kuvaukset ohjausrekisteribiteistä sanomalla "ennen kuin asetat bitin x tässä rekisteröi, sinun on asetettava bitti y tässä toisessa ohjausrekisterissä”.
Silti huomaan aina, että tietolomake on vuorovaikutteisempi kuin useimmat tekstit. jos viittaat siihen tiettyyn osaan tai tietoihin ja annat sinulle kaikki yksityiskohdat, yhteydet ja viitteet. Istu alas ja lue saadaksesi kaikki viittauksesi.:)
Vaihe 4: Aloita liikkeellä - kiihtyvyysmittari
Nykyaikaiset kiihtyvyysmittarit ovat MEMS (Micro Electro-Mechanical Systems) -laitteita, mikä tarkoittaa, että ne mahtuvat pieneen siruun pienimpien laitteiden sisällä. Yksi menetelmä MEMS -kiihtyvyysmittarien käyttämän kiihtyvyyden mittaamiseksi on käyttää jousiin ripustettua pientä johtavaa massaa. Laitteen kiihtyvyys saa jouset venymään tai supistumaan, ja johtavan massan taipuma voidaan mitata muuttamalla kapasitanssia lähellä oleville, kiinteille levyille.
Kiihtyvyysmittarit on määritelty seuraavilla ominaisuuksilla:
- Akselien lukumäärä yhdestä kolmeen akseliin, merkinnöissä X, Y ja Z. Huomaa, että joitain kiihtyvyysmittareita kutsutaan 6-akseliseksi tai 9-akseliseksi, mutta tämä tarkoittaa vain sitä, että ne on liitetty muihin MEMS-laitteisiin, kuten gyroskooppeihin ja/tai magnetometreihin. Jokaisella näistä laitteista on myös kolme akselia, minkä vuoksi on 3, 6 tai 9-akselisia inertiamittausyksiköitä (IMU).
- Lähdön tyyppi, joko analoginen tai digitaalinen. Digitaalinen kiihtyvyysmittari huolehtii kiihdytystietojen muotoilusta digitaaliseksi esitykseksi, joka voidaan lukea I2C: n tai SPI: n kautta.
- Kiihtyvyysalue mitattuna grammoina, missä 1 g on maan painovoimasta johtuva kiihtyvyys.
- Yhteisprosessorit, jotka voivat purkaa joitakin laskelmia, joita tarvitaan raakadatan analysoimiseksi MCU: sta. Useimmilla kiihtyvyysmittareilla on yksinkertainen keskeytysominaisuus havaita kiihtyvyyskynnys (sokki) ja 0 g (vapaa putoaminen). Toiset voivat käsitellä raakatietoja tarkemmin tarjotakseen merkityksellisempää tietoa MCU: lle.
Vaihe 5: Liitäntä ohjaimeen
Koska tunnemme ESP -mikrokontrollerit trendissä, käytämme esimerkkinä ESP32: ta. Tarvitset siis ensin Nodemcu-32: n.
Ei hätää, jos sinulla on muita ESP -levyjä tai jopa Arduinoa !!! Sinun tarvitsee vain määrittää Arduino IDE ja kokoonpano kehityskorttien mukaan, Arduino, ESP NodeMCU, ESP32s jne … Tarvitset myös jonkinlaisia I2C -osia, yleensä katkaisulaudalla. Tässä opetusohjelmassa aion käyttää MMA8451 digitaalinen kiihtyvyysanturin katkaisulauta.
Ja muutama hyppyjohdin ….
Vaihe 6: Liitännät
Ja tässä on asettelu.
Käytin seuraavaa yhteyttä yllä olevasta moduulista Nodemcu-32s-moduuliini.
ESP32s - Moduuli
3v3 - Vin
Gnd - Gnd
SDA 21 - SDA
SCL 22 - SCL
"Muista, että useimmiten kaikilla kehityskorteilla (enimmäkseen ESP: llä) ei ole selkeää pistoketta, joka auttaa määrittämään, mitä tappeja käytetään !! Joten ennen liittämistä tunnista levyn oikeat nastat käyttääksesi SDA: n ja SCL: n nastoja."
Vaihe 7: Koodi
Tämä vaatii Adafruit -kirjaston
osoitteesta
Lataa, pura pakkaus ja löydät esimerkkikansion, kansiosta, joka vain avaa MMA8451demo Arduino IDE -laitteessasi, ja näillä mennään….
näet seuraavan koodin MMA8451 -anturiliitäntään ohjaimesi kanssa
#sisältää
#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); void setup (void) {Serial.begin (9600); Lanka. Alku (4, 5); / * liity i2c -väylään SDA = D1 ja SCL = D2 NodeMCU: sta */ Serial.println ("Adafruit MMA8451 -testi!"); if (! mma.begin ()) {Serial.println ("Ei voitu aloittaa"); kun taas (1); } Serial.println ("MMA8451 löydetty!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Alue ="); Serial.print (2 << mma.getRange ()); Serial.println ("G"); } void loop () {// Lue "raakatiedot" 14-bittisissä laskuissa mma.read (); Serial.print ("X: / t"); Sarjajälki (mma.x); Serial.print ("\ tY: / t"); Sarjajälki (mma.y); Serial.print ("\ tZ: / t"); Sarjajälki (mma.z); Sarja.println (); / * Hanki uusi anturitapahtuma */ sensors_event_t event; mma.getEvent (& tapahtuma); / * Näytä tulokset (kiihtyvyys mitataan m/s^2) */Serial.print ("X: / t"); Serial.print (event.acceleration.x); Serial.print ("\ t"); Serial.print ("Y: / t"); Sarjajälki (event.acceleration.y); Serial.print ("\ t"); Serial.print ("Z: / t"); Sarjajälki (event.acceleration.z); Serial.print ("\ t"); Sarja.println ("m/s^2"); / * Selvitä anturin suunta */ uint8_t o = mma.getOrientation (); kytkin (o) {case MMA8451_PL_PUF: Serial.println ("Portrait Up Front"); tauko; tapaus MMA8451_PL_PUB: Serial.println ("Portrait Up Back"); tauko; tapaus MMA8451_PL_PDF: Serial.println ("Portrait Down Front"); tauko; tapaus MMA8451_PL_PDB: Serial.println ("Muotokuva alaspäin"); tauko; tapaus MMA8451_PL_LRF: Serial.println ("Maisema oikea etu"); tauko; tapaus MMA8451_PL_LRB: Serial.println ("Vaakasuora oikea"); tauko; tapaus MMA8451_PL_LLF: Serial.println ("Maisema vasen etu"); tauko; tapaus MMA8451_PL_LLB: Serial.println ("Vaakasuora vasen"); tauko; } Sarja.println (); viive (1000); }
Tallenna, vahvista ja lataa ……
Avaa sarjamonitori ja näet jotain tällaista, liikutin anturia noin tästä johtuen
X: -2166 Y: 1872 Z: 2186
X: -2166 Y: 1872 Z: 2186X: -4,92 Y: 5,99 Z: 4,87 m/s^2
Maisema Vasen Etu
X: -224 Y: -2020 Z: 3188
X: -5,10 Y: -3,19 Z: 7,00 m/s^2
Muotokuva edestä
Jos kaikki meni niin kuin pitää, sinulla on nyt I2C: n perusteet ja laitteen liittäminen.
Mutta laite ei toimi ??
Siirry seuraavaan vaiheeseen ……
Vaihe 8: Ota I2C -laitteesi toimintaan
Perusvaiheet I2C -laitteen toimimiseksi
Tutkitaan….
- Johdotus on oikein.. (tarkista uudelleen)
- Ohjelma on oikea.. (Kyllä, se on testiesimerkki..)
Aloita ratkaistavilla vaiheilla ….
Vaihe 1: Suorita I2C -laitteen skanneriohjelma laitteen osoitteen tarkistamiseksi ja ensin I2C -laitteesi on kunnossa
Voit ladata luonnoksen ja tarkistaa tuloksen.
Tulos - Laite toimii ja anturin osoite on oikea
I2C -skanneri. Skannaa…
Löydetty osoite: 28 (0x1C) Valmis. Löytyi 1 laite.
Vaihe 2: Tarkista anturikirjasto
Avaa Adafruit_MMA8451.h -tiedosto ja etsi laitteen osoite
Tulos - Osoite on eri kuin laitteeni ??
/*================================================ ========================= I2C-OSOITE/BITS --------------------- -------------------------------------------------- * /#define MMA8451_DEFAULT_ADDRESS (0x1D) //! <MMA8451 -oletusosoite I2C, jos A on GND, sen 0x1C /*======================= ================================================== */
Tee - Muokkaa tiedostoa muistikirjasta (muuta osoitetta) + Tallenna + Käynnistä IDE uudelleen
Se toimii. Voit saada lukemasi.
Eikö ……. ???
Vaihe 3: Tarkista Wire.begin on korvattu?
Avaa Adafruit_MMA8451.c -tiedosto ja etsi Wire.begin.
Tulos - Tämä lausunto korvataan
/************************************************* ************************* //*! @brief Asettaa HW: n (lukee kertoimien arvot jne.)* / / ********************************** ***************************************/ bool Adafruit_MMA8451:: begin (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;
Tee - Muokkaa tiedostoa muistikirjasta (kommentti) + Tallenna + Käynnistä IDE uudelleen
Ja lopuksi laite alkaa toimia…
Lähes ylikuormitan tämän opetusohjelman, koska sen päätavoite oli selittää kuinka aloittaa, hakea tietoja lomakkeesta, muodostaa yhteys ja saada I2C -laite toimimaan hyvin yksinkertaisella esimerkillä.
Suositeltava:
Aloittaminen edullisen RPLIDARin avulla Jetson Nanon avulla: 5 vaihetta
Aloittaminen edullisen RPLIDAR-laitteen kanssa Jetson Nanon käyttö: Lyhyt katsaus Valon tunnistus ja etäisyys (LiDAR) toimii samalla tavalla kuin ääniaaltojen sijasta käytetään laserpulssilla varustettuja ultraääni-etäisyysmittaria. Yandex, Uber, Waymo ja muut investoivat voimakkaasti LiDAR -tekniikkaan autonomisessa autossaan
Digispark Attiny85: n käytön aloittaminen Arduino IDE: n avulla: 4 vaihetta
Digispark Attiny85: n käytön aloittaminen Arduino IDE: n käyttäminen: Digispark on Attiny85 -pohjainen mikrokontrollerin kehityskortti, joka on samanlainen kuin Arduino -linja, vain halvempi, pienempi ja hieman vähemmän tehokas. Koko joukko kilpiä laajentaa sen toiminnallisuutta ja kykyä käyttää tuttua Arduino ID: tä
ESP32 CAM -laitteen käytön aloittaminen - Videon suoratoisto ESP CAM: n avulla Wifi -yhteyden kautta - ESP32 -turvakameraprojekti: 8 vaihetta
ESP32 CAM -laitteen käytön aloittaminen | Videon suoratoisto ESP CAM: n avulla Wifi -yhteyden kautta | ESP32 -turvakameraprojekti: Tänään opimme käyttämään tätä uutta ESP32 CAM -korttia ja miten voimme koodata sen ja käyttää sitä turvakamerana ja saada suoratoistovideon wifi -yhteyden kautta
ESP32: n käytön aloittaminen - ESP32 -levyjen asentaminen Arduino IDE: hen - ESP32 vilkkuva koodi: 3 vaihetta
ESP32: n käytön aloittaminen | ESP32 -levyjen asentaminen Arduino IDE: hen | ESP32 Blink Code: Tässä ohjeessa näemme, kuinka aloittaa työskentely esp32: n kanssa ja miten asennetaan esp32 -levyt Arduino IDE: hen, ja ohjelmoimme esp 32: n suorittamaan vilkkuva koodi käyttämällä arduino ide
Stm32: n käytön aloittaminen Arduino IDE: n avulla: 3 vaihetta
Stm32: n käytön aloittaminen Arduino IDE: n avulla: STM32 on melko tehokas ja suosittu levy, jota tukee Arduino IDE. ohjelmoimaan sitä