Përmbajtje:

Fillimi me Ndërfaqen e Sensorit I2C ?? - Ndërfaqeni MMA8451 tuaj duke përdorur ESP32: 8 hapa
Fillimi me Ndërfaqen e Sensorit I2C ?? - Ndërfaqeni MMA8451 tuaj duke përdorur ESP32: 8 hapa

Video: Fillimi me Ndërfaqen e Sensorit I2C ?? - Ndërfaqeni MMA8451 tuaj duke përdorur ESP32: 8 hapa

Video: Fillimi me Ndërfaqen e Sensorit I2C ?? - Ndërfaqeni MMA8451 tuaj duke përdorur ESP32: 8 hapa
Video: Как использовать SSD1306 128x32 OLED-дисплей I2C с кодом Arduino 2024, Korrik
Anonim
Fillimi me Ndërfaqen e Sensorit I2C ?? - Ndërfaqeni MMA8451 tuaj duke përdorur ESP32
Fillimi me Ndërfaqen e Sensorit I2C ?? - Ndërfaqeni MMA8451 tuaj duke përdorur ESP32

Në këtë tutorial, do të mësoni gjithçka rreth Si të filloni, lidhni dhe merrni pajisjen I2C (Përshpejtuesi) duke punuar me kontrollues (Arduino, ESP32, ESP8266, ESP12 NodeMCU)

Hapi 1: Si të filloni me I2C - Bota madhështore e komunikimit Inter IC

Arduino, Seria ESP, PIC, Rasberry PI, etj. Janë të gjitha të pabesueshme. Por çfarë bëni me të pasi të keni një të tillë?

Gjëja më e mirë është të shtoni sensorë dhe të tjerë. Sot shumë teknologji të reja të nxehta përdorin protokollin I2C për të lejuar kompjuterin, telefonat, tabletët ose mikrokontrolluesit të flasin me sensorët. Telefonat inteligjentë do të ishin më pak të zgjuar nëse nuk do të mund të flisnin me atë sensor të përshpejtuesit për të ditur se në cilën anë është përballur telefoni juaj.

Hapi 2: Vështrim i përgjithshëm mbi I2C

I2C është një protokoll komunikimi serik, sinkron, gjysmë dupleks që lejon bashkë-ekzistencën e shumë zotërinjve dhe skllevërve në të njëjtin autobus. Autobusi I2C përbëhet nga dy linja: linja e të dhënave serike (SDA) dhe ora serike (SCL). Të dyja linjat kërkojnë rezistorë tërheqës.

SDA (Të dhënat Seriale) - Linja për masterin dhe skllavin për të dërguar dhe marrë të dhëna. SCL (Ora Seriale) - Linja që mbart sinjalin e orës. Me avantazhe të tilla si thjeshtësia dhe kostoja e ulët e prodhimit, I2C përdoret kryesisht për komunikimin e pajisjeve periferike me shpejtësi të ulët në distanca të shkurtra (brenda një këmbë).

Dëshironi të mësoni më shumë rreth I2C? ……

Hapi 3: Si të Konfiguroni Sensorët I²C

Para se të hyni në projekt, duhet të kuptoni disa baza të Sensorit tuaj. Pra, derdhni një filxhan kafe para se të zhyteni:)? …

Forca e madhe e I2C është se ju mund të vendosni aq shumë sensorë në të njëjtat katër tela. Por për njësitë me disa module të paracaktuara të lidhura, mund t'ju duhet të hiqni disa rezistencë smd nga prishjet, përndryshe tërheqja në autobus mund të bëhet shumë agresive.

Çfarë informacioni duam nga Fleta e të Dhënave ??

  1. Funksionaliteti i sensorit
  2. Funksionimi i pinouts dhe kunjave
  3. Përshkrimi i ndërfaqes (Mos harroni të shikoni në "Tabela e Përzgjedhjes së Adresës I2c")
  4. Regjistron !!

Gjithçka është në rregull do ta gjeni lehtë por Regjistron ?? REGJISTRT janë thjesht vende të kujtesës brenda një pajisjeje I²C. Përmbledhja se sa regjistra ka në një sensor të caktuar dhe çfarë kontrollojnë ose përmbajnë quhet një hartë regjistri. Shumica e informacionit në fletën e të dhënave të sensorit ka të bëjë me shpjegimin se si funksionon secili regjistër, dhe ato mund të jenë mjaft të vështira për t’u lexuar, sepse informacioni rrallë paraqitet në mënyrë të drejtpërdrejtë.

Për t'ju dhënë një kuptim të asaj që dua të them me këtë: Ka shumë lloje regjistrash, por për këtë hyrje unë do t'i grupoj në dy lloje të përgjithshme: Regjistrat e Kontrollit dhe të Dhënave.

1) Regjistrat e Kontrollit

Shumica e sensorëve ndryshojnë mënyrën e funksionimit të tyre bazuar në vlerat e ruajtura në regjistrat e kontrollit. Mendoni për regjistrat e kontrollit si banka të çelsave të ndezjes/fikjes, të cilat i ndizni duke vendosur pak në 1 dhe fikeni duke e vendosur atë në 0. Sensorët e bazuar në çipa I²C shpesh kanë një duzinë ose më shumë cilësime operacionale për gjëra të tilla si bit- Mënyrat, ndërprerjet, kontrolli i leximit-shkrimit, thellësia, shpejtësia e marrjes së mostrave, zvogëlimi i zhurmës, etj., Kështu që zakonisht duhet të vendosni copa në disa regjistra të ndryshëm kontrolli para se të mund të merrni një lexim.

2) Regjistrat e të dhënave Për dallim nga një kontroll që regjistron bankën e çelsave, unë mendoj se regjistrat e daljes së të dhënave janë kontejnerë që mbajnë numra të cilët ndodhin të ruhen në formë binare. Kështu që ju doni të njihni të dhënat, lexoni gjithmonë regjistrat e të dhënave si kush jam unë për regjistrimin e pajisjes, regjistrin e gjendjes etj.

Pra, inicimi i një sensori I²C është një proces me shumë hapa dhe rendi i saktë i operacioneve shpesh shpjegohet me shkrim në drejtim të kundërt, në vend të një të drejtpërdrejtë në Fletën e të dhënave. lista nuk thotë kurrë "Për të marrë një lexim nga ky sensor, bëni (1), (2), (3), (4), etj", por gjeni përshkrime të bitëve të regjistrit të kontrollit duke thënë "para se të vendosni bit x në këtë regjistri duhet të vendosni bit y në këtë regjistër tjetër kontrolli”.

Megjithatë unë gjithmonë gjej që një fletë e të dhënave është më interaktive se shumica e tekstit. nëse do ta referoni atë për një pjesë ose pjesë të veçanta informacioni dhe ju jep të gjitha detajet, lidhjet dhe referencat. Thjesht uluni dhe lexoni për të nxjerrë të gjitha referencat tuaja.:)

Hapi 4: Filloni me Lëvizje - Përshpejtues

Përshpejtuesit modernë janë pajisje të Sistemeve Mikro-Elektro-Mekanike (MEMS), që do të thotë se ato janë në gjendje të përshtaten në një çip të vogël brenda pajisjeve më të vogla. Një metodë për të matur përshpejtimin e përdorur nga akselerometrat MEMS është përdorimi i një mase të vogël përcjellëse të pezulluar në burime. Përshpejtimi i pajisjes bën që burimet të shtrihen ose tkurren, dhe devijimi i masës përcjellëse mund të matet përmes një ndryshimi të kapacitetit në pllakat e afërta, fikse.

Përshpejtuesit përcaktohen nga karakteristikat e mëposhtme:

  1. Numri i akseve, nga një në tre akse, të etiketuara X, Y dhe Z në diagramet e specifikimit. Vini re se disa akselerometra quhen 6-bosht ose 9-bosht, por kjo thjesht do të thotë se ato janë të lidhura me pajisje të tjera MEMS siç janë xhiroskopët dhe/ose magnetometrat. Secila prej atyre pajisjeve gjithashtu ka tre akse, kjo është arsyeja pse ka 3, 6 ose 9 boshte Njësi Matëse Inerciale (IMU).
  2. Lloji i daljes, analog ose dixhital. Një akselerometër dixhital kujdeset për formatimin e të dhënave të përshpejtimit në një paraqitje dixhitale që mund të lexohet përmes I2C ose SPI.
  3. Gama e nxitimit të matur në g, ku 1g është nxitimi për shkak të gravitetit të Tokës.
  4. Koprocesorët që mund të shkarkojnë disa nga llogaritjet e nevojshme për të analizuar të dhënat e papërpunuara nga MCU. Shumica e akcelerometrave kanë një aftësi të thjeshtë ndërprerjeje për të zbuluar një prag nxitimi (goditje) dhe një gjendje 0-g (rënie të lirë). Të tjerët mund të bëjnë përpunim të avancuar në të dhënat e papërpunuara për të ofruar të dhëna më domethënëse për MCU.

Hapi 5: Ndërfaqja me kontrolluesin

Meqenëse ne njohim mikrokontrolluesit ESP në trend, ne do të përdorim ESP32 për shembullin tonë. Pra, së pari ju duhet një Nodemcu-32s.

Mos u shqetësoni nëse keni ndonjë bord tjetër ESP apo edhe Arduino !!! Thjesht duhet të konfiguroni Arduino IDE dhe konfigurimin tuaj sipas tabelave tuaja të Zhvillimit, për Arduino, ESP NodeMCU, ESP32s etj … Ju gjithashtu do të keni nevojë për disa lloj pjesësh I2C, zakonisht në një bord shpërthyes. Në këtë tutorial unë do të përdor MMA8451 bordi dixhital i shpërthimit të Accelerometer.

Dhe disa tela kërcyes….

Hapi 6: Lidhjet

Lidhjet
Lidhjet

Dhe këtu është një paraqitje.

Kam përdorur lidhjen e mëposhtme nga moduli i mësipërm në modulin tim Nodemcu-32s.

ESP32 - Moduli

3v3 - Vin

Gnd - Gnd

SDA 21 - SDA

SCL 22 - SCL

"Mos harroni, shumicën e kohës jo të gjitha bordet e zhvillimit (kryesisht në ESP) kanë një përcaktim të mirë të qartë për të ndihmuar në përcaktimin se cilat kunja përdoren !! Pra, para lidhjes, identifikoni kunjat e saktë të bordit tuaj për të përdorur cilat kunja janë për SDA dhe SCL."

Hapi 7: Kodi

Kjo kërkon bibliotekën Adafruit

nga

Shkarkoni, zbërtheni dhe do të gjeni dosjen e shembujve, në dosje thjesht hapni MMA8451demo në Arduino IDE tuaj dhe këtu ju shkoni….

do të shihni kodin e mëposhtëm për ndërfaqen e sensorit MMA8451 me kontrolluesin tuaj

#përfshi

#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); void setup (void) {Serial.begin (9600); Tela.filloj (4, 5); / * bashkojeni autobusit i2c me SDA = D1 dhe SCL = D2 të NodeMCU */ Serial.println ("Testi Adafruit MMA8451!"); nëse (! mma.begin ()) {Serial.println ("Nuk mund të fillojë"); ndërsa (1); } Serial.println ("MMA8451 u gjet!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Gama ="); Serial.print (2 << mma.getRange ()); Serial.println ("G"); } void loop () {// Lexoni të dhënat 'e papërpunuara' në numërimin 14-bit mma.read (); Serial.print ("X: / t"); Serial.print (mma.x); Serial.print ("\ tY: / t"); Serial.print (mma.y); Serial.print ("\ tZ: / t"); Serial.print (mma.z); Serial.println (); / * Merrni një ngjarje të re të sensorit */ event sensor_event_t; mma.getEvent (& ngjarje); / * Shfaq rezultatet (nxitimi matet në m/s^2) */Serial.print ("X: / t"); Serial.print (event.acceleration.x); Serial.print ("\ t"); Serial.print ("Y: / t"); Serial.print (event.acceleration.y); Serial.print ("\ t"); Serial.print ("Z: / t"); Serial.print (event.acceleration.z); Serial.print ("\ t"); Serial.println ("m/s^2"); / * Merrni orientimin e sensorit */ uint8_t o = mma.getOrientimi (); switch (o) {case MMA8451_PL_PUF: Serial.println ("Portret Para"); pushim; rasti MMA8451_PL_PUB: Serial.println ("Portret Up Back"); pushim; rasti MMA8451_PL_PDF: Serial.println ("Portreti poshtë përpara"); pushim; rasti MMA8451_PL_PDB: Serial.println ("Portret poshtë mbrapa"); pushim; rasti MMA8451_PL_LRF: Serial.println ("Peizazhi përpara djathtas"); pushim; rasti MMA8451_PL_LRB: Serial.println ("Peizazhi djathtas mbrapa"); pushim; rasti MMA8451_PL_LLF: Serial.println ("Peizazhi majtas përpara"); pushim; rasti MMA8451_PL_LLB: Serial.println ("Peizazhi majtas mbrapa"); pushim; } Serial.println (); vonesa (1000); }

Ruaj, Verifiko dhe Ngarko ……

Hapni monitorin serik dhe do të shihni diçka të tillë, unë po lëvizja sensorin në lidhje me leximet e ndryshme

X: -2166 Y: 1872 Z: 2186

X: -2166 Y: 1872 Z: 2186X: -4.92 Y: 5.99 Z: 4.87 m/s^2

Peizazh Majtas Front

X: -224 Y: -2020 Z: 3188

X: -5,10 Y: -3,19 Z: 7,00 m/s^2

Portret Para

Epo nëse gjithçka shkoi ashtu siç duhet, atëherë tani keni bazat e I2C dhe Si ta lidhni pajisjen tuaj..

Por pajisja nuk punon ?? !

Shkoni vetëm me hapin tjetër ……

Hapi 8: Punoni pajisjen tuaj I2C.

Hapat bazë për funksionimin e pajisjes I2C

Le të hetojmë….

  • Instalimet janë të sakta.. (kontrolloni përsëri)
  • Programi është i saktë.. (Po, është shembulli i testit..)

Filloni me fazat për të zgjidhur…..

Faza 1: Drejtoni programin e skanimit të pajisjes I2C për të kontrolluar adresën e pajisjes dhe së pari pajisja juaj I2C është në rregull

Ju mund të shkarkoni skicën dhe të kontrolloni daljen.

Rezultati - Pajisja po punon dhe adresa e sensorit është e drejtë

Skaner I2C. Po skanon…

Adresa e gjetur: 28 (0x1C) U krye. U gjet 1 pajisje (a).

Faza 2: Kontrolloni bibliotekën e sensorit

Hapni skedarin Adafruit_MMA8451.h dhe gjeni adresën e pajisjes

Rezultati - Adresa është e ndryshme nga pajisja ime ??.

/*================================================= ========================= ADRESA/BITS I2C --------------------- ------------------------------------------------------ * /#define MMA8451_DEFAULT_ADDRESS (0x1D) //! <Adresa e paracaktuar MMA8451 I2C, nëse A është GND, 0x1C e tij /*======================== =================================================== */

Bëni - Ndryshoni skedarin nga blloku i shënimeve (ndryshoni adresën) + Ruaj + Rinis IDE

Punon. Ju mund të merrni leximet tuaja.

Nuk do….. ???

Faza 3: Kontrolloni që Wire.begin është mbishkruar?

Hapni skedarin Adafruit_MMA8451.c dhe gjeni Wire.begin.

Rezultati - Kjo deklaratë është mbishkruar.

/********************************************* ***************************! @brief Vendos HW (lexon vlerat e koeficientëve, etj.)* / / ******************************* *************************************/ bool Adafruit_MMA8451:: fillo (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;

Bëni - Ndryshoni skedarin nga blloku i shënimeve (deklarata e komentit) + Ruaj + Rinis IDE

Dhe së fundi Pajisja po Punon☺…

Unë pothuajse e mbingarkova këtë mësim sepse qëllimi i tij kryesor ishte të shpjegonte Si të filloni, të merrni të dhëna nga fleta e të dhënave, të lidheni dhe të punoni me pajisjen I2C me shembullin shumë themelor. Shpresoj se gjithçka do të shkojë ashtu siç duhet, dhe do të jetë e dobishme të filloni Sensorin tuaj.

Recommended: