Cuprins:
- Pasul 1: Componente
- Pasul 2: placa serverului
- Pasul 3: Server Coder: Copiați și lipiți
- Pasul 4: Consiliul clientului
- Pasul 5: Cod client: Copiați și lipiți
- Pasul 6: O notă despre cod:
Video: Servo Control wireless: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Acest proiect controlează rotația unui servo fără fir prin intermediul unui potențiometru (buton). Rotația este limitată la 180 de grade.
Pasul 1: Componente
Acest proiect constă din
- 2 plăci de control Arduino UNO cu cablu conector USB
- 2 nRF24L01 - module de emisie-recepție RF de 2,4 GHz (pentru ajutor cu aceste module consultați
- 2 plăci adaptoare cu soclu (jetoane pentru rucsac) pentru nRF24L01
- 1 placă de extindere prototip 328 ProtoShield compatibilă Arduino opțională
- 1 servo
- 1 potențiometru analogic
- fier de lipit și lipit
- sârmă
- clește cu nas
- folie izolatoare, am folosit bandă electrică
Pasul 2: placa serverului
Placa de server este formată dintr-un modul transceiver, placa de protecție (care se conectează direct la placa Arduino într-un singur sens) și servo. Am decis să includ placa de scut pentru a evita panoul neîndemânatic și pentru a oferi proiectului și un finisaj general mai îngrijit.
Codul și resursa web incluse în lista de componente detaliază conexiunile modulului transceiver. Am decis să lipesc conexiunile în loc să folosesc conexiuni temporare ca în proiectele anterioare. De când sunt începător, am izolat fiecare îmbinare de lipit cu bandă electrică (nu erau frumoase).
Pinii plăcii de protecție corespund direct pinilor Arduino. Înainte de a atașa placa de protecție, am conectat pământul și pinii de 5 volt la șinele plăcii cu sârmă și lipit. De asemenea, am lipit firele de 5 volt și de împământare ale componentelor pe șinele plăcii de protecție, apoi am atașat în cele din urmă Arduino la placa de protecție.
Servo-ul este atașat la pinul de 3 volt pentru alimentare și pinul digital 2 pentru comunicare.
** Notă: numai după finalizarea acestei versiuni am observat că plăcile mele Arduino nu sunt identice. Transmițătorul meu server este alimentat de șina de 5 volt de pe placa de protecție, în timp ce transmițătorul client este alimentat de pinul de 3 volt, deși am fost condus să cred că o funcție a cipului adaptor de pe transceiver este de a furniza tensiunea adecvată. Tot ce pot spune sigur este că codul furnizat se potrivește cu configurația prezentată în imagini produce efectul descris.
Pasul 3: Server Coder: Copiați și lipiți
// COD SERVER / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Neutilizat GND> GND VCC> 5V * / // cablare transceiver
#include
// servotecă
#include
// biblioteca transceiver
#define Servopin 2
// declarație pin de ieșire servo
ServoTimer2 serv;
// declarația numelui servo
RH_NRF24 nrf24;
// declarația numelui transmițătorului
int timeOUT = 0;
// variabilă pentru servo
impulsuri int = 90;
// variabilă pentru a stoca impulsurile
configurare nulă ()
{serv.attach (Servopin); // chestii servo
Serial.begin (9600); // chestii de emisie-recepție
if (! nrf24.init ())
Serial.println ("init a eșuat"); // lucruri de monitorizare serial dacă (! nrf24.setChannel (12)) // setați canalul la 125 Serial.println ("setChannel a eșuat"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF a eșuat"); // lucruri de monitorizare serial}
bucla nulă ()
{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // lucruri de monitorizare serial {Serial.print ("a primit cererea:"); impulsuri = strtol ((const char *) buf, NULL, 10); // schimbarea tipului de date
int prin = hartă (impulsuri, 750, 2250, 0, 180); // schimbarea tipului de date
Serial.println (prin); serv.write (impulsuri); // face servo mutare}}
}
Pasul 4: Consiliul clientului
Placa client este formată dintr-un modul transceiver și potențiometru. Modulul de emisie-recepție este conectat în același mod ** ca și placa serverului, cu excepția faptului că, fără placa de protecție, este conectat direct la pinii plăcii Arduino.
Potențiometrul ia 5V, este împământat și este conectat la pinul analogic 2.
** Notă: după cum sa menționat în pasul plăcii serverului, plăcile mele Arduino nu sunt identice. În acest caz, transmițătorul este conectat la pinul etichetat 3.3V, direct adiacent pinului de 5V, dar din nou, totul pare să funcționeze bine.
Pasul 5: Cod client: Copiați și lipiți
// COD CLIENT / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Neutilizat GND> GND VCC> 5V * / // cablare transceiver
#include
// biblioteca transceiver
int potpin = A2; // delararea potențiometrului
int val;
char tempChar [5];
String valString = ""; // tipul de date schimbă lucruri
RH_NRF24 nrf24; // chestii de emisie-recepție
configurare nulă ()
{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init a eșuat"); // Valorile implicite după inițiere sunt 2.402 GHz (canal 2), 2Mbps, 0dBm dacă (! Nrf24.setChannel (12)) Serial.println ("setChannel a eșuat"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF a eșuat"); } // chestii de emisie-recepție
bucla nulă () {
val = analogRead (potpin); // chestii de potențiometru
val = hartă (val, 0, 1023, 750, 2250);
valString = val; String str = (valString); str.toCharArray (tempChar, 5); // schimbarea tipului de date chestii nrf24.send (tempChar, sizeof (tempChar));
}
Pasul 6: O notă despre cod:
Codul conține câteva funcționalități limitate de depanare sub formă de feedback de la monitorul serial din interfața software Arduino. Când vizualizați monitorul serial din codul SERVER (ctrl + shift + M), ar trebui să puteți vedea starea potențiometrului sub forma unui număr între 1 și 180.
De asemenea, aici este biblioteca pentru wireless și servo:
www.airspayce.com/mikem/arduino/RadioHead/
github.com/nabontra/ServoTimer2
Recomandat:
Contor de energie wireless cu control al sarcinii: 5 pași
Contor de energie fără fir cu control al încărcării: INTRODUCERE Canal Youtube :::: https://www.youtube.com/channel/UC6ck0xanIUl14Oor … Acest proiect se bazează pe microcontrolerul Atmega16 Atmel ca principal creier pentru calcul. NRF24L01 + Modulul de comunicație fără fir este utilizat pentru wireless
Mașină robot de control wireless Arduino: 5 pași
Mașină robot de control wireless Arduino: În această postare veți afla despre cum să construiți o mașină robot de control wireless Arduino. Vom construi ambele părți ale transmițătorului și ale receptorului. Partea transmițătorului va include un nano Arduino, un modul joystick și NRF24L01 pentru a trimite firul de date
Control wireless al tăbliei patului MQTT: 5 pași (cu imagini)
Control wireless al tăbliei patului MQTT: Acum câțiva ani am achiziționat un pat nou din spumă de memorie și, la fel ca în majoritatea paturilor, a trebuit să achiziționați și una dintre „bazele aprobate” ale acestora pentru a mentine o garantie. Deci, am optat pentru cea mai puțin costisitoare bază, care includea și t
Punct de acces wireless cu autonomie de 50 de metri, cu adaptor wireless TP Link WN7200ND USB pe întindere Raspbian: 6 pași
Punct de acces wireless cu gamă de 50 de metri, cu adaptor wireless USB TP Link WN7200ND pe Raspbian Stretch: Raspberry Pi este excelent pentru a crea puncte de acces wireless securizate, dar nu are o gamă bună, am folosit un adaptor wireless TP Link WN7200ND pentru a-l extinde. Vreau să împărtășesc cum să o fac De ce vreau să folosesc un pi zmeură în loc de un router? T
Convertiți routerul wireless în Wireless Extender 2x Access Point: 5 pași
Conversia routerului wireless în Wireless Extender 2x Access Point: Aveam o conexiune de internet wireless slabă în casa mea din cauza unui RSJ (fascicul metalic de sprijin în tavan) și am vrut să sporesc semnalul sau să adaug un extender suplimentar pentru restul casei. Văzusem extensori de aproximativ 50 de lire sterline într-un electro