Sisukord:

Arduino jadaühendus: 5 sammu
Arduino jadaühendus: 5 sammu

Video: Arduino jadaühendus: 5 sammu

Video: Arduino jadaühendus: 5 sammu
Video: series connection piezoelectric sensors shoe pad 2024, November
Anonim
Arduino jadaühendus
Arduino jadaühendus

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

Füüsilised ühendused
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

Raamatukogu kasutamine
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: