miercuri, 13 ianuarie 2016

Module radio NRF24L01

   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).
 Pinii de comanda permit nivele logice de 5V.
   Din multitudinea de informatii de pe net, m-am oprit la articolul Complete Guide for nRF24L01 – 2.4GHz RF Transceiver Module With Arduino scris de Rui Santos, care foloseste libraria RadioHead, despre care puteti citi mai multe la RadioHead Packet Radio library.
   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:
   Sketch-urile se gasesc in articol, dar si in exemplele din librarie.
   Am facut si eu un filmulet numit trimitere si receptie date radio cu NRF24L01 si Arduino
   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 nRF24L01 2.4GHz Radio/Wireless Transceivers How-To se prezinta diverse librarii pentru acest modul radio si cum se conecteaza:
   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:

- receptor:
   Sketch-urile pentru acest test se gasesc la https://github.com/tehniq3/NRF24L01/tree/master/joystick.
   Cateva çapturi de ecran (print screen-uri):
- joystick in repaus, pe ecranul de monitorizare seriala a emitatorului
joystick in repaus, pe ecranul de monitorizare seriala a receptorului
joystick in repaus, pe ecranul de monitorizare seriala a receptorului
- joystick in jos
 - joystick in sus
 - joystick spre stanga
 - joystick la dreapta:
 - joystick in jos, la dreapta:
 - joystick in jos, la stanga
 - joystick in sus si spre dreapta
 - joystick in sus si spre stanga
   Am facut si un filmulet numit trimitere si receptie date radio cu NRF24L01 si Arduino (2)
  Ulterior, am adaugat si ce incepuse Nouah King, adica starea butonului de pe joystick, iar sketch-urile se gasesc la https://github.com/tehniq3/NRF24L01/tree/master/joystick_switch.
  Schema emitatorului devine:
  In repaus, in ecranul de monitorizare al receptorului vedem:
iar la apasarea butonului de pe joystick:
  Am facut si un filmulet numit trimitere si receptie date radio cu NRF24L01 si Arduino (3)
  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".

Niciun comentariu:

Trimiteți un comentariu