Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
Mnogi Arduino projekti oslanjaju se na prijenos podataka između nekoliko Arduino.
Bilo da ste hobist koji gradi RC automobil, RC avion ili dizajnira meteorološku stanicu s udaljenim ekranom, morat ćete znati kako pouzdano prenijeti serijske podatke s jednog Arduina na drugi. Nažalost, hobistima je teško postići da serijska komunikacija podataka radi u vlastitim projektima. To je zato što se serijski podaci šalju kao niz bajtova.
Bez ikakvog konteksta unutar niza bajtova, gotovo je nemoguće interpretirati podatke. Bez mogućnosti tumačenja podataka, vaš Arduinos neće moći pouzdano komunicirati. Ključ je u dodavanju ovih kontekstnih podataka u tok bajtova korištenjem standardnog dizajna serijskog paketa.
Dizajn serijskog paketa, punjenje paketa i raščlanjivanje paketa je složeno i teško ga je postići. Srećom za korisnike Arduina, dostupne su biblioteke koje mogu izvesti svu ovu složenu logiku iza kulisa, tako da se možete usredotočiti na to da vaš projekt funkcionira bez dodatne glavobolje. Ovaj Instructable će koristiti biblioteku SerialTransfer.h za obradu serijskog paketa.
Ukratko: ovaj Instructable će vam objasniti kako možete lako implementirati robusne serijske podatke u bilo koji projekt pomoću biblioteke SerialTransfer.h. Ako želite saznati više o teoriji niskog nivoa o robusnoj serijskoj komunikaciji, pogledajte ovaj vodič.
Supplies
- 2 Arduinosa
Preporučuje se korištenje Arduinosa koji ima više hardverskih UART -ova (tj. Arduino Mega)
- Spojna žica
-
Instalirajte SerialTransfer.h
Dostupno putem Arduino IDE -ovog upravitelja biblioteka
Korak 1: Fizičke veze
Prilikom korištenja serijske komunikacije potrebno je imati na umu nekoliko točaka ožičenja:
- Provjerite jesu li svi uzemljeni spojeni!
- Arduino TX (Transmit) pin mora biti povezan s drugim Arduino RX (Receive) pinom
Korak 2: Kako koristiti biblioteku
SerialTransfer.h vam omogućuje jednostavno slanje velikih količina podataka pomoću prilagođenog protokola paketa. Ispod je opis svih značajki biblioteke - mnoge ćemo koristiti kasnije u ovom vodiču:
SerialTransfer.txBuff
Ovo je niz bajtova u kojem se svi podaci o korisnom opterećenju koji se šalju serijski memoriraju prije prijenosa. Ovaj bafer možete napuniti bajtovima podataka za slanje na drugi Arduino.
SerialTransfer.rxBuff
Ovo je niz bajtova u kojem se memoriraju svi podaci o korisnom opterećenju primljeni s drugog Arduina.
SerialTransfer.bytesRead
Broj bajtova korisnog opterećenja koje je drugi Arduino primio i pohranio u SerialTransfer.rxBuff
SerialTransfer.begin (Stream & _port)
Inicijalizira instancu klase biblioteke. Možete proslijediti bilo koji objekt klase "Serial" kao parametar - čak i objekte klase "SoftwareSerial"!
SerialTransfer.sendData (const uint16_t & messageLen)
Zbog toga vaš Arduino šalje "messageLen" broj bajtova u međuspremniku za prijenos drugom Arduinu. Na primjer, ako je "messageLen" 4, prva 4 bajta SerialTransfer.txBuff će biti poslana serijski na drugi Arduino.
SerialTransfer.available ()
Time vaš Arduino analizira sve primljene serijske podatke s drugog Arduina. Ako ova funkcija vrati logičko "true", to znači da je novi paket uspješno raščlanjen i da su podaci novo primljenog paketa pohranjeni/dostupni u SerialTransfer.rxBuff.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Ubacuje "len" broj bajtova proizvoljnog objekta (byte, int, float, double, struct, itd …) u međuspremnik za prijenos koji počinje od indeksa kako je navedeno u argumentu "index".
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Čita "len" broj bajtova iz međuspremnika za primanje (rxBuff) počevši od indeksa kako je specificirano argumentom "indeks" u proizvoljan objekt (bajt, int, float, double, struct, itd …).
BILJEŠKA:
Najlakši način prijenosa podataka je prvo definirati strukturu koja sadrži sve podatke koje želite poslati. Arduino na prijemnom kraju trebao bi imati definiranu identičnu strukturu.
Korak 3: Prenesite osnovne podatke
Sljedeća skica prenosi i ADC vrijednost analogRead (0) i vrijednost analogRead (0) pretvorenu u napon u Arduino #2.
Prenesite sljedeću skicu na Arduino #1:
#include "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; plivajući napon; } podaci; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } void loop () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (podaci, veličina (podaci)); myTransfer.sendData (sizeof (data)); kašnjenje (100); }
Korak 4: Primite osnovne podatke
Sljedeći kod ispisuje ADC i vrijednosti napona primljene od Arduina #1.
Prenesite sljedeći kod na Arduino #2:
#include "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; plivajući napon; } podaci; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (podaci, veličina (podaci)); Serial.print (data.adcVal); Serial.print (''); Serial.println (data.voltage); Serial.println (); } else if (myTransfer.status <0) {Serial.print ("GREŠKA:"); if (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); else if (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); else if (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
Korak 5: Testiranje
Nakon što su obje skice učitane na odgovarajući Arduinos, možete koristiti serijski monitor na Arduinu #2 da biste potvrdili da primate podatke s Arduina #1!
Preporučuje se:
Serijska konfiguracija HC-05 preko Bluetootha: 10 koraka
Serijska konfiguracija HC-05 preko Bluetootha: Dok sam koristio Android uređaje i HC-05 Bluetooth SPP module za neke Arduino projekte, želio sam provjeriti i promijeniti HC-05 brzine prijenosa i druge parametre bez povezivanja na USB priključak računara. To se pretvorilo u ovo.HC-05 moduli povezuju serijski i Blu
PIC MCU i Python serijska komunikacija: 5 koraka
PIC MCU i Python serijska komunikacija: Zdravo, momci! U ovom projektu pokušat ću objasniti svoje eksperimente na PIC MCU i Python serijskoj komunikaciji. Preko interneta postoji mnogo vodiča i video zapisa o tome kako komunicirati s PIC MCU -om preko virtualnog terminala što je vrlo korisno. Howev
Arduino i Python serijska komunikacija - prikaz tastature: 4 koraka
Arduino i Python serijska komunikacija - prikaz tipkovnice: Ovaj je projekt napravljen za korisnike Mac računara, ali se može implementirati i za Linux i Windows, jedini korak koji bi trebao biti drugačiji je instalacija
Bežična serijska komunikacija pomoću Bluefruit -a: 4 koraka
Bežična serijska komunikacija pomoću Bluefruit -a: Evo jednostavnog vodiča korak po korak kako biste zamijenili svoje žice bluetooth vezom niske energije: Trebalo mi je vremena da to shvatim jer gotovo da nema dokumentacije o tome kako to učiniti sa modernom bluetooth tehnologijom niske energije, poput kao Bluefrui
Serijska komunikacija pomoću ARM Cortex-M4: 4 koraka
Serijska komunikacija pomoću ARM Cortex-M4: Ovo je projekt zasnovan na matičnoj ploči koji koristi ARM Cortex-M4 (Texas Instruments EK-TM4C123GXL) za serijsku komunikaciju pomoću virtualnog terminala. Izlaz se može dobiti na LCD ekranu veličine 16x2, a ulaz za serijsku komunikaciju može se dati u Serijski Mo