
Satura rādītājs:
2025 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2025-01-23 14:59

Daudzi Arduino projekti balstās uz datu pārsūtīšanu starp vairākiem Arduinos.
Neatkarīgi no tā, vai esat hobijs, kurš būvē RC automašīnu, RC lidmašīnu vai projektē laika staciju ar tālvadības displeju, jums būs jāzina, kā droši pārsūtīt sērijas datus no viena Arduino uz citu. Diemžēl hobijiem ir grūti iegūt seriālo datu sakarus, kas darbojas savos projektos. Tas ir tāpēc, ka sērijveida dati tiek nosūtīti kā baitu plūsma.
Bez jebkāda konteksta baitu plūsmā ir gandrīz neiespējami interpretēt datus. Nespējot interpretēt datus, jūsu Arduinos nevarēs droši sazināties. Galvenais ir pievienot šos konteksta datus baitu straumei, izmantojot standarta sērijas pakešu dizainu.
Sērijveida pakešu dizains, pakešu pildīšana un pakešu parsēšana ir sarežģīts un grūti sasniedzams. Par laimi Arduino lietotājiem ir pieejamas bibliotēkas, kas var paveikt visu šo sarežģīto loģiku aizkulisēs, lai jūs varētu koncentrēties uz to, lai projekts darbotos bez papildu galvassāpēm. Šī pamācība sērijveida pakešu apstrādei izmantos bibliotēku SerialTransfer.h.
Īsumā: šajā pamācībā tiks apskatīts, kā jebkurā projektā, izmantojot bibliotēku SerialTransfer.h, viegli ieviest stabilus sērijas datus. Ja vēlaties uzzināt vairāk par zema līmeņa teoriju par stabilu seriālo komunikāciju, skatiet šo pamācību.
Piegādes
-
2 Arduinos
Ir ļoti ieteicams izmantot Arduinos, kuriem ir vairāki aparatūras UART (piemēram, Arduino Mega)
- Savienojuma vads
-
Instalējiet SerialTransfer.h
Pieejams, izmantojot Arduino IDE bibliotēku pārvaldnieku
1. darbība: fiziskie savienojumi

Izmantojot seriālo komunikāciju, jāpatur prātā daži vadu savienošanas punkti:
- Pārliecinieties, ka visi laukumi ir savienoti!
- Arduino TX (pārraides) tapai jābūt savienotai ar otru Arduino RX (uztveršanas) tapu
2. darbība. Kā izmantot bibliotēku

SerialTransfer.h ļauj viegli nosūtīt lielu datu apjomu, izmantojot pielāgotu pakešu protokolu. Zemāk ir visu bibliotēkas funkciju apraksts - daudzas no tām mēs izmantosim vēlāk šajā apmācībā:
SerialTransfer.txBuff
Šis ir baitu masīvs, kurā visi sērijveidā nosūtāmie kravnesības dati tiek buferizēti pirms nosūtīšanas. Jūs varat piepildīt šo buferi ar datu baitiem, lai tos nosūtītu citam Arduino.
SerialTransfer.rxBuff
Šis ir baitu masīvs, kurā visi no otras Arduino saņemtās kravnesības dati ir buferizēti.
SerialTransfer.bytesRead
Otrās Arduino saņemtās un SerialTransfer.rxBuff uzglabātās kravas baitu skaits
SerialTransfer.begin (straume un _ports)
Inicializē bibliotēkas klases eksemplāru. Jūs varat nodot jebkuru "Serial" klases objektu kā parametru - pat "SoftwareSerial" klases objektus!
SerialTransfer.sendData (const uint16_t & messageLen)
Tas liek jūsu Arduino nosūtīt "messageLen" baitu skaitu pārraides buferī uz citu Arduino. Piemēram, ja "messageLen" ir 4, SerialTransfer.txBuff pirmie 4 baiti tiks nosūtīti, izmantojot sērijas datus, otram Arduino.
SerialTransfer.available ()
Tas liek jūsu Arduino analizēt visus saņemtos sērijas datus no otra Arduino. Ja šī funkcija atgriež Būla vērtību “true”, tas nozīmē, ka jauna pakete ir veiksmīgi parsēta un jauniegūtās paketes dati tiek saglabāti/pieejami mapē SerialTransfer.rxBuff.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Ievieto “len” patvaļīga objekta baitu skaitu (baiti, int, float, double, struktura utt.) Pārraides buferī, sākot ar indeksu, kā norādīts argumentā “index”.
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Nolasa "len" baitu skaitu no saņemšanas bufera (rxBuff), sākot ar indeksu, kā norādīts argumentā "index", patvaļīgā objektā (baits, int, pludiņš, dubults, struktūra utt.).
PIEZĪME:
Vienkāršākais veids, kā pārsūtīt datus, ir vispirms definēt struktūru, kurā ir visi dati, kurus vēlaties nosūtīt. Arduino uztvērēja galā jābūt definētai identiskai struktūrai.
3. solis: Transmit Pamatdati
Šī skice pārraida gan analogRead (0) ADC vērtību, gan analogRead (0) vērtību, kas pārveidota par spriegumu uz Arduino #2.
Augšupielādējiet šādu skici Arduino #1:
#include "SerialTransfer.h"
SerialTransfer myTransfer; struktura STRUCT {uint16_t adcVal; pludiņa spriegums; } dati; void setup () {Serial.begin (115200); Seriāls1.sākt (115200); myTransfer.begin (Serial1); } void loop () {data.adcVal = analogRead (0); dati. spriegums = (data.adcVal * 5,0) / 1023,0; myTransfer.txObj (dati, lielums (dati)); myTransfer.sendData (sizeof (dati)); kavēšanās (100); }
4. darbība. Pamatdatu saņemšana
Šis kods izdrukā ADC un sprieguma vērtības, kas saņemtas no Arduino #1.
Augšupielādējiet šādu kodu Arduino #2:
#include "SerialTransfer.h"
SerialTransfer myTransfer; struktura STRUCT {uint16_t adcVal; pludiņa spriegums; } dati; void setup () {Serial.begin (115200); Seriāls1.sākt (115200); myTransfer.begin (Serial1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (dati, lielums (dati)); Sērijas nospiedums (data.adcVal); Serial.print (''); Serial.println (dati.priegums); Sērijas.println (); } cits if (myTransfer.status <0) {Serial.print ("ERROR:"); ja (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); cits ja (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); cits if (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
5. darbība: pārbaude
Kad abas skices tika augšupielādēti to attiecīgo Arduinos, jūs varat izmantot Serial Monitor par Arduino # 2, lai pārliecinātos, jūs saņemat datus no Arduino # 1!
Ieteicams:
Atsevišķs Arduino 3.3V W / ārējais 8 MHz pulkstenis tiek ieprogrammēts no Arduino Uno, izmantojot ICSP / ISP (ar sērijas uzraudzību!): 4 soļi

Atsevišķs Arduino 3.3V W / ārējais 8 MHz pulkstenis tiek ieprogrammēts no Arduino Uno, izmantojot ICSP / ISP (ar sērijas uzraudzību!): Mērķi: Izveidot atsevišķu Arduino, kas darbojas ar 3.3V jaudu no 8 MHz ārējā pulksteņa. Lai to ieprogrammētu, izmantojot ISP (pazīstams arī kā ICSP, sērijveida programmēšana) no Arduino Uno (darbojas pie 5 V) Lai rediģētu sāknēšanas ielādētāja failu un ierakstītu
Sērijas UDP/IP vārteja Arduino, pamatojoties uz ESP8266 vairogu: 8 soļi

Sērijas UDP/IP vārteja Arduino, pamatojoties uz ESP8266 Shield: Es jau publicēju šo pamācību 2016. gadā "Kā izveidot savu Wifi vārteju, lai savienotu savu Arduino ar IP tīklu". Tā kā es veicu dažus koda uzlabojumus un joprojām izmantoju šo risinājumu. Tomēr tagad ir daži ESP8266 vairogi
Arduino tastatūras sērijas monitora pārbaude: 6 soļi

Arduino tastatūras sērijas monitora tests: šī ir ļoti vienkārša Arduino sērijas monitora testa apmācība Ja jums patīk šī pamācība, lūdzu, abonējiet manu kanālu https://www.youtube.com/ZenoModiff
Arduino sērijas monitors Tinkercad: 7 soļi (ar attēliem)

Arduino sērijas monitors Tinkercad: visa jūsu programmā notiekošā izsekošana var būt augšupēja cīņa. Sērijas monitors ir veids, kā klausīties, kas notiek jūsu kodā, ziņojot datoram, izmantojot USB kabeli. Tinkercad Circuits simulatorā sērijas
Ultraskaņas radars, izmantojot Arduino Nano un sērijas ploteri: 10 soļi

Ultraskaņas radars, izmantojot Arduino Nano un seriālo ploteri: Šajā pamācībā mēs uzzināsim par servo bibliotēkas pamatiem, kā arī ultraskaņas sensora iestatīšanu un izmantošanu kā radaru. šī projekta iznākums būs redzams sērijveida ploteru monitorā