Inhoudsopgave:
- Stap 1: Componenten
- Stap 2: Serverbord
- Stap 3: Server Coder: kopiëren en plakken
- Stap 4: Klantenbord
- Stap 5: Klantcode: kopiëren en plakken
- Stap 6: Een opmerking over de code:
Video: Draadloze servobesturing: 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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
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
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
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:
Arduino servobesturing: 6 stappen
Arduino Servo Control: Servomotoren hebben drie draden: voeding, aarde en signaal. De stroomdraad is meestal rood en moet worden aangesloten op de 5V-pin op het Arduino-bord. De aardingsdraad is meestal zwart of bruin en moet worden aangesloten op een aardingspin op de Ardui
Draadloze Arduino-robot met HC12 draadloze module - Ajarnpa
Draadloze Arduino-robot met behulp van HC12 draadloze module: Hey jongens, welkom terug. In mijn vorige bericht heb ik uitgelegd wat een H-brugcircuit is, L293D motorstuurprogramma IC, meeliftend L293D motorstuurprogramma IC voor het aansturen van krachtige motorstuurprogramma's en hoe u uw eigen L293D motorstuurprogrammabord kunt ontwerpen en maken
Hexapod Arduino Pololu Maestro servobesturing - Ajarnpa
Hexapod Arduino Pololu Maestro Servo Controll: Nach dem mein erster Versuch mit einem Hexapod, Daran gescheitert war das die servo's zu schwach waren jetzt ein neuer Versuch mit mit 10Kg Servos aus HK. Ausserdem habe ich mich für ein neuen Sevocontroller von Pololu entschieden
Servobesturing met NodeMCU en Blynk - in IOT-platform: 3 stappen
Servobesturing met NodeMCU en Blynk | in IOT Platform: in deze tutorial kun je je servo besturen met de Blynk-app in IOT Platform
Hack een draadloze deurbel in een draadloze alarmschakelaar of aan/uit-schakelaar - Ajarnpa
Hack een draadloze deurbel in een draadloze alarmschakelaar of aan / uit-schakelaar: ik heb onlangs een alarmsysteem gebouwd en in mijn huis geïnstalleerd. Ik gebruikte magnetische schakelaars op de deuren en bekabelde ze via de zolder. De ramen waren een ander verhaal en ze bedraden was geen optie. Ik had een draadloze oplossing nodig en dit is