Sisukord:
- Samm 1: Kuidas alustada I2C -ga - võrratu Interneti -kommunikatsiooni maailm
- Samm: ülevaade I2C -st
- 3. samm: kuidas seadistada I²C andureid
- Samm: alustage liikumisega - kiirendusmõõtur
- Samm: liides kontrolleriga
- 6. samm: ühendused
- Samm: kood
- Samm: pange oma I2C -seade tööle
Video: I2C anduri liidesega alustamine ?? - Liidestage oma MMA8451 liidesega ESP32 -de abil: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Selles õpetuses saate teada, kuidas käivitada, ühendada ja hankida I2C -seade (kiirendusmõõtur), mis töötab kontrolleriga (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Samm 1: Kuidas alustada I2C -ga - võrratu Interneti -kommunikatsiooni maailm
Arduino, ESP seeria, PIC, Rasberry PI jne on kõik uskumatud. Aga mida sa sellega peale hakkad, kui sul see on?
Parim on lisada andureid jms. Tänapäeval kasutab palju uut kuuma tehnoloogiat I2C protokolli, mis võimaldab arvutil, telefonidel, tahvelarvutitel või mikrokontrolleritel anduritest rääkida. Nutitelefonid oleksid vähem nutikad, kui nad ei saaks selle kiirendusmõõturi anduriga rääkida, et teada saada, mis suunas teie telefon on.
Samm: ülevaade I2C -st
I2C on jada, sünkroonne, pooldupleksne kommunikatsiooniprotokoll, mis võimaldab mitme bussi ja orja kooseksisteerimist samal siinil. I2C siin koosneb kahest liinist: jadaandmeside (SDA) ja jadakell (SCL). Mõlemad liinid vajavad tõmbetakistusi.
SDA (seeriaandmed) - liin, mille kaudu ülem ja alam saavad andmeid saata ja vastu võtta. SCL (jadakell) - liin, mis kannab kella signaali. Selliste eelistega nagu lihtsus ja madalad tootmiskulud kasutatakse I2C-d enamasti väikese kiirusega välisseadmete suhtlemiseks lühikestel vahemaadel (ühe jala kaugusel).
Kas soovite I2C kohta rohkem teada saada? ……
3. samm: kuidas seadistada I²C andureid
Enne projektiga alustamist peate mõistma oma anduri mõningaid põhitõdesid. Seega kalla endale enne sukeldumist tass kohvi:)? …
I2C suur tugevus on see, et saate panna samale neljale juhtmele nii palju andureid. Kuid seadmete puhul, millel on ühendatud mitu eelvalmis moodulit, peate võib-olla eemaldama purunemistest paar smd-takistit, vastasel juhul võib bussi tõmbamine liiga agressiivseks muutuda.
Millist teavet me andmelehelt soovime ??
- Anduri funktsionaalsus
- Pistikute ja tihvtide funktsionaalsus
- Liidese kirjeldus (ärge unustage vaadata "I2c aadressi valimise tabelit")
- Registrid !!
Kõik on korras, leiate selle hõlpsalt, kuid registrid ?? REGISTRID on lihtsalt mälu asukohad I²C seadme sees. Kokkuvõtet selle kohta, mitu registrit antud anduris on ja mida need kontrollivad või sisaldavad, nimetatakse registrikaardiks. Suurem osa anduri andmelehel olevast teabest on seotud iga registri toimimise selgitamisega ja neid võib olla üsna raske lugeda, sest teavet esitatakse harva otsesel viisil.
Et mõista, mida ma selle all mõtlen: Registreid on mitut tüüpi, kuid selle sissejuhatuse jaoks rühmitan need kahte üldtüüpi: kontroll- ja andmeregistrid.
1) Kontrolliregistrid
Enamik andureid muudavad oma tööpõhimõtteid, lähtudes kontrollregistritesse salvestatud väärtustest. Mõelge juhtregistritele kui sisse/välja lülitite pankadele, mille lülitate sisse, seadistades biti 1-le ja välja lülitades selle biti 0-le. I²C kiibipõhistel anduritel on sageli tosin või enam tööseadet, näiteks bit- Režiimid, katkestused, lugemis-kirjutamise juhtimine, sügavus, diskreetimiskiirus, müravähendus jne, nii et tavaliselt peate enne lugemise tegemist bitti seadistama mitmesse erinevasse juhtregistrisse.
2) Andmeregistrid Erinevalt kontrollist, mis registreerib lülitite pankasid, arvan ma andmete väljastamise registritest kui konteineritest, mis sisaldavad numbreid, mis lihtsalt salvestatakse binaarsel kujul. Nii et kui soovite andmeid teada, lugege alati andmeregistreid, näiteks seda, kes ma olen seadme registreerimiseks, olekuregistriks jne.
Niisiis, I²C anduri lähtestamine on mitmeastmeline protsess ja õiget toimingute järjestust selgitatakse sageli kirjalikult vastupidises suunas, selle asemel, et andmelehel oleks lihtne. nimekirjas pole kunagi öeldud: „Sellelt andurilt lugemise saamiseks tehke (1), (2), (3), (4) jne”, kuid leiate juhtregistribittide kirjeldused, mis ütlevad: „enne kui määrate selles bitti x registreerida, peate selles teises juhtregistris määrama biti y”.
Siiski leian alati, et andmeleht on interaktiivsem kui enamik teksti. kui viitate sellele konkreetse teabe või osade jaoks ja see annab teile kõik üksikasjad, seosed ja viited. Lihtsalt istuge ja lugege, et saada kõik oma viited.:)
Samm: alustage liikumisega - kiirendusmõõtur
Kaasaegsed kiirendusmõõturid on mikroelektromehaanilised süsteemid (MEMS), mis tähendab, et need mahuvad väikseima vidina sisse väikesele kiibile. Üks meetod MEMS kiirendusmõõturite kiirenduse mõõtmiseks on vedrude külge riputatud väikese juhtiva massi kasutamine. Seadme kiirendus põhjustab vedrude venitamise või kokkutõmbumise ning juhtiva massi läbipainde saab mõõta läbi mahtuvuse muutuse läheduses asuvatele fikseeritud plaatidele.
Kiirendusmõõturid on määratud järgmiste funktsioonidega:
- Telgede arv, üks kuni kolm telge, on spetsifikatsiooniskeemidel tähistatud X, Y ja Z -ga. Pange tähele, et mõnda kiirendusmõõturit nimetatakse 6-teljeliseks või 9-teljeliseks, kuid see tähendab lihtsalt, et need on komplekteeritud teiste MEMS-seadmetega, nagu güroskoobid ja/või magnetomeetrid. Kõigil neil seadmetel on ka kolm telge, mistõttu on 3, 6 või 9 teljega inertsiaalseid mõõtühikuid (IMU).
- Väljundi tüüp, kas analoog või digitaalne. Digitaalne kiirendusmõõtur hoolitseb kiirendusandmete vormindamise eest digitaalseks esituseks, mida saab lugeda I2C või SPI kaudu.
- Kiirendusvahemik, mida mõõdetakse g -des, kus 1g on Maa gravitatsioonist tingitud kiirendus.
- Kaasprotsessorid, mis suudavad maha laadida mõned arvutused, mis on vajalikud MCU lähteandmete analüüsimiseks. Enamikul kiirendusmõõturitel on lihtne katkestusvõime kiirendusläve (šokk) ja 0 g (vabalangemine) seisundi tuvastamiseks. Teised saavad töödelda algandmeid täpsemalt, et pakkuda MCU -le sisukamaid andmeid.
Samm: liides kontrolleriga
Kuna me teame ESP mikrokontrollereid trendis, kasutame näitena ESP32. Nii et kõigepealt vajate Nodemcu-32.
Ärge muretsege, kui teil on muid ESP -plaate või isegi Arduino !!! Peate lihtsalt seadistama oma Arduino IDE ja konfiguratsiooni vastavalt oma arendusplaatidele, Arduino, ESP NodeMCU, ESP32s jne jaoks. Teil on vaja ka mingeid I2C osi, tavaliselt murdelaual. Selles õpetuses kasutan MMA8451 digitaalne kiirendusmõõtur.
Ja mõned hüppajajuhtmed….
6. samm: ühendused
Ja siin on paigutus.
Kasutasin ülaltoodud moodulist järgmist ühendust oma Nodemcu-32s mooduliga.
ESP32 - moodul
3v3 - Vin
Gnd - Gnd
SDA 21 - SDA
SCL 22 - SCL
"Pidage meeles, et enamasti ei ole kõigil arendusplaatidel (enamasti ESP -des) hea selge nupp, mis aitab kindlaks teha, milliseid tihvte kasutatakse! Nii et enne ühendamist tehke kindlaks oma plaadi õiged tihvtid, mida kasutada SDA ja SCL jaoks."
Samm: kood
Selleks on vaja Adafruit raamatukogu
saidilt
Laadige alla, pakkige lahti ja leiate näidiste kausta, kaustas lihtsalt avage MMA8451demo oma Arduino IDE -s ja siit saate….
näete oma kontrolleriga oma MMA8451 anduri liidese järgmist koodi
#kaasake
#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); tühine seadistus (tühine) {Serial.begin (9600); Traat.algus (4, 5); / * liituge i2c siiniga SDA = D1 ja SCL = D2 NodeMCU */ Serial.println ("Adafruit MMA8451 test!"); if (! mma.begin ()) {Serial.println ("Ei saanud alustada"); samas (1); } Serial.println ("MMA8451 leitud!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Vahemik ="); Serial.print (2 << mma.getRange ()); Serial.println ("G"); } void loop () {// Loe 'toorandmeid' 14-bitistes loendites mma.read (); Serial.print ("X: / t"); Seeriaprint (mma.x); Serial.print ("\ tY: / t"); Seeriaprint (mma.y); Serial.print ("\ tZ: / t"); Seeriaprint (mma.z); Serial.println (); / * Hankige uus andurisündmus */ sensor_event_t sündmus; mma.getEvent (& sündmus); / * Kuva tulemused (kiirendust mõõdetakse m/s^2) */Serial.print ("X: / t"); Seeriaprint (sündmus.kiirendus.x); Serial.print ("\ t"); Serial.print ("Y: / t"); Seeriaprint (sündmus.kiirendus.y); Serial.print ("\ t"); Serial.print ("Z: / t"); Serial.print (event.acceleration.z); Serial.print ("\ t"); Serial.println ("m/s^2"); / * Hankige anduri orientatsioon */ uint8_t o = mma.getOrientation (); lüliti (o) {case MMA8451_PL_PUF: Serial.println ("Portrait Up Front"); murda; juhtum MMA8451_PL_PUB: Serial.println ("Portree üles tagasi"); murda; juhtum MMA8451_PL_PDF: Serial.println ("Portree all ees"); murda; juhtum MMA8451_PL_PDB: Serial.println ("Portree alla tagasi"); murda; juhtum MMA8451_PL_LRF: Serial.println ("Maastik paremal ees"); murda; juhtum MMA8451_PL_LRB: Serial.println ("Maastik paremale tagasi"); murda; juhtum MMA8451_PL_LLF: Serial.println ("Maastik vasakul ees"); murda; juhtum MMA8451_PL_LLB: Serial.println ("Maastik vasakule tagasi"); murda; } Serial.println (); viivitus (1000); }
Salvestage, kontrollige ja laadige üles ……
Avage jadamonitor ja näete midagi sellist, liigutasin andurit, seega erinevaid näiteid
X: -2166 Y: 1872 Z: 2186
X: -2166 Y: 1872 Z: 2186X: -4,92 Y: 5,99 Z: 4,87 m/s^2
Maastik vasakul ees
X: -224 Y: -2020 Z: 3188
X: -5,10 Y: -3,19 Z: 7,00 m/s^2
Portree ees
Kui kõik läks nii nagu peaks, siis on teil nüüd I2C põhitõed ja seadme ühendamine.
Aga seade ei tööta ??
Lihtsalt jätkake järgmise sammuga ……
Samm: pange oma I2C -seade tööle
Põhilised sammud I2C -seadme tööks
Uurime….
- Juhtmestik on õige.. (kontrollige uuesti)
- Programm on õige.. (Jah, see on proovinäide..)
Alustage lahendatavate etappidega ….
1. etapp: käivitage seadme aadressi kontrollimiseks I2C -seadme skanneriprogramm ja kõigepealt on teie I2C -seade korras
Saate eskiisi alla laadida ja väljundit kontrollida.
Tulemus - seade töötab ja anduri aadress on õige
I2C skanner. Skaneerimine…
Leitud aadress: 28 (0x1C) Valmis. Leiti 1 seade (d).
2. etapp: kontrollige andurite kogu
Avage fail Adafruit_MMA8451.h ja leidke seadme aadress
Tulemus - aadress erineb minu seadmest ??
/*================================================ ========================= I2C AADRESS/BITS --------------------- -------------------------------------------------- * /#define MMA8451_DEFAULT_ADDRESS (0x1D) //! <Vaikimisi MMA8451 I2C aadress, kui A on GND, selle 0x1C /*======================= ================================================== */
Tehke - muutke faili märkmikust (muuda aadressi) + Salvesta + taaskäivitage IDE
See töötab. Saate oma näitu saada.
Äkki mitte ……. ???
3. etapp: kontrollige, kas Wire.begin on üle kirjutatud?
Avage fail Adafruit_MMA8451.c ja leidke Wire.begin.
Tulemus - see avaldus kirjutatakse üle
/************************************************ ************************* //*! @brief Seadistab HW (loeb koefitsientide väärtusi jne)* / / ********************************* ***************************************/ bool Adafruit_MMA8451:: start (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;
Tehke - muutke faili märkmikust (kommentaari avaldus) + Salvesta + taaskäivitage IDE
Ja lõpuks hakkab seade tööle☺…
Ma peaaegu koormasin selle õpetuse üle, sest selle peamine eesmärk oli selgitada, kuidas alustada, saada andmeid andmelehelt, ühendada ja saada I2C -seade töötama väga lihtsa näitega. Loodan, et kõik läheb nii, nagu peaks, ja anduri käivitamine on kasulik.
Soovitan:
Digispark Attiny85 kasutamise alustamine Arduino IDE abil: 4 sammu
Digisparkiga Attiny85 alustamine Arduino IDE kasutamine: Digispark on Attiny85 -l põhinev mikrokontrolleri arendusplaat, mis sarnaneb Arduino liiniga, ainult odavam, väiksem ja natuke vähem võimas. Terve hulga kilpidega, mis laiendavad selle funktsionaalsust ja võimalust kasutada tuttavat Arduino ID -d
ESP32 kasutamise alustamine - ESP32 tahvlite installimine Arduino IDE -sse ESP32 vilkuv kood: 3 sammu
ESP32 kasutamise alustamine | ESP32 tahvlite installimine Arduino IDE -sse ESP32 vilkumiskood: selles juhendis näeme, kuidas alustada esp32 -ga töötamist ja kuidas esp32 -tahvleid Arduino IDE -sse installida, ning programmeerime esp 32, et käivitada vilkumiskood arduino ide abil
E-posti märguannete loomine traadita temperatuuri ja niiskuse anduri NCD abil punase sõlme abil: 22 sammu
E-posti märguannete loomine NCD traadita temperatuuri ja niiskuse anduri kohta sõlme-punase abil: kasutame siin NCD temperatuuri ja niiskuse andurit, kuid sammud jäävad kõigi ncd-toodete jaoks samaks, nii et kui teil on muid ncd traadita andureid, proovige seda tasuta kõrvalt kõrvalt jälgida. Selle teksti peatamise abil peate
Kuidas luua oma anemomeetrit pilliroo lülitite, Halli efekti anduri ja mõne Nodemcu sissekande abil - 2. osa - Tarkvara: 5 sammu (koos piltidega)
Kuidas luua oma anemomeetrit, kasutades pilliroo lüliteid, Halli efekti andurit ja mõnda Nodemcu sissekannet - 2. osa - Tarkvara: sissejuhatus kohta Nodemcu - 1. osa - riistvara " - kus ma näitan, kuidas tuule kiirust ja suunda mõõta
Kuidas pääseda oma muusikale kõikjal oma Mac Mini abil: 5 sammu
Kuidas pääseda oma muusikale kõikjal oma Mac Mini abil: see juhend muudab teie arvuti privaatseks jagamisserveriks. See majutab teie muusikat, nii et ainult teie saate seda kasutada. Kuid eeldades, et teie Interneti -ühendus on piisavalt kiire, saate seda kasutada kogu maailmast. Kui lahe see on