Satura rādītājs:

Bezvadu servo vadība: 6 soļi
Bezvadu servo vadība: 6 soļi

Video: Bezvadu servo vadība: 6 soļi

Video: Bezvadu servo vadība: 6 soļi
Video: 40 полезных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #6 2024, Novembris
Anonim
Bezvadu servo vadība
Bezvadu servo vadība
Bezvadu servo vadība
Bezvadu servo vadība

Šis projekts bezvadu režīmā kontrolē servo rotāciju, izmantojot potenciometru (pogu). Rotācija ir ierobežota līdz 180 grādiem.

1. darbība: sastāvdaļas

Sastāvdaļas
Sastāvdaļas
Sastāvdaļas
Sastāvdaļas
Sastāvdaļas
Sastāvdaļas

Šis projekts sastāv no

  • 2 Arduino UNO kontrollera plates ar USB savienotāja kabeli
  • 2 nRF24L01-2,4 GHz RF raiduztvērēja moduļi (palīdzību saistībā ar šiem moduļiem skatiet vietnē
  • 2 ligzdas adaptera plates (mugursomas mikroshēmas) nRF24L01
  • 1 papildu ar Arduino saderīgs 328 ProtoShield prototipa paplašināšanas panelis
  • 1 servo
  • 1 analogs potenciometrs
  • lodāmurs un lodētava
  • vads
  • knaibles ar adatas degunu
  • izolācijas apvalks, es izmantoju elektrisko lenti

2. darbība: servera padome

Serveru padome
Serveru padome

Servera plate sastāv no raiduztvērēja moduļa, vairoga plates (kas tieši savienojas ar Arduino plati tikai vienā virzienā) un servo. Es nolēmu iekļaut vairoga dēli, lai izvairītos no neveiklās maizes dēļa un sniegtu projektam un visaptverošāku apdari.

Komponentu sarakstā iekļautajā kodā un tīmekļa resursā ir sīki aprakstīti raiduztvērēja moduļa savienojumi. Es nolēmu lodēt savienojumus, nevis izmantot pagaidu savienojumus, kā tas bija iepriekšējos projektos. Tā kā esmu iesācējs, katru lodēšanas savienojumu izolēju ar elektrisko lenti (tie nebija smuki).

Aizsargplates tapas atbilst tieši Arduino tapām. Pirms vairoga plāksnes piestiprināšanas es savienoju zemi un 5 voltu tapas ar dēļu sliedēm ar stiepli un lodmetālu. Es arī pielodēju detaļu 5 voltu un zemējuma vadus pie vairoga plāksnes sliedēm, pēc tam beidzot pievienoju Arduino pie vairoga plāksnes.

Servo ir pievienots 3 voltu tapai barošanai un digitālajai tapai 2 komunikācijai.

** Piezīme: tikai pēc šīs būves pabeigšanas es pamanīju, ka manas Arduino plāksnes nav identiskas. Mana servera raiduztvērēju darbina 5 voltu sliede vairoga panelī, savukārt klienta raiduztvērēju baro 3 voltu tapa, lai gan man ir radies uzskats, ka uztvērēja adaptera mikroshēmas funkcija ir nodrošināt pareizu spriegumu. Viss, ko es varu droši teikt, ir tas, ka kods, kas atbilst attēlos redzamajai konfigurācijai, rada aprakstīto efektu.

3. darbība: servera kodētājs: kopēšana un ielīmēšana

// SERVERA KODS/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Nav izmantots GND> GND VCC> 5V */// uztvērēja vadi

#iekļaut

// servo bibliotēka

#iekļaut

// uztvērēja bibliotēka

#define Servopin 2

// deklarācijas servo izvades tapa

ServoTimer2 serv;

// servo nosaukuma deklarācija

RH_NRF24 nrf24;

// uztvērēja nosaukuma deklarācija

int timeOUT = 0;

// mainīgais servo

int impulsi = 90;

// mainīgais, lai uzglabātu impulsus

anulēts iestatījums ()

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

Sērijas sākums (9600); // uztvērēja lietas

ja (! nrf24.init ())

Serial.println ("init neizdevās"); // sērijveida monitora sīkumi, ja (! nrf24.setChannel (12)) // iestatiet kanālu uz 125 Serial.println ("setChannel neizdevās"); ja (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF neizdevās"); // sērijveida monitora lietas}

tukša cilpa ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // seriālā monitora sīkumi {Serial.print ("got request:"); pākšaugi = strtol ((const char*) buf, NULL, 10); // datu tipa maiņas lietas

int prin = karte (impulsi, 750, 2250, 0, 180); // datu tipa maiņas lietas

Serial.println (prin); serv.write (impulsi); // liek servo kustēties}}

}

4. solis: klientu padome

Klientu padome
Klientu padome

Klienta tāfele sastāv no raiduztvērēja moduļa un potenciometra. Raiduztvērēja modulis ir savienots tādā pašā veidā ** kā servera plate, izņemot to, ka bez vairoga plates tas ir pievienots tieši Arduino plates tapām.

Potenciometrs tiek piezemēts ar 5 V spriegumu un ir savienots ar 2. analogo tapu.

** Piezīme: kā minēts servera paneļa solī, manas Arduino plates nav identiskas. Šajā gadījumā raiduztvērējs ir savienots ar tapu, kas apzīmēta ar 3.3V, tieši blakus 5V tapai, bet atkal viss šķiet kārtībā.

5. darbība. Klienta kods: kopējiet un ielīmējiet

// KLIENTA KODS/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Nav izmantots GND> GND VCC> 5V */// uztvērēja vadi

#iekļaut

// uztvērēja bibliotēka

int potpin = A2; // potenciometra delarācija

int val;

char tempChar [5];

String valString = ""; // datu tipa maiņas lietas

RH_NRF24 nrf24; // uztvērēja lietas

anulēts iestatījums ()

{Sērijas sākums (9600); ja (! nrf24.init ()) Serial.println ("init neizdevās"); // Noklusējuma vērtības pēc init ir 2,402 GHz (2. kanāls), 2 Mb/ s, 0dBm, ja (! Nrf24.setChannel (12)) Serial.println ("setChannel neizdevās"); ja (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF neizdevās"); } // uztvērēja lietas

void loop () {

val = analogRead (potpin); // potenciometra lietas

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

valString = val; String str = (valString); str.toCharArray (tempChar, 5); // datu tipa maiņa stuff nrf24.send (tempChar, sizeof (tempChar));

}

6. darbība. Piezīme par kodu:

Kods satur dažas ierobežotas problēmu novēršanas funkcijas, kas ir atsauksmes no sērijveida monitora Arduino programmatūras saskarnē. Skatot seriālo monitoru no SERVER koda (ctrl + shift + M), jums vajadzētu redzēt potenciometra stāvokli skaitļa veidā no 1 līdz 180.

Šeit ir arī bezvadu un servo bibliotēka:

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

github.com/nabontra/ServoTimer2

Ieteicams: