Orodha ya maudhui:

Kuanza na Muunganisho wa Sensorer ya I2C? - Interface MMA8451 yako Kutumia ESP32s: 8 Hatua
Kuanza na Muunganisho wa Sensorer ya I2C? - Interface MMA8451 yako Kutumia ESP32s: 8 Hatua

Video: Kuanza na Muunganisho wa Sensorer ya I2C? - Interface MMA8451 yako Kutumia ESP32s: 8 Hatua

Video: Kuanza na Muunganisho wa Sensorer ya I2C? - Interface MMA8451 yako Kutumia ESP32s: 8 Hatua
Video: Winson WCS1800 WCS2750 WCS1500 Hall Effect Current Sensor with dispaly with over current protection 2024, Julai
Anonim
Kuanza na Muunganisho wa Sensorer ya I2C? - Interface MMA8451 yako Kutumia ESP32s
Kuanza na Muunganisho wa Sensorer ya I2C? - Interface MMA8451 yako Kutumia ESP32s

Katika mafunzo haya, utajifunza yote kuhusu Jinsi ya kuanza, kuunganisha na kupata kifaa cha I2C (Accelerometer) kinachofanya kazi na mtawala (Arduino, ESP32, ESP8266, ESP12 NodeMCU)

Hatua ya 1: Jinsi ya kuanza na I2C - Ulimwengu Mkubwa wa Mawasiliano ya Inter IC

Arduino, ESP Series, PIC, Rasberry PI, n.k zote ni za kushangaza. Lakini unafanya nini nayo mara tu unayo?

Jambo bora ni kuongeza sensorer na zingine. Leo teknolojia nyingi mpya moto hutumia itifaki ya I2C kuruhusu kompyuta, simu, vidonge, au wadhibiti-microcree kuzungumza sensorer. Simu za rununu zingekuwa za busara kidogo ikiwa hazingeweza kuzungumza na chombo hicho cha kuharakisha kujua njia ambayo simu yako inakabiliwa nayo.

Hatua ya 2: Muhtasari wa I2C

I2C ni serial, synchronous, nusu-duplex mawasiliano itifaki ambayo inaruhusu kuwepo ushirikiano wa mabwana nyingi na watumwa kwenye basi moja. Basi la I2C lina mistari miwili: laini ya data ya serial (SDA) na saa ya serial (SCL). Mistari yote miwili inahitaji vizuizi vya kuvuta.

SDA (Takwimu za Serial) - Mstari wa bwana na mtumwa kutuma na kupokea data. SCL (Serial Clock) - Mstari ambao hubeba ishara ya saa. Pamoja na faida kama unyenyekevu na gharama ya chini ya utengenezaji, I2C hutumiwa zaidi kwa mawasiliano ya vifaa vya pembeni vya kasi ya chini kwa umbali mfupi (ndani ya mguu mmoja).

Unataka kujifunza Zaidi kuhusu I2C? ……

Hatua ya 3: Jinsi ya kusanidi Sensorer za I²C

Kabla ya kuingia kwenye mradi huo, unahitaji kuelewa misingi kadhaa ya Sensor yako. Kwa hivyo jimiminia kikombe cha kahawa kabla ya kuingia ndani:)? …

Nguvu kubwa ya I2C ni kwamba unaweza kuweka sensorer nyingi kwenye waya hizo nne. Lakini kwa vitengo vilivyo na moduli kadhaa zilizotengenezwa tayari, unaweza kulazimika kuondoa vipingaji kadhaa vya smd kutoka kwa kuzuka, vinginevyo kuvuta kwenye basi kunaweza kuwa mkali sana.

Je! Ni habari gani tunayotaka kutoka kwa Takwimu?

  1. Utendaji wa sensorer
  2. Pinouts na pini utendaji
  3. Maelezo ya kiolesura (Usikose kutazama "Jedwali la Uteuzi wa Anwani ya I2c")
  4. Sajili !!

Kila kitu kiko sawa utaipata kwa urahisi lakini Sajili ?? USAJILI ni sehemu za kumbukumbu tu ndani ya kifaa cha I²C. Muhtasari wa daftari ngapi zilizo katika sensorer iliyopewa, na kile wanachodhibiti au vyenye inaitwa ramani ya rejista. Maelezo mengi kwenye lahajedwali la sensa ni juu ya kuelezea jinsi kila rejista inavyofanya kazi, na zinaweza kuwa slog ya kusoma kwa sababu habari haziwasilishwa kwa njia ya moja kwa moja.

Kukupa hisia ya kile ninachomaanisha na hiyo: Kuna aina nyingi za rejista lakini kwa utangulizi huu nitawaweka katika aina mbili za jumla: Rejista za Usajili na Takwimu.

1) Sajili za Kudhibiti

Sensorer nyingi hubadilisha jinsi zinavyofanya kazi kulingana na maadili yaliyohifadhiwa kwenye rejista za kudhibiti. Fikiria rejista za kudhibiti kama benki za swichi za On / Off, ambazo unawasha kwa kuweka kidogo hadi 1 na kuzima kwa kuweka kidogo kuwa sensorer 0. I -C chip-based sensors mara nyingi huwa na mipangilio kadhaa ya dereva au zaidi ya vitu kama kidogo- Njia, kukatiza, kudhibiti kusoma-kuandika, kina, kasi ya sampuli, upunguzaji wa kelele, nk, kwa hivyo kawaida unahitaji kuweka bits kwenye rejista kadhaa tofauti za udhibiti kabla ya kusoma.

2) Sajili za data Kwa hivyo unataka kujua Takwimu, kila wakati soma rejista za data kama mimi ni nani anayejiandikisha kwa kitambulisho cha kifaa, Sajili ya hali nk.

Kwa hivyo, kuanzisha sensa ya I²C ni mchakato wa hatua nyingi na utaratibu sahihi wa operesheni mara nyingi huelezewa kwa maandishi kwa mwelekeo wa kugeuza, Badala ya moja kwa moja katika Hati ya Nyaraka. orodha haisemi kamwe "Ili kupata usomaji kutoka kwa sensa hii, fanya (1), (2), (3), (4), n.k", lakini unapata maelezo ya biti za rejista za kudhibiti zikisema "kabla ya kuweka kidogo x katika hii kujiandikisha lazima uweke kidogo y katika rejista hii nyingine ya kudhibiti”.

Bado mimi huona kila wakati karatasi ya data inaingiliana zaidi kuliko maandishi mengi. ikiwa utairejelea kipande au habari maalum na itakupa maelezo yote, unganisho na marejeleo. Kaa chini na usome ili upate marejeleo yako yote.:)

Hatua ya 4: Anza na Mwendo - Accelerometer

Accelerometer za kisasa ni vifaa vya Micro Electro-Mechanical Systems (MEMS), ambayo inamaanisha kuwa wana uwezo wa kutoshea kwenye chip ndogo ndani ya vifaa vidogo zaidi. Njia moja ya kupima kasi iliyoajiriwa na viboreshaji vya MEMS ni kutumia misa ndogo ndogo iliyosimamishwa kwenye chemchemi. Kuongeza kasi kwa kifaa kunasababisha chemchemi kunyoosha au kubana, na kupunguka kwa misa inayoweza kupimika kunaweza kupimwa kupitia mabadiliko ya uwezo kwa sahani zilizo karibu, zilizowekwa.

Accelerometers imeainishwa na sifa zifuatazo:

  1. Idadi ya shoka, kutoka shoka moja hadi tatu, iliyoandikwa X, Y, na Z kwenye michoro ya vipimo. Kumbuka kuwa zingine za kuongeza kasi huitwa 6-axis au 9-axis, lakini hiyo inamaanisha tu kuwa zimefungwa na vifaa vingine vya MEMS kama gyroscopes na / au magnetometers. Kila moja ya vifaa hivyo pia ina mihimili mitatu, ndiyo sababu kuna vitengo 3, 6, au 9-axis Inertial kipimo (IMUs).
  2. Aina ya pato, iwe analog au dijiti. Accelerometer ya dijiti hutunza kupangilia data ya kuongeza kasi katika uwakilishi wa dijiti ambao unaweza kusomwa juu ya I2C au SPI.
  3. Masafa ya kasi ya kipimo katika g's, ambapo 1g ni kuongeza kasi kwa sababu ya mvuto wa Dunia.
  4. Wafanyabiashara ambao wanaweza kupakua mahesabu mengine yanahitajika kuchambua data ghafi kutoka kwa MCU. Accelerometer nyingi zina uwezo rahisi wa kukatiza kugundua kizingiti cha kuongeza kasi (mshtuko) na hali ya 0-g (kutoroka). Wengine wanaweza kufanya usindikaji wa hali ya juu kwenye data ghafi ili kutoa data yenye maana zaidi kwa MCU.

Hatua ya 5: Maingiliano na Mdhibiti

Kwa kuwa tunajua Watawala Mdogo wa ESP katika mwenendo, tutatumia ESP32 kwa mfano wetu. Kwa hivyo kwanza unahitaji Nodemcu-32s.

Hakuna wasiwasi ikiwa una bodi zingine za ESP au hata Arduino !!! Lazima tu usanidi IDE yako ya Arduino na usanidi kulingana na bodi zako za Maendeleo, kwa Arduino, ESP NodeMCU, ESP32s n.k.. Utahitaji pia aina fulani ya sehemu za I2C, kawaida kwenye bodi ya kuzuka. Katika mafunzo haya nitatumia MMA8451 bodi ya kuzuka kwa dijiti ya Accelerometer.

Na waya chache za kuruka….

Hatua ya 6: Uunganisho

Miunganisho
Miunganisho

Na hapa kuna mpangilio.

Nilitumia unganisho ufuatao kutoka kwa moduli iliyo hapo juu kwenda kwa moduli yangu ya Nodemcu-32s.

ESP32s - Moduli

3v3 - Vin

Gnd - Gnd

SDA 21 - SDA

SCL 22 - SCL

"Kumbuka, wakati mwingi sio bodi zote za maendeleo (haswa katika ESPs) zina alama nzuri ya wazi ili kusaidia kujua ni pini zipi zinazotumiwa !! Kwa hivyo kabla ya unganisho, tambua pini sahihi za bodi yako kutumia zipi ni za SDA na SCL."

Hatua ya 7: Kanuni

Hii inahitaji maktaba ya Adafruit

kutoka

Pakua, ondoa zip na utapata folda ya mifano, kwenye folda fungua tu MMA8451demo katika IDE yako ya Arduino na ndio nenda….

utaona nambari ifuatayo ya kiolesura chako cha sensa cha MMA8451 na mtawala wako

# pamoja

# pamoja na # pamoja na Adafruit_MMA8451 mma = Adafruit_MMA8451 (); kuanzisha batili (batili) {Serial.begin (9600); Waya.anza (4, 5); / * jiunge na basi ya i2c na SDA = D1 na SCL = D2 ya NodeMCU * / Serial.println ("Adafruit MMA8451 test!"); ikiwa (! mma.begin ()) {Serial.println ("Haikuweza kuanza"); wakati (1); } Serial.println ("MMA8451 imepatikana!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Range ="); Printa ya serial (2 << mma.getRange ()); Serial.println ("G"); } kitanzi batili () {// Soma data 'mbichi' katika hesabu 14-bit mma.read (); Serial.print ("X: / t"); Serial.print (mma.x); Printa ya serial ("\ tY: / t"); Printa ya serial (mma.y); Serial.print ("\ tZ: / t"); Serial.print (mma.z); Serial.println (); / * Pata hafla mpya ya sensorer * / sensorer_event_t tukio; mma.getEvent (& tukio); / * Onyesha matokeo (kuongeza kasi hupimwa kwa m / s ^ 2) * / Serial.print ("X: / t"); Serial.print (tukio.kuongeza kasi.x); Serial.print ("\ t"); Serial.print ("Y: / t"); Serial.print (tukio.kuongeza kasi); Serial.print ("\ t"); Serial.print ("Z: / t"); Serial.print (tukio.kuongeza kasi.z); Serial.print ("\ t"); Serial.println ("m / s ^ 2"); / * Pata mwelekeo wa sensor * / uint8_t o = mma.getOrientation (); kubadili (o) {kesi MMA8451_PL_PUF: Serial.println ("Picha ya Mbele Mbele"); kuvunja; kesi MMA8451_PL_PUB: Serial.println ("Picha Nyuma"); kuvunja; kesi MMA8451_PL_PDF: Serial.println ("Picha Mbele Mbele"); kuvunja; kesi MMA8451_PL_PDB: Serial.println ("Picha Chini Nyuma"); kuvunja; kesi MMA8451_PL_LRF: Serial.println ("Mazingira ya Kulia Mbele"); kuvunja; kesi MMA8451_PL_LRB: Serial.println ("Mazingira ya Kulia Nyuma"); kuvunja; kesi MMA8451_PL_LLF: Serial.println ("Mazingira ya Kushoto Mbele"); kuvunja; kesi MMA8451_PL_LLB: Serial.println ("Mazingira ya Kushoto Nyuma"); kuvunja; } Serial.println (); kuchelewesha (1000); }

Hifadhi, Thibitisha na Upakie ……

Fungua mfuatiliaji wa serial na utaona kitu kama hiki, nilikuwa nikisogeza sensa kuhusu usomaji anuwai

X: -2166 Y: 1872 Z: 2186

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

Mazingira ya Kushoto Mbele

X: -224 Y: -2020 Z: 3188

X: -5.10 Y: -3.19 Z: 7.00 m / s ^ 2

Picha Mbele

Kweli ikiwa kila kitu kilienda kama inavyostahili, basi sasa una misingi ya I2C na Jinsi ya kuunganisha kifaa chako..

Lakini kifaa hakifanyi kazi? !

Nenda tu na hatua inayofuata ……

Hatua ya 8: Fanya Kazi ya Kifaa chako cha I2C.

Hatua za kimsingi za kupata kazi ya kifaa cha I2C

Wacha tuchunguze….

  • Wiring ni sahihi.. (angalia tena)
  • Mpango ni sahihi.. (Ndio, ni mfano wa jaribio..)

Anza na hatua za kutatua…..

Hatua ya 1: Endesha programu ya skana ya kifaa cha I2C kuangalia anwani ya kifaa na kwanza kifaa chako cha I2C ni sawa

Unaweza kupakua mchoro na uangalie pato.

Matokeo - Kifaa kinafanya kazi na Anwani ya sensorer ni sawa

Skana ya I2C. Inakagua…

Anwani iliyopatikana: 28 (0x1C) Imekamilika. Imepata vifaa 1.

Hatua ya 2: Angalia maktaba ya sensa

Fungua faili ya Adafruit_MMA8451.h na upate anwani ya kifaa

Matokeo - Anwani ni tofauti na kifaa changu?.

/ * =========================================== ========================= I2C ANWANI / VITAMU --------------------- -------------------------------------------------- * / #fafanua MMA8451_DEFAULT_ADDRESS (0x1D) //! ================================================= * /

Fanya - Hariri faili kutoka kwa daftari (badilisha anwani) + Hifadhi + Anzisha tena IDE

Inafanya kazi. Unaweza kupata usomaji wako.

Sill sio…. ???

Hatua ya 3: Angalia Wire.begin imeandikwa tena?

Fungua faili ya Adafruit_MMA8451.c na upate Wire.begin.

Matokeo - Taarifa hii imeandikwa.

/ ************************************************* ************************* // *! @ Kifupi Inasanidi HW (inasoma maadili ya coefficients, nk) * / / ************************************* **************************************** / bool Adafruit_MMA8451:: anza (uint8_t i2caddr) {Wire.anza (); _i2caddr = i2caddr;

Fanya - Hariri faili kutoka kwa daftari (taarifa ya maoni) + Hifadhi + Anzisha tena IDE

Na mwishowe Kifaa kinafanya kazi…

Karibu nizidishe mafunzo haya kwa sababu lengo lake kuu lilikuwa kuelezea Jinsi ya kuanza, kupata data kutoka kwa hati ya data, unganisha na kupata kifaa cha I2C kinachofanya kazi na mfano wa kimsingi sana. Tumaini kila kitu kitaenda kama inavyostahili, na itakuwa muhimu kuanzisha Sensorer yako.

Ilipendekeza: