Joystickom ovládané 2,4 GHz RC auto pomocou Arduina

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V tomto príspevku sa chystáme skonštruovať automobilového robota, ktorý je možné ovládať pomocou joysticku na bezdrôtovej komunikačnej linke 2,4 GHz. Navrhovaný projekt sa nevyrába iba ako RC automobil, ale môžete doň pridať aj svoje projekty, ako napríklad bezpečnostnú kameru atď.



Prehľad

Projekt je rozdelený na dve časti, diaľkový a prijímač.

Automobil alebo základňa, kam umiestnime všetky komponenty prijímača, môžu byť s pohonom všetkých troch kolies alebo s pohonom všetkých kolies.



Ak chcete pre základné vozidlo väčšiu stabilitu alebo chcete jazdiť s nerovným povrchom, ako je napríklad vonku, potom sa odporúča základňa so 4 kolesami.

Môžete tiež použiť základné vozidlo s pohonom 3 kolies, ktoré vám dáva väčšiu pohyblivosť pri zatáčaní, ale môže poskytnúť menšiu stabilitu ako pohon všetkých kolies.

Je možné aj auto so 4 kolesami, ale s 2 motorovým pohonom.

Diaľkový ovládač môže byť napájaný 9V batériou a prijímač môže byť napájaný 12V, 1,3 AH uzavretou olovenou batériou, ktorá má menšiu stopu ako batéria 12V, 7AH a je tiež ideálna pre také peripatetické aplikácie.

Komunikácia v pásme 2,4 GHz sa uskutočňuje pomocou modulu NRF24L01, ktorý môže prenášať signály na vzdialenosť 30 až 100 metrov v závislosti od prekážok medzi dvoma modulmi NRF24L01.

Ilustrácia modulu NRF24L01:

Funguje na 3,3 V a 5 V môže zabiť modul, preto je potrebné postupovať opatrne a funguje na komunikačnom protokole SPI. Konfigurácia kolíkov je uvedená na obrázku vyššie.

Diaľkové ovládanie:

Diaľkový ovládač sa skladá z Arduina (odporúča sa Arduino nano / pro-mini), modulu NRF24L01, joysticku a napájania z batérie. Skúste ich zabaliť do malej zbernej škatule, s ktorou sa bude ľahšie manipulovať.

Schéma diaľkového ovládania:

Kolíkové pripojenia pre modul NRF24L01 a joystick sú uvedené na diagrame. Ak máte pocit, že máte nejaké zmätky, prečítajte si uvedenú tabuľku kolíkových pripojení.

Pohybom joysticku dopredu (Hore), dozadu (Dole), doprava a doľava sa auto bude pohybovať zodpovedajúcim spôsobom.

diaľkový ovládač do auta

Upozorňujeme, že všetky drôtové pripojenia sú na ľavej strane, toto je referenčný bod a teraz môžete joystick presunúť do polohy presunúť auto .

Stlačením joysticku v osi Z môžete ovládať LED svetlo na automobile.

Program pre diaľkový ovládač:

//--------------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 diaľkový ovládač uzavretý.

Teraz sa pozrime na prijímač.

Obvod prijímača bude umiestnený na základnom vozidle. Ak máte nejaký nápad pridať svoj projekt na túto pohyblivú základňu, naplánujte si správne geometriu pre umiestnenie prijímača a vášho projektu tak, aby vám neuniklo miesto.

Prijímač sa skladá z Arduina, L298N duálneho modulu ovládača jednosmerného motora H-bridge, bielej LED, ktorá bude umiestnená v prednej časti vozidla, modulu NRF24L01 a 12V, 1,3AH batérie. Motory môžu byť dodávané so základným autom.

Schematický diagram prijímača:

Vezmite prosím na vedomie, že spojenie medzi doskou Arduino a NRF24L01 NIE je zobrazené na vyššie uvedenom diagrame, aby nedošlo k zámene vodičov. Prečítajte si schému diaľkového ovládača.

Doska Arduino bude napájaná modulom L298N, ktorý má zabudovaný 5V regulátor.

Biela LED môže byť umiestnená ako svetlomet alebo si môžete tento pin prispôsobiť svojim potrebám. Stlačením joysticku sa pin # 7 otočí vysoko a ďalším stlačením joysticku sa pin zníži.

Venujte pozornosť motorom na ľavej a pravej strane uvedeným v schematickom diagrame prijímača.

Program pre prijí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---------------//

To prijímač uzatvára.

Po dokončení projektu, ak sa auto pohybuje nesprávnym smerom, jednoducho otočte motor s polaritou.

Ak je váš základný automobil štvormotorový pohon, pripojte paralelne ľavé motory s rovnakou polaritou, to isté urobte pre pravý motor a pripojte k vodiču L298N.

Ak máte akékoľvek otázky týkajúce sa tohto 2,4 GHz RC automobilu riadeného joystickom pomocou Arduina, neváhajte a vyjadrite sa v sekcii komentárov, môžete dostať rýchlu odpoveď.




Dvojica: Vysvetlenie modulu ovládača jednosmerného motora L298N Ďalej: Jednoduchý digitálny obvod merača prietoku vody pomocou Arduina