Indholdsfortegnelse:

Trådløs servokontrol: 6 trin
Trådløs servokontrol: 6 trin

Video: Trådløs servokontrol: 6 trin

Video: Trådløs servokontrol: 6 trin
Video: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, November
Anonim
Trådløs servokontrol
Trådløs servokontrol
Trådløs servokontrol
Trådløs servokontrol

Dette projekt styrer rotationen af en servo trådløst ved hjælp af et potentiometer (knap). Rotationen er begrænset til 180 grader.

Trin 1: Komponenter

Komponenter
Komponenter
Komponenter
Komponenter
Komponenter
Komponenter

Dette projekt består af

  • 2 Arduino UNO controller boards med USB stik kabel
  • 2 nRF24L01-2,4 GHz RF transceiver moduler (for hjælp med disse moduler henvises til
  • 2 adapterkort (stik til rygsække) til nRF24L01
  • 1 valgfrit Arduino -kompatibelt 328 ProtoShield Prototype -udvidelseskort
  • 1 servo
  • 1 analogt potentiometer
  • loddejern og lodde
  • tråd
  • nåletænger
  • isolerende indpakning, brugte jeg elektrisk tape

Trin 2: Serverkort

Serverkort
Serverkort

Serverkortet består af et transceivermodul, afskærmningskortet (som kun kan forbindes direkte til Arduino -kortet) og servoen. Jeg besluttede at inkludere skjoldbrættet for at undgå det klodsede brødbræt og give projektet og den overordnede pænere finish.

Koden og webressourcen på komponentlisten beskriver transceivermodulforbindelserne. Jeg besluttede at lodde forbindelserne i stedet for at bruge midlertidige forbindelser som i tidligere projekter. Da jeg er nybegynder, isolerede jeg hver loddemuffe med elektrisk tape (de var ikke smukke).

Skærmpladestifterne svarer direkte til Arduino -benene. Inden jeg satte skærmkortet på, tilsluttede jeg jorden og 5 volt stifterne til brædderne med tråd og lodning. Jeg lodde også komponenternes 5 volt og jordledninger til skjoldbrettets skinner, og slutteligt sluttede jeg Arduino til skjoldbrættet.

Servoen er fastgjort til 3 volt pin til strøm og digital pin 2 til kommunikation.

** Bemærk: først efter at have afsluttet denne build, bemærkede jeg, at mine Arduino -tavler ikke er identiske. Min server transceiver drives af 5 volts skinnen på skjoldkortet, mens klient transceiveren drives af 3 volt pin, selvom jeg er blevet ført til at tro, at en funktion af adapterchippen på transceiveren er at levere den korrekte spænding. Alt jeg kan sige med sikkerhed er, at den leverede kode matchede den konfiguration, der vises på billederne, frembringer den beskrevne effekt.

Trin 3: Serverkoder: Kopier og indsæt

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

#omfatte

// servobibliotek

#omfatte

// transceiver bibliotek

#define Servopin 2

// erklæring servo output pin

ServoTimer2 serv;

// erklæring om servonavn

RH_NRF24 nrf24;

// erklæring om transceivernavn

int timeOUT = 0;

// variabel til servo

int pulser = 90;

// variabel til lagring af impulser

ugyldig opsætning ()

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

Serial.begin (9600); // transceiver ting

hvis (! nrf24.init ())

Serial.println ("init mislykkedes"); // serielle monitor -ting, hvis (! nrf24.setChannel (12)) // indstil kanal til 125 Serial.println ("setChannel mislykkedes"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF mislykkedes"); // seriel monitor ting}

hulrum ()

{if (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); if (nrf24.recv (buf, & len)) // seriel monitor -ting {Serial.print ("fik forespørgsel:"); pulser = strtol ((const char*) buf, NULL, 10); // datatype ændre ting

int prin = map (pulser, 750, 2250, 0, 180); // datatype ændre ting

Serial.println (prin); serv.write (impulser); // får servo til at bevæge sig}}

}

Trin 4: Client Board

Kundebestyrelse
Kundebestyrelse

Klientkortet består af et transceivermodul og potentiometeret. Transceivermodulet er forbundet på samme måde ** som serverkortet med den undtagelse, at det uden afskærmningskortet er forbundet direkte til Arduino -kortets ben.

Potentiometeret tager 5v, jordet og er forbundet til analog pin 2.

** Bemærk: Som nævnt i serverkortets trin er mine Arduino -kort ikke identiske. I dette tilfælde er transceiveren forbundet til stiften mærket 3,3V, direkte ved siden af 5V -stiften, men igen ser alt ud til at fungere fint.

Trin 5: Klientkode: Kopier og indsæt

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

#omfatte

// transceiver bibliotek

int potpin = A2; // potentiometer dele

int val;

char tempChar [5];

String valString = ""; // datatype ændre ting

RH_NRF24 nrf24; // transceiver ting

ugyldig opsætning ()

{Serial.begin (9600); hvis (! nrf24.init ()) Serial.println ("init mislykkedes"); // Standardværdier efter init er 2.402 GHz (kanal 2), 2Mbps, 0dBm hvis (! Nrf24.setChannel (12)) Serial.println ("setChannel mislykkedes"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF mislykkedes"); } // transceiver -ting

void loop () {

val = analogRead (potpin); // potentiometer ting

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

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

}

Trin 6: En note om koden:

Koden indeholder en begrænset fejlfindingsfunktion i form af feedback fra den serielle skærm i Arduino -softwaregrænsefladen. Når du ser den serielle skærm fra SERVER -koden (ctrl + shift + M), skal du kunne se potentiometerets tilstand i form af et tal mellem 1 og 180.

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

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

github.com/nabontra/ServoTimer2

Anbefalede: