Seriell UART -kommunikasjon mellom to Arduino -tavler

Seriell UART -kommunikasjon mellom to Arduino -tavler

UART er et forkortelse av universell asynkron mottaker-transmitter. UART er den mest brukte serielle kommunikasjonsprotokollen der dataformat og kommunikasjonshastighet er konfigurerbar. Arduino har tre kommunikasjonsprotokoller som heter SPI, I2C og UART. UART -protokollen lar Arduino kommunisere mellom forskjellige enheter og sensorer. Nå vil vi diskutere hvordan du bruker UART -kommunikasjon mellom to Arduino -tavler.

Seriell UART -kommunikasjon

Seriell UART er den serielle kommunikasjonsprotokollen som brukes av Arduino for å kommunisere med mikrokontrollere og PC -er. Arduino har en UART -port på D0 og D1. En seriell buss med to terminaler brukes i UART -kommunikasjon, en for å sende data som er navngitt Tx ved pinne D1 og en annen for å motta data som er betegnet som Rx på pinne D0. Så alle enhetene som fungerer over UART -protokollen, må ha to serielle pinner:

  • Rx for å motta data
  • Tx for overføring av data

Mens du bruker disse to pinnene til UART, er det viktig å merke seg at UART -pinner er spesifikke for en enhet i seg selv betyr hvis du vil etablere seriell kommunikasjon ved å bruke UART mellom to Arduino -tavler, så vil RX -pinnen til First Board være koblet til TX -pinnen til andre Board på samme måte tx pin av første med Rx -pinne av andre en.

UART seriell kommunikasjon mellom to Arduino -tavler

Nå vil vi koble to Arduino -brett ved hjelp av TX- og RX -pinner for å etablere en seriell kommunikasjon mellom dem ett Arduino -brett som vil overføre data vil fungere som en Herre og det andre Arduino -styret som vil motta instruksjoner vil fungere som Slave. Vi vil sette opp våre Arduino -brett i master- og slavekonfigurasjon. Før vi går videre, trenger vi følgende utstyr for å starte UART -seriell kommunikasjon.

Utstyr kreves

  • 2x Arduino -tavler
  • 2x USB B -kabel
  • 6x jumper ledninger
  • Brødbrett
  • Motstand 220 ohm
  • Led

For å starte kommunikasjonen mellom to Arduino -tavler, vil en bli konfigurert som avsender og annet Arduino -brett som mottaker. Så vi må skrive to programmer, en for avsender og andre for mottaker. Følg de nevnte trinnene nedenfor for å etablere seriell kommunikasjon.

Eksempel 1: Å sende en streng fra en Arduino til andre gjennom UART -kommunikasjon

Vi vil definere en streng i vår mester Arduino og vil prøve å gi den til slave Arduino ved hjelp av UART seriell kommunikasjon. Følg nedenfor gitte trinn for å passere data mellom to Arduinos.

Trinn 1: Koble til Master Arduino

Å bruke en USB B -kabel kobler Arduino -brettet som fungerer som master til PCen. Husk å velge COM -porten først før du laster opp skissen. Her i vårt tilfelle er Arduino koblet til COM6 -port.


Last nå opp nedenfor kode til avsenderen Master Arduino Board.

// avsender Arduino styrekode (master)
Char MyString [15] = "Linuxhint.com "; // strengdata som skal sendes
void setup ()
Serie.Begynn (9600); // Begynn serien med 9600 baudfrekvens

void loop ()
Serie.skriv (MyString, 15); // Skriv seriedataene
forsinkelse (1000);



Over koden sender en enkel melding linuxhint.com til den andre Arduino. Først har vi definert en matrise “Linuxhint.com ”. Tallet 15 inne i parentesene viser at denne matrisen kan inneholde 15 tegn. 13 er alfabet mens 2 er satt for plass slik at vi kan se klar utgang i seriemonitoren. Innsiden oppsett () Seriell kommunikasjon er etablert ved hjelp av seriell.Begynn () og 9600 er valgt som baudfrekvens.

De Løkke() delen av skissen inneholder Serie.skrive() funksjon. Disse funksjonene vil skrive en melding til mottakerslaven Arduino -styret med 1000 millisekunder forsinkelse.

Trinn 2: Koble slave Arduino

Koble til det andre Arduino -styret som er slave i konfigurasjonen vår. Koble dette brettet til en annen PC -port enn porten som ble brukt i forrige trinn av Master Arduino -styret. Før du laster opp Arduino -koden, velg Arduino COM -port. Slave Arduino -styret er koblet til COM8.


Last nå opp nedenfor gitt kode i Slave Arduino Board.

// Mottaker Arduino styrekode
Char MyString [20]; // initialisert variabel å lagre mottak
void setup ()
Serie.Begynn (9600); // Begynn serien på 9600 baud

void loop ()
Serie.Readbytes (MyString, 15); // Les seriedataene
Serie.println (myString); // Skriv ut data på seriell skjerm
Serie.println ("mottaker");
forsinkelse (1000);



Over kode for slave Arduino er lik som mester arduino bare forskjell er her i stedet for Serie.skrive() Vi har brukt Serie.ReadBytes () som vil lese innkommende data fra Master Arduino. Etter å ha lest data vil jeg bli skrevet ut på seriemonitoren ved hjelp av Serie.println () funksjon.

Trinn 3: Koble både Arduino ved hjelp av TX- og RX -pinner

Når Arduino -koden er lastet opp i begge Arduino -tavlene, kobler nå Master og Slave Arduino Board som vist på figur nedenfor. Koble TX -pinnen til First Arduino med RX -pinne av andre Arduino på samme måte RX -pinne av First Arduino med TX PIN av Second Arduino.

Husk at mens du laster opp kode i begge disse Arduinoene, kobler ikke TX og RX -pinner ellers seriell kommunikasjon vil ikke være mulig.


Produksjon av mester Arduino

Master Arduino sender en streng konstant til slave Arduino med en forsinkelse på 1000 millisekunder.


Utgang av slave Arduino

Slave Arduino vil først skrive ut mottaker i Output Serial Terminal etter at den vil motta en matrise Linuxhint.com med en forsinkelse på 1000 millisekunder fra mester Arduino. Derfor gjøres seriell kommunikasjon mellom to Arduino -tavler.

Eksempel 2: Blink LED med to Arduino -tavler gjennom UART -kommunikasjon

Trinn 1: Last opp kode for å mestre Arduino Board

Koble Arduino -brettet som fungerer som master med PC -en ved hjelp av USB B -kabel og velg COM -porten som Arduino er tilkoblet. I vårt tilfelle er Master Arduino -styret koblet til COM7 -porten.


Last opp den gitte koden nedenfor i avsenderen Arduino -styret.

// Sender (TX) Arduino styrekode
ugyldig oppsett ()

Serie.Begynn (9600);

ugyldig sløyfe ()

Serie.trykk (1);
forsinkelse (2000);
Serie.trykk (0);
forsinkelse (2000);



I ovennevnte kode sender Arduino instruksjoner til slave Arduino i form av nummer 1 og 0. Master sender nummer 1 og venter i 2 sekunder etter at den sender nummer 0, så går igjen for en forsinkelse på 2 sekunder. Etter det begynner det å gjenta seg i en sløyfe. Her har vi brukt Serie.skrive ut() Funksjon som vil konvertere Master Arduino -instruksjoner til ASCII -tegn som betyr at Master vil overføre verdier 49 for 1 og 48 for 0.

Trinn 2: Last opp kode til Slave Arduino Board

Koble nå andre Arduino -brett som fungerer som slave med en hvilken som helst annen PC -port ved hjelp av USB B -kabel. Husk å velge Arduino Board Com Port først før du laster opp avsenderkode. Slave Arduino Board er koblet til COM8 Port of PC.


Last nå opp koden nedenfor i Second Arduino Board som fungerer som slave.

// mottaker (RX) Arduino styrekode
char serialInput = ";
byte LED = 2;
ugyldig oppsett ()

pinmode (LED, output);
Serie.Begynn (9600);

ugyldig sløyfe ()

hvis (seriell.tilgjengelig())

char serialInput = seriell.lese();
if (serialInput == '0') digitalWrite (LED, lav);
if (serialInput == '1') digitalWrite (LED, høy);
Serie.println (SerialInput);



I ovennevnte kode for slave Arduino Char serialInput initialiseres som vil motta og lagre instruksjoner fra Master Arduino.

Etter det i løkken av koden vil det bli gjort en sjekk ved å bruke IF -tilstand.

hvis (seriell.tilgjengelig())


Over kommandoen vil sjekke om det kommer noen data i bufferen eller ikke.

Hvis det er noen data som kommer, blir et enkelt tegn lest og lagret i røye variabel SerialInput.

Siden vi bare er interessert i 0 og 1 verdier. Hvis uttalelser vil gjøre arbeidet her. Hvis uttalelser vil sjekke SerialInput -verdien hvis den er 1, vil den sende høyt signal til LED koblet til pinne 2 av Slave Board. Hvis den mottok SerialInput 0, vil den sende et lavt signal til PIN -nummer 2.

Merk: Koble alltid begge Arduino -tavlene på separate COM -porter, og før du laster opp ny kode, velg Arduino Com Port First First. Det anbefales å bruke to separate Windows of IDE for begge Arduino -tavlene.

Trinn 2: Last opp kode til Slave Arduino Board

Koble Arduino -tavler under konfigurasjonen som vist på bildet. Koble TX av den første Arduino med RX av den andre Arduino. Koble til Rx til First Arduino med TX fra Second Arduino. Ikke koble til TX- og RX -pinner før du laster opp Arduino -kode, da Arduino bare har en seriell kommunikasjonsport som forbinder disse to portene med hvilken som helst annen enhet, vil blokkere seriell kommunikasjon med PC via USB -kabel.

Connect LED på digital pin nummer 2 og GND -pin av Arduino, mellom disse to pinnene forbinder en 220OHM -motstand for å opprettholde trygge strømgrenser. Koble Arduino GND sammen.


Output LED blinking

Etter å ha lastet opp kode i begge Arduino -tavlene. Master vil sende instruksjoner av og på med en forsinkelse på 2000ms. I utgangen kan vi se en LED som blinker fortløpende på 1 sekunder og 1 sek av konfigurasjon.

LED slå på


LED slå av

Konklusjon

UART seriell kommunikasjonsprotokoll brukes av flere enheter og moduler som lar Arduino integrere den i hvilken som helst krets eller prosjekt. Her har vi dekket hvordan vi kan koble to arduinos og overføre data ved hjelp av seriell kommunikasjon. Ved hjelp av UART -protokollen kan vi forbedre kommunikasjonen mellom enheter og Arduino -tavler.