Joystickstyrd 2,4 GHz RC-bil med Arduino

Prova Vårt Instrument För Att Eliminera Problem





I det här inlägget ska vi konstruera en bilrobot som kan styras med en joystick på 2,4 GHz trådlös kommunikationslänk. Det föreslagna projektet är inte bara gjort som en RC-bil utan du kan lägga till dina projekt som övervakningskamera etc. på bilen.



Översikt

Projektet är uppdelat i två delar på fjärrkontrollen och mottagaren.

Bilen eller basen, där vi placerar alla våra mottagarkomponenter kan vara trehjulsdrift eller fyrhjulsdrift.



Om du vill ha mer stabilitet för basbilen eller om du vill köra bilen i ojämn yta som utomhus, rekommenderas bilbas med 4 hjul.

Du kan också använda trehjulsdriven basbil som ger dig större rörlighet när du svänger, men det kan ge mindre stabilitet än fyrhjulsdrift.

En bil med 4 hjul men, två motorer också möjliga.

Fjärrkontrollen kan drivas med 9V batteri och mottagaren kan drivas med 12V, 1,3 AH förseglat blybatteri, som har mindre fotavtryck än 12V, 7AH batteri och också perfekt för sådana peripatiska applikationer.

2,4 GHz-kommunikationen mellan upprättas med hjälp av NRF24L01-modulen som kan sända signaler över 30 till 100 meter beroende på hinder mellan två NRF24L01-moduler.

Illustration av NRF24L01-modulen:

Det fungerar på 3.3V och 5V kan döda modulen så måste man vara försiktig och det fungerar på SPI-kommunikationsprotokoll. Stiftkonfigurationen finns i bilden ovan.

Fjärrkontrollen:

Fjärrkontrollen består av Arduino (Arduino nano / pro-mini rekommenderas), NRF24L01-modul, en joystick och en batteriströmförsörjning. Försök att packa dem i en liten skräpbox, som blir lättare att hantera.

Schematiskt diagram för fjärrkontroll:

Stiftanslutningarna för NRF24L01-modulen och joysticken finns i diagrammet. Om du känner någon röran, se den angivna stiftanslutningstabellen.

Genom att flytta joysticken framåt (UPP), bakåt (nedåt), höger och vänster, rör sig bilen därefter.

fjärrstyrd joystick

Observera att alla trådanslutningar är på vänster sida, detta är referenspunkten och nu kan du flytta joysticken till flytta bilen .

Genom att trycka joysticken i Z-axeln kan du styra LED-lampan på bilen.

Program för fjärrkontrollen:

//--------------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---------------//

Det avslutar fjärrkontrollen.

Låt oss nu titta på mottagaren.

Mottagarkretsen kommer att placeras på basbilen. Om du har någon idé att lägga till ditt projekt på den här rörliga basen, planera geometrin ordentligt för att placera mottagaren och ditt projekt så att du inte får slut på rummet.

Mottagaren består av Arduino, L298N dual H-bridge DC motor driver module, vit LED som kommer att placeras framför bilen, NRF24L01-modul och 12V, 1.3AH batteri. Motorerna kan komma med basbil.

Schematiskt diagram för mottagare:

Observera att anslutningen mellan Arduino-kortet och NRF24L01 INTE visas i ovanstående diagram för att undvika kabelförvirring. Se fjärrkontrollens schema.

Arduino-kortet drivs av en L298N-modul som den har inbyggt 5V-regulator.

Den vita lysdioden kan placeras som strålkastare eller så kan du anpassa denna stift efter dina behov genom att trycka på joysticken, stift nr 7 blir högt och att trycka på joysticken igen gör att stiftet blir lågt.

Var uppmärksam på de vänstra och högra motorerna som anges i mottagarens schematiska diagram.

Program för mottagaren:

//------------------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---------------//

Det avslutar mottagaren.

Efter att ha slutfört projektet, om bilen rör sig i fel riktning, vänd bara polaritetsmotorn.

Om din basbil har 4 motorhjulsdrift, anslut de vänstra motorerna parallellt med samma polaritet, gör samma sak för högermotorer och anslut till L298N-drivrutinen.

Om du har några frågor angående denna joystickstyrda 2,4 GHz RC-bil som använder Arduino, är du välkommen att uttrycka i kommentarsektionen, du kan få ett snabbt svar.




Tidigare: L298N DC Motor Driver Module Explained Nästa: Enkel digital vattenflödesmätarkrets med Arduino