Përmbajtje:
- Furnizimet
- Hapi 1: Lidhjet fizike
- Hapi 2: Si të përdorni bibliotekën
- Hapi 3: Transmetoni të dhënat themelore
- Hapi 4: Merrni të dhënat themelore
- Hapi 5: Testimi
Video: Komunikimi Serial Arduino: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:13
Shumë projekte Arduino mbështeten në transmetimin e të dhënave midis disa Arduinos.
Pavarësisht nëse jeni një hobiist që po ndërton një makinë RC, një aeroplan RC ose po harton një stacion moti me një ekran të largët, do t'ju duhet të dini se si të transferoni me besueshmëri të dhënat serike nga një Arduino në tjetrin. Fatkeqësisht, është e vështirë për hobistët të marrin komunikim të të dhënave serike duke punuar në projektet e tyre. Kjo është për shkak se të dhënat serike dërgohen si një rrjedhë e bajtëve.
Pa asnjë lloj konteksti brenda rrjedhës së bajtëve, është pothuajse e pamundur të interpretohen të dhënat. Pa qenë në gjendje të interpretoni të dhënat, Arduinos tuaj nuk do të jenë në gjendje të komunikojnë me besueshmëri. Çelësi është që të shtoni këto të dhëna konteksti në rrjedhën e bajtit duke përdorur një dizajn standard të paketave serike.
Dizajni serik i paketave, mbushja e paketave dhe analizimi i paketave është kompleks dhe i vështirë për t'u arritur. Për fat të mirë për përdoruesit e Arduino, ka biblioteka të disponueshme që mund të bëjnë të gjithë këtë logjikë komplekse prapa skenave, kështu që ju mund të përqendroheni në zbatimin e projektit tuaj pa ndonjë shtesë shtesë. Ky Instructable do të përdorë bibliotekën SerialTransfer.h për përpunimin serik të paketave.
Shkurtimisht: ky Instructable do të përshkruajë sesi mund të zbatoni të dhëna serike të fuqishme me lehtësi në çdo projekt duke përdorur bibliotekën SerialTransfer.h. Nëse doni të mësoni më shumë rreth teorisë së nivelit të ulët mbi komunikimin e fuqishëm serik, shihni këtë tutorial.
Furnizimet
-
2 Arduinos
Isshtë shumë e inkurajuar që të përdorni Arduinos që kanë UART të shumtë të harduerit (dmth. Arduino Mega)
- Teli lidhës
-
Instaloni SerialTransfer.h
E disponueshme përmes Menaxherit të Bibliotekave të Arduino IDE
Hapi 1: Lidhjet fizike
Kur përdorni komunikimin serik, duhet të keni parasysh disa pika të telave:
- Sigurohuni që të gjitha bazat janë të lidhura!
- Kodi Arduino TX (Transmeto) duhet të lidhet me kunjin tjetër të Arduino RX (Merr)
Hapi 2: Si të përdorni bibliotekën
SerialTransfer.h ju lejon të dërgoni me lehtësi sasi të mëdha të të dhënave duke përdorur një protokoll të paketave të personalizuara. Më poshtë është një përshkrim i të gjitha veçorive të bibliotekës - shumë prej të cilave do t'i përdorim më vonë në këtë tutorial:
SerialTransfer.txBuff
Ky është një grup byte ku të gjitha të dhënat e ngarkesës që do të dërgohen në seri ruhen para transmetimit. Ju mund ta mbushni këtë tampon me bajt të të dhënave për t'i dërguar në një Arduino tjetër.
SerialTransfer.rxBuff
Ky është një grup byte ku të gjitha të dhënat e ngarkesës të marra nga Arduino tjetër janë të ruajtura.
SerialTransfer.bytesRead
Numri i bajtëve të ngarkesës të marrë nga Arduino tjetër dhe të ruajtur në SerialTransfer.rxBuff
SerialTransfer.begin (Transmeto & _port)
Fillon një shembull të klasës së bibliotekës. Ju mund të kaloni çdo objekt të klasës "Serial" si parametër - madje edhe objekte të klasës "SoftwareSerial"!
SerialTransfer.sendData (const uint16_t & messageLen)
Kjo e bën Arduino -n tuaj të dërgojë "mesazhLen" numër bajtësh në tamponin e transmetimit te Arduino -ja tjetër. Për shembull, nëse "messageLen" është 4, 4 bajtët e parë të SerialTransfer.txBuff do t'i dërgohen përmes serisë Arduino -s tjetër.
SerialTransfer. I disponueshëm ()
Kjo e bën Arduino -n tuaj të analizojë çdo të dhënë serike të marrë nga Arduino -ja tjetër. Nëse ky funksion e kthen boolean "true", do të thotë që një pako e re është analizuar me sukses dhe të dhënat e pakos së sapo marrë janë të ruajtura/të disponueshme në SerialTransfer.rxBuff.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Mbush "len" numrin e bajtëve të një objekti arbitrar (byte, int, float, double, struct, etj …) në tamponin e transmetimit duke filluar nga indeksi siç specifikohet nga argumenti "index".
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Lexon "len" numrin e bajtëve nga tamponi i marrjes (rxBuff) duke filluar nga indeksi siç përcaktohet nga argumenti "index" në një objekt arbitrar (byte, int, float, double, struct, etj …).
SHËNIM:
Mënyra më e lehtë për të transmetuar të dhëna është së pari të përcaktoni një strukturë që përmban të gjitha të dhënat që dëshironi të dërgoni. Arduino në anën marrëse duhet të ketë një strukturë identike të përcaktuar.
Hapi 3: Transmetoni të dhënat themelore
Skica e mëposhtme transmeton si vlerën ADC të analogRead (0) ashtu edhe vlerën e analogRead (0) të konvertuar në tension në Arduino #2.
Ngarko skicën e mëposhtme në Arduino #1:
#përfshi "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; tensioni notues; } të dhëna; void setup () {Serial.begin (115200); Serial1.fill (115200); myTransfer.begin (Serial1); } void loop () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (të dhëna, madhësia e (të dhënave)); myTransfer.sendData (madhësia e (të dhënave)); vonesë (100); }
Hapi 4: Merrni të dhënat themelore
Kodi i mëposhtëm printon vlerat ADC dhe tensionit të marra nga Arduino #1.
Ngarko kodin e mëposhtëm në Arduino #2:
#përfshi "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; tensioni notues; } të dhëna; void setup () {Serial.begin (115200); Serial1.fill (115200); myTransfer.begin (Serial1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (të dhëna, madhësi (të dhëna)); Serial.print (data.adcVal); Serial.print (''); Serial.println (data.voltage); Serial.println (); } else if (myTransfer.status <0) {Serial.print ("GABIM:"); nëse (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); tjetër nëse (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); tjetër nëse (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
Hapi 5: Testimi
Pasi të dy skicat të jenë ngarkuar në Arduinos -in e tyre përkatës, mund të përdorni Monitoruesin Serial në Arduino #2 për të verifikuar që po merrni të dhëna nga Arduino #1!
Recommended:
Komunikimi Arduino dhe Mobile me celular (lajmëtar): 8 hapa
Komunikimi Arduino dhe Mobile Bluetooth (lajmëtar): Komunikimi po luan një faktor të rëndësishëm në jetën tonë të përditshme. Por gjatë këtyre kohës së bllokimit komunikimi me familjen tonë ose komunikimi me njerëzit në shtëpinë tonë ndonjëherë kanë nevojë për telefona celularë. Por përdorimi i celularëve për një kohë të shkurtër
Komunikimi i koduar me valë Arduino: 5 hapa
Komunikimi i Koduar pa Tela Arduino: Përshëndetje të gjithëve, Në këtë artikull të dytë, unë do t'ju shpjegoj se si të përdorni çipin Atecc608a për të siguruar komunikimin tuaj pa tel. Për këtë, unë do të përdor NRF24L01+ për pjesën Wireless dhe Arduino UNO. Mikro çipi ATECC608A është projektuar nga
Komunikimi Modbus TCP midis Arduino dhe pajisjeve industriale: 3 hapa
Komunikimi Modbus TCP midis Arduino dhe Pajisjeve Industriale: Një mënyrë industriale për të kontrolluar një bord Arduino me HMI industriale dhe për ta lidhur atë me një rrjet industrial me një komunikim Modbus TCP
Komunikimi Serial i Arduino dhe Python - Ekrani i tastierës: 4 hapa
Komunikimi Serial i Arduino dhe Python - Ekrani i tastierës: Ky Projekt është bërë për përdoruesit e Mac por mund të zbatohet edhe për Linux dhe Windows, hapi i vetëm që duhet të jetë i ndryshëm është instalimi
Launchpad - Komunikimi Serial me Matlab: 6 hapa
Launchpad - Comunicación Serial Con Matlab: Hola, ju do të mësoni një udhëzues të veçantë për aprender á s është një komunikim i nevojshëm i LaunchPad TI Evaluation Kit në Matlab. Ky udhëzues është enfocar á a la conexi ó n con la Tiva C y el usuario podr á migrar f á cilmente a una ta