Obsah:
- Zásoby
- Krok 1: Fyzické pripojenia
- Krok 2: Ako používať knižnicu
- Krok 3: Prenos základných údajov
- Krok 4: Prijmite základné údaje
- Krok 5: Testovanie
Video: Sériová komunikácia Arduino: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Mnoho projektov Arduino sa spolieha na prenos údajov medzi niekoľkými Arduinami.
Či už ste hobby, ktorý stavia RC auto, RC lietadlo alebo navrhuje meteorologickú stanicu so vzdialeným displejom, budete potrebovať vedieť, ako spoľahlivo prenášať sériové údaje z jedného Arduina do druhého. Pre fanúšikov je bohužiaľ ťažké získať sériovú dátovú komunikáciu, ktorá funguje vo vlastných projektoch. Dôvodom je, že sériové údaje sa odosielajú ako tok bajtov.
Bez akéhokoľvek druhu kontextu v prúde bajtov je takmer nemožné interpretovať údaje. Bez toho, aby boli schopní interpretovať údaje, vaše Arduinos nebudú schopné spoľahlivo komunikovať. Kľúčom je pridať tieto kontextové údaje do bajtového toku pomocou štandardného dizajnu sériových paketov.
Sériový dizajn paketov, vypchávanie paketov a analýza paketov je zložité a ťažko dosiahnuteľné. Našťastie pre používateľov Arduina sú k dispozícii knižnice, ktoré dokážu celú túto komplexnú logiku v zákulisí, takže sa môžete sústrediť na to, aby váš projekt fungoval bez dodatočných prekážok. Tento návod použije knižnicu SerialTransfer.h na spracovanie sériových paketov.
Stručne povedané: tento návod sa zameriava na to, ako môžete jednoducho implementovať robustné sériové údaje do akéhokoľvek projektu pomocou knižnice SerialTransfer.h. Ak sa chcete dozvedieť viac o nízkoúrovňovej teórii robustnej sériovej komunikácie, pozrite si tento návod.
Zásoby
-
2 Arduino
Dôrazne sa odporúča používať Arduino, ktoré má viacero hardvérových UART (t. J. Arduino Mega)
- Pripojovací drôt
-
Nainštalujte SerialTransfer.h
K dispozícii prostredníctvom správcu knižníc Arduino IDE
Krok 1: Fyzické pripojenia
Pri použití sériovej komunikácie je potrebné mať na pamäti niekoľko bodov zapojenia:
- Uistite sa, že sú všetky uzemnenia prepojené!
- Pin Arduino TX (Transmit) je potrebné pripojiť k druhému kolíku RX (Receive) Arduino
Krok 2: Ako používať knižnicu
SerialTransfer.h vám umožňuje jednoducho odosielať veľké množstvo dát pomocou vlastného paketového protokolu. Nasleduje popis všetkých funkcií knižnice - mnohé z nich použijeme neskôr v tomto návode:
SerialTransfer.txBuff
Jedná sa o bajtové pole, v ktorom sú všetky údaje o užitočnom zaťažení, ktoré sa majú odoslať sériovo, uložené do vyrovnávacej pamäte pred prenosom. Do tejto vyrovnávacej pamäte môžete zaplniť bajty údajov a odoslať ich do iného Arduina.
SerialTransfer.rxBuff
Toto je bajtové pole, do ktorého sú uložené všetky údaje o užitočnom zaťažení prijaté od druhého Arduina.
SerialTransfer.bytes Prečítajte si
Počet bajtov užitočného zaťaženia prijatých druhým Arduinom a uložených v SerialTransfer.rxBuff
SerialTransfer.begin (Stream & _port)
Inicializuje inštanciu triedy knižnice. Ako parameter môžete odovzdať akýkoľvek objekt triedy „Serial“- dokonca aj objekty triedy „SoftwareSerial“!
SerialTransfer.sendData (const uint16_t & messageLen)
Vďaka tomu bude vaše Arduino odosielať počet bajtov „messageLen“vo vysielacej vyrovnávacej pamäti do druhého Arduina. Ak je napríklad „messageLen“4, prvé 4 bajty SerialTransfer.txBuff budú odoslané sériovo do druhého Arduina.
SerialTransfer.available ()
Vďaka tomu bude vaše Arduino analyzovať všetky prijaté sériové údaje od druhého Arduina. Ak táto funkcia vráti logickú hodnotu „true“, znamená to, že nový paket bol úspešne analyzovaný a údaje novo prijatého paketu sú uložené/dostupné v SerialTransfer.rxBuff.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Vloží „len“počet bajtov ľubovoľného objektu (bajt, int, float, double, struct, atď …) do vyrovnávacej pamäte prenosu začínajúc od indexu, ako je určené argumentom „index“.
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Načíta "len" počet bajtov z vyrovnávacej pamäte príjmu (rxBuff) začínajúcej na indexe, ako je určené argumentom "index" do ľubovoľného objektu (byte, int, float, double, struct, atď …).
POZNÁMKA:
Najjednoduchší spôsob prenosu údajov je najskôr definovať štruktúru, ktorá obsahuje všetky údaje, ktoré chcete odoslať. Arduino na prijímajúcom konci by malo mať definovanú identickú štruktúru.
Krok 3: Prenos základných údajov
Nasledujúci náčrt prenáša hodnotu ADC analogRead (0) aj hodnotu analogRead (0) prevedenú na napätie na Arduino #2.
Do Arduina č. 1 nahrajte nasledujúci náčrt:
#include "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; plávajúce napätie; } údaje; 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 (údaje, veľkosť (údaje)); myTransfer.sendData (sizeof (údaje)); oneskorenie (100); }
Krok 4: Prijmite základné údaje
Nasledujúci kód vytlačí hodnoty ADC a napätia prijaté z Arduina #1.
Do Arduino #2 nahrajte nasledujúci kód:
#include "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; plávajúce napätie; } údaje; void setup () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (data, sizeof (data)); Serial.print (data.adcVal); Serial.print (''); Serial.println (data.voltage); Serial.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")); }}
Krok 5: Testovanie
Akonáhle sú oba náčrty nahrané do ich príslušných Arduinos, môžete pomocou sériového monitora na Arduino #2 overiť, či dostávate údaje z Arduino #1!
Odporúča:
Sériová komunikácia PIC MCU a Python: 5 krokov
Sériová komunikácia PIC MCU a Python: Dobrý deň, chlapci! V tomto projekte sa pokúsim vysvetliť svoje experimenty so sériovou komunikáciou PIC MCU a Python. Cez internet existuje mnoho návodov a videí o tom, ako komunikovať s PIC MCU prostredníctvom virtuálneho terminálu, čo je veľmi užitočné. Howev
Sériová komunikácia Arduino a Python - displej klávesnice: 4 kroky
Sériová komunikácia Arduino a Python - zobrazenie klávesnice: Tento projekt je vytvorený pre používateľov počítačov Mac, ale je možné ho implementovať aj pre systémy Linux a Windows, jediným krokom, ktorý by sa mal líšiť, je inštalácia
Bezdrôtová sériová komunikácia pomocou Bluefruit: 4 kroky
Bezdrôtová sériová komunikácia pomocou programu Bluefruit: Tu je jednoduchý krok za krokom návod, ako nahradiť vaše káble nízkoenergetickým pripojením bluetooth: Chvíľu mi trvalo, kým som na to prišiel, pretože neexistuje takmer žiadna dokumentácia, ako to urobiť pomocou modernej nízkoenergetickej technológie bluetooth, ako je napr. ako Bluefrui
Launchpad - sériová komunikácia Matlab: 6 krokov
Launchpad - sériová komunikácia Matlab: Hola, bienvenido a este tutorial donde aprender á s a comunicar tu tarjeta LaunchPad TI Evaluation Kit con Matlab.En este tutorial se enfocar á a la conexi ó n con la Tiva C y el usuario podr á migrujte a pridajte
Sériová komunikácia pomocou ARM Cortex-M4: 4 kroky
Sériová komunikácia pomocou ARM Cortex-M4: Jedná sa o projekt založený na breadboarde, ktorý používa ARM Cortex-M4 (Texas Instruments EK-TM4C123GXL) na sériovú komunikáciu pomocou virtuálneho terminálu. Výstup je možné získať na obrazovke LCD 16 x 2 a vstup pre sériovú komunikáciu je možné zadať v sériovom