Tartalomjegyzék:
- Kellékek
- 1. lépés: Fizikai kapcsolatok
- 2. lépés: A könyvtár használata
- 3. lépés: Alapadatok továbbítása
- 4. lépés: Alapadatok fogadása
- 5. lépés: Tesztelés
Videó: Arduino soros kommunikáció: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Sok Arduino -projekt több Arduino közötti adatátvitelre támaszkodik.
Akár hobbista, aki RC autót, RC repülőgépet épít, vagy meteorológiai állomást tervez távoli kijelzővel, tudnia kell, hogyan lehet megbízhatóan továbbítani a soros adatokat az egyik Arduino -ból a másikba. Sajnos a hobbistáknak nehézséget okoz a soros adatkommunikáció a saját projektjeikben. Ez azért van, mert a soros adatokat bájtok formájában továbbítják.
Bármilyen kontextus nélkül a bájtfolyamban szinte lehetetlen értelmezni az adatokat. Az adatok értelmezése nélkül az Arduino -k nem tudnak megbízhatóan kommunikálni. A kulcs az, hogy ezeket a kontextusadatokat hozzáadjuk a bájtfolyamhoz szabványos soros csomagterv használatával.
A soros csomagtervezés, a csomagolás és a csomag elemzése bonyolult és nehezen megvalósítható. Szerencsére az Arduino felhasználók számára olyan könyvtárak állnak rendelkezésre, amelyek képesek mindezt a komplex logikát a színfalak mögött megtenni, így Ön különös fejfájás nélkül összpontosíthat a projekt működésére. Ez az utasítás a SerialTransfer.h könyvtárat használja a soros csomagok feldolgozásához.
Röviden: ez az útmutató leírja, hogyan lehet egyszerűen megvalósítani a robusztus soros adatokat bármely projektben a SerialTransfer.h könyvtár használatával. Ha többet szeretne megtudni a robusztus soros kommunikáció alacsony szintű elméletéről, tekintse meg ezt az oktatóanyagot.
Kellékek
-
2 Arduinos
Nagyon ajánlott, hogy olyan hardveres UART -al rendelkező Arduino -kat használjon (pl. Arduino Mega)
- Csatlakozó vezeték
-
Telepítse a SerialTransfer.h fájlt
Elérhető az Arduino IDE könyvtárkezelőjén keresztül
1. lépés: Fizikai kapcsolatok
Soros kommunikáció használatakor néhány bekötési pontot szem előtt kell tartani:
- Győződjön meg arról, hogy minden földelés csatlakoztatva van!
- Az Arduino TX (átviteli) tűt csatlakoztatni kell a másik Arduino RX (fogadó) tűjéhez
2. lépés: A könyvtár használata
A SerialTransfer.h lehetővé teszi nagy mennyiségű adat egyszerű küldését egyéni csomagprotokoll használatával. Az alábbiakban leírjuk a könyvtár összes funkcióját - amelyek közül sokat az oktatóanyag későbbi részében fogunk használni:
SerialTransfer.txBuff
Ez egy bájt tömb, ahol a soros kapcsolaton keresztül küldendő összes hasznos adat pufferelt az átvitel előtt. Ezt a puffert feltöltheti bájt adatokkal, hogy elküldje egy másik Arduino -nak.
SerialTransfer.rxBuff
Ez egy bájtos tömb, ahol a másik Arduino -tól kapott összes hasznos adat pufferelt.
SerialTransfer.bytesRead
A másik Arduino által kapott és a SerialTransfer.rxBuff -ban tárolt hasznos teherbájtok száma
SerialTransfer.begin (adatfolyam és _port)
Inicializálja a könyvtár osztályának egy példányát. Bármely "Soros" osztályú objektumot átadhat paraméterként - még a "SoftwareSerial" osztályú objektumokat is!
SerialTransfer.sendData (const uint16_t & messageLen)
Így az Arduino "messageLen" számú bájtot küld az átviteli pufferben a másik Arduino -nak. Például, ha a "messageLen" értéke 4, akkor a SerialTransfer.txBuff első 4 bájtja soros úton kerül elküldésre a másik Arduino -hoz.
SerialTransfer.available ()
Ezzel az Arduino elemzi a másik Arduino -tól kapott soros adatokat. Ha ez a függvény visszaadja a logikai értéket "true", az azt jelenti, hogy egy új csomagot sikeresen elemeztünk, és az újonnan kapott csomag adatait a SerialTransfer.rxBuff tartalmazza.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Egy tetszőleges objektum (bájt, int, lebegő, kettős, struktúra stb.) "Len" számú bájtját tölti az átviteli pufferbe az indextől kezdődően, az "index" argumentum által meghatározott módon.
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
"Len" számú bájtot olvas be a fogadási pufferből (rxBuff) az "index" argumentum által meghatározott indextől kezdve egy tetszőleges objektumba (bájt, int, lebegés, kettős, struktúra stb.).
JEGYZET:
Az adatok továbbításának legegyszerűbb módja, ha először definiál egy struktúrát, amely tartalmazza az összes elküldeni kívánt adatot. A fogadó végén lévő Arduino -nak azonos szerkezetűnek kell lennie.
3. lépés: Alapadatok továbbítása
A következő vázlat az analogRead (0) ADC értékét és az analogRead (0) feszültségre konvertált értékét egyaránt Arduino #2 -re továbbítja.
Töltse fel a következő vázlatot az Arduino #1 -be:
#include "SerialTransfer.h"
SerialTransfer myTransfer; szerkezet STRUCT {uint16_t adcVal; úszó feszültség; } adatok; void setup () {Serial.begin (115200); Sorozat1.kezdet (115200); myTransfer.begin (Sorozat1); } void loop () {data.adcVal = analogRead (0); adatok.feszültség = (data.adcVal * 5,0) / 1023,0; myTransfer.txObj (adatok, sizeof (adatok)); myTransfer.sendData (sizeof (adatok)); késleltetés (100); }
4. lépés: Alapadatok fogadása
A következő kód kinyomtatja az Arduino #1 -től kapott ADC és feszültség értékeket.
Töltse fel a következő kódot az Arduino #2 -be:
#include "SerialTransfer.h"
SerialTransfer myTransfer; szerkezet STRUCT {uint16_t adcVal; úszó feszültség; } adatok; void setup () {Serial.begin (115200); Sorozat1.kezdet (115200); myTransfer.begin (Sorozat1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (adatok, sizeof (adatok)); Serial.print (data.adcVal); Serial.print (''); Serial.println (adatok.feszültség); Sorozat.println (); } else if (myTransfer.status <0) {Serial.print ("ERROR:"); 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")); }}
5. lépés: Tesztelés
Miután mindkét vázlatot feltöltötte a megfelelő Arduino -ba, a Serial Monitor használatával az Arduino #2 -n ellenőrizheti, hogy adatokat kap -e az Arduino #1 -től!
Ajánlott:
PIC MCU és Python soros kommunikáció: 5 lépés
PIC MCU és Python soros kommunikáció: Helló, srácok! Ebben a projektben megpróbálom elmagyarázni a PIC MCU és Python soros kommunikációval kapcsolatos kísérleteimet. Az interneten számos oktatóanyag és videó található a PIC MCU -val való kommunikációról a virtuális terminálon keresztül, ami nagyon hasznos. Howev
Arduino és Python soros kommunikáció - Billentyűzet kijelző: 4 lépés
Arduino és Python soros kommunikáció - Billentyűzet kijelző: Ez a projekt mac felhasználók számára készült, de Linuxra és Windowsra is megvalósítható, az egyetlen lépés, aminek másnak kell lennie, a telepítés
Vezeték nélküli soros kommunikáció a Bluefruit használatával: 4 lépés
Vezeték nélküli soros kommunikáció a Bluefruit használatával: Íme egy egyszerű lépésről lépésre, hogy kicserélje a vezetékeket egy alacsony energiafogyasztású Bluetooth -kapcsolatra: Beletelt egy kis időbe, amíg rájöttem erre, mert alig van dokumentáció a modern, alacsony energiafogyasztású Bluetooth -technológiával. mint a Bluefrui
Web-alapú SmartMirror a soros kommunikáció használatával: 6 lépés
Web-alapú SmartMirror soros kommunikációt használva: Ez az utasítás minden használatra kész kóddal együtt kerül szállításra. A fejlesztés nagyon bonyolult volt, de miután beállította, nagyon könnyű testreszabni. Nézze meg és élvezze;)
Soros kommunikáció az ARM Cortex-M4 használatával: 4 lépés
Soros kommunikáció az ARM Cortex-M4 használatával: Ez egy kenyeretábla-alapú projekt, amely ARM Cortex-M4-et (Texas Instruments EK-TM4C123GXL) használ a soros kommunikációhoz a virtuális terminál használatával. A kimenet 16x2 LCD képernyőn szerezhető be, és a soros kommunikáció bemenete megadható a soros Mo