Mașină RC controlată cu joystick de 2,4 GHz folosind Arduino

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





În acest post vom construi un robot auto care poate fi controlat folosind un joystick pe o legătură de comunicație fără fir de 2,4 GHz. Proiectul propus nu este realizat doar ca o mașină RC, dar puteți adăuga pe mașină proiecte precum camerele de supraveghere etc.



Prezentare generală

Proiectul este împărțit în două părți, telecomanda și receptorul.

Mașina sau baza, unde așezăm toate componentele receptorului, poate fi cu trei roți sau cu patru roți.



Dacă doriți mai multă stabilitate pentru mașina de bază sau dacă doriți să conduceți mașina pe suprafețe neuniforme, cum ar fi în aer liber, se recomandă baza mașinii cu 4 roți.

Puteți utiliza, de asemenea, mașina de bază cu 3 roți, care vă oferă o mobilitate mai mare în timpul virării, dar poate oferi o stabilitate mai mică decât tracțiunea cu 4 roți.

Este posibilă și o mașină cu 4 roți, dar cu 2 motoare.

Telecomanda poate fi alimentată cu baterie de 9V și receptorul poate fi alimentat cu baterie de plumb acid sigilată de 12V, 1,3 AH, care are o amprentă mai mică decât bateria de 12V, 7AH și, de asemenea, ideală pentru astfel de aplicații peripatetice.

Comunicația de 2,4 GHz între este stabilită utilizând modulul NRF24L01 care poate transmite semnale de peste 30 până la 100 de metri în funcție de obstacolele dintre două module NRF24L01.

Ilustrarea modulului NRF24L01:

Funcționează pe 3.3V și 5V poate distruge modulul, deci trebuie să aveți grijă și funcționează pe protocolul de comunicație SPI. Configurația pinului este furnizată în imaginea de mai sus.

Telecomanda:

Telecomanda este formată din Arduino (se recomandă Arduino nano / pro-mini), modulul NRF24L01, un joystick și o sursă de alimentare cu baterie. Încercați să le împachetați într-o cutie mică, care va fi mai ușor de manevrat.

Diagrama schematică pentru telecomandă:

Conexiunile pinilor pentru modulul și joystick-ul NRF24L01 sunt furnizate în diagramă, dacă aveți vreo confuzie, vă rugăm să consultați tabelul de conectare a pinului.

Prin deplasarea joystick-ului înainte (sus), invers (jos), dreapta și stânga, mașina se mișcă corespunzător.

joystick auto distanță

Vă rugăm să rețineți că toate conexiunile de cablu sunt în partea stângă, acesta este punctul de referință și acum puteți muta joystick-ul în mutați mașina .

Prin apăsarea joystick-ului în axa Z puteți controla lumina LED de pe mașină.

Program pentru telecomandă:

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

Asta încheie telecomanda.

Acum să aruncăm o privire la receptor.

Circuitul receptorului va fi amplasat pe mașina de bază. Dacă aveți vreo idee să adăugați proiectul pe această bază în mișcare, planificați geometria corect pentru plasarea receptorului și a proiectului, astfel încât să nu rămâneți fără spațiu.

Receptorul este format din Arduino, L298N dual H-bridge DC motor driver driver, LED alb care va fi plasat în fața mașinii, modul NRF24L01 și 12V, 1.3AH baterie. Motoarele ar putea veni cu mașina de bază.

Diagrama schematică pentru receptor:

Vă rugăm să rețineți că conexiunea dintre placa Arduino și NRF24L01 NU este prezentată în diagrama de mai sus pentru a evita confuzia cablurilor. Vă rugăm să consultați schema telecomenzii.

Placa Arduino va fi alimentată de modulul L298N pe care l-a încorporat în regulatorul de 5V.

LED-ul alb poate fi amplasat ca lumină frontală sau puteți personaliza acest pin în funcție de nevoile dvs., apăsând joystick-ul, pinul # 7 se înalță și apăsând din nou joystick-ul, acesta va reduce pinul.

Vă rugăm să acordați atenție motoarelor laterale stânga și dreapta specificate în diagrama schematică a receptorului.

Program pentru receptor:

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

Asta încheie receptorul.

După finalizarea proiectului, dacă mașina se mișcă în direcția greșită, inversați doar motorul de polaritate.

Dacă mașina dvs. de bază are 4 motoare cu tracțiune, conectați motoarele din stânga în paralel cu aceeași polaritate, faceți același lucru pentru motoarele din partea dreaptă și conectați-vă la driverul L298N.

Dacă aveți vreo întrebare cu privire la această mașină RC controlată de joystick de 2,4 GHz folosind Arduino, nu ezitați să exprimați în secțiunea de comentarii, este posibil să primiți un răspuns rapid.




Precedent: Modulul driverului de motor DC L298N a fost explicat În continuare: Circuit digital de debitmetru de apă simplu folosind Arduino