Talaan ng mga Nilalaman:

Wireless Servo Control: 6 na Hakbang
Wireless Servo Control: 6 na Hakbang

Video: Wireless Servo Control: 6 na Hakbang

Video: Wireless Servo Control: 6 na Hakbang
Video: Уроки Arduino - управление сервомашинкой 2024, Nobyembre
Anonim
Wireless Servo Control
Wireless Servo Control
Wireless Servo Control
Wireless Servo Control

Kinokontrol ng proyektong ito ang pag-ikot ng isang servo nang wireless sa pamamagitan ng potensyomiter (knob). Ang pag-ikot ay pinipigilan sa 180 degree.

Hakbang 1: Mga Bahagi

Mga Bahagi
Mga Bahagi
Mga Bahagi
Mga Bahagi
Mga Bahagi
Mga Bahagi

Ang proyektong ito ay binubuo ng

  • 2 Arduino UNO controller boards na may USB konektor cable
  • 2 nRF24L01 - 2.4GHz RF transceiver module (para sa tulong sa mga modyul na ito ay sumangguni sa
  • 2 mga socket adapter board (backpack chips) para sa nRF24L01
  • 1 opsyonal na Arduino Compatible 328 ProtoShield Prototype Expansion Board
  • 1 servo
  • 1 analog potentiometer
  • panghinang at bakalang panghinang
  • kawad
  • karayom na mga ilong na pliers
  • insulate na pambalot, gumamit ako ng electrical tape

Hakbang 2: Server Board

Lupon ng Server
Lupon ng Server

Ang server board ay binubuo ng isang module ng transceiver, ang board ng kalasag (na direktang kumokonekta sa Arduino board na isang paraan lamang), at ang servo. Napagpasyahan kong isama ang board ng kalasag upang maiwasan ang malamya na breadboard at ibigay ang proyekto at pangkalahatang mas malapit na tapusin.

Ang code at mapagkukunan ng web na kasama sa listahan ng mga detalye ng detalye ng mga koneksyon sa module ng transceiver. Nagpasya akong maghinang ng mga koneksyon sa halip na gumamit ng pansamantalang mga koneksyon tulad ng sa mga nakaraang proyekto. Dahil ako ay isang nagsisimula, pinagsama ko ang bawat pinagsamang solder na may electrical tape (hindi sila maganda).

Ang mga pin ng board ng kalasag ay tumutugma nang direkta sa mga pin ng Arduino. Bago ilakip ang board ng kalasag, kinonekta ko ang lupa at 5volt na mga pin sa board rails na may wire at solder. Naghinang din ako ng mga bahagi ng 5volt at ground wires sa riles ng board ng kalasag, pagkatapos ay sa wakas ay nakakabit ang Arduino sa board ng kalasag.

Ang servo ay nakakabit sa 3volt pin para sa lakas at digital pin 2 para sa komunikasyon.

** Tandaan: pagkatapos lamang makumpleto ang build na ito napansin ko na ang aking Arduino boards ay hindi magkapareho. Ang aking server transceiver ay pinalakas ng 5volt rail sa board ng kalasag, habang ang client transceiver ay pinalakas ng 3volt pin, bagaman pinangunahan akong maniwala na ang isang pagpapaandar ng adapter chip sa transceiver ay upang magbigay ng tamang boltahe. Ang masasabi kong sigurado lang ay ang code na ibinigay na naitugma sa pagsasaayos na ipinapakita sa mga imahe ay gumagawa ng inilarawan na epekto.

Hakbang 3: Server Coder: Kopyahin at I-paste

// SERVER CODE / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Hindi ginamit GND> GND VCC> 5V * / // transceiver wiring

# isama

// servo library

# isama

// library ng transceiver

# tukuyin ang Servopin 2

// deklarasyon servo output pin

ServoTimer2 serv;

// pagdedeklara ng pangalan ng servo

RH_NRF24 nrf24;

// pagdedeklara ng pangalan ng transceiver

int timeOUT = 0;

// variable para sa servo

int pulses = 90;

// variable upang mag-imbak ng mga pulso

walang bisa ang pag-setup ()

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

Serial.begin (9600); // transceiver bagay

kung (! nrf24.init ())

Serial.println ("nabigo ang init"); // serial monitor stuff if (! nrf24.setChannel (12)) // set channel to 125 Serial.println ("setChannel failed"); kung (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("Nabigo ang setRF"); // serial monitor stuff}

walang bisa loop ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); kung (nrf24.recv (buf, & len)) // serial monitor bagay {Serial.print ("got request:"); pulses = strtol ((const char *) buf, NULL, 10); // mga uri ng pagbabago sa uri ng data

int prin = mapa (pulso, 750, 2250, 0, 180); // uri ng data baguhin ang mga bagay-bagay

Serial.println (prin); serv.write (pulses); // ginagawang ilipat ang servo}}

}

Hakbang 4: Lupon ng Client

Lupon ng kliyente
Lupon ng kliyente

Ang board ng kliyente ay binubuo ng isang module ng transceiver at potensyomiter. Ang module ng transceiver ay wired sa parehong paraan ** tulad ng server board na may pagbubukod na wala ang board ng kalasag, direktang ito ay naka-wire sa mga pin ng board ng Arduino.

Ang potensyomiter ay tumatagal ng 5v, ground, at nakakonekta sa analog pin 2.

** Tandaan: tulad ng nabanggit sa hakbang ng server board, ang aking mga board ng Arduino ay hindi magkapareho. Sa kasong ito ang transceiver ay naka-wire sa pin na may label na 3.3V, direktang katabi ng 5V pin, ngunit muli, ang lahat ay tila gumagana nang maayos.

Hakbang 5: Code ng Client: Kopyahin at I-paste

// CLIENT CODE / * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Hindi ginamit GND> GND VCC> 5V * / // transceiver wiring

# isama

// library ng transceiver

int potpin = A2; // delensyal ng potensyomiter

int val;

char tempChar [5];

String valString = ""; // uri ng data baguhin ang mga bagay-bagay

RH_NRF24 nrf24; // transceiver bagay

walang bisa ang pag-setup ()

{Serial.begin (9600); kung (! nrf24.init ()) Serial.println ("init failed"); // Defaults after init are 2.402 GHz (channel 2), 2Mbps, 0dBm if (! Nrf24.setChannel (12)) Serial.println ("setChannel failed"); kung (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("Nabigo ang setRF"); } // transceiver bagay

void loop () {

val = analogRead (potpin); // potentiometre na bagay

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

valString = val; String str = (valString); str.toCharArray (tempChar, 5); // datatype baguhin ang mga bagay-bagay nrf24.send (tempChar, sizeof (tempChar));

}

Hakbang 6: Isang Tandaan Tungkol sa Code:

Naglalaman ang Code ng ilang limitadong pag-andar ng pag-troubleshoot sa anyo ng puna mula sa serial monitor sa interface ng Arduino software. Kapag tinitingnan ang serial monitor mula sa SERVER code (ctrl + shift + M), dapat mong makita ang estado ng potensyomiter sa anyo ng isang numero sa pagitan ng 1 at 180.

Gayundin, narito ang library para sa wireless at servo:

www.airpayce.com/mikem/arduino/RadioHead/

github.com/nabontra/ServoTimer2

Inirerekumendang: