INHOUDSOPGAWE:

Draadlose servobestuur: 6 stappe
Draadlose servobestuur: 6 stappe

Video: Draadlose servobestuur: 6 stappe

Video: Draadlose servobestuur: 6 stappe
Video: 10 привычек, чтобы стать счастливым 2024, November
Anonim
Draadlose servobestuur
Draadlose servobestuur
Draadlose servobestuur
Draadlose servobestuur

Hierdie projek beheer die draai van 'n servo draadloos deur middel van 'n potensiometer (knop). Die rotasie word beperk tot 180 grade.

Stap 1: Komponente

Komponente
Komponente
Komponente
Komponente
Komponente
Komponente

Hierdie projek bestaan uit

  • 2 Arduino UNO -beheerborde met USB -aansluitkabel
  • 2 nRF24L01-2.4GHz RF-ontvangersmodules (verwys na https://randomnerdtutorials.com/nrf24l01-2-4ghz-rf… vir hulp met hierdie modules)
  • 2 aansluitbordborde (rugsakskyfies) vir die nRF24L01
  • 1 opsionele Arduino -versoenbare 328 ProtoShield -prototipe -uitbreidingskaart
  • 1 servo
  • 1 analoog potensiometer
  • soldeerbout en soldeer
  • draad
  • naald tang
  • isolerende omhulsel het ek elektriese band gebruik

Stap 2: bedienerbord

Bedienersbord
Bedienersbord

Die bedienerbord bestaan uit 'n transceiver -module, die skildbord (wat slegs op een manier direk met die Arduino -bord verbind kan word) en die servo. Ek het besluit om die skildbord in te sluit om die lomp broodbord te vermy en die projek en algehele netjieser afwerking te gee.

Die kode en webbron wat in die komponentelys ingesluit is, bevat besonderhede oor die verbindings van die transceivermodule. Ek het besluit om die verbindings te soldeer in plaas van om tydelike verbindings te gebruik, soos in vorige projekte. Aangesien ek 'n beginner is, isoleer ek elke soldeerbout met elektriese band (dit was nie mooi nie).

Die skildbordpenne stem direk ooreen met die Arduino -penne. Voordat ek die skildplaat vasgemaak het, het ek die grond- en 5volt -penne met draad en soldeer aan die bordrails gekoppel. Ek het ook die komponente se 5 volt- en gronddrade aan die skildbordrails gesoldeer, en uiteindelik die Arduino aan die skildplaat vasgemaak.

Die servo is aan die 3 volt -pen vir krag en digitale pen 2 vir kommunikasie gekoppel.

** Opmerking: eers nadat ek hierdie build voltooi het, het ek opgemerk dat my Arduino -borde nie identies is nie. My bedienertransceiver word aangedryf deur die 5volt -spoor op die skildbord, terwyl die kliëntontvanger deur die 3volt -pen aangedryf word, alhoewel ek glo dat 'n funksie van die adapter -chip op die transceiver die regte spanning is. Al wat ek verseker kan sê, is dat die kode wat verskaf word, ooreenstem met die opset wat in die beelde getoon word, die beskrywe effek lewer.

Stap 3: Bedienerkodeerder: Kopieer en plak

// SERVER CODE/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Nie gebruik nie GND> GND VCC> 5V */// transceiver bedrading

#insluit

// servobiblioteek

#insluit

// transceiver biblioteek

#definieer Servopin 2

// verklaring servo -uitvoerpen

ServoTimer2 serv;

// verklaring van servo naam

RH_NRF24 nrf24;

// verklaring van die naam van die ontvanger

int timeOUT = 0;

// veranderlike vir servo

int pulse = 90;

// veranderlike om pulse op te slaan

leemte opstelling ()

{serv.attach (Servopin); // servo -goed

Serial.begin (9600); // transceiver -goed

as (! nrf24.init ())

Serial.println ("init misluk"); // seriële monitor dinge as (! nrf24.setChannel (12)) // kanaal stel op 125 Serial.println ("setChannel misluk"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF misluk"); // seriële monitor goed}

leemte lus ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // serial monitor stuff {Serial.print ("got request:"); pulse = strtol ((const char*) buf, NULL, 10); // data tipe verander dinge

int prin = kaart (pulse, 750, 2250, 0, 180); // data tipe verander dinge

Serial.println (prin); serv.write (polse); // laat servo beweeg}}

}

Stap 4: Kliëntbord

Kliëntraad
Kliëntraad

Die kliëntbord bestaan uit 'n transceiver -module en die potensiometer. Die transceiver -module is op dieselfde manier bedraad ** as die bedienerbord, met die uitsondering dat dit sonder die skildbord direk in die Arduino -bordpenne gekoppel is.

Die potensiometer neem 5v, gemaal, en is gekoppel aan analoog pen 2.

** Opmerking: soos genoem in die bedienerbordstap, is my Arduino -borde nie identies nie. In hierdie geval is die ontvanger aan die pen 3,3V gekoppel, direk aangrensend aan die 5V -pen, maar dit lyk asof alles weer goed werk.

Stap 5: Kliëntkode: Kopieer en plak

// KLIENTEKODE/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Nie gebruik nie GND> GND VCC> 5V */// transceiver bedrading

#insluit

// transceiver biblioteek

int potpin = A2; // potensiometer deel

int val;

char tempChar [5];

String valString = ""; // data tipe verander dinge

RH_NRF24 nrf24; // transceiver -goed

leemte opstelling ()

{Serial.begin (9600); as (! nrf24.init ()) Serial.println ("init misluk"); // Standaard na init is 2.402 GHz (kanaal 2), 2Mbps, 0dBm as (! Nrf24.setChannel (12)) Serial.println ("setChannel misluk"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF misluk"); } // transceiver -goed

leemte -lus () {

val = analogRead (potpin); // potensiometer dinge

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

valString = val; String str = (valString); str.toCharArray (tempChar, 5); // datatipe verander dinge nrf24.send (tempChar, sizeof (tempChar));

}

Stap 6: 'n Opmerking oor die kode:

Die kode bevat 'n paar beperkte funksies om probleme op te los in die vorm van terugvoer van die seriële monitor in die Arduino -sagteware -koppelvlak. As u die seriële monitor vanuit die SERVER -kode (ctrl + shift + M) bekyk, moet u die toestand van die potensiometer in die vorm van 'n getal tussen 1 en 180 kan sien.

Hier is ook die biblioteek vir die draadlose en die servo:

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

github.com/nabontra/ServoTimer2

Aanbeveel: