Styrespak kontrollert 2,4 GHz RC bil ved hjelp av Arduino

Prøv Instrumentet Vårt For Å Eliminere Problemer





I dette innlegget skal vi konstruere en bilrobot som kan styres ved hjelp av en joystick på 2,4 GHz trådløs kommunikasjonslink. Det foreslåtte prosjektet er ikke bare laget som en RC-bil, men du kan legge til prosjekter som overvåkingskamera etc. på bilen.



Oversikt

Prosjektet er delt inn i to deler fjernkontrollen og mottakeren.

Bilen eller basen, der vi plasserer alle mottakerkomponentene våre, kan være trehjulsdrift eller firehjulsdrift.



Hvis du vil ha mer stabilitet for basebilen, eller hvis du vil kjøre bilen i ujevnt underlag som utendørs, anbefales bilbase med 4 hjul.

Du kan også bruke trehjulsdrevet basebil som gir deg større mobilitet mens du svinger, men det kan gi mindre stabilitet enn firehjulsdrift.

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

Fjernkontrollen kan drives av 9V batteri og mottakeren kan drives av 12V, 1,3 AH forseglet blybatteri, som har mindre fotavtrykk enn 12V, 7AH batteri og også ideell for slike peripatetic applikasjoner.

2,4 GHz-kommunikasjonen mellom etableres ved hjelp av NRF24L01-modulen som kan overføre signaler over 30 til 100 meter, avhengig av hindringer mellom to NRF24L01-moduler.

Illustrasjon av NRF24L01-modulen:

Det fungerer på 3.3V og 5V kan drepe modulen, så det må utvises forsiktighet og det fungerer på SPI-kommunikasjonsprotokoll. Pinnekonfigurasjonen er gitt i bildet ovenfor.

Fjernkontrollen:

Fjernkontrollen består av Arduino (Arduino nano / pro-mini anbefales), NRF24L01-modul, styrespak og batteristrøm. Prøv å pakke dem i en liten søppelboks, som blir lettere å håndtere.

Skjematisk diagram for fjernkontroll:

Pin-tilkoblingene for NRF24L01-modulen og styrespaken er gitt i diagrammet. Hvis du føler noe rot, vennligst se den gitte pin-tilkoblingstabellen.

Ved å bevege styrespaken fremover (OPP), bakover (Ned), høyre og venstre, beveger bilen seg tilsvarende.

ekstern joystick

Vær oppmerksom på at alle ledningstilkoblingene er på venstre side, dette er referansepunktet, og nå kan du flytte styrespaken til flytt bilen .

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

Program for fjernkontrollen:

//--------------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 avslutter fjernkontrollen.

La oss nå se på mottakeren.

Mottakerkretsen vil bli plassert på basebilen. Hvis du har noen ide om å legge til prosjektet ditt på denne bevegelige basen, planlegg geometrien riktig for å plassere mottakeren og prosjektet slik at du ikke går tom for rom.

Mottakeren består av Arduino, L298N dual H-bridge DC motor driver module, hvit LED som skal plasseres foran bilen, NRF24L01 modul og 12V, 1.3AH batteri. Motorene kan komme med basebil.

Skjematisk diagram for mottaker:

Vær oppmerksom på at forbindelsen mellom Arduino-kortet og NRF24L01 IKKE er vist i diagrammet ovenfor for å unngå ledningsforvirring. Se skjematisk på fjernkontrollen.

Arduino-kortet vil bli drevet av L298N-modulen det har innebygd 5V regulator.

Den hvite lysdioden kan plasseres som hodelykt, eller du kan tilpasse denne pinnen etter dine behov, ved å trykke styrespaken, pinnen nr. 7 blir høy og ved å trykke på styrespaken igjen, blir pinnen lav.

Vær oppmerksom på motorene på venstre og høyre side spesifisert i mottakerens skjematiske diagram.

Program for mottakeren:

//------------------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 avslutter mottakeren.

Etter at prosjektet er fullført, må du bare snu polaritetsmotoren hvis bilen beveger seg i feil retning.

Hvis basebilen din har 4 motorhjulstrekk, kobler du de venstre motorene parallelt med samme polaritet, gjør det samme for høyre motor og kobler til L298N-driveren.

Hvis du har spørsmål angående denne joystick-kontrollerte 2,4 GHz RC-bilen som bruker Arduino, kan du gjerne uttrykke i kommentarseksjonen, du kan få et raskt svar.




Forrige: L298N DC Motor Driver Module Explained Neste: Enkel digital vannmengdemålerkrets ved hjelp av Arduino