Cuprins:

Radio bidirecțional NRF24 pentru telemetrie: 9 pași (cu imagini)
Radio bidirecțional NRF24 pentru telemetrie: 9 pași (cu imagini)

Video: Radio bidirecțional NRF24 pentru telemetrie: 9 pași (cu imagini)

Video: Radio bidirecțional NRF24 pentru telemetrie: 9 pași (cu imagini)
Video: NRF24L01 Getting Started Guide 2024, Noiembrie
Anonim
Radio bidirecțional NRF24 pentru telemetrie
Radio bidirecțional NRF24 pentru telemetrie

Bună băieți, mă numesc Pedro Castelani și vă aduc primul meu instructable: construirea unui radio cu două sensuri cu arduino pentru, ei bine, pentru orice aveți nevoie.

În acest proiect, vom realiza două circuite separate care vor acționa atât ca receptor, cât și ca emițător. Cele mai importante componente sunt două plăci arduino (toate funcționează) și două module nrf24 transciever. În cazul meu, controlez un servo cu un potențiometru de la celălalt arduino și trimit tensiunile unei baterii lipo cu două celule înapoi la prima.

Intenționez să-l folosesc ca un supliment pentru drona mea, care nu are telemetrie și nici control servo-cardanic. Cu toate acestea, îl puteți folosi pentru alte lucruri, cum ar fi construirea propriului quadcopter, avion, mașină rc etc. Din codul furnizat puteți face, de asemenea, orice modificări dorite în funcție de nevoile dvs. Voi încerca, de asemenea, să explic cum să îl modific corect (ceea ce mi-a luat ceva timp să învăț singur, deoarece eram obișnuit cu un alt tip de utilizare pentru cipul nrf24).

Pasul 1: Materiale

Materiale
Materiale
Materiale
Materiale
Materiale
Materiale

Pentru a începe proiectul nostru, trebuie să cunoaștem toate părțile necesare. Mai jos este o listă cu cele de bază necesare. Cele mai multe le-am cumpărat de la un magazin local de electronice în care locuiesc, așa că nu voi putea să vă recomand niciun loc de cumpărare. Ai putea încerca Amazon sau orice alt loc. Nu spun că ar trebui să le comandați acolo, ci este doar o sugestie.

  1. Două plăci Arduino (oricine ar trebui să funcționeze. Am două arduino pro mini, care îmi plac mult pentru că au 13 pini digitali și 8 analogici, în timp ce Uno are doar 6 analogice).
  2. Două module Nrf24. Există unele cu antene externe care au o rază de transmisie mai mare. Alege-le pe cele care îți plac cel mai mult.
  3. Cabluri jumper feminin-feminin și feminin-masculin.
  4. Placă de prototipare.
  5. Programator Arduino (pentru arduino pro mini, dacă aveți unul cu conexiune USB nu veți avea nevoie de el).
  6. Arduino IDE (Software). Descărcați de aici.
  7. În cazul meu, am folosit și:
  • Servo. Oricine poți obține. Îmi place SG90, unul mic conceput pentru arduino.
  • Potențiometru (între 10k și 20k ohmi). Poate fi cumpărat de la un magazin local de electronice sau puteți folosi joystick-ul pentru arduino. Există câteva imagini cu cele pe care le am. De asemenea, am primit unul de la un controler rc de dronă rupt, doar pentru a vă oferi câteva idei
  • 4 rezistențe normale egale. Am folosit 10k pe care le-am primit de la casa bunicului meu. Le folosesc ca divizoare de tensiune.
  • Panou mic de tablă de cupru (pe care l-am primit și de la bunicul meu) pentru lipirea rezistențelor împreună.
  • Pinii. Folosit pentru a conecta cu ușurință cablurile jumper de la arduino la rezistențe.
  • 2s baterie lipo. Îl folosesc pentru a alimenta unul dintre arduino-urile mele. Rezistențele sunt conectate la acesta și îi citesc tensiunile. Am intenția ca arduino-ul meu să fie conectat la bateria 2s a dronei mele, deoarece nu va avea nevoie de o sursă de alimentare externă și, în același timp, spune-mi câtă baterie rămâne.
  • Fier de lipit și lipit. Este necesar să lipiți rezistențele, panoul de perfecționare și știfturile împreună.

Pasul 2: Funcție și cod

Funcție și cod
Funcție și cod

Odată ce toate materialele au fost menționate, să începem să vorbim despre funcția modulelor.

Cum funcționează: Să numim un arduino „A” și celălalt „B”. În cazul meu, după programarea ambelor, le-am conectat la cipul lor radio corespunzător și am adăugat potențiometrul la arduino A și rezistențele și servo la arduino B. Modulul A trimite valori la B și mută Servo-ul. B citește tensiunile bateriei 2s și le trimite înapoi la A. Apoi întregul cerc începe din nou. Deoarece A primește valori care nu sunt exprimate mecanic, este conectat la programator, prin care le putem citi cu un monitor serial (inclus în IDE-ul Arduino)

Cod: numesc schița pentru arduino A (conectată cu programatorul și potențiometrul) TwoWayRadio_1 și schița pentru arduino B TwoWayRadio_2WithServo

TwoWayRadio_1 și TwoWayRadio_2WithServo pot fi găsite chiar sub acest paragraf. Există o explicație în interiorul fiecărui cod doar pentru a face totul mai ușor de înțeles.

Pasul 3: Module de lipit: divizor de tensiune și potențiometru

Module de lipit: divizor de tensiune și potențiometru
Module de lipit: divizor de tensiune și potențiometru
Module de lipit: divizor de tensiune și potențiometru
Module de lipit: divizor de tensiune și potențiometru
Module de lipit: divizor de tensiune și potențiometru
Module de lipit: divizor de tensiune și potențiometru
Module de lipit: divizor de tensiune și potențiometru
Module de lipit: divizor de tensiune și potențiometru

Acest pas este opțional, deoarece este posibil să doriți doar să utilizați potentiometrul-joystick conceput special pentru arduino și să utilizați un alt modul în locul divizorului de tensiune. Cu toate acestea, am planificat totul (coduri incluse) pentru aceste module.

Potențiometru:

Această parte este aproape cea mai ușoară din etapa de lipire. Va trebui doar să lipiți niște cabluri jumper la potențiometru. Dacă doriți, puteți lipi mai întâi potențiometrul pe placa de perfecționare și apoi lipiți unii dintre ace. Când trebuie să-l utilizați, conectați doar cablurile jumper la arduino și apoi la pinii de pe placa de bord. Când nu îl utilizați, puteți scoate cablurile și le puteți folosi pentru un alt proiect. Dacă totuși faci ceea ce am făcut, poți lăsa potențiometrul lipit direct pe cabluri

  • Dacă faceți așa cum am făcut-o, luați trei cabluri jumper-mamă, tăiați unul dintre vârfuri și îndepărtați izolația acolo, lăsând o bucată mică de cabluri de cupru pe fiecare fir.
  • Încălziți fierul de lipit și lipiți jumperii modificați la pinii potențiometrelor. Dacă puteți, încercați să obțineți culori diferite, astfel încât să puteți aminti care dintre ele este vcc, gnd și cea „semnal” (cea din mijloc). Conectați aceste cabluri la pinii analogici corespunzători de pe arduino. Există câteva imagini la începutul pasului despre cum s-a încheiat. Potențiometrul nu este unul obișnuit, este de fapt o roată mică care avea cinci pini. Mi-a luat ceva timp să aflu care era. Încercați să o faceți mai ușor și utilizați un potențiometru obișnuit așa cum se arată în pasul MATERIALE.
  • Dacă îl lipiți pe un panou de perfecționare, obțineți potențiometrul și panoul de perfecționare și lipiți-le împreună cu fierul de lipit.
  • Obțineți știfturile (trei) și așezați-le în modul cel mai convenabil. Folosiți lipire pentru a face o conexiune între fiecare pin și pinii potențiometrului. Nu faceți o conexiune între mai mult de doi pini sau nu va funcționa (va acționa ca un scurtcircuit).
  • Obțineți niște fire jumper feminin-feminin sau feminin-masculin și conectați-le de la arduino la noul dvs. modul de potențiometru (amintiți-vă care este).

2. Divizor de tensiune:

  • Această parte este puțin mai complicată. Va trebui să obțineți cele patru rezistențe, cinci pini și placa de perfecționare. Am proiectat codul pentru a fi folosit pentru o baterie 2s (două celule), dar l-ați putea folosi și pentru 1s schimbând puțin schița arduino și hardware-ul. Am inclus imagini cu două divizoare de tensiune pe care le-am făcut, unul cu doar 2 rezistențe (pentru baterii 1s) și unul cu patru (ați ghicit: baterii 2s).
  • Să începem cu cea din 2s. Nu am imagini cu procesul de construcție, de când am început să mă interesez foarte bine după ce am terminat de lipit. Includ imagini cu rezultatul final, așa că voi încerca să fiu cât mai clar posibil.
  • Începeți prin a obține perfboardul și 5 pini. Lipiți-le aproape de lateral și nu le lăsați să se atingă.
  • Lipiți rezistențele așa cum se arată în ultima imagine la începutul pasului (schema mică a circuitului). Conexiunile dintre fiecare rezistor și pin sunt realizate cu lipire. Încercați să ocupați cel mai mic spațiu posibil.
  • Când ați terminat, ar trebui să arate ceva asemănător cu imaginile divizorului de tensiune terminat pe care le-am postat mai sus.
  • Divizorul de tensiune 1s este practic același, cu excepția faptului că utilizați doar trei pini și două rezistențe. Am inclus imagini despre cum arată atunci când ați terminat. Uitați-vă doar la diagrama pentru cea 2s și imaginați-o fără firul de semnal 1, firul din mijloc și rezistențele r2 și r3 și acolo, îl aveți!
  • Deci, dacă doriți un divizor de tensiune 1s, s-ar putea să fie puțin mai complicat decât să folosiți unul 2s.

Pasul 4: Programarea Arduino

Programarea Arduino
Programarea Arduino
  1. Aproape am terminat!
  2. După ce ați descărcat software-ul Arduino IDE de pe site-ul legat în pasul MATERIALE, descărcați schițele din pasul FUNCȚIE ȘI COD.
  3. Apoi, deschideți-le în ID-ul Arduino.
  4. Deschideți „Instrumente” în oricare dintre ambele file și faceți clic pe „Panouri”. Alege-ți tabloul din listă. Faceți clic pe „Procesor” și apoi „Programator”, selectând fiecare în funcție de placa dvs. Apoi reveniți la schiță. Este destul de convenabil să căutați informațiile de pe placa dvs. pe Internet. Doar căutați numele și vedeți specificațiile.
  5. Faceți clic pe „schiță” (sus), apoi pe „includeți biblioteca”, apoi pe „gestionați bibliotecile”. O fereastră mică ar trebui să se deschidă în centrul ecranului. Introduceți în opțiunea de căutare „rf24”. Descărcați biblioteca dorită. Va fi necesar să puteți încărca codul pe placa arduino.
  6. Doar pentru a vă asigura, faceți clic pe simbolul „Bifați” (în stânga sus) pentru a verifica dacă nu are greșeli. Apoi continuați să îl încărcați apăsând săgeata îndreptată spre dreapta, lângă simbolul „Bifați”.
  7. Dacă placa dvs. este un Pro Mini, vă voi explica într-un timp cum să conectați totul. În caz contrar, încărcați-l și, după ce ați terminat programarea ambelor arduino-uri, treceți la pasul următor, după ce ați citit avertismentul de mai jos.
  8. Deoarece aveți două plăci, REȚINEȚI-VĂ cu ce cod a fost programat fiecare, pentru a evita orice probleme viitoare.
  9. Deci, dacă aveți un Pro Mini, veți avea nevoie de un programator. Există două tipuri de programatori: 5 pini și 6 pini. Mă voi concentra pe cele cu 5 pini, deoarece acestea sunt cele pe care le am. Conexiunile sunt după cum urmează (primul pin este de la programator, apoi arduino): Gnd - Gnd; 5v-Vcc (cu excepția cazului în care Pro Mini este un 3.3v, caz în care este 3.3v - Vcc); Rxd - Txo; Txd - Rxi. Am inclus o imagine atât a plăcii, cât și a programatorului, în caz că trebuie să verificați.
  10. Conectați-vă arduino la programator și programatorul la computer. Deschideți IDE și faceți clic pe butonul de încărcare. Dacă vă uitați la partea din stânga jos a ecranului, veți vedea un mesaj care spune „compilare”. În momentul în care acest mesaj se transformă în „încărcare”, apăsați butonul de resetare de pe arduino Pro Mini. După un timp, schița se va termina și va apărea un mesaj care va spune „Încărcare finalizată”. Odată ce se întâmplă acest lucru, ați terminat și sunteți gata să treceți la pasul următor.

Pasul 5: Conectarea totul

Conectând totul
Conectând totul
Conectând totul
Conectând totul
Conectând totul
Conectând totul
Conectând totul
Conectând totul
  1. După ce am programat ambele arduino-uri, trebuie să conectăm totul pentru a funcționa. Aici vom avea nevoie de tot ceea ce am menționat anterior: arduino-uri, module nrf24, cabluri, servo, programator, divizor de tensiune, potențiometru etc.
  2. Mai întâi vom conecta arduino-ul care funcționează cu programatorul. La începutul pasului sunt imaginile conexiunilor nrf24. Pinul irq, despre care se spune că merge la pinul 8 de pe arduino, nu este deloc conectat. Restul este la fel ca în imagine pentru ambele arduino (puteți citi notele din imagini pentru mai multe informații)
  3. Vcc-ul pentru radio poate fi conectat la 3,3 sau 5v. Uneori funcționează doar cu unul dintre ei. Încercați cu 3.3 și apoi cu 5 dacă nu va funcționa. Pentru 3.3, utilizați pinul 3.3v al programatorului. A trebuit să fac asta, așa cum veți vedea în imaginile produsului finit.
  4. Conectați programatorul la arduino așa cum s-a spus în pasul anterior.
  5. Conectați cablul „semnal” al potențiometrului la pinul analogic A0.
  6. Conectați potențiometrul "Pozitiv" la Vcc (doar 5v, nu 3.3) și "Negativ" la Gnd.
  7. Treceți la celălalt arduino.
  8. Conectați radioul așa cum s-a mai spus, conform imaginilor.
  9. Conectați cablul de semnal al servo-ului (portocaliu-galben-alb. Verificați specificațiile pentru servo) la pinul digital 2 și gnd-ul său la Gnd-ul arduino-ului și pozitiv la Vcc-ul arduino-ului.
  10. Conectați cablul de semnal 1 de la divizorul de tensiune la pinul A0 și firul de semnal 2 la pinul A1.
  11. Conectați, utilizând protoboardul, cablul negativ al divizorului de tensiune, gnd-ul arduino și gnd-ul bateriei (cablu negru de pe mufa jst).
  12. Conectați „cablul de mijloc” de la divizorul de tensiune la cel din mijloc al bateriei, între cablurile roșii și negre ale mufei jst (culoare albă).
  13. Conectați cablul „pozitiv” de la divizorul de tensiune la terminalul pozitiv al bateriei și la Raw-ul arduino. Nu vă conectați direct la Vcc, deoarece acest pin este specific pentru 5v. Pinul Raw utilizează orice tensiune de peste 3,3 sau 5v la 12v și îl reglează Pinii Vcc devin apoi ieșiri cu 5v.

Aproape ai terminat! Produsele dvs. finite ar trebui să arate ca imaginile de mai sus. Verificați din nou fiecare conexiune pentru a evita scurtcircuitele.

Pasul 6: Porniți proiectul

  • Arduino-ul dvs. cu servo a alimentat ultimul pas când ați conectat bateria la întregul circuit. Deci, trebuie doar să vă conectați celălalt arduino la un port USB și ați terminat!
  • Mutați potențiometrul și ar trebui să vedeți cum se mișcă și servo. În cazul meu, servo-ul este atașat la un cardan cu 1 axă, care a limitat unghiul, așa că a trebuit să reglez parametrii. Veți găsi asta în cod, oricum.
  • Pentru a vedea tensiunile, după ce ați conectat programatorul la computer, deschideți software-ul arduino și apăsați „Ctrl + Shift + m”. Se va deschide o fereastră pe care scrie „Serial Monitor”. În partea de jos a acestei ferestre este o opțiune care citește "(număr) baud". Faceți clic pe acesta și selectați „9600”. Închideți monitorul și deschideți-l din nou apăsând aceleași taste și ar trebui să începeți să vedeți o mulțime de valori care intră. Nu veți putea vedea care sunt aceste valori datorită vitezei cu care vin, dar dacă deconectați programator se vor opri și le puteți citi. Încerc să obțin ceva cu care să le graficez automat pentru a vizualiza tensiunile sau a le reprezenta cu leduri, dar asta este încă în proces.
  • Chiar dacă este posibil să nu vedeți valorile clar, deoarece acestea trec atât de repede, știți doar că funcționează în cele din urmă și că le puteți modifica pentru a se potrivi nevoilor dvs.!

Pasul 7: Demo

Ei bine, acesta este videoclipul cu care îl alimentez și îl folosesc puțin pentru a vă arăta cum ar trebui să funcționeze.

Pasul 8: Mai multe idei despre modul de utilizare a acestui proiect

Mai multe idei despre modul de utilizare a acestui proiect
Mai multe idei despre modul de utilizare a acestui proiect
Mai multe idei despre modul de utilizare a acestui proiect
Mai multe idei despre modul de utilizare a acestui proiect
Mai multe idei despre modul de utilizare a acestui proiect
Mai multe idei despre modul de utilizare a acestui proiect

Iată câteva idei pe care le puteți construi folosind aceasta ca bază. Spuneți-mi dacă faceți una dintre ele sau dacă încercați și nu puteți, așa că vă pot ajuta!

  • În loc să citiți tensiunile, modificați codul astfel încât să trimită înapoi temperatura, presiunea, înălțimea etc. Am găsit cipul BMP180 destul de util pentru aceasta.
  • Măsurați distanțele cu modulul HC-SR04 și trimiteți-le înapoi la primul arduino. Utilizați servo pentru a orienta senzorul oriunde doriți.
  • Adăugați un alt canal servo pentru a muta o cameră în sus și lateral; de exemplu, pe o mașină RC.
  • Adăugați alte trei canale servo (sau mai multe!) Și creați-vă propriul transmițător și receptor RC pentru un quadcopter, avion, elicopter, mașină RC etc.
  • Schimbați servo-ul pentru un reflector și adăugați-l la drona dvs.! De asemenea, veți putea controla intensitatea luminii (ar putea avea nevoie de niște tranzistoare și unele schimbări de cod)
  • În loc să citiți tensiunile pe computer, faceți creativitate și adăugați un modul LCD, sau puteți crea o placă cu 6 leduri (două verzi, două galbene și două roșii) care le va opri unul câte unul pe măsură ce bateria scade și va începe să clipească când nivelul bateriei scade sub tensiunea aleasă. Am făcut această tablă mică și am postat o imagine la începutul pasului.

Doar pentru a clarifica totul, dacă aveți de gând să faceți unul dintre aceste proiecte, aveți în vedere că va trebui să modificați ambele coduri și poate unele conexiuni. Vă rugăm să încercați să vă amintiți să nu vă prăjiți placa făcând ceva prost.

Dacă mai aveți idei sau aveți nevoie de ajutor pentru realizarea unuia dintre aceste proiecte, vă rugăm să postați în secțiunea de întrebări!

Pasul 9: Depanare

Depanare
Depanare

Ca să spun adevărul, majoritatea problemelor pe care le-am întâlnit până acum au fost legate de partea schiței, pe care deja ați rezolvat-o. Voi încerca să vă spun cât mai multe probleme pentru a vă ajuta cel mai mult.

Mai întâi, dacă încercați să încărcați schița și nu puteți, încercați acest lucru:

Asigurați-vă că ați descărcat bibliotecile necesare (și cele corecte!).

Asigurați-vă că ați ales placa, procesorul și programatorul corecte.

Asigurați-vă că conexiunea dintre computer și programator și programator și arduino este bună.

Dacă utilizați un pro mini, încercați să apăsați butonul de resetare cât mai curând posibil după ce apare mesajul „încărcare”.

Despre toate aceste lucruri se vorbește în etapa PROGRAMAREA TĂU ARDUINO.

În al doilea rând, verificați toate conexiunile dintre toate:

Dacă arduino-ul dvs. nu pornește, este în mod clar o problemă de tensiune. Verificați dacă cablurile nu sunt conectate corect și dacă există un scurtcircuit.

Dacă se pornește, dar nu funcționează, asigurați-vă că toate conexiunile sunt acolo unde ar trebui să fie, că arduino programat pentru a fi conectat la servo și divizor de tensiune este într-adevăr conectat la ele (cu alte cuvinte, asigurați-vă că nu ați amestecat în sus), încercați să apăsați butonul de resetare pe ambele și să vedeți ce se întâmplă. În cazuri extrem de rare, toată vina poate fi asupra modulului NRF24. Am găsit unul de-al meu care funcționează doar pe 5 volți și altul care funcționează doar pe 3.3v. Verificați dacă acest lucru rezolvă ceva. Mi s-a întâmplat, de asemenea, că doar un arduino funcționa cu radioul de 3.3v, iar celălalt funcționa doar cu cel de 5v. Surprinzător, nu-i așa?

În al treilea rând, dacă puteți muta servo, dar tensiunile sunt greșite, verificați dacă conexiunile la divizorul de tensiune sunt ca în diagrama de la pasul 3 și conexiunea la arduino. Dacă, pe de altă parte, obțineți tensiunile, dar nu puteți deplasa servo corect, verificați potențiometrul și conexiunile acestuia, conexiunea servo la pinul digital și la Vcc și Gnd și dacă servo este blocat, rupt sau în un scurtcircuit. Încercați să-l schimbați cu un alt servo. Asigurați-vă că pinul digital este același cu cel specificat în cod

Ei bine, acestea sunt aproape toate lucrurile care mi-ar putea veni în minte cu privire la problemele pe care le-ați putea întâlni. Sper să nu se întâmple niciodată și Happy Projects!

Vă mulțumesc că ați citit instructabilul meu! Vă rugăm să îl împărtășiți și să îl votați pentru Concursul AUTOR PRIMĂ!

Recomandat: