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, Juli
Anonim
Bežična servo kontrola
Bežična servo kontrola
Bežična servo kontrola
Bežična servo kontrola

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

Korak 1: Komponente

Komponente
Komponente
Komponente
Komponente
Komponente
Komponente

Ovaj projekat se sastoji 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 sa utičnicama (čipovi za naprtnjače) za nRF24L01
  • 1 opcionalna 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: Server ploča

Server Board
Server Board

Poslužiteljska ploča sastoji se od primopredajničkog modula, štitne ploče (koja se direktno povezuje s Arduino pločom samo na jedan način) i servo. 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 listu 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. Lemio sam i žice od 5 volti i uzemljene komponente 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 završetka ove gradnje primijetio sam da moje Arduino ploče nisu identične. Moj poslužitelj primopredajnika napaja 5voltna šina na štitnoj ploči, dok se primopredajnik klijent napaja 3voltnim pinom, mada 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: Server koder: 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

#include

// servo biblioteka

#include

// primopredajnička biblioteka

#define Servopin 2

// izlazni pin servo deklaracije

ServoTimer2 serv;

// deklaracija servo naziva

RH_NRF24 nrf24;

// deklaracija imena 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 = mapa (impulsi, 750, 2250, 0, 180); // promjena vrste podataka

Serial.println (prin); serv.write (impulsi); // čini da se servo pomakne}}

}

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 štitne ploče spojen direktno na pinove Arduino ploče.

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

** Napomena: kao što je spomenuto u koraku serverske 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

#include

// primopredajnička biblioteka

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 inita 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); // stvari s potenciometrom

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

valString = val; String 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 funkcije 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čuje se: