Joystickem řízené RC auto 2,4 GHz pomocí Arduina

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





V tomto příspěvku budeme konstruovat automobilového robota, který lze ovládat pomocí joysticku na bezdrátovém komunikačním spojení 2,4 GHz. Navrhovaný projekt není vytvořen pouze jako RC vůz, ale můžete na něj přidat i své projekty, jako je například bezpečnostní kamera atd.



Přehled

Projekt je rozdělen na dvě části, dálkový ovladač a přijímač.

Vůz nebo základna, kam umístíme všechny naše komponenty přijímače, může být s pohonem tří kol nebo pohonem všech kol.



Chcete-li větší stabilitu základního vozu nebo chcete-li řídit auto na nerovném povrchu, například venku, doporučujeme základnu se 4 koly.

Můžete také použít základní vůz s pohonem tří kol, který vám poskytne větší mobilitu při zatáčení, ale může poskytnout méně stability než pohon všech kol.

Auto se 4 koly, ale se 2 motorem, je také možné.

Dálkový ovladač může být napájen 9V baterií a přijímač může být napájen 12V, 1,3 AH uzavřenou olověnou baterií, která má menší stopu než 12V, 7AH baterie a je také ideální pro takové peripatetické aplikace.

Komunikace mezi pásmy 2,4 GHz je navázána pomocí modulu NRF24L01, který může přenášet signály na vzdálenost 30 až 100 metrů v závislosti na překážkách mezi dvěma moduly NRF24L01.

Ilustrace modulu NRF24L01:

Funguje na 3,3 V a 5 V může modul zabít, takže je třeba postupovat opatrně a funguje na komunikačním protokolu SPI. Konfigurace kolíku je uvedena na obrázku výše.

Ovladač:

Dálkový ovladač se skládá z Arduina (doporučuje se Arduino nano / pro-mini), modulu NRF24L01, joysticku a napájení z baterie. Zkuste je zabalit do malé nevyžádané krabice, se kterou se bude snáze manipulovat.

Schéma dálkového ovládání:

Pinová připojení pro modul NRF24L01 a joystick jsou uvedena na obrázku, pokud pocítíte zmatek, prostudujte si uvedenou tabulku pinových připojení.

Pohybem joysticku dopředu (NAHORU), vzad (Dolů), doprava a doleva se auto pohybuje odpovídajícím způsobem.

dálkový joystick do auta

Pamatujte, že všechna drátová připojení jsou na levé straně, to je referenční bod a nyní můžete joystick přesunout na pohněte autem .

Stisknutím joysticku v ose Z můžete ovládat LED světlo na voze.

Program pro dálkový ovladač:

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

Tím je dálkový ovladač uzavřen.

Nyní se podívejme na přijímač.

Obvod přijímače bude umístěn na základním voze. Pokud máte nějaký nápad přidat svůj projekt na tuto pohyblivou základnu, naplánujte správně geometrii pro umístění přijímače a vašeho projektu tak, aby vám nedocházelo místo.

Přijímač se skládá z Arduina, L298N duálního H-můstkového stejnosměrného modulu ovladače motoru, bílé LED, která bude umístěna před automobilem, modulu NRF24L01 a 12V, 1,3AH baterie. Motory mohou být dodávány se základním vozem.

Schéma přijímače:

Vezměte prosím na vědomí, že spojení mezi deskou Arduino a NRF24L01 NENÍ uvedeno ve výše uvedeném diagramu, aby nedošlo k záměně vodičů. Viz schéma dálkového ovladače.

Deska Arduino bude napájena modulem L298N, který má zabudovaný 5V regulátor.

Bílá LED může být umístěna jako přední světlo nebo si můžete tento kolík přizpůsobit svým potřebám, stisknutím joysticku se kolík # 7 otočí vysoko a dalším stisknutím joysticku se kolík sníží.

Věnujte pozornost levým a pravým motorům uvedeným ve schematickém schématu přijímače.

Program pro přijímač:

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

Tím je přijímač uzavřen.

Po dokončení projektu, pokud se vůz pohybuje špatným směrem, stačí obrátit motor polarity.

Pokud je vaším základním vozidlem pohon na 4 motory, připojte paralelně levé motory se stejnou polaritou, proveďte totéž pro motory na pravé straně a připojte k ovladači L298N.

Pokud máte jakékoli dotazy týkající se tohoto 2,4GHz RC vozu ovládaného joystickem pomocí Arduina, neváhejte vyjádřit v sekci komentářů, můžete obdržet rychlou odpověď.




Předchozí: Vysvětlení modulu ovladače motoru L298N DC Další: Jednoduchý digitální obvod průtokoměru vody pomocí Arduina