Բովանդակություն:
- Պարագաներ
- Քայլ 1: Ֆիզիկական կապեր
- Քայլ 2. Ինչպես օգտագործել գրադարանը
- Քայլ 3: Հիմնական տվյալների փոխանցում
- Քայլ 4: Ստացեք հիմնական տվյալներ
- Քայլ 5: Փորձարկում
Video: Arduino սերիական հաղորդակցություն. 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Arduino- ի շատ նախագծեր հիմնված են մի քանի Arduinos- ի միջև տվյալների փոխանցման վրա:
Անկախ նրանից, թե դուք հոբբիստ եք, որը կառուցում է RC մեքենա, RC ինքնաթիռ կամ նախագծում է եղանակային կայան հեռակառավարվող էկրանով, դուք պետք է իմանաք, թե ինչպես կարելի է հուսալիորեն փոխանցել սերիական տվյալները մեկ Arduino- ից մյուսը: Unfortunatelyավոք, հոբբիստների համար դժվար է սերիական տվյալների հաղորդակցություն ստանալ, որը աշխատում է սեփական նախագծերում: Դա պայմանավորված է նրանով, որ սերիական տվյալները ուղարկվում են որպես բայթերի հոսք:
Առանց բայթերի ներսում որևէ համատեքստի, գրեթե անհնար է մեկնաբանել տվյալները: Առանց տվյալների մեկնաբանման կարողանալու, ձեր Arduinos- ը չի կարողանա հուսալիորեն հաղորդակցվել: Հիմնական բանը այս համատեքստային տվյալների ավելացումն է բայթ հոսքի մեջ ՝ օգտագործելով ստանդարտ սերիական փաթեթի ձևավորում:
Սերիայի փաթեթների ձևավորումը, փաթեթավորումը և փաթեթը վերլուծելը բարդ և դժվար է հասնել: Բարեբախտաբար, Arduino- ի օգտվողների համար կան մատչելի գրադարաններ, որոնք կարող են անել այս ամբողջ բարդ տրամաբանությունը կուլիսներում, այնպես որ դուք կարող եք կենտրոնանալ ձեր նախագիծը առանց լրացուցիչ առաջընթացի աշխատանքի: Այս հրահանգը կօգտագործի SerialTransfer.h գրադարանը սերիական փաթեթների մշակման համար:
Մի խոսքով. Այս Ուղեցույցը կանդրադառնա, թե ինչպես կարող եք հեշտությամբ իրականացնել կայուն սերիական տվյալներ ցանկացած նախագծում ՝ օգտագործելով գրադարան SerialTransfer.h: Եթե ցանկանում եք ավելին իմանալ կայուն սերիական հաղորդակցության ցածր մակարդակի տեսության մասին, տես այս ձեռնարկը:
Պարագաներ
-
2 Արդուինոս
Շատ խրախուսվում է, որ դուք օգտագործում եք Arduinos, որոնք ունեն բազմաթիվ ապարատային UARTs (այսինքն ՝ Arduino Mega)
- Միացման մետաղալար
-
Տեղադրեք SerialTransfer.h
Հասանելի է Arduino IDE- ի գրադարանների մենեջերի միջոցով
Քայլ 1: Ֆիզիկական կապեր
Սերիական հաղորդակցություն օգտագործելիս պետք է հաշվի առնել միացման մի քանի կետ.
- Համոզվեք, որ բոլոր հիմքերը միացված են:
- Arduino TX (Փոխանցում) քորոցը պետք է միացված լինի Arduino- ի մյուս RX (Ստացման) քորոցին
Քայլ 2. Ինչպես օգտագործել գրադարանը
SerialTransfer.h- ն թույլ է տալիս հեշտությամբ մեծ քանակությամբ տվյալներ ուղարկել ՝ օգտագործելով հատուկ փաթեթային արձանագրություն: Ստորև բերված է գրադարանի բոլոր հնարավորությունների նկարագրությունը, որոնցից շատերը մենք հետագայում կօգտագործենք այս ձեռնարկում.
SerialTransfer.txBuff
Սա բայթ զանգված է, որտեղ սերիայի միջոցով ուղարկվելիք բեռի բոլոր տվյալները բուֆերացվում են նախքան փոխանցումը: Դուք կարող եք այս բուֆերը լցնել տվյալների բայթերով ՝ մեկ այլ Arduino ուղարկելու համար:
SerialTransfer.rxBuff
Սա բայթ զանգված է, որտեղ մյուս Arduino- ից ստացված բեռնվածքի բոլոր տվյալները բուֆերացված են:
SerialTransfer.bytesRead
Մյուս Arduino- ի կողմից ստացված և պահված SerialTransfer.rxBuff- ում բեռնված բայթերի քանակը
SerialTransfer.begin (Stream & _port)
Նախաձեռնում է գրադարանի դասի օրինակ: Դուք կարող եք որպես պարամետր փոխանցել ցանկացած «Սերիական» դասի օբյեկտ ՝ նույնիսկ «SoftwareSerial» դասի օբյեկտներ:
SerialTransfer.sendData (const uint16_t & messageLen)
Սա ստիպում է ձեր Arduino- ին փոխանցման բուֆերում «messageLen» քանակի բայթ ուղարկել մյուս Arduino- ին: Օրինակ, եթե «messageLen» - ը 4 է, SerialTransfer.txBuff- ի առաջին 4 բայթերը սերիայի միջոցով կուղարկվեն մյուս Arduino- ին:
SerialTransfer.available ()
Սա ստիպում է ձեր Arduino- ին վերլուծել մյուս Arduino- ից ստացված սերիական տվյալները: Եթե այս գործառույթը վերադարձնում է բուլյան «ճշմարիտ», դա նշանակում է, որ նոր փաթեթը հաջողությամբ վերլուծվել է, և նոր ստացված փաթեթի տվյալները պահվում/հասանելի են SerialTransfer.rxBuff- ում:
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Կամայական օբյեկտի (բայթ, ինտ, բոց, երկակի, ստրուկտ և այլն …) լցնում է մի շարք բայթերի քանակը փոխանցման բուֆերում `սկսած ինդեքսից, ինչպես նշված է« ինդեքս »փաստարկով:
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Ընդունման բուֆերից (rxBuff) «լեն» քանակի բայթ է կարդում ինդեքսից, ինչպես նշված է «ինդեքս» փաստարկով կամայական օբյեկտի (բայթ, ինտ, բոց, կրկնակի, ստրուկտ և այլն …):
ՆՇՈՒՄ:
Տվյալների փոխանցման ամենահեշտ ձևն այն է, որ սկզբում սահմանվի մի կառուցվածք, որը պարունակում է բոլոր տվյալները, որոնք ցանկանում եք ուղարկել: Ստացող կողմում գտնվող Arduino- ն պետք է ունենա նույնական կառուցվածք:
Քայլ 3: Հիմնական տվյալների փոխանցում
Հետևյալ ուրվագիծը փոխանցում է և՛ analogRead- ի (0), և՛ լարման վերածված analogRead- ի (0) արժեքը Arduino #2 -ին:
Վերբեռնեք հետևյալ ուրվագիծը Arduino #1 -ում
#ներառել "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; բոց լարման; } տվյալներ; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Սերիա 1); } void loop () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (տվյալները, չափը (տվյալները)); myTransfer.sendData (չափը (տվյալները)); ուշացում (100); }
Քայլ 4: Ստացեք հիմնական տվյալներ
Հետևյալ կոդը տպում է Arduino #1 -ից ստացված ADC և լարման արժեքները:
Ներբեռնեք հետևյալ կոդը Arduino #2 -ում
#ներառել "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; բոց լարման; } տվյալներ; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Սերիա 1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (տվյալները, չափը (տվյալները)); Serial.print (data.adcVal); Serial.print (''); Serial.println (data.voltage); Serial.println (); } else if (myTransfer.status <0) {Serial.print ("ՍԽԱԼ:"); եթե (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); այլապես, եթե (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); այլապես, եթե (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
Քայլ 5: Փորձարկում
Երբ երկու էսքիզները վերբեռնվեն իրենց համապատասխան Arduinos- ում, կարող եք օգտագործել Arduino #2 -ի սերիական մոնիտորը `հաստատելու համար, որ դուք ստանում եք տվյալներ Arduino #1 -ից:
Խորհուրդ ենք տալիս:
PIC MCU և Python սերիական հաղորդակցություն. 5 քայլ
PIC MCU և Python սերիական հաղորդակցություն. Բարև, տղերք: Այս նախագծում ես կփորձեմ բացատրել իմ փորձերը PIC MCU- ի և Python- ի սերիական հաղորդակցության վերաբերյալ: Ինտերնետում կան բազմաթիվ ձեռնարկներ և տեսանյութեր, թե ինչպես կարելի է շփվել PIC MCU- ի հետ վիրտուալ տերմինալի միջոցով, ինչը շատ օգտակար է: Հովև
Arduino- ի և Python- ի սերիական հաղորդակցություն. Ստեղնաշարի ցուցադրում `4 քայլ
Arduino- ի և Python- ի սերիական հաղորդակցություն. Ստեղնաշարի ցուցադրում. Այս նախագիծը նախատեսված է mac օգտագործողների համար, բայց այն կարող է իրականացվել նաև Linux- ի և Windows- ի համար, միակ քայլը, որը պետք է տարբերվի, տեղադրումն է:
Անլար սերիական հաղորդակցություն Bluefruit- ի միջոցով. 4 քայլ
Անլար սերիական հաղորդակցություն Bluefruit- ի միջոցով. Ահա մի պարզ քայլ առ քայլ ուղեցույց ՝ ձեր լարերը փոխարինելու Bluetooth- ի ցածր էներգիայի միացումով: Դա որոշ ժամանակ տևեց, որպեսզի պարզեմ դա, քանի որ գրեթե ոչ մի փաստաթուղթ չկա դա անելու ժամանակակից bluetooth ցածր էներգիայի տեխնոլոգիայով: ինչպես Bluefrui
Վեբ վրա հիմնված SmartMirror ՝ օգտագործելով սերիական հաղորդակցություն. 6 քայլ
Վեբ վրա հիմնված SmartMirror ՝ օգտագործելով սերիական հաղորդակցություն. Այս հրահանգը տրվում է օգտագործման համար պատրաստ բոլոր ծածկագրերով: Developmentարգացումը շատ բարդ էր, բայց երբ այն ստեղծվի, իսկապես հեշտ է հարմարեցնել այն: Նայեք և վայելեք;)
Սերիական հաղորդակցություն ARM Cortex-M4- ի միջոցով. 4 քայլ
Սերիական հաղորդակցություն ARM Cortex-M4- ի միջոցով. Սա տախտակի վրա հիմնված նախագիծ է, որն օգտագործում է ARM Cortex-M4 (Texas Instruments EK-TM4C123GXL) սերիական հաղորդակցության համար `օգտագործելով վիրտուալ տերմինալը: Արդյունքը կարելի է ձեռք բերել 16x2 LCD էկրանով, իսկ սերիական հաղորդակցության համար մուտքագրումը կարող է տրվել սերիական Mo