Innholdsfortegnelse:

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

Video: Trådløs servokontroll: 6 trinn

Video: Trådløs servokontroll: 6 trinn
Video: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, November
Anonim
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: