Programul placii Arduino ce trimite datele este tx_10variables.ino, iar programul placii receptoare este rx_10variables.ino. In ecranele de monitorizare seriala se pot obersva valorile:
Am realizat filmuletul Mesaje complexe intre placi Arduino pe comunicatie seriala (4): Ulterior, s-a cerut si primirea unui raspuns din partea placii receptoare, asa ca am modificat programele, astfel ca transmitatorul foloseste programul tx_10variables_rx_1variable.ino, iar receptorul programul rx_10variables_tx_1variable.ino.
Un blog ce completeaza site-ul www.arduinotehniq.com (www.tehnic.go.ro); o parte din articole sunt (si vor fi) postate si in engleza pe arduinotehniq.blogspot.com. Filmuletele tehnice se gasesc pe canalul de youtube...
Se afișează postările cu eticheta mesaje complexe. Afișați toate postările
Se afișează postările cu eticheta mesaje complexe. Afișați toate postările
vineri, 11 decembrie 2020
Mesaje complexe intre placi Arduino pe comunicatie seriala (4)
Avand o solicitare pentru rezolvarea transmiterii a 10 valori numerice intre 2 placi Arduino, tot pe serial, am zis sa incerc si asta. Cele 10 valori sunt 7 temperaturi pozitive ca numere intregi (pot trimite valori 0..255) si 3 pozitii de comutatoare (0 - deschis, 1 - inchis).
Schema de test este aceeasi, ca cea din articolul precedent:
joi, 6 iunie 2019
Mesaje complexe intre placi Arduino pe comunicatie seriala (3)
Am incercat sa transmit datele altfel, intr-un singur mesaj, de data asta cu numar fix de caractere, nu variabil ca in articolul precedent, dar am folosit aceeasi schema
Am folosit informatiile din articolul How to Send Data to Thingspeak Using ESP8266.
Pentru acelasi tip de mesaj, adica temperatura, stare senzor si procent, voi transmite, de datat asta, intai un caracter de control(*), la starsit altul (#), temperatura multiplicata cu 10, apoi de zece ori semnul minus plus stare senzor si apoi procentul, dar, cu numar fix de caractere, astfel:
- temperatura -23,4 grade Celsius, senzor activat si 23% apa, voi transmite: *23411023#
- temperatura -5,7 grade Celsius, senzor dezactivat si 100% apa, voi transmite *05710100#
- temperatura 2,9 grade Celsius, senzor dezactivat si 34% apa, voi transmite *02900034#
- temperatura 29,4 grade Celsius, senzor dezactivat si 34% apa, voi transmite *29400034#
Am facut 2 filmulete, care explica modul de codare/decodare:
- Mesaje complexe intre placi Arduino pe comunicatie seriala (3)
- Multiple Text Fields in Single Message using Arduino (3)
Am folosit informatiile din articolul How to Send Data to Thingspeak Using ESP8266.
Pentru acelasi tip de mesaj, adica temperatura, stare senzor si procent, voi transmite, de datat asta, intai un caracter de control(*), la starsit altul (#), temperatura multiplicata cu 10, apoi de zece ori semnul minus plus stare senzor si apoi procentul, dar, cu numar fix de caractere, astfel:
- temperatura -23,4 grade Celsius, senzor activat si 23% apa, voi transmite: *23411023#
- temperatura -5,7 grade Celsius, senzor dezactivat si 100% apa, voi transmite *05710100#
- temperatura 2,9 grade Celsius, senzor dezactivat si 34% apa, voi transmite *02900034#
- temperatura 29,4 grade Celsius, senzor dezactivat si 34% apa, voi transmite *29400034#
Am facut 2 filmulete, care explica modul de codare/decodare:
- Mesaje complexe intre placi Arduino pe comunicatie seriala (3)
sâmbătă, 1 iunie 2019
Mesaje complexe intre placi Arduino pe comunicatie seriala (2)
Pentru a vedea utilitatea celor prezentate in articolul anterior am modificat programele sa transmit intr-un singur mesaj 3 valori alese aleator: o temperatura de genul -23.50C sau +23.50C, starea unui senzor (0 sau 1) si un procent (0 la 100).
Schema de conectare este aceeasi
Deoarece nu pot transmite decat valori intregi, ma voi folosi de un artificiu, voi trimite prima valoare un numar de 10 ori mai mare ca temperatura, a doua valoare va fi de un numar format din semnul temperaturii (1 pentru minus si zero pentru plus) inmultit cu 10 si starea vibratiei (0 sau 1) si procentul.
De exemplu, daca am temperatura de +2,40C, starea senzorului activata (1) si procentul de 17%, voi transmite asa:
- primul numar va fi 24
- al doilea numar va fi 1, deoarece semnul temperaturii e plus si starea senzorului 1, deci 10*0+1=1
- al treilea numar 17.
Daca al doilea Arduino primeste: 119,11,39, vom obtine:
- temperatura este -11,90C deoarece al doilea numar este 11 = 1*10 + 1, deci semn negativ, iar primul numar e 119 = 11,9*10;
- starea senzorului e activa 1, fiind cifra unitatilor de la al doilea numar
- procentul de umplere bazin e 39%, fiind chiar la treilea numar.
Schema de conectare este aceeasi
Deoarece nu pot transmite decat valori intregi, ma voi folosi de un artificiu, voi trimite prima valoare un numar de 10 ori mai mare ca temperatura, a doua valoare va fi de un numar format din semnul temperaturii (1 pentru minus si zero pentru plus) inmultit cu 10 si starea vibratiei (0 sau 1) si procentul.
De exemplu, daca am temperatura de +2,40C, starea senzorului activata (1) si procentul de 17%, voi transmite asa:
- primul numar va fi 24
- al doilea numar va fi 1, deoarece semnul temperaturii e plus si starea senzorului 1, deci 10*0+1=1
- al treilea numar 17.
Daca al doilea Arduino primeste: 119,11,39, vom obtine:
- temperatura este -11,90C deoarece al doilea numar este 11 = 1*10 + 1, deci semn negativ, iar primul numar e 119 = 11,9*10;
- starea senzorului e activa 1, fiind cifra unitatilor de la al doilea numar
- procentul de umplere bazin e 39%, fiind chiar la treilea numar.
Testul l-am realizat, ca si data trecuta, cu trimiterea datelor de o placa Arduino Uno, care are un shield pe care este fixata o placa Arduino Nano:
Am facut si 2 filmulete:
joi, 30 mai 2019
Mesaje complexe intre placi Arduino pe comunicatie seriala
Avand nevoie sa transmit mai multe variabile (numere intregi si cu virgula) pe comunicatia seriala dintre 2 placi de dezvoltare Arduino, m-am lovit de decodarea corecta a mesajelor transmise, de exemplu vreau sa trimit o temperatura de genul +23,40C sau -23,40C, o stare (0 sau 1) si un numar (procent de la 0 la 100)... lungimea unui sir ar fi fost variabila, daca nu luam masuri de corectie (sa transmit, de exemplu 023 in loc de 23)... dupa mai teste impreuna cu 2 prieteni, utilizatori de Arduino (Alex si Mihai, pentru proiecte total diferite) am utilizat informatiile din articolul Chapter 4. Serial Communications (partea de trimitere din subcapitolul 4.4, iar partea de decodare din subcapitolul 4.5).
Am folosit comunicarea seriala prin utilizarea librariei SoftwareSerial (am folosit pinii 2 si 3). Partea de trimitere a fost incarcata pe o placa Arduino Uno si partea de receptor si decodificare pe Arduino Nano, in special pentru a nu scrie programele gresit...
Schema de conectare, pentru aceste teste, este foarte simpla:
Pentru trimitere am folosit intial programul tx_1.ino pentru a transmite un mesaj cu 3 numere: 10, 100, 1000, apoi am trimis valori alese aleator folosind programul tx_1a.ino. Pentru receptor am adaptat programul rx_1.ino.
Am facut s 2 filmulete, pentru a intelege mai usor cu am scris mai sus:
- Mesaje complexe intre placi Arduino pe comunicatie seriala
- Multiple Text Fields in Single Message using Arduino
De mentionat ca se trimit doar numere intregi, pentru a trimite numere cu virgula sau cu semn, se inmultesc numerele cu 10 sau 100, respectiv se mai foloseste un numar pentru semnul minus sau plus, etc, dar astea le voi prezenta intr-un alt articol.
Am folosit comunicarea seriala prin utilizarea librariei SoftwareSerial (am folosit pinii 2 si 3). Partea de trimitere a fost incarcata pe o placa Arduino Uno si partea de receptor si decodificare pe Arduino Nano, in special pentru a nu scrie programele gresit...
Schema de conectare, pentru aceste teste, este foarte simpla:
Pentru trimitere am folosit intial programul tx_1.ino pentru a transmite un mesaj cu 3 numere: 10, 100, 1000, apoi am trimis valori alese aleator folosind programul tx_1a.ino. Pentru receptor am adaptat programul rx_1.ino.
Am facut s 2 filmulete, pentru a intelege mai usor cu am scris mai sus:
- Mesaje complexe intre placi Arduino pe comunicatie seriala
Abonați-vă la:
Postări (Atom)
-
Pentru cazuri cand trebuie sa alimentam un montaj sau un consumator (radio portabil, beculet, etc) de la o sursa de tensiune continua fix...
-
ultima modificare: 12.04.2020 Fata de sistemele clasice pentru incubatoare care regleaza doar temperatura, la solicitarea lui Vior...
-
rezumat articol Avand o situatie in care am o masina de spalat automata veche (AEG Lavamat Regina 804), pe care am reusit s-o reconditi...

















