Innehållsförteckning:

Trådlös servokontroll: 6 steg
Trådlös servokontroll: 6 steg

Video: Trådlös servokontroll: 6 steg

Video: Trådlös servokontroll: 6 steg
Video: Такие секреты уже все забыли, но их стоит знать! Полезные советы на все случаи жизни! 2024, November
Anonim
Trådlös servokontroll
Trådlös servokontroll
Trådlös servokontroll
Trådlös servokontroll

Detta projekt styr rotationen av en servo trådlöst med hjälp av en potentiometer (vred). Rotationen begränsas till 180 grader.

Steg 1: Komponenter

Komponenter
Komponenter
Komponenter
Komponenter
Komponenter
Komponenter

Detta projekt består av

  • 2 Arduino UNO -styrkort med USB -anslutningskabel
  • 2 nRF24L01-2,4 GHz RF-sändtagarmoduler (för hjälp med dessa moduler, se
  • 2 uttagskort (ryggsäckchips) för nRF24L01
  • 1 valfritt Arduino -kompatibelt 328 ProtoShield -prototyputbyggnadskort
  • 1 servo
  • 1 analog potentiometer
  • lödkolv och löd
  • tråd
  • nåltång
  • isolerande omslag, jag använde eltejp

Steg 2: Serverkort

Serverkort
Serverkort

Serverkortet består av en sändtagarmodul, skärmkortet (som bara ansluts direkt till Arduino -kortet) och servon. Jag bestämde mig för att inkludera sköldbrädan för att undvika den klumpiga brödbrädan och ge projektet och en övergripande snyggare finish.

Koden och webbresursen som ingår i komponentlistan beskriver transceivermodulanslutningarna. Jag bestämde mig för att löda anslutningarna istället för att använda tillfälliga anslutningar som i tidigare projekt. Eftersom jag är nybörjare isolerade jag varje lödfog med eltejp (de var inte snygga).

Sköldbrädans stift motsvarar direkt Arduino -stiften. Innan jag fäst skärmskivan anslöt jag marken och 5 volt stiften till brädans skenor med tråd och löd. Jag lödde också komponenternas 5 volts och jordledningar till skärmskensskenorna och fäst sedan äntligen Arduino på skärmkortet.

Servon är ansluten till 3 volts stift för ström och digital stift 2 för kommunikation.

** Observera: först efter att jag hade slutfört detta bygge märkte jag att mina Arduino -brädor inte är identiska. Min servertransceiver drivs av 5 volts skenan på skärmkortet, medan klienttransceivern drivs av 3 volts stift, även om jag har fått förmodan att tro att en funktion av adapterchipet på transceivern är att ge rätt spänning. Allt jag kan säga är att koden som matchas med konfigurationen som visas på bilderna ger den beskrivna effekten.

Steg 3: Serverkodare: Kopiera och klistra in

// SERVERKOD/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Används inte GND> GND VCC> 5V */// transceiverkablar

#omfatta

// servobibliotek

#omfatta

// transceiverbibliotek

#define Servopin 2

// deklaration servo utgångsstift

ServoTimer2 serv;

// deklaration av servonamn

RH_NRF24 nrf24;

// deklaration av mottagarens namn

int timeOUT = 0;

// variabel för servo

int pulser = 90;

// variabel för att lagra pulser

void setup ()

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

Serial.begin (9600); // transceiver grejer

om (! nrf24.init ())

Serial.println ("init misslyckades"); // seriell bildskärm om (! nrf24.setChannel (12)) // ställer in kanalen på 125 Serial.println ("setChannel misslyckades"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF misslyckades"); // seriell bildskärmsgrej}

void loop ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // seriell bildskärm {Serial.print ("fick begäran:"); pulser = strtol ((const char*) buf, NULL, 10); // datatyp ändra saker

int prin = map (pulser, 750, 2250, 0, 180); // datatyp ändra saker

Serial.println (prin); serv.write (pulser); // får servo att röra sig}}

}

Steg 4: Client Board

Client Board
Client Board

Klientkortet består av en sändtagarmodul och potentiometern. Sändtagarmodulen är ansluten på samma sätt ** som serverkortet med undantag för att den utan skärmkortet är ansluten direkt till Arduino -kortets stift.

Potentiometern tar 5v, jordad och är ansluten till analog stift 2.

** Obs! Som nämnts i serverkortsteget är mina Arduino -kort inte identiska. I det här fallet är mottagaren ansluten till stiftet märkt 3.3V, direkt intill 5V -stiftet, men igen verkar allt fungera bra.

Steg 5: Klientkod: Kopiera och klistra in

// KUNDKOD/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Används inte GND> GND VCC> 5V */// transceiverkablar

#omfatta

// transceiverbibliotek

int potpin = A2; // potentiometerdelning

int val;

char tempChar [5];

String valString = ""; // datatyp ändra saker

RH_NRF24 nrf24; // transceiver grejer

void setup ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init misslyckades"); // Standardvärdena efter init är 2.402 GHz (kanal 2), 2Mbps, 0dBm if (! Nrf24.setChannel (12)) Serial.println ("setChannel misslyckades"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF misslyckades"); } // transceiver grejer

void loop () {

val = analogRead (potpin); // potentiometer grejer

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

valString = val; String str = (valString); str.toCharArray (tempChar, 5); // datatyp ändra saker nrf24.send (tempChar, sizeof (tempChar));

}

Steg 6: En kommentar om koden:

Koden innehåller vissa begränsade felsökningsfunktioner i form av feedback från den seriella bildskärmen i Arduino -gränssnittet. När du ser den seriella bildskärmen från SERVER -koden (ctrl + shift + M) bör du kunna se potentiometerns tillstånd i form av ett tal mellan 1 och 180.

Här är också biblioteket för det trådlösa och servot:

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

github.com/nabontra/ServoTimer2

Rekommenderad: