Trådløs servokontroll: 6 trinn
Trådløs servokontroll: 6 trinn
Trådløs servokontroll
Trådløs servokontroll
Trådløs servokontroll
Trådløs servokontroll

Dette prosjektet styrer rotasjonen av en servo trådløst ved hjelp av et potensiometer (knott). Rotasjonen er begrenset til 180 grader.

Trinn 1: Komponenter

Komponenter
Komponenter
Komponenter
Komponenter
Komponenter
Komponenter

Dette prosjektet består av

  • 2 Arduino UNO -kontrollerkort med USB -kontaktkabel
  • 2 nRF24L01-2,4 GHz RF-mottakermoduler (for hjelp med disse modulene, se
  • 2 adapterkort (sokkelbrikker) for nRF24L01
  • 1 valgfritt Arduino -kompatibelt 328 ProtoShield Prototype -utvidelseskort
  • 1 servo
  • 1 analogt potensiometer
  • loddejern og loddetinn
  • metalltråd
  • nåletang
  • isolerende vikle, jeg brukte elektrisk tape

Trinn 2: Serverkort

Serverkort
Serverkort

Serverkortet består av en transceivermodul, skjermkortet (som bare kobles direkte til Arduino -kortet) og servoen. Jeg bestemte meg for å inkludere skjoldbrettet for å unngå det klønete brødbrettet og gi prosjektet og den generelle finere finishen.

Koden og nettressursen som er inkludert i komponentlisten, beskriver transceivermodulforbindelsene. Jeg bestemte meg for å lodde tilkoblingene i stedet for å bruke midlertidige tilkoblinger som i tidligere prosjekter. Siden jeg er nybegynner, isolerte jeg hver loddeskjøte med elektrisk tape (de var ikke pene).

Skjoldbrettets pins samsvarer direkte med Arduino -pinnene. Før jeg festet skjoldbrettet, koblet jeg bakken og 5 volt pinner til brettskinnene med ledning og loddetinn. Jeg loddet også komponentenes 5 volt og jordledninger til skjoldbrettets skinner, og festet deretter Arduino til slutt på skjermkortet.

Servoen er festet til 3 volt -pinnen for strøm og digital pin 2 for kommunikasjon.

** Merk: først etter å ha fullført denne bygningen la jeg merke til at Arduino -brettene mine ikke er identiske. Server -mottakeren min drives av 5 volt -skinnen på skjermkortet, mens klient -transceiveren drives av 3 volt -pin, selv om jeg har blitt antatt at en funksjon av adapterbrikken på transceiveren er å gi riktig spenning. Alt jeg kan si med sikkerhet er at koden som følger med konfigurasjonen som vises på bildene gir den beskrevne effekten.

Trinn 3: Serverkoder: Kopier og lim inn

// SERVERKODE/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Ikke brukt GND> GND VCC> 5V */// transceiver ledninger

#inkludere

// servobibliotek

#inkludere

// transceiverbibliotek

#define Servopin 2

// erklæring servo utgangspinne

ServoTimer2 serv;

// erklæring om servonavn

RH_NRF24 nrf24;

// erklæring om mottakerens navn

int timeOUT = 0;

// variabel for servo

int pulser = 90;

// variabel for å lagre pulser

ugyldig oppsett ()

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

Serial.begin (9600); // transceiver ting

hvis (! nrf24.init ())

Serial.println ("init mislyktes"); // seriell monitor ting hvis (! nrf24.setChannel (12)) // sett kanal til 125 Serial.println ("setChannel mislyktes"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF mislyktes"); // seriell monitor ting}

hulrom ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // seriell skjerm ting {Serial.print ("fikk forespørsel:"); pulser = strtol ((const char*) buf, NULL, 10); // data type endre ting

int prin = kart (pulser, 750, 2250, 0, 180); // endring av datatype

Serial.println (prin); serv.write (pulser); // får servo til å bevege seg}}

}

Trinn 4: Klientbrett

Klientstyret
Klientstyret

Klientkortet består av en mottakermodul og potensiometeret. Transceivermodulen er koblet på samme måte ** som serverkortet, med unntak av at den uten skjermkortet er koblet direkte til Arduino -kortpinnene.

Potensiometeret tar 5v, jordet, og er koblet til analog pin 2.

** Merk: Som nevnt i serverkort -trinnet er ikke mine Arduino -kort identiske. I dette tilfellet er mottakeren koblet til pinnen merket 3.3V, rett ved siden av 5V -pinnen, men igjen ser det ut til at alt fungerer bra.

Trinn 5: Klientkode: Kopier og lim inn

// KLIENTKODE/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> Ikke brukt GND> GND VCC> 5V */// transceiver ledninger

#inkludere

// transceiverbibliotek

int potpin = A2; // potensiometer deler

int val;

char tempChar [5];

String valString = ""; // endring av datatype

RH_NRF24 nrf24; // transceiver ting

ugyldig oppsett ()

{Serial.begin (9600); if (! nrf24.init ()) Serial.println ("init mislyktes"); // Standardinnstillinger etter init er 2,402 GHz (kanal 2), 2 Mbps, 0dBm hvis (! Nrf24.setChannel (12)) Serial.println ("setChannel mislyktes"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF mislyktes"); } // transceiver ting

void loop () {

val = analogRead (potpin); // potensiometer ting

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

valString = val; String str = (valString); str.toCharArray (tempChar, 5); // datatype endre ting nrf24.send (tempChar, sizeof (tempChar));

}

Trinn 6: En merknad om koden:

Koden inneholder noen begrensede feilsøkingsfunksjoner i form av tilbakemelding fra den serielle skjermen i Arduino -programvaregrensesnittet. Når du ser på den serielle skjermen fra SERVER -koden (ctrl + shift + M), bør du kunne se potensiometerets tilstand i form av et tall mellom 1 og 180.

Her er også biblioteket for det trådløse og servoen:

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

github.com/nabontra/ServoTimer2

Anbefalt: