Turinys:

Belaidis servo valdymas: 6 žingsniai
Belaidis servo valdymas: 6 žingsniai

Video: Belaidis servo valdymas: 6 žingsniai

Video: Belaidis servo valdymas: 6 žingsniai
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, Lapkritis
Anonim
Belaidis servo valdymas
Belaidis servo valdymas
Belaidis servo valdymas
Belaidis servo valdymas

Šis projektas valdo servo sukimąsi belaidžiu būdu, naudojant potenciometrą (rankenėlę). Sukimasis ribojamas iki 180 laipsnių.

1 žingsnis: komponentai

Komponentai
Komponentai
Komponentai
Komponentai
Komponentai
Komponentai

Šį projektą sudaro

  • 2 „Arduino UNO“valdiklių plokštės su USB jungties laidu
  • 2 nRF24L01-2,4 GHz RF siųstuvo-imtuvo moduliai (pagalbos dėl šių modulių ieškokite
  • 2 lizdinės adapterio plokštės (kuprinės lustai), skirtos nRF24L01
  • 1 pasirenkama su „Arduino“suderinama 328 „ProtoShield“prototipo išplėtimo plokštė
  • 1 servo
  • 1 analoginis potenciometras
  • lituoklis ir lituoklis
  • viela
  • replės su adatomis
  • izoliacinė plėvelė, naudojau elektros juostą

2 žingsnis: serverio lenta

Serverio lenta
Serverio lenta

Serverio plokštę sudaro siųstuvo -imtuvo modulis, skydo plokštė (kuri tiesiogiai jungiasi prie „Arduino“plokštės tik vienu būdu) ir servo. Aš nusprendžiau įtraukti skydo lentą, kad išvengčiau gremėzdiškos duonos lentos ir suteikčiau projektui ir visapusiškam apdailai.

Į komponentų sąrašą įtrauktas kodas ir žiniatinklio ištekliai išsamiai apibūdina siųstuvo -imtuvo modulio jungtis. Aš nusprendžiau lituoti jungtis, o ne naudoti laikinus ryšius, kaip ir ankstesniuose projektuose. Kadangi esu pradedantysis, kiekvieną litavimo jungtį apšiltinau elektros juosta (jos nebuvo gražios).

Skydo plokštės kaiščiai tiesiogiai atitinka „Arduino“kaiščius. Prieš pritvirtindamas skydo plokštę, aš prijungiau įžeminimo ir 5 voltų kaiščius prie lentos bėgelių viela ir lydmetaliu. Aš taip pat litavau komponentų 5 voltų ir įžeminimo laidus prie skydo bėgių, tada galiausiai pritvirtinau „Arduino“prie skydo plokštės.

Servo yra prijungtas prie 3 voltų kaiščio, kad būtų galima maitinti, o skaitmeninis - 2 kontaktas.

** Pastaba: tik baigęs šį kūrimą pastebėjau, kad mano „Arduino“plokštės nėra tapačios. Mano serverio siųstuvas -imtuvas maitinamas 5 voltų bėgeliu, esančiu skydo plokštėje, o kliento siųstuvas -imtuvas maitinamas 3 voltų kaiščiu, nors buvau priverstas manyti, kad siųstuvo -imtuvo adapterio lusto funkcija yra užtikrinti tinkamą įtampą. Tikrai galiu pasakyti, kad pateiktas kodas, suderintas su paveikslėliuose nurodyta konfigūracija, sukuria aprašytą efektą.

3 veiksmas: serverio kodavimo priemonė: nukopijuokite ir įklijuokite

// PASLAUGOS KODAS/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Nenaudojama GND> GND VCC> 5V */// siųstuvo -imtuvo laidai

#įtraukti

// servo biblioteka

#įtraukti

// imtuvo biblioteka

#define Servopin 2

// deklaravimo servo išvesties kaištis

ServoTimer2 servas;

// servo pavadinimo deklaracija

RH_NRF24 nrf24;

// imtuvo pavadinimo deklaracija

int timeOUT = 0;

// kintamasis servo

int impulsai = 90;

// kintamasis impulsams saugoti

negaliojanti sąranka ()

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

Serial.begin (9600); // imtuvo dalykai

jei (! nrf24.init ())

Serial.println ("nepavyko inicijuoti"); // serijinio monitoriaus medžiaga if (! nrf24.setChannel (12)) // nustatyti kanalą į 125 Serial.println ("setChannel nepavyko"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF nepavyko"); // serijinio monitoriaus medžiaga}

tuštumos kilpa ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // serijinio monitoriaus medžiaga {Serial.print ("got request:"); impulsai = strtol ((const char*) buf, NULL, 10); // duomenų tipo keitimo dalykai

int prin = žemėlapis (impulsai, 750, 2250, 0, 180); // duomenų tipo keitimo dalykai

Serial.println (prin); serv.write (impulsai); // priverčia servo judėti}}

}

4 žingsnis: Klientų valdyba

Klientų valdyba
Klientų valdyba

Kliento plokštę sudaro siųstuvo -imtuvo modulis ir potenciometras. Siųstuvo -imtuvo modulis yra prijungtas taip pat ** kaip ir serverio plokštė, išskyrus tai, kad be skydo plokštės jis yra prijungtas tiesiai prie „Arduino“plokštės kaiščių.

Potenciometras maitinamas 5 V įtampa ir yra prijungtas prie 2 analoginio kaiščio.

** Pastaba: kaip minėta serverio plokštės žingsnyje, mano „Arduino“plokštės nėra tapačios. Šiuo atveju siųstuvas -imtuvas yra prijungtas prie kištuko, pažymėto 3.3V, tiesiai greta 5V kištuko, tačiau vėl viskas atrodo gerai.

5 veiksmas: kliento kodas: nukopijuokite ir įklijuokite

// KLIENTO KODAS/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Nenaudojama GND> GND VCC> 5V */// imtuvo laidai

#įtraukti

// imtuvo biblioteka

int potpin = A2; // potenciometro deformacija

int val;

char tempChar [5];

Eilutė valString = ""; // duomenų tipo keitimo dalykai

RH_NRF24 nrf24; // imtuvo dalykai

negaliojanti sąranka ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init nepavyko"); // Pagal numatytuosius nustatymus po init yra 2,402 GHz (2 kanalas), 2Mbps, 0dBm if (! Nrf24.setChannel (12)) Serial.println ("setChannel nepavyko"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF nepavyko"); } // imtuvo dalykai

void loop () {

val = analogRead (potpin); // potenciometro dalykai

val = žemėlapis (val, 0, 1023, 750, 2250);

valString = val; Eilutė str = (valString); str.toCharArray (tempChar, 5); // duomenų tipo keitimo medžiaga nrf24.send (tempChar, sizeof (tempChar));

}

6 žingsnis: Pastaba apie kodą:

Kodekse yra keletas ribotų trikčių šalinimo funkcijų, gaunamų kaip atsiliepimai iš nuoseklaus monitoriaus „Arduino“programinės įrangos sąsajoje. Žiūrėdami nuoseklųjį monitorių iš SERVER kodo („Ctrl“+ „Shift“+ M), turėtumėte matyti potenciometro būseną skaičiumi nuo 1 iki 180.

Be to, čia yra belaidžio ryšio ir servo biblioteka:

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

github.com/nabontra/ServoTimer2

Rekomenduojamas: