Sadržaj:

Bežično servo upravljanje: 6 koraka
Bežično servo upravljanje: 6 koraka

Video: Bežično servo upravljanje: 6 koraka

Video: Bežično servo upravljanje: 6 koraka
Video: Lesson 97: Controlling Servo Motor using Rotary Encoder and Display Angle On LCD 2024, Srpanj
Anonim
Bežično servo upravljanje
Bežično servo upravljanje
Bežično servo upravljanje
Bežično servo upravljanje

Ovaj projekt kontrolira rotaciju servo -a bežično pomoću potenciometra (gumb). Rotacija je ograničena na 180 stupnjeva.

Korak 1: Komponente

Komponente
Komponente
Komponente
Komponente
Komponente
Komponente

Ovaj projekt sastoji se od

  • 2 Arduino UNO upravljačke ploče s USB priključnim kabelom
  • 2 modula RF primopredajnika nRF24L01-2,4 GHz (za pomoć oko ovih modula pogledajte
  • 2 adapterske ploče s utičnicama (čipovi ruksaka) za nRF24L01
  • 1 dodatna Arduino kompatibilna 328 ProtoShield prototipska ploča za proširenje
  • 1 servo
  • 1 analogni potenciometar
  • lemilica i lemljenje
  • žica
  • kliješta s iglastim nosem
  • izolacijski omot, koristio sam električnu traku

Korak 2: Ploča poslužitelja

Poslužiteljska ploča
Poslužiteljska ploča

Poslužiteljska ploča sastoji se od primopredajničkog modula, štitne ploče (koja se izravno povezuje s Arduino pločom samo na jedan način) i serva. Odlučio sam uključiti štitnu ploču kako bih izbjegao nespretnu ploču i dao projektu i ukupni uredniji izgled.

Kôd i web resurs uključeni u popis komponenti detaljno opisuju veze modula primopredajnika. Odlučio sam lemiti veze umjesto da koristim privremene veze kao u prethodnim projektima. Budući da sam početnik, izolirao sam svaki lemni spoj električnom trakom (nisu bili lijepi).

Igle štitne ploče odgovaraju izravno Arduino iglicama. Prije nego što sam pričvrstio štitnu ploču, žicom i lemljenjem spojio sam uzemljenje i 5voltne igle na šine ploče. Također sam lemio žice od 5 volti i uzemljenje komponenti na šine štitne ploče, a zatim sam konačno pričvrstio Arduino na štitnu ploču.

Servo je priključen na 3voltni pin za napajanje i digitalni pin 2 za komunikaciju.

** Napomena: tek nakon dovršetka ove gradnje primijetio sam da moje Arduino ploče nisu identične. Moj poslužitelj primopredajnika napaja 5voltna vodilica na ploči štita, dok klijent primopredajnik napaja 3voltna iglica, iako sam bio uvjeren da je funkcija adapterskog čipa na primopredajniku osigurati odgovarajući napon. Sve što mogu sa sigurnošću reći je da ponuđeni kod usklađen sa konfiguracijom prikazanom na slikama proizvodi opisani učinak.

Korak 3: Kodiranje poslužitelja: Kopirajte i zalijepite

// KOD SERVERA/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Ne koristi se GND> GND VCC> 5V */// ožičenje primopredajnika

#uključi

// servo knjižnica

#uključi

// primopredajnička knjižnica

#define Servopin 2

// deklaracija servo izlazni pin

ServoTimer2 poslužitelj;

// deklaracija naziva serva

RH_NRF24 nrf24;

// deklaracija naziva primopredajnika

int timeOUT = 0;

// varijabla za servo

int impulsi = 90;

// varijabla za spremanje impulsa

void setup ()

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

Serial.begin (9600); // primopredajnik

if (! nrf24.init ())

Serial.println ("init nije uspio"); // serijski monitor ako (! nrf24.setChannel (12)) // postavi kanal na 125 Serial.println ("setChannel nije uspio"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF nije uspio"); // 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 serijskog monitora {Serial.print ("got request:"); impulsi = strtol ((const char*) buf, NULL, 10); // promjena vrste podataka

int prin = karta (impulsi, 750, 2250, 0, 180); // promjena vrste podataka

Serial.println (prin); serv.write (impulsi); // tjera servo pomak}}

}

Korak 4: Odbor za klijente

Odbor za klijente
Odbor za klijente

Klijentska ploča sastoji se od primopredajnika i potenciometra. Modul primopredajnika ožičen je na isti način ** kao i poslužiteljska ploča, s izuzetkom da je bez ploče oklopa ožičen izravno u pinove Arduino ploče.

Potenciometar uzima 5v, uzemljen i spojen je na analogni pin 2.

** Napomena: kao što je spomenuto u koraku poslužiteljske ploče, moje Arduino ploče nisu identične. U ovom slučaju primopredajnik je ožičen na pin označen sa 3.3V, neposredno uz pin 5V, ali opet, čini se da sve radi dobro.

Korak 5: Kôd klijenta: Kopirajte i zalijepite

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

#uključi

// primopredajnička knjižnica

int potpin = A2; // odlaganje potenciometra

int val;

char tempChar [5];

String valString = ""; // promjena vrste podataka

RH_NRF24 nrf24; // primopredajnik

void setup ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init nije uspio"); // Zadane vrijednosti nakon init -a su 2,402 GHz (kanal 2), 2Mbps, 0dBm if (! Nrf24.setChannel (12)) Serial.println ("setChannel nije uspio"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF nije uspio"); } // primopredajnik

void loop () {{100} {101}

val = analogRead (potpin); // potenciometar stvari

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

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

}

Korak 6: Napomena o kodu:

Kôd sadrži neke ograničene mogućnosti rješavanja problema u obliku povratnih informacija serijskog monitora u sučelju softvera Arduino. Kada gledate serijski monitor iz koda SERVER (ctrl + shift + M), trebali biste moći vidjeti stanje potenciometra u obliku broja između 1 i 180.

Također, ovdje je biblioteka za bežično povezivanje i servo:

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

github.com/nabontra/ServoTimer2

Preporučeni: