Բովանդակություն:
- Քայլ 1. Ինչպես սկսել I2C- ից - Միջ IC IC հաղորդակցության հիանալի աշխարհ
- Քայլ 2: I2C- ի ակնարկ
- Քայլ 3. Ինչպես կարգավորել I²C տվիչները
- Քայլ 4: Սկսեք շարժումով `արագացուցիչ
- Քայլ 5: Կառավարիչի հետ ինտերֆեյս
- Քայլ 6: Միացումներ
- Քայլ 7: Կոդ
- Քայլ 8: Աշխատեք ձեր I2C սարքի վրա:
Video: Սկսելով I2C տվիչների ինտերֆեյսի հետ ?? - Միացրեք ձեր MMA8451- ը ESP32- ների միջոցով. 8 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Այս ձեռնարկում դուք կսովորեք այն մասին, թե ինչպես սկսել, միացնել և ձեռք բերել վերահսկիչով աշխատող I2C սարքը (արագացուցիչ) (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Քայլ 1. Ինչպես սկսել I2C- ից - Միջ IC IC հաղորդակցության հիանալի աշխարհ
Arduino- ն, ESP Series- ը, PIC- ը, Rasberry PI- ը և այլն բոլորը անհավանական են: Բայց ինչ եք անում դրա հետ մեկ անգամ ունենալուց հետո:
Լավագույնը սենսորներ ավելացնելն է և այլն: Այսօր շատ նոր տեխնոլոգիան օգտագործում է I2C արձանագրությունը ՝ թույլ տալով համակարգչին, հեռախոսներին, պլանշետներին կամ միկրոկոնտրոլերներին խոսել սենսորների հետ: Սմարթ հեռախոսներն ավելի քիչ խելացի կլինեին, եթե նրանք չկարողանային խոսել արագացուցիչի սենսորի հետ ՝ իմանալու, թե ձեր հեռախոսն ինչ կողմ է նայում:
Քայլ 2: I2C- ի ակնարկ
I2C- ը սերիալային, համաժամանակյա, կիսատ դուպլեքս հաղորդակցության արձանագրություն է, որը թույլ է տալիս միևնույն ավտոբուսում բազմաթիվ վարպետների և ստրուկների համակեցություն: I2C ավտոբուսը բաղկացած է երկու տողից ՝ սերիական տվյալների գիծ (SDA) և սերիական ժամացույց (SCL): Երկու տողերը պահանջում են ձգվող դիմադրիչներ:
SDA (Սերիական տվյալներ) - Տիրոջ և տվյալների փոխանցման և ստացման տողը: SCL (Սերիական ժամացույց) - ժամացույցի ազդանշանը կրող գիծ: Նման առավելություններով, ինչպիսիք են պարզությունը և արտադրության ցածր արժեքը, I2C- ն հիմնականում օգտագործվում է ցածր արագությամբ ծայրամասային սարքերի կարճ հեռավորության վրա (մեկ ոտնաչափ հեռավորության վրա) հաղորդակցվելու համար:
Wantանկանում եք ավելին իմանալ I2C- ի մասին ……
Քայլ 3. Ինչպես կարգավորել I²C տվիչները
Նախագծին անցնելուց առաջ դուք պետք է հասկանաք ձեր սենսորի մի քանի հիմունքներ: Ուրեմն ինքդ քեզ մի գավաթ սուրճ լցրու՞մ նախքան սուզվելը:): …
I2C- ի մեծ ուժն այն է, որ կարող եք այդքան սենսոր տեղադրել նույն չորս լարերի վրա: Բայց մի քանի նախապես պատրաստված մոդուլներով միացված միավորների դեպքում, հնարավոր է, ստիպված լինեք ջարդվածքներից հեռացնել մի քանի smd դիմադրիչներ, հակառակ դեպքում ավտոբուսի քաշքշուկը կարող է չափազանց ագրեսիվ դառնալ:
Ի՞նչ տեղեկատվություն ենք մենք ցանկանում տվյալների թերթիկից:
- Սենսորային ֆունկցիոնալություն
- Pinouts և կապում ֆունկցիոնալությունը
- Ինտերֆեյսի նկարագրություն (Բաց մի՛ թողեք դիտել «I2c հասցեների ընտրության աղյուսակը»)
- Գրանցումներ !!
Ամեն ինչ կարգին է, հեշտությամբ կգտնեք, բայց գրանցվում է ?? ԳՐԱՆՈՆԵՐԸ պարզապես հիշողության վայրեր են I²C սարքի ներսում: Ամփոփումը, թե քանի գրանցամատյան կա տվյալ տվիչի մեջ, և այն, ինչ նրանք վերահսկում կամ պարունակում են, կոչվում է գրանցամատյան: Սենսորների տվյալների թերթի մասին տեղեկատվության մեծ մասը վերաբերում է յուրաքանչյուր գրանցամատյանի գործառույթների բացատրությանը, և դրանք կարող են բավականին բարդ լինել ընթերցման համար, քանի որ տեղեկատվությունը հազվադեպ է ուղղակիորեն ներկայացվում:
Որպեսզի կարողանաք հասկանալ, թե ինչ նկատի ունեմ դրանում. Գրանցամատյանները շատ են, բայց այս ներածության համար ես դրանք խմբավորելու եմ երկու ընդհանուր տիպի ՝ Control և Data ռեգիստրներ:
1) Վերահսկիչ գրանցամատյաններ
Սենսորների մեծ մասը փոխում է իր գործելաոճը `հիմնվելով հսկիչ գրանցամատյաններում պահվող արժեքների վրա: Մտածեք կառավարման ռեգիստրների մասին որպես միացման/անջատման անջատիչների բանկեր, որոնք դուք միացնում եք ՝ մի փոքր սահմանելով 1 և անջատելով ՝ սահմանելով այն 0: Ռեժիմներ, ընդհատումներ, կարդալ-գրելու հսկողություն, խորություն, նմուշառման արագություն, աղմուկի նվազեցում և այլն, այնպես որ սովորաբար պետք է բիթեր դնել մի քանի տարբեր հսկիչ գրանցամատյաններում, նախքան իրականում կարդալը:
2) Տվյալների գրանցամատյաններ Ի տարբերություն հսկիչի, որը գրանցում է անջատիչների բանկը, ես կարծում եմ, որ տվյալների ելքային գրանցամատյանները որպես տարաներ պահող տարաներ են, որոնք պարզապես պահվում են երկուական տեսքով: Այսպիսով, դուք ցանկանում եք իմանալ Տվյալները, միշտ կարդալ տվյալների գրանցամատյաններ, ինչպիսիք են, թե ով եմ ես գրանցված սարքի նույնականացման համար, Կարգավիճակի գրանցամատյան և այլն:
Այսպիսով, I²C տվիչի նախաստորագրումը բազմաքայլ գործընթաց է, և գործողությունների ճիշտ կարգը հաճախ բացատրվում է գրավոր ՝ հակառակ ուղղությամբ ՝ տվյալների ուղղակի թերթի փոխարեն: ցուցակը, որը երբեք չի ասի. գրանցամատյանում դուք պետք է նշեք բիթը այս մյուս հսկիչ գրանցամատյանում »:
Այնուամենայնիվ, ես միշտ գտնում եմ, որ տվյալների թերթիկը ավելի ինտերակտիվ է, քան տեքստը: եթե Դուք հղում կատարեք այն որոշակի հատվածի կամ տեղեկատվության կտորների համար և այն կտա ձեզ բոլոր մանրամասները, կապերը և հղումները: Պարզապես նստեք և կարդացեք ՝ ձեր բոլոր հղումները հանելու համար::)
Քայլ 4: Սկսեք շարժումով `արագացուցիչ
Modernամանակակից արագացուցիչները Micro Electro-Mechanical Systems (MEMS) սարքերն են, ինչը նշանակում է, որ դրանք ունակ են տեղավորվել ամենափոքր գործիքի ներսում մի փոքր չիպի վրա: MEMS արագացուցիչների կողմից կիրառվող արագացումը չափելու մեթոդներից է աղբյուրների վրա կախված մի փոքր հաղորդիչ զանգվածի օգտագործումը: Սարքի արագացումն առաջացնում է աղբյուրների ձգում կամ սեղմում, իսկ հաղորդիչ զանգվածի շեղումը կարելի է չափել մոտակա, ամրացված թիթեղների հզորության փոփոխության միջոցով:
Արագաչափաչափերը որոշվում են հետևյալ հատկանիշներով
- Առանձնահատկությունների գծապատկերներում ՝ մեկից երեք առանցքների, X, Y և Z պիտակներով առանցքների թիվը: Նկատի ունեցեք, որ որոշ արագացուցիչներ կոչվում են 6 առանցք կամ 9 առանցք, բայց դա նշանակում է, որ դրանք միավորված են MEMS այլ սարքերի հետ, ինչպիսիք են գիրոսկոպը և/կամ մագնիսաչափերը: Այդ սարքերից յուրաքանչյուրն ունի նաև երեք առանցք, այդ իսկ պատճառով կան 3, 6 կամ 9 առանցքի իներցիոն չափման միավորներ (ԻՄՄ):
- Ելքի տեսակը ՝ անալոգային կամ թվային: Թվային արագացուցիչը հոգում է արագացման տվյալների ձևաչափումը թվային ներկայացման մեջ, որը կարելի է կարդալ I2C կամ SPI- ով:
- Գ – ով չափվող արագացման միջակայքը, որտեղ 1 գ – ը Երկրի ձգողության հետևանքով առաջացած արագացումն է:
- Համամշակողներ, որոնք կարող են բեռնաթափել որոշ հաշվարկներ, որոնք անհրաժեշտ են MCU- ի հումքի տվյալները վերլուծելու համար: Արագացուցիչ սարքերի մեծամասնությունն ունի որոշ պարզ ընդհատման ունակություն ՝ արագացման շեմ (ցնցում) և 0 գ (ազատ անկում) վիճակ հայտնաբերելու համար: Մյուսները կարող են կատարելապես մշակել չմշակված տվյալները ՝ ավելի իմաստալից տվյալներ առաջարկելու MCU- ին:
Քայլ 5: Կառավարիչի հետ ինտերֆեյս
Քանի որ մենք գիտենք ESP միկրոկոնտրոլերների միտումները, մենք մեր օրինակի համար կօգտագործենք ESP32- ը: Այսպիսով, նախ անհրաժեշտ է Nodemcu-32s:
Մի անհանգստացեք, եթե ունեք որևէ այլ ESP տախտակ կամ նույնիսկ Arduino !!! Պարզապես պետք է կարգավորեք ձեր Arduino IDE- ն և կազմաձևը ՝ ըստ ձեր զարգացման տախտակների, Arduino- ի, ESP NodeMCU- ի, ESP32s- ի և այլնի համար: Ձեզ նույնպես կպահանջվեն որոշ I2C մասեր, սովորաբար ՝ բեկման տախտակի վրա: Այս ձեռնարկում ես պատրաստվում եմ օգտագործել MMA8451- ը: թվային արագացուցիչի բեկման տախտակ:
Եվ մի քանի ցատկող լարեր …
Քայլ 6: Միացումներ
Եվ ահա դասավորությունը:
Ես օգտագործեցի հետևյալ կապը վերը նշված մոդուլից դեպի իմ Nodemcu-32s մոդուլը:
ESP32s - Մոդուլ
3v3 - Վին
Գնդ - Գնդ
SDA 21 - SDA
SCL 22 - SCL
«Հիշեք, որ շատ ժամանակ ոչ բոլոր զարգացման տախտակները (հիմնականում ESP- ներում) ունեն լավ հստակ մատնանշում, որը կօգնի որոշել, թե որ կապերն են օգտագործվում: Այսպիսով, նախքան կապը, գտեք ձեր տախտակի ճիշտ քորոցները, որոնք կօգտագործեն SDA- ի և SCL- ի համար:"
Քայլ 7: Կոդ
Սա պահանջում է Adafruit գրադարանը
downloads.arduino.cc/libraries/github.com/adafruit/Adafruit_MMA8451_Library-1.1.0.zip կայքից
Ներբեռնեք, բացեք ֆայլը և կգտնեք օրինակների պանակ, թղթապանակում պարզապես բացեք MMA8451demo ձեր Arduino IDE- ում և ահա…
Դուք կտեսնեք հետևյալ կոդը ձեր MMA8451 սենսորային ինտերֆեյսի համար ձեր վերահսկիչի հետ
#ներառում
#ներառել #ներառել Adafruit_MMA8451 mma = Adafruit_MMA8451 (); void setup (void) {Serial.begin (9600); Wire.begin (4, 5); / * միանալ i2c ավտոբուսին SDA = D1 և SCL = D2 NodeMCU */ Serial.println- ով («Adafruit MMA8451 թեստ»); if (! mma.begin ()) {Serial.println («Չհաջողվեց սկսել»); մինչդեռ (1); } Serial.println («Գտնվել է MMA8451»); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Range ="); Serial.print (2 << mma.getRange ()); Serial.println ("G"); } void loop () {// Կարդացեք «չմշակված» տվյալները 14 բիթանոց հաշվարկներով 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 (); / * Ստացեք նոր սենսորային իրադարձություն */ sensors_event_t միջոցառում; mma.getEvent (& իրադարձություն); / * Displayուցադրել արդյունքները (արագացումը չափվում է մ/վ^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 ("մ/վ^2"); / * Ստացեք տվիչի կողմնորոշումը */ uint8_t o = mma.getOrientation (); switch (o) {case MMA8451_PL_PUF: Serial.println ("Դիմանկար առջևում"); ընդմիջում; պատյան MMA8451_PL_PUB: Serial.println («Դիմանկար դեպի վեր»); ընդմիջում; գործ MMA8451_PL_PDF: Serial.println ("Դիմանկար ներքևից"); ընդմիջում; պատյան MMA8451_PL_PDB: Serial.println («Դիմանկար հետընթաց հետ»); ընդմիջում; գործ MMA8451_PL_LRF: Serial.println («Լանդշաֆտային աջ ճակատ»); ընդմիջում; գործ MMA8451_PL_LRB: Serial.println ("Լանդշաֆտ աջ հետ"); ընդմիջում; պատյան MMA8451_PL_LLF: Serial.println ("Լանդշաֆտ ձախ ճակատում"); ընդմիջում; գործ MMA8451_PL_LLB: Serial.println ("Լանդշաֆտ ձախ հետևում"); ընդմիջում; } Serial.println (); ուշացում (1000); }
Պահել, հաստատել և վերբեռնել ……
Բացեք սերիալային մոնիտորը և կտեսնեք այսպիսի մի բան, ես սենսորը տեղափոխում էի, հետևաբար տարբեր ընթերցումներ
X: -2166 Y: 1872 Z: 2186
X: -2166 Y: 1872 Z: 2186X: -4.92 Y: 5.99 Z: 4.87 մ/վ^2
Լանդշաֆտ Ձախ ճակատ
X: -224 Y: -2020 Z: 3188
X: -5.10 Y: -3.19 Z: 7.00 մ/վ^2
Դիմանկար առջևում
Դե, եթե ամեն ինչ ընթացավ այնպես, ինչպես պետք է, ապա այժմ դուք ունեք I2C- ի հիմունքները և ինչպես միացնել ձեր սարքը:
Բայց սարքը չի աշխատում ??
Անցեք հաջորդ քայլին ……
Քայլ 8: Աշխատեք ձեր I2C սարքի վրա:
I2C սարքի աշխատանքի հիմնական քայլերը:
Եկեք քննենք….
- Հաղորդալարումը ճիշտ է (նորից ստուգեք)
- Programրագիրը ճիշտ է.. (Այո, դա փորձարկման օրինակ է..)
Սկսեք լուծման փուլերից…..
Փուլ 1. Գործարկեք I2C սարքի սկաների ծրագիրը `սարքի հասցեն ստուգելու համար, և նախ ձեր I2C սարքը լավ է:
Կարող եք ներբեռնել ուրվագիծը և ստուգել ելքը:
Արդյունք - Սարքն աշխատում է, և տվիչի հասցեն ճիշտ է
I2C սկաներ: Սկանավորում…
Գտնված հասցե ՝ 28 (0x1C) Կատարված է: Գտնվել է 1 սարք (ներ):
2 -րդ փուլ. Ստուգեք տվիչների գրադարանը:
Բացեք Adafruit_MMA8451.h ֆայլը և գտեք սարքի հասցեն
Արդյունք - Հասցեն տարբերվում է իմ սարքից ??
/*================================================ ========================= I2C ՀԱՍDԵ/ԲԻԹՍ --------------------- ------------------------------------------------------ * /#define MMA8451_DEFAULT_ADDRESS (0x1D) //! <Նախնական MMA8451 I2C հասցե, եթե A- ն GND է, դրա 0x1C /*======================== ================================================== */
Do - ֆայլը խմբագրել նոթատետրից (փոխել հասցեն) + Պահել + Վերագործարկել IDE- ն
Այն աշխատում է. Դուք կարող եք ստանալ ձեր ընթերցումները:
Չի կարելի….. ???
3 -րդ փուլ. Ստուգեք, որ Wire.begin- ը վերաշարադրվա՞ծ է:
Բացեք Adafruit_MMA8451.c ֆայլը և գտեք Wire.begin:
Արդյունք - Այս հայտարարությունը վերաշարադրված է:
/********************************************** **************************! @brief- ը կարգավորում է HW- ն (կարդում է գործակիցների արժեքները և այլն)* / / ******************************** *************************************/ bool Adafruit_MMA8451:: սկսել (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;
Անել - Խմբագրել ֆայլը նոթատետրից (մեկնաբանության հայտարարություն) + Պահել + Վերագործարկել IDE- ն
Եվ վերջապես Սարքն աշխատում է ☺…
Ես գրեթե ծանրաբեռնում եմ այս ձեռնարկը, քանի որ դրա հիմնական նպատակն էր բացատրել, թե ինչպես սկսել, տվյալներ ստանալ տվյալների թերթիկից, միացնել և աշխատել I2C սարքի հետ աշխատելով շատ հիմնական օրինակով: Հուսանք, որ ամեն ինչ կընթանա այնպես, ինչպես պետք է, և օգտակար կլինի սկսել ձեր ցուցիչը:
Խորհուրդ ենք տալիս:
Սկսելով երկար հեռահար անլար ջերմաստիճանի և թրթռման տվիչների միջոցով `7 քայլ
Սկսելով երկար հեռահար անլար ջերմաստիճանի և թրթռման սենսորների օգտագործմամբ. Երբեմն թրթռումը լուրջ խնդիրների պատճառ է դառնում բազմաթիվ ծրագրերում: Մեքենայի լիսեռներից և առանցքակալներից մինչև կոշտ սկավառակի աշխատանքը, թրթռումը առաջացնում է մեքենայի վնասում, վաղ փոխարինում, ցածր կատարողականություն և մեծ հարված հասցնում ճշգրտությանը: Մոնիտորինգ
Arduino- ի հետ ինտերֆեյսի HMC5883L կողմնացույցի ցուցիչ. 10 քայլ (նկարներով)
HMC5883L ինտերֆեյսի ձեռնարկ ՝ Arduino- ով. Նկարագրություն մագնիսական դաշտը
Սկսելով ESP32 CAM - - ով Հոսքային տեսանյութ ESP CAM- ի միջոցով WiFi- ով - ESP32 Անվտանգության տեսախցիկի նախագիծ. 8 քայլ
Սկսելով ESP32 CAM | - ով Հոսքային տեսանյութ ESP CAM- ի միջոցով WiFi- ով | ESP32 Անվտանգության տեսախցիկի նախագիծ. Այսօր մենք կսովորենք, թե ինչպես օգտագործել այս նոր ESP32 CAM տախտակը և ինչպես կարող ենք այն ծածկագրել և օգտագործել որպես անվտանգության տեսախցիկ և ստանալ WiFi- ով հոսող տեսանյութ
ԻՆՉՊԵՍ ԿԱՐՈ ԵՆ ՀԵՏ ՀԵՏ ՀԵՏ չորության չորացման սենսոր `4 քայլ
ՈՐՊԵՍ ԿԱՐՈ ԵՆՔ ՀԵՏ ՀԵՏ ՀԱՎԱՔԱՈ ՍԵՆՍՈՐ. Ողջույն, այս ուսանելի ծրագրում ես ձեզ ցույց կտամ, թե ինչպես պատրաստել մի պարզ «ՀՈ DRՅԱՆ ՉՈՐՈ SԹՅԱՆ ՍԵՆՍՈՐ»: Սա իմ առաջին ուսանելի ներողությունն է իմ ծիծաղելի անգլերենի համար: Հողի չորությունը որոշվում է led ցուցիչով: led լույսը wi
RC մեքենայի կառավարում վեբ ինտերֆեյսի միջոցով. 6 քայլ (նկարներով)
RC Car- ի կառավարում վեբ միջերեսի միջոցով. Մենք դա անլար կերպով վերահսկելու ենք մեր իսկ սերվերի միջոցով: Օգտագործելով այն մեթոդը, որը ես ձեզ ցույց կտամ, մենք կարիք չենք ունենա օգտագործել RC ընդունիչ: Համացանցը հյուրընկալելու համար