Joystickgesteuertes 2,4-GHz-RC-Car mit Arduino

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





In diesem Beitrag werden wir einen Autoroboter bauen, der mit einem Joystick auf einer drahtlosen 2,4-GHz-Kommunikationsverbindung gesteuert werden kann. Das vorgeschlagene Projekt wird nicht nur als RC-Car erstellt, sondern Sie können auch Ihre Projekte wie Überwachungskameras usw. zum Auto hinzufügen.



Überblick

Das Projekt ist in zwei Teile unterteilt: die Fernbedienung und den Empfänger.

Das Auto oder die Basis, in der wir alle unsere Empfängerkomponenten platzieren, kann Dreirad- oder Allradantrieb sein.



Wenn Sie mehr Stabilität für das Basisauto wünschen oder wenn Sie das Auto auf unebenem Untergrund wie im Freien fahren möchten, wird eine Basis mit 4 Rädern empfohlen.

Sie können auch ein Basisauto mit Allradantrieb verwenden, das Ihnen beim Abbiegen mehr Mobilität bietet, jedoch möglicherweise weniger Stabilität bietet als ein Allradantrieb.

Ein Auto mit 4 Rädern, aber 2 Motorantrieb auch machbar.

Die Fernbedienung kann mit einer 9-V-Batterie betrieben werden, und der Empfänger kann mit einer versiegelten 12-V-Blei-Säure-Batterie mit 1,3 AH betrieben werden, die eine geringere Stellfläche als eine 12-V-, 7-Ah-Batterie hat und auch für solche peripatetischen Anwendungen ideal ist.

Die 2,4-GHz-Kommunikation zwischen wird über das NRF24L01-Modul hergestellt, das je nach Hindernissen zwischen zwei NRF24L01-Modulen Signale über 30 bis 100 Meter übertragen kann.

Abbildung des NRF24L01-Moduls:

Es funktioniert mit 3,3 V und 5 V können das Modul töten, daher ist Vorsicht geboten und es funktioniert mit dem SPI-Kommunikationsprotokoll. Die Pin-Konfiguration ist im obigen Bild dargestellt.

Die Fernbedienung:

Die Fernbedienung besteht aus Arduino (Arduino Nano / Pro-Mini wird empfohlen), dem NRF24L01-Modul, einem Joystick und einem Batteriestromnetzteil. Versuchen Sie, sie in eine kleine Junk-Box zu packen, die einfacher zu handhaben ist.

Schematische Darstellung für Fernbedienung:

Die Pin-Verbindungen für das NRF24L01-Modul und den Joystick sind in der Abbildung dargestellt. Wenn Sie ein Durcheinander spüren, lesen Sie bitte die angegebene Pin-Verbindungstabelle.

Durch Bewegen des Joysticks vorwärts (UP), rückwärts (Down), rechts und links bewegt sich das Auto entsprechend.

Remote-Auto-Joystick

Bitte beachten Sie, dass sich alle Kabelverbindungen auf der linken Seite befinden. Dies ist der Referenzpunkt. Jetzt können Sie den Joystick auf bewegen bewege das Auto .

Durch Drücken des Joysticks in der Z-Achse können Sie das LED-Licht am Auto steuern.

Programm für die Fernbedienung:

//--------------Program Developed by R.Girish---------------//
#include
#include
#include
int X_axis = A0
int Y_axis = A1
int Z_axis = 2
int x = 0
int y = 0
int z = 0
RF24 radio(9,10)
const byte address[6] = '00001'
const char var1[32] = 'up'
const char var2[32] = 'down'
const char var3[32] = 'left'
const char var4[32] = 'right'
const char var5[32] = 'ON'
const char var6[32] = 'OFF'
boolean light = true
int thresholdUP = 460
int thresholdDOWN = 560
int thresholdLEFT = 460
int thresholdRIGHT = 560
void setup()
{
radio.begin()
Serial.begin(9600)
pinMode(X_axis, INPUT)
pinMode(Y_axis, INPUT)
pinMode(Z_axis, INPUT)
digitalWrite(Z_axis, HIGH)
radio.openWritingPipe(address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
}
void loop()
{
x = analogRead(X_axis)
y = analogRead(Y_axis)
z = digitalRead(Z_axis)
if(y <= thresholdUP)
{
radio.write(&var1, sizeof(var1))
}
if(y >= thresholdDOWN)
{
radio.write(&var2, sizeof(var2))
}
if(x <= thresholdLEFT)
{
radio.write(&var3, sizeof(var3))
}
if(x >= thresholdRIGHT)
{
radio.write(&var4, sizeof(var4))
}
if(z == LOW)
{
if(light == true)
{
radio.write(&var5, sizeof(var5))
light = false
delay(200)
}
else
{
radio.write(&var6, sizeof(var6))
light = true
delay(200)
}
}
}
//--------------Program Developed by R.Girish---------------//

Damit ist die Fernbedienung abgeschlossen.

Schauen wir uns jetzt den Empfänger an.

Die Empfängerschaltung wird auf dem Basiswagen platziert. Wenn Sie eine Idee haben, Ihr Projekt auf dieser beweglichen Basis hinzuzufügen, planen Sie die Geometrie richtig, um den Empfänger und Ihr Projekt so zu platzieren, dass Ihnen nicht der Platz ausgeht.

Der Empfänger besteht aus Arduino, einem Doppel-H-Brücken-Gleichstrommotortreibermodul L298N, einer weißen LED, die vor dem Fahrzeug angebracht wird, einem NRF24L01-Modul und einer 12-V-1,3-Ah-Batterie. Die Motoren könnten mit Basisauto kommen.

Schematische Darstellung für Empfänger:

Bitte beachten Sie, dass die Verbindung zwischen der Arduino-Karte und NRF24L01 im obigen Diagramm NICHT dargestellt ist, um Verwechslungen der Verkabelung zu vermeiden. Bitte beziehen Sie sich auf den Schaltplan der Fernbedienung.

Das Arduino-Board wird von einem L298N-Modul mit integriertem 5-V-Regler gespeist.

Die weiße LED kann als Scheinwerfer platziert werden oder Sie können diesen Stift an Ihre Bedürfnisse anpassen. Durch Drücken des Joysticks wird der Stift Nr. 7 hoch und durch erneutes Drücken des Joysticks wird der Stift niedrig.

Bitte achten Sie auf die im Schaltplan des Empfängers angegebenen linken und rechten Seitenmotoren.

Programm für den Empfänger:

//------------------Program Developed by R.Girish---------------//
#include
#include
#include
RF24 radio(9,10)
const byte address[6] = '00001'
const char var1[32] = 'up'
const char var2[32] = 'down'
const char var3[32] = 'left'
const char var4[32] = 'right'
const char var5[32] = 'ON'
const char var6[32] = 'OFF'
char input[32] = ''
const int output1 = 2
const int output2 = 3
const int output3 = 4
const int output4 = 5
const int light = 7
void setup()
{
Serial.begin(9600)
radio.begin()
radio.openReadingPipe(0, address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
pinMode(output1, OUTPUT)
pinMode(output2, OUTPUT)
pinMode(output3, OUTPUT)
pinMode(output4, OUTPUT)
pinMode(light, OUTPUT)
digitalWrite(output1, LOW)
digitalWrite(output2, LOW)
digitalWrite(output3, LOW)
digitalWrite(output4, LOW)
digitalWrite(light, LOW)
}
void loop()
{
while(!radio.available())
{
digitalWrite(output1, LOW)
digitalWrite(output2, LOW)
digitalWrite(output3, LOW)
digitalWrite(output4, LOW)
}
radio.read(&input, sizeof(input))
if((strcmp(input,var1) == 0))
{
digitalWrite(output1, HIGH)
digitalWrite(output2, LOW)
digitalWrite(output3, HIGH)
digitalWrite(output4, LOW)
delay(10)
}
else if((strcmp(input,var2) == 0))
{
digitalWrite(output1, LOW)
digitalWrite(output2, HIGH)
digitalWrite(output3, LOW)
digitalWrite(output4, HIGH)
delay(10)
}
else if((strcmp(input,var3) == 0))
{
digitalWrite(output3, HIGH)
digitalWrite(output4, LOW)
delay(10)
}
else if((strcmp(input,var4) == 0))
{
digitalWrite(output1, HIGH)
digitalWrite(output2, LOW)
delay(10)
}
else if((strcmp(input,var5) == 0))
{
digitalWrite(light, HIGH)
}
else if((strcmp(input,var6) == 0))
{
digitalWrite(light, LOW)
}
}
//------------------Program Developed by R.Girish---------------//

Damit ist der Empfänger fertig.

Wenn sich das Auto nach Abschluss des Projekts in die falsche Richtung bewegt, kehren Sie einfach den Polaritätsmotor um.

Wenn Ihr Basisauto einen Allradantrieb mit 4 Motoren hat, schließen Sie die linken Motoren parallel mit derselben Polarität an, machen Sie dasselbe für Motoren auf der rechten Seite und schließen Sie sie an den L298N-Treiber an.

Wenn Sie Fragen zu diesem Joystick-gesteuerten 2,4-GHz-RC-Auto mit Arduino haben, können Sie diese gerne im Kommentarbereich ausdrücken. Möglicherweise erhalten Sie eine schnelle Antwort.




Zurück: L298N DC-Motortreibermodul erklärt Weiter: Einfacher digitaler Wasserdurchflussmesserkreislauf mit Arduino