Inhaltsverzeichnis:

Drahtlose Servosteuerung - Gunook
Drahtlose Servosteuerung - Gunook

Video: Drahtlose Servosteuerung - Gunook

Video: Drahtlose Servosteuerung - Gunook
Video: Как сделать руку робота? | Arduino | Беспроводная связь с перчаткой | nRF24L01 2024, November
Anonim
Drahtlose Servosteuerung
Drahtlose Servosteuerung
Drahtlose Servosteuerung
Drahtlose Servosteuerung

Dieses Projekt steuert die Drehung eines Servos drahtlos mittels eines Potentiometers (Knopf). Die Drehung ist auf 180 Grad beschränkt.

Schritt 1: Komponenten

Komponenten
Komponenten
Komponenten
Komponenten
Komponenten
Komponenten

Dieses Projekt besteht aus

  • 2 Arduino UNO-Controller-Boards mit USB-Anschlusskabel
  • 2 nRF24L01 – 2,4 GHz HF-Transceiver-Module (Hilfe zu diesen Modulen finden Sie unter
  • 2 Sockeladapterplatinen (Rucksackchips) für den nRF24L01
  • 1 optionales Arduino-kompatibles 328 ProtoShield Prototyp-Erweiterungsboard
  • 1 Servo
  • 1 analoges Potentiometer
  • Lötkolben und Lötzinn
  • Kabel
  • Spitzzange
  • Isolierfolie, ich habe Isolierband verwendet

Schritt 2: Serverplatine

Serverplatine
Serverplatine

Die Serverplatine besteht aus einem Transceiver-Modul, der Shield-Platine (die nur in eine Richtung direkt mit der Arduino-Platine verbunden ist) und dem Servo. Ich beschloss, das Schildbrett einzubeziehen, um das ungeschickte Steckbrett zu vermeiden und dem Projekt und dem insgesamt ordentlicheren Finish zu verleihen.

Der Code und die Web-Ressource, die in der Komponentenliste enthalten sind, beschreiben die Verbindungen des Transceiver-Moduls. Ich beschloss, die Verbindungen zu löten, anstatt wie in früheren Projekten temporäre Verbindungen zu verwenden. Da ich Anfänger bin, habe ich jede Lötstelle mit Isolierband isoliert (sie waren nicht schön).

Die Pins der Shield-Platine entsprechen direkt den Arduino-Pins. Vor dem Anbringen der Schirmplatine habe ich die Masse- und 5-Volt-Pins mit Draht und Lötzinn an die Platinenschienen angeschlossen. Ich lötete auch die 5-Volt- und Erdungsdrähte der Komponenten an die Shield-Board-Schienen und befestigte dann schließlich das Arduino an der Shield-Platine.

Das Servo wird an den 3-Volt-Pin für die Stromversorgung und den digitalen Pin 2 für die Kommunikation angeschlossen.

** Hinweis: Erst nach Abschluss dieses Builds habe ich bemerkt, dass meine Arduino-Boards nicht identisch sind. Mein Server-Transceiver wird über die 5-Volt-Schiene auf der Abschirmplatine mit Strom versorgt, während der Client-Transceiver über den 3-Volt-Pin mit Strom versorgt wird, obwohl ich glaube, dass eine Funktion des Adapterchips auf dem Transceiver darin besteht, die richtige Spannung bereitzustellen. Ich kann nur mit Sicherheit sagen, dass der mitgelieferte Code in Übereinstimmung mit der in den Bildern gezeigten Konfiguration den beschriebenen Effekt erzeugt.

Schritt 3: Server Coder: Kopieren und Einfügen

//SERVERCODE/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Nicht verwendet GND > GND VCC > 5V */ // Transceiver-Verkabelung

#enthalten

// Servobibliothek

#enthalten

// Transceiver-Bibliothek

#define Servopin 2

// Erklärung Servoausgangspin

ServoTimer2-Serv;

// Deklaration des Servonamens

RH_NRF24 nrf24;

//Angabe des Transceivernamens

int timeOUT = 0;

// variabel für Servo

int-Impulse = 90;

// variabel zum Speichern von Impulsen

Void-Setup ()

{ serv.attach (Servopin); // Servo-Zeug

Serial.begin (9600); // Transceiver-Zeug

if (!nrf24.init())

Serial.println ("Init fehlgeschlagen"); // serielles Monitormaterial if (! nrf24.setChannel (12)) // Kanal auf 125 setzen Serial.println ("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF failed"); // serieller Monitor Zeug}

Leere Schleife ()

{ if (nrf24.available()) { uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof(buf); if (nrf24.recv (buf, &len)) // serieller Monitor Zeug {Serial.print ("erhaltene Anfrage:"); Impulse = strtol((const char*)buf, NULL, 10); //Datentyp ändern Zeug

int prin = map(Impulse, 750, 2250, 0, 180); //Datentyp ändern Zeug

Serial.println (prin); serv.write (Impulse); // macht Servobewegung}}

}

Schritt 4: Kundenboard

Kunden-Board
Kunden-Board

Das Clientboard besteht aus einem Transceiver-Modul und dem Potentiometer. Das Transceiver-Modul ist genauso verdrahtet** wie die Serverplatine, mit der Ausnahme, dass es ohne die Abschirmplatine direkt mit den Pins der Arduino-Platine verdrahtet ist.

Das Potentiometer benötigt 5V, Masse und ist mit dem analogen Pin 2 verbunden.

** Hinweis: Wie im Serverboard-Schritt erwähnt, sind meine Arduino-Boards nicht identisch. In diesem Fall ist der Transceiver mit dem Pin mit der Bezeichnung 3.3V verbunden, direkt neben dem 5V-Pin, aber auch hier scheint alles gut zu funktionieren.

Schritt 5: Kundencode: Kopieren und Einfügen

// KUNDENCODE/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Nicht verwendet GND > GND VCC > 5V */ // Transceiver-Verkabelung

#enthalten

//Transceiver-Bibliothek

int Potpin = A2; // Potentiometerverzögerung

int-Wert;

char tempChar[5];

String valString = ""; //Datentyp ändern Zeug

RH_NRF24 nrf24; // Transceiver-Zeug

Void-Setup ()

{ Serial.begin (9600); if (!nrf24.init()) Serial.println("init fehlgeschlagen"); // Standardwerte nach Init sind 2,402 GHz (Kanal 2), 2Mbps, 0dBm if (!nrf24.setChannel(12)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF failed"); } // Transceiver-Zeug

Leere Schleife () {

val = analogRead (Potpin); // Potentiometer-Zeug

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

WertString = Wert; String str = (valString); str.toCharArray(tempChar, 5); //Datentyp ändern Sachen nrf24.send(tempChar, sizeof(tempChar));

}

Schritt 6: Eine Anmerkung zum Code:

Der Code enthält einige eingeschränkte Fehlerbehebungsfunktionen in Form von Rückmeldungen vom seriellen Monitor in der Arduino-Softwareschnittstelle. Wenn Sie den seriellen Monitor über den SERVER-Code (Strg + Umschalt + M) anzeigen, sollten Sie den Zustand des Potentiometers in Form einer Zahl zwischen 1 und 180 sehen können.

Hier ist auch die Bibliothek für das Wireless und das Servo:

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

github.com/nabontra/ServoTimer2

Empfohlen: