Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:41
Monet Arduino -projektit tukeutuvat tiedonsiirtoon useiden Arduinojen välillä.
Olitpa harrastaja, joka rakentaa RC -auton, RC -lentokoneen tai suunnittelet sääaseman etänäytöllä, sinun on tiedettävä, miten sarjatiedot voidaan siirtää luotettavasti Arduinosta toiseen. Valitettavasti harrastajien on vaikea saada sarjatiedonsiirtoa toimimaan omissa projekteissaan, koska sarjatiedot lähetetään tavuvirrana.
Ilman minkäänlaista kontekstia tavuvirrassa on lähes mahdotonta tulkita tietoja. Jos et pysty tulkitsemaan tietoja, Arduinos ei pysty kommunikoimaan luotettavasti. Avain on lisätä tämä kontekstidata tavuvirtaan käyttämällä tavallista sarjapakettimallia.
Sarjapakettien suunnittelu, pakettien täyttäminen ja pakettien jäsentäminen on monimutkaista ja vaikeaa saavuttaa. Onneksi Arduinon käyttäjille on saatavilla kirjastoja, jotka voivat tehdä kaiken tämän monimutkaisen logiikan kulissien takana, joten voit keskittyä projektisi saamiseen ilman ylimääräistä päänsärkyä. Tämä ohje sisältää SerialTransfer.h -kirjaston sarjapakettien käsittelyyn.
Lyhyesti sanottuna: tämä Instructable käsittelee, miten voit ottaa vankat sarjatiedot helposti käyttöön missä tahansa projektissa käyttämällä SerialTransfer.h -kirjastoa. Jos haluat oppia lisää matalan tason teoriasta vankasta sarjaliikenteestä, katso tämä opetusohjelma.
Tarvikkeet
- 2 Arduinoa
On erittäin suositeltavaa käyttää Arduinoja, joissa on useita laitteiston UART -laitteita (eli Arduino Mega)
- Liitäntäjohto
-
Asenna SerialTransfer.h
Saatavana Arduino IDE: n kirjastopäällikön kautta
Vaihe 1: Fyysiset liitännät
Sarjaliikennettä käytettäessä on pidettävä mielessä muutama kytkentäkohta:
- Varmista, että kaikki maadoitukset on kytketty!
- Arduino TX (lähetys) -nasta on yhdistettävä toiseen Arduinon RX (vastaanotto) -nastaan
Vaihe 2: Kirjaston käyttäminen
SerialTransfer.h: n avulla voit helposti lähettää suuria tietomääriä mukautetun pakettiprotokollan avulla. Alla on kuvaus kaikista kirjaston ominaisuuksista - joista monia käytämme myöhemmin tässä opetusohjelmassa:
SerialTransfer.txBuff
Tämä on tavutaulukko, jossa kaikki sarjaliikenteen kautta lähetettävät hyötykuormatiedot puskuroidaan ennen lähetystä. Voit täyttää tämän puskurin tavuilla dataa lähettääksesi toiselle Arduinolle.
SerialTransfer.rxBuff
Tämä on tavumatriisi, jossa kaikki toiselta Arduinolta vastaanotetut hyötykuormatiedot puskuroidaan.
SerialTransfer.bytesLue
Toisen Arduinon vastaanottaman ja SerialTransfer.rxBuffiin tallennetun hyötykuorman tavujen määrä
SerialTransfer.begin (Stream & _port)
Alustaa kirjaston luokan ilmentymän. Voit välittää parametrina minkä tahansa "Serial" -luokan objektin - jopa "SoftwareSerial" -luokan objektit!
SerialTransfer.sendData (const uint16_t & messageLen)
Tämä saa Arduinosi lähettämään "messageLen" -määrän tavuja lähetyspuskurissa toiselle Arduinolle. Jos esimerkiksi "messageLen" on 4, SerialTransfer.txBuffin neljä ensimmäistä tavua lähetetään sarjaportin kautta toiselle Arduinolle.
SerialTransfer.available ()
Tämä saa Arduinosi jäsentämään kaikki toiselta Arduinolta vastaanotetut sarjatiedot. Jos tämä funktio palauttaa boolean -arvon "true", se tarkoittaa, että uusi paketti on jäsennetty onnistuneesti ja juuri vastaanotetun paketin tiedot tallennetaan/käytettävissä SerialTransfer.rxBuff -tiedostossa.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Täyttää "len" -määrän mielivaltaisen objektin tavuja (tavu, int, float, double, struktuuri jne.) Lähetyspuskuriin alkaen indeksistä argumentin "index" määrittämällä tavalla.
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
Lukee "len" tavut vastaanottopuskurista (rxBuff) alkaen indeksistä, kuten argumentti "index" määrittää, mielivaltaiseksi objektiksi (tavu, int, float, double, struktuuri jne.).
HUOMAUTUS:
Helpoin tapa lähettää tietoja on ensin määrittää rakenne, joka sisältää kaikki lähetettävät tiedot. Vastaanottopään Arduinolla tulisi olla sama rakenne.
Vaihe 3: Lähetä perustiedot
Seuraava luonnos lähettää sekä ADR -arvon analogRead (0) että analogRead (0) jännitteeksi muunnetun arvon Arduino #2: ksi.
Lähetä seuraava luonnos Arduinolle #1:
#include "SerialTransfer.h"
SerialTransfer myTransfer; rakenne STRUCT {uint16_t adcVal; kelluva jännite; } dataa; void setup () {Serial.begin (115200); Sarja1.alku (115200); myTransfer.begin (Sarja1); } void loop () {data.adcVal = analoginenLue (0); data.jännite = (data.adcVal * 5.0) / 1023,0; myTransfer.txObj (data, sizeof (data)); myTransfer.sendData (sizeof (data)); viive (100); }
Vaihe 4: Vastaanota perustiedot
Seuraava koodi tulostaa Arduinolta 1 vastaanotetut ADC- ja jännitearvot.
Lataa seuraava koodi Arduinolle #2:
#include "SerialTransfer.h"
SerialTransfer myTransfer; rakenne STRUCT {uint16_t adcVal; kelluva jännite; } dataa; void setup () {Serial.begin (115200); Sarja1.alku (115200); myTransfer.begin (Sarja1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (data, sizeof (data)); Serial.print (data.adcVal); Serial.print (''); Sarjajulkaisu (datajännite); Sarja.println (); } else if (myTransfer.status <0) {Serial.print ("ERROR:"); jos (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")); }}
Vaihe 5: Testaus
Kun molemmat luonnokset on ladattu vastaaviin Arduinos -peleihisi, voit käyttää Arduino #2: n sarjamonitoria varmistaaksesi, että vastaanotat tietoja Arduinolta #1!
Suositeltava:
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen
Halvin Arduino -- Pienin Arduino -- Arduino Pro Mini -- Ohjelmointi -- Arduino Neno: 6 vaihetta (kuvilla)
Halvin Arduino || Pienin Arduino || Arduino Pro Mini || Ohjelmointi || Arduino Neno: …………………………. Tilaa YouTube -kanavani saadaksesi lisää videoita ……. Tässä projektissa keskitytään kaikkien aikojen pienimpään ja halvinan arduinoon. Pienin ja halvin arduino on arduino pro mini. Se muistuttaa arduinoa