Sisukord:
- Tarvikud
- Samm: füüsilised ühendused
- 2. samm: raamatukogu kasutamine
- 3. samm: põhiandmete edastamine
- 4. samm: põhiandmete vastuvõtmine
- Samm: testimine
Video: Arduino jadaühendus: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Paljud Arduino projektid toetuvad andmete edastamisele mitme Arduinose vahel.
Ükskõik, kas olete harrastaja, kes ehitab RC -autot, RC -lennukit või projekteerib kaugjuhtimispuldiga ilmajaama, peate teadma, kuidas jadaandmeid ühelt Arduino -lt teisele usaldusväärselt üle kanda. Kahjuks on harrastajatel raske oma projektides jadaandmesidet saada. Seda seetõttu, et seeriaandmed saadetakse baitide voona.
Kui baitide voos puudub igasugune kontekst, on andmeid peaaegu võimatu tõlgendada. Ilma andmete tõlgendamiseta ei saa teie Arduinos usaldusväärselt suhelda. Peamine on lisada need kontekstiandmed baitvoogu, kasutades tavalist jadapaketi kujundust.
Seeriapakettide disain, pakettide täitmine ja pakettide parsimine on keeruline ja raskesti saavutatav. Arduino kasutajate õnneks on saadaval raamatukogud, mis suudavad kogu selle keerulise loogika kulisside taga ära teha, nii et saate keskenduda oma projekti toimimisele ilma täiendavate peavaludeta. See juhendaja kasutab jadapakettide töötlemiseks kogu SerialTransfer.h.
Lühidalt: see juhend sisaldab teavet selle kohta, kuidas saate teekide SerialTransfer.h abil hõlpsasti rakendada tugevaid seeriaandmeid igas projektis. Kui soovite rohkem teada saada madala taseme teooriast tugeva jadaühenduse kohta, vaadake seda õpetust.
Tarvikud
-
2 Arduinot
On väga soovitatav kasutada Arduinosid, millel on mitu riistvara UART -i (st Arduino Mega)
- Ühendusjuhe
-
Installige SerialTransfer.h
Saadaval Arduino IDE raamatukogude halduri kaudu
Samm: füüsilised ühendused
Jadaühenduse kasutamisel tuleb meeles pidada mõnda juhtmestikku:
- Veenduge, et kõik alused on ühendatud!
- Arduino TX (edastus) tihvt tuleb ühendada teise Arduino RX (vastuvõtmise) tihvtiga
2. samm: raamatukogu kasutamine
SerialTransfer.h võimaldab kohandatud paketiprotokolli abil hõlpsasti saata suuri andmemahtusid. Allpool on raamatukogu kõigi funktsioonide kirjeldus - paljusid neist kasutame selles õpetuses hiljem:
SerialTransfer.txBuff
See on baidimassiiv, kus kõik jada kaudu saadetavad kasulikud koormusandmed puhverdatakse enne edastamist. Saate selle puhvri täita baitide andmetega, et saata see teisele Arduinole.
SerialTransfer.rxBuff
See on baidimassiiv, kus kõik teisest Arduino'st saadud kasulikud andmed on puhverdatud.
SerialTransfer.bytesRead
Teise Arduino poolt vastu võetud ja SerialTransfer.rxBuffis salvestatud kandevõime baitide arv
SerialTransfer.begin (voog ja _port)
Initsialiseerib raamatukogu klassi eksemplari. Parameetrina saate edastada mis tahes "Serial" klassi objekti - isegi "SoftwareSerial" klassi objekte!
SerialTransfer.sendData (const uint16_t & messageLen)
See paneb teie Arduino saatma teisele Arduinole edastuspuhvris "messageLen" arvu baite. Näiteks kui "messageLen" on 4, saadetakse SerialTransfer.txBuffi 4 esimest baiti jada kaudu teisele Arduinole.
SerialTransfer.available ()
See paneb teie Arduino analüüsima teisest Arduino'st saadud jadaandmeid. Kui see funktsioon tagastab loogilise väärtuse "tõene", tähendab see, et uus pakett on edukalt parsitud ja äsja vastuvõetud paketi andmed salvestatakse/on saadaval kaustas SerialTransfer.rxBuff.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Täidab suvalise objekti (bait, int, float, double, struktuuri jne …) baitide arvu edastuspuhvrisse, alustades indeksist, nagu on määratletud argumendis "index".
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Loeb vastuvõtupuhvrist (rxBuff) "len" arvu baite alates indeksist, nagu on määratletud argumendis "index", suvaliseks objektiks (bait, int, float, double, struktuuri jne …).
MÄRGE:
Lihtsaim viis andmete edastamiseks on kõigepealt määratleda struktuur, mis sisaldab kõiki andmeid, mida soovite saata. Vastuvõtva otsa Arduino peaks olema määratletud identse struktuuriga.
3. samm: põhiandmete edastamine
Järgmine visand edastab nii analogRead (0) ADC väärtuse kui ka analogRead (0) väärtuse pingeks teisendatuna Arduino #2.
Laadige Arduino #1 üles järgmine visand:
#include "SerialTransfer.h"
SerialTransfer myTransfer; struktuuri STRUCT {uint16_t adcVal; ujukpinge; } andmed; void setup () {Serial.begin (115200); Seriaal1.algus (115200); myTransfer.begin (Serial1); } void loop () {data.adcVal = analogRead (0); andmed.pinge = (data.adcVal * 5,0) / 1023,0; myTransfer.txObj (andmed, suurus (andmed)); myTransfer.sendData (sizeof (andmed)); viivitus (100); }
4. samm: põhiandmete vastuvõtmine
Järgmine kood prindib Arduino #1 -lt saadud ADC ja pinge väärtused.
Laadige Arduino #2 alla järgmine kood:
#include "SerialTransfer.h"
SerialTransfer myTransfer; struktuuri STRUCT {uint16_t adcVal; ujukpinge; } andmed; void setup () {Serial.begin (115200); Seriaal1.algus (115200); myTransfer.begin (Serial1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (andmed, suurus (andmed)); Serial.print (data.adcVal); Serial.print (''); Serial.println (andmed.pinge); Serial.println (); } else if (myTransfer.status <0) {Serial.print ("ERROR:"); if (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); muidu kui (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); muidu kui (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
Samm: testimine
Kui mõlemad visandid on vastavatesse Arduinodesse üles laaditud, saate Arduino #2 jadamonitori abil kontrollida, kas saate andmeid Arduino #1 -lt!
Soovitan:
Vaarika PI 3 - lubage jadaühendus TtyAMA0 kuni BCM GPIO 14 ja GPIO 15: 9 sammuga
Raspberry PI 3 - lubage jadaühendus TtyAMA0 -ga BCM GPIO 14 ja GPIO 15 -le: hiljuti olin huvitatud UART0 lubamisest oma Raspberry Pi -s (3b), et saaksin selle ühendada otse RS -232 signaalitaseme seadmega, kasutades standardset 9 -kinnitage d-sub-pistik ilma USB-RS-232-adapterita. Osa minu huvist
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
Micro: bit MU Vision Sensor - jadaühendus ja OLED -ekraan: 10 sammu
Micro: bit MU Vision Sensor - jadaühendus ja OLED -ekraan: see on minu kolmas juhend MU nägemisanduri kohta. Siiani oleme proovinud MU -d kasutada numbrite ja kujunditega kaartide äratundmiseks, kuid keerukama projektiga MU -anduri uurimiseks sooviksime paremat väljundit. Me ei saa nii palju teavet
Tulekahjusignalisatsioon Arduino abil [paar lihtsat sammu]: 3 sammu
Arduino kasutav tulekahjusignalisatsioon [paar lihtsat sammu]: Kas soovite Arduinoga teha lihtsa ja huvitava projekti, mis võiks samal ajal olla tõesti kasulik ja potentsiaalselt elupäästev? Kui jah, siis olete jõudnud õigesse kohta õppima midagi uut ja uuenduslikku. Selles postituses läheme
Arduino ja Pythoni jadaühendus - klaviatuuri ekraan: 4 sammu
Arduino ja Pythoni jadakommunikatsioon - klahvistiku ekraan: see projekt on loodud maci kasutajatele, kuid seda saab rakendada ka Linuxi ja Windowsi jaoks, ainus samm, mis peaks olema erinev, on installimine