Joystick-styret 2,4 GHz RC-bil ved hjælp af Arduino

Prøv Vores Instrument Til At Fjerne Problemer





I dette indlæg skal vi konstruere en bilrobot, der kan styres ved hjælp af et joystick på 2,4 GHz trådløs kommunikationslink. Det foreslåede projekt er ikke kun lavet som en RC-bil, men du kan tilføje dine projekter såsom overvågningskamera osv. På bilen.



Oversigt

Projektet er opdelt i to dele fjernbetjeningen og modtageren.

Bilen eller basen, hvor vi placerer alle vores modtagerkomponenter, kan være trehjulstræk eller firehjulstræk.



Hvis du vil have mere stabilitet for basisbilen, eller hvis du vil køre bilen i ujævn overflade som f.eks. Udendørs, anbefales bilbase med 4 hjul.

Du kan også bruge 3-hjulstrækbaseret bil, som giver dig større mobilitet under drejning, men det kan give mindre stabilitet end 4-hjulstræk.

En bil med 4 hjul, men 2 motordrev også mulig.

Fjernbetjeningen kan være forsynet med 9V batteri og modtageren kan være forsynet med 12V, 1,3 AH forseglet blybatteri, som har mindre fodaftryk end 12V, 7AH batteri og også ideel til sådanne peripatetic applikationer.

2,4 GHz-kommunikationen mellem etableres ved hjælp af NRF24L01-modul, som kan transmittere signaler over 30 til 100 meter afhængigt af forhindringer mellem to NRF24L01-moduler.

Illustration af NRF24L01-modulet:

Det fungerer på 3.3V og 5V kan dræbe modulet, så der skal udvises forsigtighed, og det fungerer på SPI-kommunikationsprotokol. Stiftekonfigurationen findes i ovenstående billede.

Fjernbetjeningen:

Fjernbetjeningen består af Arduino (Arduino nano / pro-mini anbefales), NRF24L01-modul, et joystick og en batteristrømforsyning. Prøv at pakke dem i en lille skraldespand, som bliver lettere at håndtere.

Skematisk diagram for fjernbetjening:

Stikforbindelserne til NRF24L01-modulet og joysticket findes i diagrammet. Hvis du føler noget rod, se den givne stiftforbindelsestabel.

Ved at bevæge joysticket fremad (OP), baglæns (Ned), højre og venstre bevæger bilen sig i overensstemmelse hermed.

fjernbetjening joystick til bil

Bemærk, at alle ledningstilslutningerne er til venstre, dette er referencepunktet, og nu kan du flytte joysticket til flyt bilen .

Ved at trykke joysticket i Z-aksen kan du styre LED-lyset på bilen.

Program til fjernbetjeningen:

//--------------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 konkluderer fjernbetjeningen.

Lad os nu se på modtageren.

Modtagerkredsløbet placeres på basisbilen. Hvis du har nogen idé om at tilføje dit projekt på denne bevægelige base, skal du planlægge geometrien korrekt, så modtageren og dit projekt placeres, så du ikke løber tør for plads.

Modtageren består af Arduino, L298N dual H-bridge DC motor driver modul, hvid LED, som placeres foran bilen, NRF24L01 modul og 12V, 1.3AH batteri. Motorerne leveres muligvis med basisbil.

Skematisk diagram for modtageren:

Bemærk, at forbindelsen mellem Arduino-kortet og NRF24L01 IKKE er vist i ovenstående diagram for at undgå ledningsforvirring. Se fjernbetjeningens skema.

Arduino-kortet vil blive drevet af L298N-modul, det har indbygget 5V-regulator.

Den hvide LED kan placeres som hovedlys, eller du kan tilpasse denne pin efter dine behov ved at trykke på joysticket, pin nr. 7 bliver høj og ved at trykke på joysticket igen, bliver pin lavt.

Vær opmærksom på de venstre og højre motorer, der er specificeret i modtagerens skema.

Program til modtageren:

//------------------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 slutter modtageren.

Når bilen er færdig, skal du bare vende polaritetsmotoren, hvis bilen bevæger sig i den forkerte retning.

Hvis din basebil har 4 motorhjulstræk, skal du forbinde de venstre motorer parallelt med samme polaritet, gøre det samme for højre motorer og oprette forbindelse til L298N-driveren.

Hvis du har spørgsmål vedrørende denne joystick-styrede 2,4 GHz RC-bil ved hjælp af Arduino, er du velkommen til at udtrykke i kommentarsektionen, du kan muligvis modtage et hurtigt svar.




Forrige: L298N DC Motor Driver Module forklaret Næste: Simpelt digitalt vandflowmålerkredsløb ved hjælp af Arduino