Obsah:

Bezdrátové ovládání serva: 6 kroků
Bezdrátové ovládání serva: 6 kroků

Video: Bezdrátové ovládání serva: 6 kroků

Video: Bezdrátové ovládání serva: 6 kroků
Video: Startovat auto se spojkou, nebo bez? Martin Vaculík vysvětlí, proč je jen jedna možnost správně 2024, Červenec
Anonim
Bezdrátové ovládání serva
Bezdrátové ovládání serva
Bezdrátové ovládání serv
Bezdrátové ovládání serv

Tento projekt řídí otáčení serva bezdrátově pomocí potenciometru (knoflíku). Rotace je omezena na 180 stupňů.

Krok 1: Součásti

Komponenty
Komponenty
Komponenty
Komponenty
Komponenty
Komponenty

Tento projekt se skládá z

  • 2 desky řadiče Arduino UNO s kabelem USB konektoru
  • 2 moduly RF vysílače nRF24L01-2,4 GHz (pomoc s těmito moduly viz
  • 2 desky soketového adaptéru (batohy) pro nRF24L01
  • 1 volitelná rozšiřující deska prototypu 328 ProtoShield kompatibilní s Arduino
  • 1 servo
  • 1 analogový potenciometr
  • páječka a pájka
  • drát
  • kleště s nosem
  • izolační obal, použil jsem elektrickou pásku

Krok 2: Serverová deska

Serverová deska
Serverová deska

Serverová deska se skládá z transceiverového modulu, štítové desky (která se připojuje přímo k desce Arduino pouze jedním způsobem) a ze serva. Rozhodl jsem se zahrnout štítovou desku, abych se vyhnul nemotornému prkénku a dal projektu a celkově hezčí povrch.

Kód a webový zdroj zahrnutý v seznamu komponent podrobně popisuje připojení modulu transceiveru. Rozhodl jsem se pájet spoje namísto použití dočasných připojení jako v předchozích projektech. Jelikož jsem začátečník, izoloval jsem každý pájecí spoj elektrickou páskou (nebyly hezké).

Kolíky štítové desky odpovídají přímo pinům Arduino. Před připevněním štítové desky jsem drát a pájku spojil zemnicí a 5voltové piny s kolejnicemi desky. Také jsem připájel 5voltové a uzemňovací vodiče součástí ke kolejnicím štítové desky a poté Arduino nakonec připevnil k štítové desce.

Servo je připojeno ke 3voltovému kolíku pro napájení a digitálnímu kolíku 2 pro komunikaci.

** Poznámka: teprve po dokončení této stavby jsem si všiml, že moje desky Arduino nejsou totožné. Můj serverový transceiver je napájen 5voltovou lištou na štítové desce, zatímco klientský transceiver je napájen 3voltovým pinem, i když jsem byl přesvědčen, že funkcí čipu adaptéru na transceiveru je zajistit správné napětí. Jediné, co mohu s jistotou říci, je, že poskytnutý kód odpovídající konfiguraci zobrazené na obrázcích vytváří popsaný efekt.

Krok 3: Server Coder: Zkopírujte a vložte

// KÓD SERVERU/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Nepoužito GND> GND VCC> 5V */// zapojení transceiveru

#zahrnout

// knihovna serv

#zahrnout

// knihovna transceiveru

#define Servopin 2

// deklarace výstupního pinu servo

ServoTimer2 serv;

// deklarace názvu serva

RH_NRF24 nrf24;

// deklarace názvu transceiveru

int timeOUT = 0;

// proměnná pro servo

int pulsy = 90;

// proměnná pro uložení impulsů

neplatné nastavení ()

{serv.attach (Servopin); // servo věci

Serial.begin (9600); // věci transceiveru

if (! nrf24.init ())

Serial.println ("inicializace se nezdařila"); // věci ze sériového monitoru if (! nrf24.setChannel (12)) // nastavit kanál na 125 Serial.println ("setChannel failed"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF failed"); // věci ze sériového monitoru}

prázdná smyčka ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // věci ze sériového monitoru {Serial.print ("got request:"); pulsy = strtol ((const char*) buf, NULL, 10); // věci pro změnu datového typu

int prin = mapa (impulsy, 750, 2250, 0, 180); // věci pro změnu datového typu

Serial.println (tisk); serv.write (impulsy); // rozpohybuje servo}}

}

Krok 4: Klientská rada

Klientská rada
Klientská rada

Klientská deska se skládá z transceiverového modulu a potenciometru. Modul transceiveru je zapojen stejným způsobem ** jako serverová deska s tou výjimkou, že bez štítové desky je zapojen přímo do pinů desky Arduino.

Potenciometr odebírá 5 V, uzemnění a je připojen k analogovému pinu 2.

** Poznámka: jak je uvedeno v kroku na desce serveru, moje desky Arduino nejsou totožné. V tomto případě je transceiver připojen ke kolíku označenému 3,3 V, přímo sousedícímu s kolíkem 5 V, ale opět se zdá, že vše funguje dobře.

Krok 5: Kód klienta: Zkopírujte a vložte

// KLIENTSKÝ KÓD/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Nepoužívá se GND> GND VCC> 5V */// zapojení transceiveru

#zahrnout

// knihovna transceiveru

int potpin = A2; // delarace potenciometru

int val;

char tempChar [5];

Řetězec valString = ""; // věci pro změnu datového typu

RH_NRF24 nrf24; // věci transceiveru

neplatné nastavení ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init failed"); // Výchozí hodnoty po inicializaci jsou 2,402 GHz (kanál 2), 2 Mb/ s, 0 dBm, pokud (! Nrf24.setChannel (12)) Serial.println ("setChannel failed"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF failed"); } // věci s přijímačem

prázdná smyčka () {

val = analogRead (potpin); // věci potenciometru

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

valString = val; Řetězec str = (valString); str.toCharArray (tempChar, 5); // změna datového typu věci nrf24.send (tempChar, sizeof (tempChar));

}

Krok 6: Poznámka ke kódu:

Kód obsahuje některé omezené funkce pro odstraňování problémů ve formě zpětné vazby ze sériového monitoru v softwarovém rozhraní Arduino. Při prohlížení sériového monitoru z kódu SERVER (ctrl + shift + M) byste měli být schopni vidět stav potenciometru ve formě čísla mezi 1 a 180.

Zde je také knihovna pro bezdrátové připojení a servo:

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

github.com/nabontra/ServoTimer2

Doporučuje: