In articolul precedent am transmis pozitia unui joystick (axele x si y), inclusiv pozitia butnonului de pe el (apasat sau liber). Datele transmise si primite se puteau vedea in ecranele de monitorizare seriala. Am zis sa termin sketch-ul din articolul RadioLink-Joystick-To-Servos de pe site-ul arduino-info.wikispaces.com in care se transmitea pozitia joystick-ului catre 2 servomotoare montate, dar nu implementase aprinderea unui led cand se apasa butonul de pe joystick. Schema de conectare a joystick-ului la placa Arduino Uno si a modulului radio NRF24L01 ramane identica cu cea prezentata anterior:
iar receptoprul are schema de conectare astfel:
Am folosit o sursa externa de 5V/1A pentru alimentarea celor 2 servomotoare, decoarece alimentarea prin USB de la calculator nu ar fi fost suficienta.
Avand o pereche de tranceiver-e NRF24L01, adica emitatoare/receptoare, care lucreaza pe frecventa de 2,4GHz, am zis sa fac si eu niste probe de transmitere date si receptie a lor.
Pinii modulului radio 24L01 vazut de sus sunt:
Alimentarea maxima este de 3,6V, dar pentru alimentarea de pe placa Arduino se foloseste ramura de +3,3V (uneori pot apare erori de transmisie si trebuie conectat un condensator electrolitic de maxim 10uF catre masa sau mai bine se foloseste o sursa externa).
In articol o placa Arduino, conectata la un modul radio NRF24L01, este pe post de client si transmitre un salut, iar alta placa Arduino, conectata la alt modul radio NRF24L01, pe post de server, primeste mesajul si ii raspunde clientului. Schema de conectare este simpla:
Am redesenat si eu cu programul Eagle PCB schema emitatorului, care este aceeasi cu a receptprului:
Daca apar erori in ecranele de monitorizare seriala a emitatorului sau a receptorului, trebuie pun un condensator de maxim 10uF si minim 6,3V intre pinul 3.3V si GND, pentru a atenua caderile de tensiune, care apar la variatii ale consumului modulului radio, cand emite. Daca nici asa nu se rezolva erori, trebuie sa folositi o sursa externa de alimentare de 3,3..3,6V/min. 0,5A pentru modulul radio.
In articolul RadioLink-Joystick-To-Servos se foloseste un joystick ale carui coordonate sunt transmise de un Arduino Uno conectat la un modul NRF24L01 catre un receptor tot cu NRF24L01 conectat la un Arduino Uno, care controleaza 2 servomotorase. Eu am "scos" partea de servomotoare, deoarece vreau sa verific cum sunt transmise datele pe ecranul de monitorizare seriala. Un joystick pentru Arduino, arata asa:
Schema interna a unui joystick de genul asta este:
si consta in 2 semireglabile (potentiometre) conectate fiecare intre +5V si masa GND) si, astfel, pe cursoare VRX si VRY se citeste o tensiune proportionala cu deplasarea axului respectiv. In repau, pe cele 2 curseoare se gaseste jumatate din valoarea tensiunii de alimentare, adica 2,5V. Cand axul este impins maxim in stanga, rezistanta fata de masa (GND) este zero, deci si tensiunea pe cursorul VRX este 0V, daca axul este deplasat maxim la dreapta, rezistenta fata de masa este maxima, deci tensiunea pe cursorul VRX este maxima (5V); la fel, se intampla si pentru impingerea la maxim a axului in fata, tensiunea pe cursorul VRY este maxima (5V), iar daca axul este tras maxim, tensiunea pe cursorul VRY este 0V. In plus, acest joystick are si un buton fara retinere, care face contact la masa, cand este apasat. Conform sketch-urilor, schemele de conectare sunt: - emitator:
Montajul emitatorului meu cu NRF24L01 conectat la o placa Arduino Uno si un joystick, pentru ultima versiune arata asa:
iar receptorul:
14.01.2016 In documentatia librariei RadioHead se explica cum putem pune canalul (0..125), puterea de emisie si viteza de transmisie a datelor. Am pus intr-un sketch ca note:
Din testele mele, apar erori cand se foloseste si libraria RHReliableDatagram.h, cum a fost cazul pentru joystick, deci ramamn momentan la "setarea din fabrica".