Satura rādītājs:
- 1. solis: Kā sākt darbu ar I2C - lielisku starpposma komunikācijas pasauli
- 2. darbība. I2C pārskats
- 3. darbība. Kā konfigurēt I²C sensorus
- 4. solis: sāciet ar kustību - akselerometrs
- 5. darbība: saskarne ar kontrolieri
- 6. darbība. Savienojumi
- 7. solis: kods
- 8. darbība. I2C ierīces darbības sākšana
Video: Darba sākšana ar I2C sensora saskarni ?? - Saskarne ar jūsu MMA8451, izmantojot ESP32: 8 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Šajā apmācībā jūs uzzināsit visu par to, kā sākt, savienot un iegūt I2C ierīci (akselerometru) darbam ar kontrolieri (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
1. solis: Kā sākt darbu ar I2C - lielisku starpposma komunikācijas pasauli
Arduino, ESP sērija, PIC, Rasberry PI uc ir neticami. Bet ko jūs ar to darāt, kad jums tāds ir?
Vislabāk ir pievienot sensorus un tamlīdzīgus. Mūsdienās daudzās jaunajās karstajās tehnoloģijās tiek izmantots I2C protokols, lai dators, tālruņi, planšetdatori vai mikrokontrolleri varētu runāt par sensoriem. Viedtālruņi būtu mazāk gudri, ja viņi nevarētu runāt ar šo akselerometra sensoru, lai uzzinātu, uz kuru pusi jūsu tālrunis ir vērsts.
2. darbība. I2C pārskats
I2C ir sērijveida, sinhronais, pusdupleksais sakaru protokols, kas ļauj vienlaikus vadīt vairākus saimniekus un vergus vienā kopnē. I2C kopne sastāv no divām līnijām: sērijas datu līnija (SDA) un sērijas pulkstenis (SCL). Abām līnijām ir nepieciešami pievilkšanas rezistori.
SDA (sērijas dati) - līnija, kas ļauj kapteinim un vergam sūtīt un saņemt datus. SCL (sērijas pulkstenis) - līnija, kas pārraida pulksteņa signālu. Ar tādām priekšrocībām kā vienkāršība un zemas ražošanas izmaksas I2C galvenokārt izmanto zema ātruma perifērijas ierīču saziņai nelielos attālumos (vienas pēdas robežās).
Vai vēlaties uzzināt vairāk par I2C? ……
3. darbība. Kā konfigurēt I²C sensorus
Pirms došanās uz projektu, jums ir jāsaprot daži sensora pamati. Tāpēc pirms iegremdēšanās ielejiet sev kafijas tasi:)? …
I2C lielā priekšrocība ir tā, ka uz tiem pašiem četriem vadiem var ievietot tik daudz sensoru. Bet vienībām, kurām ir pievienoti vairāki iepriekš izgatavoti moduļi, iespējams, būs jānoņem daži smd rezistori no izlaušanās vietām, pretējā gadījumā kopnes pievilkšana var kļūt pārāk agresīva.
Kādu informāciju mēs vēlamies no datu lapas ??
- Sensora funkcionalitāte
- Pinpušu un tapu funkcionalitāte
- Interfeisa apraksts (neaizmirstiet apskatīt tabulu “I2c adrešu izvēles tabula”)
- Reģistri !!
Viss ir kārtībā, jūs to atradīsit viegli, bet reģistri ?? REĢISTRI ir vienkārši atmiņas vietas I²C ierīcē. Kopsavilkumu par to, cik reģistru ir noteiktā sensorā un ko tie kontrolē vai satur, sauc par reģistra karti. Lielākā daļa informācijas sensora datu lapā ir par to, kā izskaidrot katra reģistra darbību, un to var izlasīt, jo informācija reti tiek sniegta tiešā veidā.
Lai jūs saprastu, ko es ar to domāju: ir daudz reģistru veidu, bet šajā ievadā es tos grupēšu divos vispārējos veidos: kontroles un datu reģistri.
1) Kontroles reģistri
Lielākā daļa sensoru maina savu darbību, pamatojoties uz kontroles reģistros saglabātajām vērtībām. Iedomājieties vadības reģistrus kā ieslēgšanas/izslēgšanas slēdžu blokus, kurus ieslēdzat, iestatot bitu uz 1 un izslēdzot, iestatot šo bitu uz 0. I²C mikroshēmu sensoriem bieži ir ducis vai vairāk darbības iestatījumu, piemēram, bitiem. Režīmi, pārtraukumi, lasīšanas-rakstīšanas vadība, dziļums, paraugu ņemšanas ātrums, trokšņa samazināšana utt., Tāpēc parasti pirms nolasīšanas jums ir jāiestata biti vairākos dažādos vadības reģistros.
2) Datu reģistri Atšķirībā no kontroles, kas reģistrē slēdžu banku, es domāju, ka datu izvades reģistri ir konteineri, kuros ir numuri, kas vienkārši tiek glabāti binārā formā. Tātad, ja vēlaties uzzināt datus, vienmēr izlasiet datu reģistrus, piemēram, kas es esmu, reģistrējoties ierīces identifikācijai, statusa reģistram utt.
Tātad I²C sensora inicializēšana ir daudzpakāpju process, un pareizā darbību secība bieži tiek paskaidrota rakstiski apgrieztā virzienā, nevis vienkārša datu lapā. Sarakstā nekad nav teikts: “Lai nolasītu no šī sensora, rīkojieties (1), (2), (3), (4) utt.”, bet jūs atradīsit vadības reģistra bitu aprakstus, kuros teikts: “pirms iestatāt bitu x šajā reģistrēt, šajā citā vadības reģistrā ir jāiestata bits y”.
Tomēr es vienmēr uzskatu, ka datu lapa ir daudz interaktīvāka nekā lielākā daļa teksta. ja jūs to atsaucēsit uz konkrētu informācijas daļu vai informāciju, un tā sniegs jums visu informāciju, savienojumus un atsauces. Vienkārši apsēdieties un izlasiet, lai uzzinātu visas savas atsauces.:)
4. solis: sāciet ar kustību - akselerometrs
Mūsdienu akselerometri ir mikroelektromehāniskās sistēmas (MEMS) ierīces, kas nozīmē, ka tie spēj iekļauties nelielā mikroshēmā mazāko sīkrīku iekšpusē. Viena metode, kā izmērīt paātrinājumu, ko izmanto MEMS akselerometri, ir izmantot nelielu, vadošu masu, kas piekārta uz atsperēm. Ierīces paātrinājums izraisa atsperu izstiepšanos vai saraušanos, un vadošās masas novirzi var izmērīt, mainot kapacitāti uz tuvumā esošām, fiksētām plāksnēm.
Akselerometrus nosaka šādas funkcijas:
- Asu skaits, no vienas līdz trim asīm, specifikāciju diagrammās apzīmēts ar X, Y un Z. Ņemiet vērā, ka dažus akselerometrus sauc par 6 vai 9 asīm, bet tas nozīmē tikai to, ka tie ir komplektā ar citām MEMS ierīcēm, piemēram, žiroskopiem un/vai magnetometriem. Katrai no šīm ierīcēm ir arī trīs asis, tāpēc ir 3, 6 vai 9 asu inerciālās mērvienības (IMU).
- Analogās vai digitālās izejas veids. Digitālais akselerometrs rūpējas par paātrinājuma datu formatēšanu digitālā attēlojumā, ko var nolasīt, izmantojot I2C vai SPI.
- Paātrinājuma diapazons, ko mēra g, kur 1g ir paātrinājums Zemes gravitācijas dēļ.
- Kopprocesori, kas var izkraut dažus aprēķinus, kas nepieciešami, lai analizētu neapstrādātus datus no MCU. Lielākajai daļai akselerometru ir dažas vienkāršas pārtraukšanas iespējas, lai noteiktu paātrinājuma slieksni (šoku) un 0 g (brīvā kritiena) stāvokli. Citi var veikt neapstrādātu datu papildu apstrādi, lai MCU piedāvātu nozīmīgākus datus.
5. darbība: saskarne ar kontrolieri
Tā kā mēs zinām, ka ESP mikrokontrolleri ir tendenciozi, mūsu piemērā izmantosim ESP32. Tātad vispirms jums ir nepieciešams Nodemcu-32s.
Neuztraucieties, ja jums ir kādi citi ESP dēļi vai pat Arduino !!! Jums vienkārši ir jāiestata Arduino IDE un konfigurācija atbilstoši jūsu attīstības paneļiem, Arduino, ESP NodeMCU, ESP32s utt. Jums būs nepieciešamas arī dažas I2C detaļas, parasti uz sadalīšanas dēļa. Šajā apmācībā es izmantošu MMA8451 digitālais paātrinājuma mērītāja panelis.
Un daži džemperu vadi….
6. darbība. Savienojumi
Un šeit ir izkārtojums.
Es izmantoju šādu savienojumu no iepriekš minētā moduļa ar savu Nodemcu-32s moduli.
ESP32 - modulis
3v3 - Vin
Gnd - Gnd
SDA 21 - SDA
SCL 22 - SCL
"Atcerieties, ka lielākoties ne visos izstrādes dēļos (pārsvarā ESP) ir labs skaidrs uzgalis, lai palīdzētu noteikt, kuras tapas tiek izmantotas! Tātad, pirms pieslēgšanas identificējiet pareizās tapas tapas, lai izmantotu, kuras tapas ir paredzētas SDA un SCL."
7. solis: kods
Tam nepieciešama Adafruit bibliotēka
no
Lejupielādējiet, izsaiņojiet un jūs atradīsit mapes piemērus, mapē vienkārši atveriet MMA8451demo savā Arduino IDE un lūk …
jūs redzēsit šādu kodu savai MMA8451 sensora saskarnei ar savu kontrolieri
#iekļaut
#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); void setup (void) {Serial.begin (9600); Wire.begin (4, 5); / * pievienoties i2c kopnei ar SDA = D1 un SCL = D2 no NodeMCU */ Serial.println ("Adafruit MMA8451 tests!"); if (! mma.begin ()) {Serial.println ("Nevarētu sākt"); kamēr (1); } Serial.println ("MMA8451 atrasts!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Diapazons ="); Sērijas nospiedums (2 << mma.getRange ()); Serial.println ("G"); } void loop () {// Lasiet 'neapstrādātos' datus 14 bitu skaitļos mma.read (); Serial.print ("X: / t"); Sērijas nospiedums (mma.x); Serial.print ("\ tY: / t"); Sērijas nospiedums (mma.y); Serial.print ("\ tZ: / t"); Sērijas nospiedums (mma.z); Sērijas.println (); / * Iegūstiet jaunu sensora notikumu */ sensors_event_t notikumu; mma.getEvent (& notikums); / * Parādiet rezultātus (paātrinājumu mēra m/s^2) */Serial.print ("X: / t"); Sērijas nospiedums (event.acceleration.x); Serial.print ("\ t"); Serial.print ("Y: / t"); Sērijas nospiedums (notikums.paātrinājums.y); Serial.print ("\ t"); Serial.print ("Z: / t"); Sērijas nospiedums (event.acceleration.z); Serial.print ("\ t"); Sērijas.println ("m/s^2"); / * Iegūstiet sensora orientāciju */ uint8_t o = mma.getOrientation (); slēdzis (o) {case MMA8451_PL_PUF: Serial.println ("Portrait Up Front"); pārtraukums; lieta MMA8451_PL_PUB: Serial.println ("Portrets uz augšu"); pārtraukums; lieta MMA8451_PL_PDF: Serial.println ("Portrets uz leju priekšā"); pārtraukums; lieta MMA8451_PL_PDB: Serial.println ("Portrets uz leju"); pārtraukums; lieta MMA8451_PL_LRF: Serial.println ("Ainava labajā priekšpusē"); pārtraukums; lieta MMA8451_PL_LRB: Serial.println ("Ainava pa labi"); pārtraukums; lieta MMA8451_PL_LLF: Serial.println ("Ainava kreisajā priekšpusē"); pārtraukums; lieta MMA8451_PL_LLB: Serial.println ("Ainava pa kreisi"); pārtraukums; } Sērijas.println (); kavēšanās (1000); }
Saglabāt, pārbaudīt un augšupielādēt ……
Atveriet seriālo monitoru, un jūs redzēsit kaut ko līdzīgu, es pārvietoju sensoru par līdz ar to dažādiem rādījumiem
X: -2166 Y: 1872 Z: 2186
X: -2166 Y: 1872 Z: 2186X: -4,92 Y: 5,99 Z: 4,87 m/s^2
Ainava Kreisā priekšpuse
X: -224 Y: -2020 Z: 3188
X: -5,10 Y: -3,19 Z: 7,00 m/s^2
Portrets priekšā
Nu, ja viss notika tā, kā vajadzētu, tad jums tagad ir I2C pamati un ierīces savienošana.
Bet ierīce nedarbojas ??
Vienkārši dodieties uz nākamo soli ……
8. darbība. I2C ierīces darbības sākšana
Pamata darbības, lai I2C ierīce darbotos
Izpētīsim….
- Elektroinstalācija ir pareiza.. (pārbaudiet vēlreiz)
- Programma ir pareiza.. (Jā, tas ir testa piemērs..)
Sāciet ar risināmiem posmiem ….
1. posms: palaidiet I2C ierīces skenera programmu, lai pārbaudītu ierīces adresi un vispirms jūsu I2C ierīce ir kārtībā
Jūs varat lejupielādēt skici un pārbaudīt izvadi.
Rezultāts - ierīce darbojas un sensora adrese ir pareiza
I2C skeneris. Notiek skenēšana…
Atrastā adrese: 28 (0x1C) Gatavs. Atrasta 1 ierīce (-as).
2. posms: pārbaudiet sensoru bibliotēku
Atveriet failu Adafruit_MMA8451.h un atrodiet ierīces adresi
Rezultāts - adrese atšķiras no manas ierīces ??
/*================================================ ========================= I2C ADRESE/BITI --------------------- -------------------------------------------------- * /#define MMA8451_DEFAULT_ADDRESS (0x1D) //! <Noklusējuma MMA8451 I2C adrese, ja A ir GND, tā 0x1C /*======================= ================================================== */
Darīt - rediģēt failu no piezīmju grāmatiņas (mainīt adresi) + Saglabāt + Restartēt IDE
Tas darbojas. Jūs varat iegūt savus rādījumus.
Vai ne ……. ???
3. posms: pārbaudiet Wire.begin ir pārrakstīts?
Atveriet failu Adafruit_MMA8451.c un atrodiet Wire.begin.
Rezultāts - šis paziņojums ir pārrakstīts
/************************************************ ************************* //*! @brief Uzstāda HW (nolasa koeficientu vērtības utt.)* / / ********************************* ***************************************/ bool Adafruit_MMA8451:: starts (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;
Darīt - rediģēt failu no piezīmju grāmatiņas (komentāra paziņojums) + Saglabāt + Restartēt IDE
Un visbeidzot ierīce sāk darboties…
Es gandrīz pārslogoju šo apmācību, jo tās galvenais mērķis bija izskaidrot, kā sākt, iegūt datus no datu lapas, izveidot savienojumu un panākt, lai I2C ierīce darbotos ar ļoti vienkāršu piemēru. Ceru, ka viss notiks tā, kā vajadzētu, un būs lietderīgi iedarbināt sensoru.
Ieteicams:
Darba sākšana ar FRDM-KL46Z (un Mbed Online IDE), izmantojot Windows 10: 6 soļi
Darba sākšana ar FRDM-KL46Z (un Mbed Online IDE) Windows 10: The Freedom (FRDM) izstrādes dēļi ir mazas, mazjaudas, rentablas novērtēšanas un izstrādes platformas, kas ir ideāli piemērotas ātrai lietojumprogrammu prototipēšanai. Šīs novērtēšanas plāksnes piedāvā viegli lietojamu lielapjoma atmiņas ierīces režīma zibspuldzes programmētāju, kas ir
Darba sākšana ar zemo izmaksu RPLIDAR, izmantojot Jetson Nano: 5 soļi
Darba sākšana ar zemo izmaksu RPLIDAR, izmantojot Jetson Nano: Īss pārskats Gaismas noteikšana un diapazons (LiDAR) darbojas tāpat kā skaņas viļņu vietā tiek izmantoti ultraskaņas tālmēri ar lāzera impulsu. Yandex, Uber, Waymo uc daudz iegulda LiDAR tehnoloģijā, lai izstrādātu savu autonomo automašīnu
Darba sākšana ar Digispark Attiny85, izmantojot Arduino IDE: 4 soļi
Darba sākšana ar Digispark Attiny85, izmantojot Arduino IDE: Digispark ir uz Attiny85 balstīta mikrokontrolleru izstrādes plate, kas līdzīga Arduino līnijai, tikai lētāka, mazāka un nedaudz mazāk jaudīga. Ar virkni vairogu, lai paplašinātu tā funkcionalitāti un iespēju izmantot pazīstamo Arduino ID
Darba sākšana ar ESP32 CAM - Video straumēšana, izmantojot ESP CAM, izmantojot Wifi - ESP32 drošības kameru projekts: 8 soļi
Darba sākšana ar ESP32 CAM | Video straumēšana, izmantojot ESP CAM, izmantojot Wifi | ESP32 drošības kameru projekts: Šodien mēs uzzināsim, kā izmantot šo jauno ESP32 CAM plati un kā mēs varam to kodēt un izmantot kā drošības kameru un iegūt straumēšanas video, izmantojot WiFi
Darba sākšana ar ESP32 - ESP32 dēļu instalēšana Arduino IDE - ESP32 mirgojošs kods: 3 soļi
Darba sākšana ar ESP32 | ESP32 dēļu instalēšana Arduino IDE | ESP32 mirgošanas kods: šajā pamācībā mēs redzēsim, kā sākt strādāt ar esp32 un kā instalēt esp32 plates Arduino IDE, un mēs programēsim esp 32, lai palaistu mirgojošu kodu, izmantojot arduino ide