Kazalo:

Brezžični servo nadzor: 6 korakov
Brezžični servo nadzor: 6 korakov

Video: Brezžični servo nadzor: 6 korakov

Video: Brezžični servo nadzor: 6 korakov
Video: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, November
Anonim
Brezžični servo nadzor
Brezžični servo nadzor
Brezžični servo nadzor
Brezžični servo nadzor

Ta projekt brezžično nadzoruje vrtenje servomotorja s potenciometrom (gumb). Vrtenje je omejeno na 180 stopinj.

1. korak: Komponente

Sestavni deli
Sestavni deli
Sestavni deli
Sestavni deli
Sestavni deli
Sestavni deli

Ta projekt je sestavljen iz

  • 2 krmilne plošče Arduino UNO s priključnim kablom USB
  • 2 modula RF oddajnika nRF24L01-2,4 GHz (za pomoč pri teh modulih glejte
  • 2 vtični vmesniški plošči (čipi nahrbtnika) za nRF24L01
  • 1 dodatna razširitvena plošča prototipa 328 ProtoShield, združljiva z Arduinom
  • 1 servo
  • 1 analogni potenciometer
  • spajkalnik in spajkanje
  • žica
  • klešče z igelnim nosom
  • izolacijski ovoj, uporabil sem električni trak

2. korak: strežniška plošča

Strežniška plošča
Strežniška plošča

Strežniška plošča je sestavljena iz oddajniškega modula, ščitne plošče (ki se samo na en način poveže neposredno s ploščo Arduino) in servo. Odločil sem se, da bom vključil ščitno ploščo, da se izognem nerodni ploščici in dam projektu in na splošno lepši zaključek.

Koda in spletni vir, vključeni v seznam komponent, podrobno opisujejo povezave oddajniškega modula. Odločil sem se spajkati povezave, namesto da uporabljam začasne povezave, kot v prejšnjih projektih. Ker sem začetnik, sem vsak spajkalni spoj izoliral z električnim trakom (niso bili lepi).

Zatiči plošče ščita ustrezajo zatičem Arduino. Preden sem pritrdil ščitno ploščo, sem ozemljitev in 5 -voltne zatiče z žico in spajkom povezal na tirnice. Prav tako sem spajal 5 -voltne in ozemljene žice komponent na tirnice ščitne plošče, nato pa Arduino na koncu pritrdil na ščitno ploščo.

Servo je pritrjen na 3 -voltni zatič za napajanje in digitalni zatič 2 za komunikacijo.

** Opomba: šele po zaključku te gradnje sem opazil, da moje Arduino plošče niso enake. Moj strežniški oddajnik napaja 5 -voltna tirnica na ščitni plošči, odjemalski oddajnik pa 3 -voltni pin, čeprav sem prepričan, da je funkcija vmesniškega čipa na oddajniku zagotoviti ustrezno napetost. Vse kar lahko zagotovo trdim je, da podana koda, ki se ujema s konfiguracijo, prikazano na slikah, proizvede opisani učinek.

3. korak: kodirnik strežnika: Kopirajte in prilepite

// Koda strežnika/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Ne uporablja se GND> GND VCC> 5V */// ožičenje oddajnika

#vključi

// servo knjižnica

#vključi

// knjižnica oddajnikov

#define Servopin 2

// izjava servo izhodnega zatiča

ServoTimer2 serv;

// deklaracija imena servomotorja

RH_NRF24 nrf24;

// deklaracija imena oddajnika

int timeOUT = 0;

// spremenljivka za servo

int impulzi = 90;

// spremenljivka za shranjevanje impulzov

void setup ()

{serv.attach (Servopin); // servo stvari

Serial.begin (9600); // stvari oddajnika

if (! nrf24.init ())

Serial.println ("init failed"); // stvari serijskega monitorja if (! nrf24.setChannel (12)) // nastavite kanal na 125 Serial.println ("setChannel failed"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ni uspelo"); // serijski monitor}

void loop ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // stvari serijskega monitorja {Serial.print ("got request:"); impulzi = strtol ((const char*) buf, NULL, 10); // stvari spreminjanja vrste podatkov

int prin = zemljevid (impulzi, 750, 2250, 0, 180); // spreminjanje vrste podatkov

Serial.println (prin); serv.write (impulzi); // naredi servo premik}}

}

4. korak: Odbor strank

Odbor strank
Odbor strank

Odjemalska plošča je sestavljena iz oddajnega modula in potenciometra. Oddajniški modul je ožičen na enak način ** kot strežniška plošča, z izjemo tega, da je brez ščitne plošče priključen neposredno v zatiče plošče Arduino.

Potenciometer napaja 5V, ozemljen in priklopljen na analogni pin 2.

** Opomba: kot je navedeno v koraku strežniške plošče, moje Arduino plošče niso enake. V tem primeru je oddajnik priključen na zatič z oznako 3.3V, neposredno ob 5V zatiču, vendar se zdi, da vse deluje dobro.

5. korak: Koda odjemalca: Kopiraj in prilepi

// KODA KLIJENTA/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Ne uporablja se GND> GND VCC> 5V */// ožičenje oddajnika

#vključi

// knjižnica oddajnikov

int potpin = A2; // zamik potenciometra

int val;

char tempChar [5];

Niz valString = ""; // stvari spreminjanja vrste podatkov

RH_NRF24 nrf24; // stvari oddajnika

void setup ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init ni uspel"); // Privzete vrednosti po init so 2,402 GHz (kanal 2), 2 Mb/ s, 0 dBm, če (! Nrf24.setChannel (12)) Serial.println ("setChannel failed"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ni uspelo"); } // oddajnik

void loop () {

val = analogRead (potpin); // stvari s potenciometrom

val = zemljevid (val, 0, 1023, 750, 2250);

valString = val; Niz str = (valString); str.toCharArray (tempChar, 5); // spreminjanje vrste podatkov nrf24.send (tempChar, sizeof (tempChar));

}

6. korak: Opomba glede kode:

Koda vsebuje nekaj omejenih funkcij za odpravljanje težav v obliki povratnih informacij serijskega monitorja v vmesniku programske opreme Arduino. Ko gledate serijski monitor s kode SERVER (ctrl + shift + M), bi morali videti stanje potenciometra v obliki števila med 1 in 180.

Tu je tudi knjižnica za brezžično povezavo in servo:

www.airspayce.com/mikem/arduino/RadioHead/

github.com/nabontra/ServoTimer2

Priporočena: