Vairasvirtės valdomas 2,4 GHz RC automobilis, naudojant „Arduino“

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame įraše sukursime automobilio robotą, kurį galima valdyti naudojant 2,4 GHz belaidžio ryšio kreiptuką. Siūlomas projektas sukurtas ne tik kaip RC automobilis, bet ant automobilio galite pridėti tokius projektus kaip stebėjimo kamera ir pan.



Apžvalga

Projektas yra padalintas į dvi dalis nuotolinio valdymo ir imtuvo.

Automobilis ar pagrindas, kuriame dedame visus imtuvo komponentus, gali būti varomi trimis arba keturiais ratais.



Jei norite daugiau stabilumo pagrindiniam automobiliui arba norite vairuoti automobilį nelygiu paviršiumi, pavyzdžiui, lauke, rekomenduojama automobilio bazė su 4 ratais.

Taip pat galite naudoti 3 ratais varomą pagrindinį automobilį, kuris suteikia didesnį mobilumą sukant, tačiau jis gali suteikti mažiau stabilumo nei keturių ratų pavara.

Automobilis su 4 ratais, bet ir su 2 varikliais.

Nuotolinio valdymo pultas gali būti maitinamas su 9 V akumuliatoriumi, o imtuvas gali būti maitinamas su 12 V, 1,3 AH sandaria švino rūgšties baterija, kurios plotas yra mažesnis nei 12 V, 7 AH akumuliatoriaus, taip pat idealiai tinka tokioms peripetetinėms programoms.

2,4 GHz ryšys yra užmegztas naudojant NRF24L01 modulį, kuris gali perduoti signalus nuo 30 iki 100 metrų, atsižvelgiant į kliūtis tarp dviejų NRF24L01 modulių.

NRF24L01 modulio iliustracija:

Jis veikia 3.3V ir 5V gali užmušti modulį, todėl reikia būti atsargiems ir jis veikia SPI ryšio protokole. Kaiščių konfigūracija pateikiama aukščiau pateiktame paveikslėlyje.

Nuotolinio valdymo pultas:

Nuotolinio valdymo pultą sudaro „Arduino“ (rekomenduojamas „Arduino nano“ / „pro-mini“), NRF24L01 modulis, vairasvirtė ir baterijos maitinimo šaltinis. Pabandykite juos supakuoti į mažą šiukšlių dėžę, kurią bus lengviau tvarkyti.

Nuotolinio valdymo schema:

NRF24L01 modulio ir vairasvirtės kaiščių jungtys pateiktos diagramoje. Jei jaučiate bet kokį netvarką, prašome žiūrėti pateiktą kaiščių sujungimo lentelę.

Perkeldamas vairasvirtę į priekį (AUKŠTYN), atgal (žemyn), į dešinę ir kairę, automobilis atitinkamai juda.

nuotolinio automobilio vairasvirtę

Atkreipkite dėmesį, kad visos laidų jungtys yra kairėje pusėje, tai yra atskaitos taškas ir dabar galite perkelti vairasvirtę į pajudink mašiną .

Paspausdami kreiptuką Z ašyje, galite valdyti automobilio šviesos diodą.

Nuotolinio valdymo programa:

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

Tai baigia nuotolinio valdymo pultą.

Dabar pažvelkime į imtuvą.

Imtuvo grandinė bus uždėta ant pagrindinio automobilio. Jei turite idėjos pridėti savo projektą ant šios judančios pagrindo, tinkamai suplanuokite geometriją, kad imtuvas ir jūsų projektas būtų taip, kad nepritrūktų vietos.

Imtuvą sudaro „Arduino“, dvigubo H-tilto nuolatinės srovės variklio vairuotojo modulis „L298N“, baltas šviesos diodas, kuris bus pastatytas automobilio priekyje, „NRF24L01“ modulis ir 12 V, 1,3 Ah akumuliatorius. Varikliai gali būti su baziniu automobiliu.

Imtuvo schema:

Atkreipkite dėmesį, kad jungtis tarp „Arduino“ plokštės ir NRF24L01 NĖRA parodyta aukščiau pateiktoje diagramoje, kad būtų išvengta painiavos laidų srityje. Žr. Nuotolinio valdymo pulto schemą.

„Arduino“ plokštė bus maitinama iš L298N modulio, kurį jis pastatė 5V reguliatoriuje.

Baltas šviesos diodas gali būti įdėtas kaip priekinis žibintas arba galite pritaikyti šį kaištį savo poreikiams. Paspaudus vairasvirtę, kaištis Nr. 7 pasisuks aukštyn, o dar kartą paspaudus vairasvirtę, kaištis bus žemas.

Atkreipkite dėmesį į kairiosios ir dešinės pusės variklius, nurodytus imtuvo schemoje.

Imtuvo programa:

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

Tuo imtuvas baigiasi.

Baigę projektą, jei automobilis juda neteisinga kryptimi, tiesiog pakeiskite poliškumo variklį.

Jei jūsų pagrindinis automobilis yra varomas keturiais varikliais, prijunkite kairiuosius variklius lygiagrečiai su tuo pačiu poliškumu, tą patį atlikite dešinės pusės varikliams ir prijunkite prie „L298N“ vairuotojo.

Jei turite klausimų dėl šio vairasvirtės valdomo 2,4 GHz RC automobilio, naudojančio „Arduino“, nedvejodami pareikškite komentarų skyriuje, galite gauti greitą atsakymą.




Pora: Paaiškintas L298N nuolatinės srovės variklio tvarkyklės modulis Kitas: Paprasta skaitmeninė vandens srauto matuoklio grandinė naudojant „Arduino“