Բովանդակություն:
- Քայլ 1: Սարքավորման պահանջ
- Քայլ 2: Topածկված թեմաներ
- Քայլ 3. I2C ավտոբուսի հիմունքները
- Քայլ 4: TCA9548A I2C Multiplexer մոդուլ
- Քայլ 5:
- Քայլ 6. Ինչպես է վարպետն ուղարկում և ստանում տվյալներ
- Քայլ 7: Կոդ
- Քայլ 8: I2C սկաներ
- Քայլ 9: Էլեկտրամոնտաժ և ցուցադրում
- Քայլ 10: Առավելություններն ու թերությունները
- Քայլ 11: Շնորհակալություն
Video: TCA9548A I2C Multiplexer մոդուլ - Arduino- ով և NodeMCU- ով ՝ 11 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Դուք երբևէ պատահե՞լ է այնպիսի իրավիճակի, երբ ստիպված լինեիք երկու, երեք կամ ավելի I2C սենսորներ միացնել ձեր Arduino- ին ՝ միայն հասկանալու համար, որ տվիչներն ունեն ֆիքսված կամ նույն I2C հասցեն: Ավելին, դուք չեք կարող ունենալ նույն հասցեով երկու սարք նույն SDA/SCL կապում:
Այսպիսով, որո՞նք են ձեր տարբերակները: Տեղադրեք դրանք բոլորը TCA9548A 1-ից -8 I2C մուլտիպլեքսերի վրա, որպեսզի նրանք բոլորը միմյանց հետ խոսեն նույն ավտոբուսում: TCA9548A Breakout- ը հնարավորություն է տալիս հաղորդակցվել մի քանի I2C սարքերի հետ, որոնք ունեն նույն հասցեն, ինչը հեշտացնում է նրանց հետ ինտերֆեյսը:
Քայլ 1: Սարքավորման պահանջ
Այս ձեռնարկի համար մեզ անհրաժեշտ է.
- Breadboard
- TCA9548A I2C մուլտիպլեքսեր
- Arduino Uno/Nano այն, ինչ ձեռնտու է
- NodeMCU
- Մի քանի 0.91 և 0.96 I2C OLED էկրան
- Թռիչքային մալուխներ, և
- USB մալուխ ՝ ծածկագիրը վերբեռնելու համար
Քայլ 2: Topածկված թեմաներ
Մենք մեր քննարկումը կսկսենք ՝ հասկանալով I2C տեխնոլոգիայի հիմունքները
Այնուհետև մենք կիմանանք TCA9548A Multiplexer- ի և այն մասին, թե ինչպես է վարպետն ու ստրուկը տվյալներ ուղարկում և ստանում ՝ օգտագործելով I2C տեխնոլոգիան: Հետո մենք ստուգելու ենք, թե ինչպես կարող ենք ծրագրավորել և օգտագործել մեր նախագծում մուլտիպլեքսերը Arduino- ի և NodeMCU- ի միջոցով: Հաջորդը, ես ձեզ արագ ցույց կտամ ցուցադրում ՝ օգտագործելով 8 I2C OLED էկրան և վերջապես մենք կավարտենք ձեռնարկը ՝ քննարկելով TCA9548A Multiplexer- ի առավելություններն ու թերությունները
Քայլ 3. I2C ավտոբուսի հիմունքները
Ինտեգրված սխեմա, որն արտասանվում է I-squared-C (I²C) կամ I2C, երկու մետաղալար ավտոբուսի տեխնոլոգիա է (իրականում 4 լար, քանի որ ձեզ նույնպես անհրաժեշտ է VCC և Ground), որն օգտագործվում է բազմաթիվ պրոցեսորների և տվիչների միջև հաղորդակցության համար:
Երկու լարերն են.
* SDA - Սերիական տվյալներ (տվյալների տող) և
* SCL - Սերիական ժամացույց (ժամացույցի գիծ)
Հիշեք, որ այս երկու տողերն էլ «համաժամանակյա» են «երկկողմանի» «բաց արտահոսք» և «ձգված են ռեզիստորներով»:
I2C ավտոբուսների տեխնոլոգիան ի սկզբանե նախագծվել է Philips Semiconductors- ի կողմից 80 -ականների սկզբին `միևնույն տախտակի վրա գտնվող բաղադրիչների միջև հեշտ հաղորդակցվելու համար:
I2C- ով դուք կարող եք մի քանի ստրուկներ միացնել մեկ վարպետին (ինչպես SPI- ն) կամ կարող եք ունենալ բազմաթիվ վարպետներ, որոնք վերահսկում են միայնակ կամ բազմաթիվ ստրուկներ: Տերը և ստրուկները կարող են փոխանցել և ստանալ տվյալներ: Այսպիսով, I2C ավտոբուսի սարքը կարող է լինել այս չորս վիճակներից մեկում.
* Հիմնական փոխանցում - հիմնական հանգույցը տվյալներ է ուղարկում ստրուկին
* Ստրուկի փոխանցում - ստրուկի հանգույցը տվյալներ է ուղարկում վարպետին
* Ստրուկի ստացում - ստրուկի հանգույցը տվյալներ է ստանում վարպետից
I2C- ն «կարճ հեռավորության» «սերիական հաղորդակցության արձանագրություն» է, ուստի տվյալները «բիթ-բիթ» են փոխանցվում մեկ լարի կամ SDA գծի երկայնքով: Բիթերի ելքը համաժամացվում է բիթերի նմուշառման հետ `տիրոջ և ստրուկի միջև« կիսված »ժամացույցի ազդանշանի միջոցով: Theամացույցի ազդանշանը միշտ վերահսկվում է վարպետի կողմից: Վարպետը ստեղծում է ժամացույցը և սկսում հաղորդակցություն ստրուկների հետ:
Այսպիսով, ամփոփելու համար>
Օգտագործված լարերի քանակը `2
Սինխրոն կամ Ասինխրոն. Սինխրոն
Սերիալ կամ զուգահեռ `սերիալ
Ockամացույցի ազդանշանը վերահսկվում է ՝ Master Node- ի կողմից
Օգտագործված լարումները ՝ +5 Վ կամ +3,3 Վ
Մագիստրոսների առավելագույն թիվը `անսահմանափակ
Ստրուկների առավելագույն թիվը `1008
Առավելագույն արագություն. Ստանդարտ ռեժիմ = 100 կբիթ / վրկ
Արագ ռեժիմ = 400 kbps
Բարձր արագության ռեժիմ = 3.4 Մբիթ / վրկ
Ուլտրա արագ ռեժիմ = 5 Մբիթ / վրկ
Քայլ 4: TCA9548A I2C Multiplexer մոդուլ
TCA9548A- ն ութ ալիքով (երկկողմանի) I2C մուլտիպլեքսեր է, որը թույլ է տալիս ութ առանձին I2C սարքեր կառավարել մեկ ընդունող I2C ավտոբուսի միջոցով: Պարզապես պետք է I2C սենսորները միացնել SCn / SDn բազմապլան ավտոբուսներին: Օրինակ, եթե ծրագրում անհրաժեշտ է ութ միանման OLED էկրան, յուրաքանչյուր ցուցադրումից մեկը կարող է միացվել այս ալիքներից յուրաքանչյուրին ՝ 0-7:
Multiplexer- ը միանում է միկրոհսկիչի VIN, GND, SDA և SCL գծերին: Բեկումի տախտակն ընդունում է VIN ՝ 1.65 վ -ից մինչև 5.5 վ: Երկու մուտքային SDA և SCL գծերը միացված են VCC- ին 10K ձգվող դիմադրության միջոցով (քաշվող դիմադրության չափը որոշվում է I2C գծերի հզորության չափով): Multiplexer- ն աջակցում է ինչպես նորմալ (100 կՀց), այնպես էլ արագ (400 կՀց) I2C արձանագրություններին: TCA9548A- ի բոլոր I/O կապումներն ունեն 5 վոլտ հանդուրժողականություն և կարող են օգտագործվել նաև բարձրից ցածրից կամ ցածրից բարձր լարման թարգմանելու համար:
Լավ գաղափար է TCA9548A- ի բոլոր ալիքների վրա ձգվող դիմադրիչներ դնելը, նույնիսկ եթե լարումները նույնն են: Դրա պատճառն ներքին NMOS անջատիչն է: Այն շատ լավ չի փոխանցում բարձր լարման, մյուս կողմից այն շատ լավ է փոխանցում ցածր լարման: TCA9548A- ն կարող է օգտագործվել նաև Լարման թարգմանության համար ՝ թույլ տալով օգտագործել տարբեր ավտոբուսային լարումներ յուրաքանչյուր SCn/SDn զույգի վրա այնպես, որ 1.8-V, 2.5-V կամ 3.3-V մասերը կարողանան հաղորդակցվել 5-V մասերի հետ: Դա ձեռք է բերվում արտաքին ձգվող դիմադրիչների միջոցով `ավտոբուսը վարպետի և յուրաքանչյուր ստրուկի ալիքի համար մինչև ցանկալի լարման հասցնելու համար:
Եթե միկրոհսկիչը հայտնաբերում է ավտոբուսի կոնֆլիկտ կամ այլ ոչ պատշաճ գործողություն, ապա TCA9548A- ն կարող է վերականգնվել `RESET- ի պինին ցածր պնդելով:
Քայլ 5:
TCA9548- ը թույլ է տալիս մեկ միկրոհսկիչին հաղորդակցվել մինչև «64 սենսորների» հետ, որոնք ունեն նույն կամ տարբեր I2C հասցե ՝ յուրաքանչյուր սենսորային ստրոբուսին հատկացնելով յուրահատուկ ալիք:
Երբ մենք խոսում ենք երկու սարքերի վրա տվյալներ ուղարկելու մասին բազմաթիվ սարքեր, ապա մեզ անհրաժեշտ է դրանց հասցեագրման միջոց: Դա նույնն է, ինչ փոստատարը գա մեկ ճանապարհով և փոստի փաթեթները գցի տարբեր տներ, քանի որ դրանց վրա տարբեր հասցեներ են գրված:
Այս մուլտիպլեքսերներից առավելագույնը 8-ը կարող եք միացված լինել 0x70-0x77 հասցեների վրա `նույն I2C հասցեագրված մասերից 64-ը վերահսկելու համար: A0, A1 և A2 հասցեների երեք բիթերը VIN- ին միացնելով կարող եք ստանալ հասցեների տարբեր համադրություն: Այսպես է թվում TCA9548A հասցեի բայթը: Առաջին 7 բիթերը միավորվում են ՝ ստեղծելով ստրուկի հասցեն: Ստրուկի հասցեի վերջին բիթը սահմանում է կատարվելիք գործողությունը (կարդալ կամ գրել): Երբ այն բարձր է (1), ընտրվում է ընթերցում, իսկ ցածրը (0) ՝ գրելու գործողություն:
Քայլ 6. Ինչպես է վարպետն ուղարկում և ստանում տվյալներ
Ստորև բերված է վարպետի ՝ ստրուկ սարք մուտք գործելու ընդհանուր ընթացակարգը.
1. Եթե վարպետը ցանկանում է տվյալներ ուղարկել ստրուկին (ԳՐՈESՄ է).
-Գլխավոր հաղորդիչը ուղարկում է START վիճակ, որին հաջորդում են ստրուկ-ստացողի հասցեները և R/W- ը `0:
-Գլխավոր հաղորդիչը «8-բիթանոց կառավարման մատյաններում» տվյալներ է ուղարկում ստրուկ-ստացողին, երբ ստրուկը ընդունում է, որ պատրաստ է
-Գլխավոր հաղորդիչը դադարեցնում է փոխանցումը STOP պայմանով
2. Եթե վարպետը ցանկանում է ստանալ կամ կարդալ տվյալներ ստրուկից (READS).
-Գլխավոր ստացողը ուղարկում է START վիճակ, որին հաջորդում են ստրուկ-ստացողի հասցեները և R/W- ը `1:
-Գլխավոր ընդունիչն ուղարկում է պահանջվող գրանցամատյանը `ստրուկ-հաղորդիչին կարդալու համար
-Վարպետ-ստացողը տվյալներ է ստանում ստրուկ-հաղորդիչից
- Բոլոր բայթերը ստանալուց հետո վարպետը NACK ազդանշան է ուղարկում ստրուկին `դադարեցնելու հաղորդակցությունները և ազատելու ավտոբուսը
- Գլխավոր ստացողը դադարեցնում է փոխանցումը STOP պայմանով
Ավտոբուսը համարվում է անգործուն, եթե և՛ SDA, և՛ SCL գծերը բարձր են STOP- ի վիճակից հետո:
Քայլ 7: Կոդ
Այժմ, Int կոդը թույլ է տալիս սկսել ՝ ներառելով «Մետաղալար» գրադարանը և բազմապատկիչների հասցեն սահմանելով:
#ներառել «Wire.h»
#ներառել «U8glib.h»
#սահմանեք MUX_Հասցե 0x70 // TCA9548A Կոդավորիչների հասցե
Այնուհետև մենք պետք է ընտրենք այն նավահանգիստը, որին ցանկանում ենք հաղորդակցվել և դրա վերաբերյալ տվյալները ուղարկել այս գործառույթի միջոցով.
անվավեր selectI2CChannels (uint8_t i) {
եթե (i> 7) վերադարձ;
Wire.beginTransmission (MUX_ Հասցե);
Wire.write (1 << i);
Wire.endTransmission ();
}
Հաջորդը մենք նախաստորագրելու ենք ցուցադրման կարգաբերման բաժինը `զանգահարելով« u8g.begin (); »; MUX- ին կցված յուրաքանչյուր ցուցադրման համար "tcaselect (i);"
Նախաստորագրվելուց հետո մենք կարող ենք անել այն, ինչ ուզում ենք, պարզապես գործառույթը կանչելով «tcaselect (i);»: որտեղ «i» - ը բազմապատկված ավտոբուսի արժեքն է, այնուհետև տվյալներն ու ժամացույցը համապատասխանաբար ուղարկելը:
Քայլ 8: I2C սկաներ
Եթե վստահ չեք ձեր I2C վահանի սարքի հասցեի մասին, ապա գործարկեք կցված «I2C սկաների» ծածկագիրը ՝ ձեր սարքի վեցանկյուն հասցեն գտնելու համար: Arduino- ում բեռնվելիս էսքիզը սկանավորելու է I2C ցանցը ՝ ցուցադրելով արձագանքող հասցեները:
Քայլ 9: Էլեկտրամոնտաժ և ցուցադրում
Հաղորդալարեր.
Եկեք սկսենք մուլտիպլեքսերը միացնելով NodeMCU տախտակին: Միացնել:
VIN- ից 5V (կամ 3.3V)
GND գետնին
SDA- ից D2 և
Համապատասխանաբար SCL- ից D1 կապում
Arduino տախտակի համար միացեք.
VIN- ից 5V (կամ 3.3V)
GND գետնին
SDA դեպի A4 և
Համապատասխանաբար SCL- ից A5 կապում
Երբ MUX- ը միացված է միկրոհսկիչին, պարզապես անհրաժեշտ է սենսորները միացնել SCn / SDn զույգերին:
Այժմ, եկեք ստուգենք այս արագ ցուցադրումը, որում ես միացրել եմ 8 OLED էկրան TCA9548A Multiplexer- ին: Քանի որ այս էկրաններն օգտագործում են I2C հաղորդակցություն, նրանք շփվում են Arduino- ի հետ ՝ օգտագործելով ընդամենը 2 կապում:
Քայլ 10: Առավելություններն ու թերությունները
Առավելությունները
* Կապի համար անհրաժեշտ է ընդամենը երկու ավտոբուսային գիծ (լարեր)
* Բոլոր բաղադրիչների միջև գոյություն ունեն պարզ վարպետ/ստրուկ հարաբերություններ
* Բաուդ արագության խիստ պահանջներ չկան, ինչպես օրինակ RS232- ով, վարպետը ստեղծում է ավտոբուսի ժամացույց
* Սարքավորումը ավելի քիչ բարդ է, քան UART- ները
* Աջակցում է բազմաթիվ վարպետների և բազմաթիվ ստրուկների
* ACK/NACK բիթը տալիս է հաստատում, որ յուրաքանչյուր շրջանակ հաջողությամբ փոխանցվում է
* I2C- ն «իսկական բազմավաստակ ավտոբուս» է, որն ապահովում է արբիտրաժ և բախումների հայտնաբերում
* Ավտոբուսին միացված յուրաքանչյուր սարք ծրագրային հասցեավորված է յուրահատուկ հասցեով
* I2C սարքերի մեծ մասը կարող է հաղորդակցվել 100kHz կամ 400kHz հաճախականությամբ
* I²C- ը հարմար է ծայրամասային սարքավորումների համար, որտեղ պարզությունն ու արտադրության ցածր արժեքը ավելի կարևոր են, քան արագությունը
* Հայտնի և լայնորեն կիրառվող արձանագրություն
Թերություններ
* Տվյալների փոխանցման ավելի դանդաղ արագություն, քան SPI- ն
* Տվյալների շրջանակի չափը սահմանափակված է 8 բիթով
* Իրականացման համար անհրաժեշտ է ավելի բարդ սարքավորում, քան SPI տեխնոլոգիան
Խորհուրդ ենք տալիս:
SIM900A 2G մոդուլ + հոլոգրամ SIM քարտ = Հաղթող համադրություն «կեղտոտ էժան» կատեգորիայում: 6 քայլ
SIM900A 2G մոդուլ + հոլոգրամ SIM քարտ = Հաղթող համադրություն «Կեղտոտ էժան» կատեգորիայի մեջ. Ինտերնետ և տեսա մի ընկերություն, որի մասին ես նախկինում չէի լսել (հոլոգրամ) նվիրում էր SIM քարտեր
Uber I2C LCD վերահսկիչի մոդուլ `6 քայլ
Uber I2C LCD Controller Module: PreambleThis Instructable մանրամասնում է, թե ինչպես ստեղծել HD44780 LCD- ի վրա հիմնված վերահսկիչի մոդուլ (նկ. 1 վերև): Մոդուլը թույլ է տալիս օգտագործողին վերահսկել LCD- ի բոլոր ասպեկտները ծրագրային առումով I2C- ի վրա, որը ներառում է. LCD- ը և էկրանը, հակադրությունը և հետևի լույսը ուժեղանում են
1602 LCD ստեղնաշարի վահանի մոդուլ I2C ուսապարկով ՝ 6 քայլ
1602 LCD ստեղնաշարի վահանի մոդուլ I2C ուսապարկով. Որպես ավելի մեծ ծրագրի մի մաս, ես ցանկանում էի ունենալ LCD էկրան և ստեղնաշար `որոշ պարզ ընտրացանկերում նավարկելու համար: Ես կօգտագործեմ Arduino- ի I/O նավահանգիստները շատ այլ աշխատանքների համար, ուստի ես ուզում էի I2C ինտերֆեյս LCD- ի համար: Այսպիսով, ես որոշ սարքավորումներ գնեցի
ESP8266 -NODEMCU $ 3 WiFi մոդուլ #2 - WEB ԷAGEԻ միջոցով վերահսկվող անլար կապում. 9 քայլ (նկարներով)
ESP8266 -NODEMCU $ 3 WiFi մոդուլ #2 - WEB ԷAGEԻ միջոցով վերահսկվող անլար կապում. Այս միկրոհաշվարկների նոր աշխարհ է եկել, և սա ESP8266 NODEMCU- ն է: Սա առաջին մասն է, որը ցույց է տալիս, թե ինչպես կարող եք esp8266 միջավայրը տեղադրել ձեր arduino IDE- ում ՝ սկսած տեսանյութի միջոցով և որպես մասեր
ESP8266-NODEMCU $ 3 WiFi մոդուլ #1- WiFi- ով սկսելը. 6 քայլ
ESP8266-NODEMCU $ 3 WiFi մոդուլ #1- Սկիզբ WiFi- ով. Այս միկրոհաշվարկների նոր աշխարհ է եկել, և սա ESP8266 NODEMCU- ն է: Սա առաջին մասն է, որը ցույց է տալիս, թե ինչպես կարող եք esp8266 միջավայրը տեղադրել ձեր arduino IDE- ում ՝ սկսած տեսանյութի միջոցով և որպես մասեր ներառող