Joystick vezérelt 2,4 GHz-es RC autó az Arduino használatával

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Ebben a bejegyzésben egy autórobotot fogunk építeni, amelyet egy joystick segítségével lehet irányítani 2,4 GHz-es vezeték nélküli kommunikációs kapcsolaton. A javasolt projekt nem csak RC-ként készül, de hozzáadhatja projektjeit, például a térfigyelő kamerát stb.



Áttekintés

A projekt a távvezérlő és a vevő két részre oszlik.

Az autó vagy az alap, ahová az összes vevőegységünket elhelyezzük, lehet három vagy négykerék meghajtású.



Ha nagyobb stabilitást szeretne az alapkocsi számára, vagy ha egyenetlen felületen, például a szabadban akarja vezetni az autót, akkor ajánlott a 4 kerekű autóalap.

Használhat háromkerék-meghajtású alapkocsit is, amelyek nagyobb mozgékonyságot biztosítanak kanyarodás közben, de kevésbé stabil lehet, mint a négykerék-meghajtás.

4 kerekű, de 2 motoros hajtású autó is megvalósítható.

A távirányítót 9 V-os, a vevőt pedig 12 V-os, 1,3 AH-os zárt ólom-savas akkumulátorral lehet ellátni, amelynek kisebb a mérete, mint a 12 V-os, 7 AH-os elemnek, és ideális az ilyen peripetetikus alkalmazásokhoz is.

A 2,4 GHz közötti kommunikációt az NRF24L01 modul segítségével hozzák létre, amely a két NRF24L01 modul közötti akadályoktól függően 30 és 100 méter közötti távolságot képes továbbítani.

Az NRF24L01 modul illusztrációja:

3,3 V-on működik, és az 5 V képes megölni a modult, ezért vigyázni kell, és az SPI kommunikációs protokollon működik. A tűkonfigurációt a fenti kép tartalmazza.

A távirányító:

A távvezérlő Arduino-ból áll (az Arduino nano / pro-mini ajánlott), az NRF24L01 modulból, egy joystickból és egy akkumulátor-tápegységből áll. Próbáljon meg csomagolni őket egy kis szemétdobozba, amelyet könnyebb kezelni.

A távvezérlő vázlatos rajza:

Az NRF24L01 modul és a joystick csatlakozóit az ábra tartalmazza, ha zavarodást érez, kérjük, olvassa el a megadott tűcsatlakozási táblázatot.

A joystick előre (UP), hátra (Down), jobbra és balra mozgatásával az autó ennek megfelelően mozog.

távoli autó joystick

Felhívjuk figyelmét, hogy az összes vezetékcsatlakozás a bal oldalon van, ez a referenciapont, és most a joystickot áthelyezheti mozgassa az autót .

A joystick Z tengelyen történő megnyomásával vezérelheti az autó LED-lámpáját.

Program a távvezérlőhöz:

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

Ezzel lezárul a távirányító.

Most vessünk egy pillantást a vevőre.

A vevő áramköre az alapkocsira kerül. Ha van ötlete hozzáadni a projektjét ehhez a mozgó alaphoz, akkor tervezze meg megfelelően a geometriát a vevő és a projekt elhelyezéséhez, hogy ne fogyjon ki a helyiségből.

A vevőegység Arduino, L298N kettős H-híd DC motorvezérlő modulból, fehér LED-ből áll, amelyet az autó elé helyeznek, NRF24L01 modulból és 12V, 1.3AH akkumulátorból. A motorok alapkocsival érkezhetnek.

A vevő vázlatos rajza:

Felhívjuk figyelmét, hogy az Arduino kártya és az NRF24L01 közötti kapcsolatot a fenti ábra NEM mutatja, hogy elkerülje a kábelek összetévesztését. Kérjük, olvassa el a távvezérlő vázlatát.

Az Arduino kártyát az 5V-os szabályozóba épített L298N modul táplálja.

A fehér LED elhelyezhető fejlámpaként, vagy testreszabhatja ezt a csapot az Ön igényeinek megfelelően. A joystick megnyomásával a # 7 tű magasra fordul, és a joystick újbóli megnyomásával a tű alacsony lesz.

Kérjük, ügyeljen a vevő vázlatos rajzán megadott bal és jobb oldali motorokra.

Program a vevő számára:

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

Ezzel véget ér a vevő.

A projekt befejezése után, ha az autó rossz irányba mozog, fordítsa meg a polaritásmotort.

Ha az alapkocsi 4 motoros kerékmeghajtású, csatlakoztassa párhuzamosan a bal motorokat, azonos polaritással, tegye ugyanezt a jobb oldali motoroknál, és csatlakozzon az L298N vezetőhöz.

Ha bármilyen kérdése van ezzel a joystick vezérlésű, 2,4 GHz-es RC autóval Arduino használatával, nyugodtan fejtse ki a megjegyzés rovatban, gyors választ kaphat.




Előző: L298N DC motor meghajtó modul magyarázata Következő: Egyszerű digitális vízáramlás-mérő áramkör Arduino segítségével