Kinokontrol ng Joystick ang 2.4 GHz RC Car Gamit ang Arduino

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Sa post na ito magtatayo kami ng isang robot ng kotse na maaaring makontrol gamit ang isang joystick sa 2.4 GHz wireless na link ng komunikasyon. Ang iminungkahing proyekto ay hindi lamang ginawa bilang isang RC car, ngunit maaari mong idagdag ang iyong mga proyekto tulad ng surveillance camera atbp sa kotse.



Pangkalahatang-ideya

Ang proyekto ay nahahati sa dalawang bahagi ng remote at ng tatanggap.

Ang kotse o ang base, kung saan inilalagay namin ang lahat ng aming mga bahagi ng receiver ay maaaring tatlong wheel drive o apat na wheel drive.



Kung nais mo ng higit na katatagan para sa pangunahing kotse o kung nais mong ihatid ang kotse sa hindi pantay na ibabaw tulad ng sa labas noon, inirerekumenda ang base ng kotse na may 4 na gulong.

Maaari mo ring gamitin ang 3 wheel drive base car na magbibigay sa iyo ng higit na kadaliang kumilos habang umiikot ngunit, maaari itong magbigay ng mas kaunting katatagan kaysa sa 4 wheel drive.

Ang isang kotse na may 4 na gulong ngunit, 2 motor drive din posible.

Ang remote ay maaaring pinalakas ng 9V na baterya at ang receiver ay maaaring pinalakas ng 12V, 1.3 AH na tinatakan na lead acid na baterya, na may mas maliit na bakas ng paa kaysa sa 12V, 7AH na baterya at mainam din para sa mga nasabing peripatetic application.

Ang 2.4 GHz na komunikasyon sa pagitan ay itinatag gamit ang NRF24L01 module na maaaring magpadala ng mga signal nang higit sa 30 hanggang 100 metro depende sa mga hadlang sa pagitan ng dalawang modyul na NRF24L01.

Paglalarawan ng module ng NRF24L01:

Gumagana ito sa 3.3V at 5V ay maaaring pumatay sa module kaya, dapat mag-ingat at gumagana ito sa SPI komunikasyon na proteksyon. Ang pagsasaayos ng pin ay ibinibigay sa imahe sa itaas.

Ang remote:

Ang remote ay binubuo ng Arduino (inirerekumenda ang Arduino nano / pro-mini), module ng NRF24L01, isang joystick at isang power supply ng baterya. Subukang i-pack ang mga ito sa isang maliit na kahon ng basura, na mas madaling hawakan.

Scagram diagram para sa remote:

Ang mga koneksyon sa pin para sa NRF24L01 module at joystick ay ibinibigay sa diagram, kung sa tingin mo ay may anumang putik, mangyaring tingnan ang ibinigay na talahanayan ng koneksyon ng pin.

Sa pamamagitan ng paglipat ng joystick pasulong (UP), pag-reverse (Down), kanan at kaliwa, umaandar ang kotse nang naaayon.

malayuang carstickstick

Mangyaring tandaan na ang lahat ng mga koneksyon sa kawad ay nasa kaliwang bahagi, ito ang sangguniang punto at ngayon ay maaari mong ilipat ang joystick sa ilipat ang kotse .

Sa pamamagitan ng pagpindot sa joystick sa Z axis maaari mong makontrol ang LED light sa kotse.

Programa para sa Remote:

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

Tinapos na ang Remote.

Ngayon tingnan natin ang tatanggap.

Ang receiver circuit ay mailalagay sa base car. Kung mayroon kang anumang ideya upang idagdag ang iyong proyekto sa gumagalaw na batayan na ito, planuhin nang maayos ang geometry para sa paglalagay ng tatanggap at ng iyong proyekto, upang hindi ka maubusan ng silid.

Ang tatanggap ay binubuo ng Arduino, L298N dual H-bridge DC motor driver module, puting LED na ilalagay sa harap ng kotse, NRF24L01 module, at 12V, 1.3AH na baterya. Ang mga motor ay maaaring may kasamang pangunahing sasakyan.

Scagram diagram para sa tatanggap:

Mangyaring tandaan na ang koneksyon sa pagitan ng Arduino board at NRF24L01 ay HINDI ipinakita sa diagram sa itaas para sa pag-iwas sa pagkalito ng mga kable. Mangyaring mag-refer sa eskematiko ng remote.

Ang board ng Arduino ay papatakbo ng module na L298N na itinayo nito sa 5V regulator.

Ang puting LED ay maaaring mailagay bilang ilaw ng ulo o maaari mong ipasadya ang pin na ito sa iyong mga pangangailangan, sa pamamagitan ng pagpindot sa joystick, ang pin # 7 ay lumiliko nang mataas at ang pagpindot muli sa joystick ay magpapababa ng pin.

Mangyaring bigyang-pansin ang kaliwa at kanang bahagi ng mga motor na tinukoy sa diagram ng iskema ng tagatanggap.

Programa para sa Tumatanggap:

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

Tinapos na ang tatanggap.

Matapos makumpleto ang proyekto, kung ang kotse ay gumagalaw sa maling direksyon baligtarin lamang ang polarity motor.

Kung ang iyong base car ay 4 na motor wheel drive, ikonekta ang kaliwang mga motor nang kahanay sa parehong polarity, gawin ang pareho para sa mga kanang bahagi ng motor at kumonekta sa driver ng L298N.

Kung mayroon kang anumang katanungan tungkol sa kinokontrol na Joystick na 2.4 GHz RC na kotse gamit ang Arduino, huwag mag-atubiling ipahayag sa seksyon ng komento, maaari kang makatanggap ng mabilis na tugon.




Nakaraan: Ipinaliwanag ang L298N DC Motor Driver Module Susunod: Simpleng Digital Water Flow Meter Circuit gamit ang Arduino