Inhoudsopgave:

Draadloze servobesturing: 6 stappen
Draadloze servobesturing: 6 stappen

Video: Draadloze servobesturing: 6 stappen

Video: Draadloze servobesturing: 6 stappen
Video: Digitale TV op glasvezel aansluiten in 6 stappen 2024, November
Anonim
Draadloze servobesturing
Draadloze servobesturing
Draadloze servobesturing
Draadloze servobesturing

Dit project regelt de rotatie van een servo draadloos door middel van een potentiometer (knop). De rotatie is beperkt tot 180 graden.

Stap 1: Componenten

Componenten
Componenten
Componenten
Componenten
Componenten
Componenten

Dit project bestaat uit:

  • 2 Arduino UNO-controllerkaarten met USB-aansluitkabel
  • 2 nRF24L01 – 2,4 GHz RF-zendontvangermodules (raadpleeg voor hulp bij deze modules
  • 2 socket adapter boards (rugzak chips) voor de nRF24L01
  • 1 optionele Arduino-compatibele 328 ProtoShield Prototype-uitbreidingskaart
  • 1 servo
  • 1 analoge potentiometer
  • soldeerbout en soldeer
  • draad
  • punttang
  • isolerende wrap, ik gebruikte elektrische tape

Stap 2: Serverbord

Serverbord
Serverbord

Het serverbord bestaat uit een zendontvangermodule, het schildbord (dat maar op één manier rechtstreeks op het Arduino-bord kan worden aangesloten) en de servo. Ik besloot om het schildbord op te nemen om het onhandige breadboard te vermijden en het project en de algehele nettere afwerking te geven.

De code en webresource in de componentenlijst geven details over de verbindingen van de zendontvangermodule. Ik besloot de verbindingen te solderen in plaats van tijdelijke verbindingen te gebruiken zoals in eerdere projecten. Omdat ik een beginner ben, heb ik elke soldeerverbinding geïsoleerd met isolatietape (ze waren niet mooi).

De pinnen van het schildbord komen rechtstreeks overeen met de Arduino-pinnen. Voordat ik het schildbord bevestigde, heb ik de grond- en 5volt-pinnen op de bordrails aangesloten met draad en soldeer. Ik heb ook de 5 volt- en aardedraden van de componenten aan de schildbordrails gesoldeerd en vervolgens de Arduino op het schildbord bevestigd.

De servo is bevestigd aan de 3volt-pin voor stroom en digitale pin 2 voor communicatie.

** Let op: pas na het voltooien van deze build merkte ik dat mijn Arduino-boards niet identiek zijn. Mijn servertransceiver wordt gevoed door de 5 volt-rail op het schildbord, terwijl de client-transceiver wordt gevoed door de 3 volt-pin, hoewel ik ben gaan geloven dat een functie van de adapterchip op de transceiver is om de juiste spanning te leveren. Het enige dat ik met zekerheid kan zeggen, is dat de verstrekte code die overeenkomt met de configuratie die in de afbeeldingen wordt getoond, het beschreven effect produceert.

Stap 3: Server Coder: kopiëren en plakken

//SERVER CODE/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Niet gebruikt GND > GND VCC > 5V */ //transceiverbedrading

#erbij betrekken

// servobibliotheek

#erbij betrekken

// zendontvangerbibliotheek

#define Servopin 2

// verklaring servo-uitgangspin

ServoTimer2-server;

// verklaring van servonaam

RH_NRF24 nrf24;

// verklaring van de naam van de zendontvanger

int timeOUT = 0;

//variabele voor servo

int-pulsen = 90;

//variabele om pulsen op te slaan

ongeldige setup()

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

Serieel.begin(9600); //zendontvanger spullen

als (!nrf24.init())

Serial.println ("init mislukt"); //serial monitor stuff if (!nrf24.setChannel (12)) // zet kanaal op 125 Serial.println ("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println ("setRF mislukt"); //seriële monitor dingen}

lege 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("kreeg verzoek: "); pulsen = strtol((const char*)buf, NULL, 10); // gegevenstype wijzigen dingen

int prin = kaart (pulsen, 750, 2250, 0, 180); // gegevenstype wijzigen dingen

Serieel.println(prin); serv.write(pulsen); // laat servo bewegen}}

}

Stap 4: Klantenbord

Klantenraad
Klantenraad

Het clientboard bestaat uit een transceivermodule en de potentiometer. De zendontvangermodule is op dezelfde manier** bedraad als het serverbord, behalve dat het zonder het schildbord rechtstreeks op de Arduino-bordpinnen wordt aangesloten.

De potentiometer neemt 5v, aarde, en is verbonden met analoge pin 2.

**Opmerking: zoals vermeld in de stap van het serverbord, zijn mijn Arduino-borden niet identiek. In dit geval is de zendontvanger aangesloten op de pin met het label 3.3V, direct naast de 5V-pin, maar nogmaals, alles lijkt goed te werken.

Stap 5: Klantcode: kopiëren en plakken

// CLIENT CODE/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Niet gebruikt GND > GND VCC > 5V */ //transceiverbedrading

#erbij betrekken

// zendontvangerbibliotheek

int potpin = A2; // potentiometer vertraging

int val;

char tempChar[5];

Tekenreeks valString = ""; // gegevenstype wijzigen dingen

RH_NRF24 nrf24; //zendontvanger spullen

ongeldige setup()

{ Serieel.begin(9600); if (!nrf24.init()) Serial.println("init mislukt"); // Standaardwaarden na init zijn 2,402 GHz (kanaal 2), 2Mbps, 0dBm if (!nrf24.setChannel (12)) Serial.println ("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println ("setRF mislukt"); } // zendontvanger dingen

lege lus() {

val = analoog lezen (potpin); //potentiometer spul

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

valString = val; String str = (valString); str.naarCharArray(tempChar, 5); //datatype verander dingen nrf24.send(tempChar, sizeof(tempChar));

}

Stap 6: Een opmerking over de code:

De code bevat een beperkte functionaliteit voor probleemoplossing in de vorm van feedback van de seriële monitor in de Arduino-software-interface. Wanneer u de seriële monitor bekijkt vanuit de SERVER-code (ctrl + shift + M), zou u de status van de potentiometer moeten kunnen zien in de vorm van een getal tussen 1 en 180.

Hier is ook de bibliotheek voor de draadloze en de servo:

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

github.com/nabontra/ServoTimer2

Aanbevolen: