Cotxe RC de 2,4 GHz controlat per palanca mitjançant Arduino

Proveu El Nostre Instrument Per Eliminar Problemes





En aquesta publicació construirem un robot de cotxe que es pot controlar mitjançant un joystick en un enllaç de comunicació sense fils de 2,4 GHz. El projecte proposat no només es fa com un cotxe RC, sinó que podeu afegir-hi projectes com ara càmeres de vigilància, etc.



Visió general

El projecte es divideix en dues parts: el comandament a distància i el receptor.

El cotxe o la base, on col·loquem tots els components del receptor, pot ser de tres rodes o de quatre rodes.



Si voleu més estabilitat per al cotxe base o si voleu conduir el cotxe en superfícies irregulars, com ara a l’aire lliure, es recomana la base del cotxe amb 4 rodes.

També podeu utilitzar un cotxe base de 3 rodes motores que us proporciona una major mobilitat mentre gireu, però pot proporcionar una menor estabilitat que les 4 rodes motrius.

Un cotxe amb 4 rodes però, amb 2 motors també és factible.

El comandament a distància es pot alimentar amb bateria de 9 V i el receptor pot funcionar amb bateria de plom àcid segellada de 12 V, 1,3 AH, que té una petjada menor que la bateria de 12 V, 7 Ah i també ideal per a aquestes aplicacions peripatètiques.

La comunicació de 2,4 GHz s’estableix mitjançant el mòdul NRF24L01 que pot transmetre senyals de més de 30 a 100 metres en funció dels obstacles entre dos mòduls NRF24L01.

Il·lustració del mòdul NRF24L01:

Funciona en 3,3V i 5V i pot acabar amb el mòdul, per tant, s’ha de tenir precaució i funciona amb el protocol de comunicació SPI. La configuració del pin es proporciona a la imatge anterior.

El comandament a distància:

El comandament està format per Arduino (es recomana Arduino nano / pro-mini), mòdul NRF24L01, un joystick i una font d'alimentació per bateria. Intenteu empaquetar-los en una petita caixa d’escombraries, que serà més fàcil de manejar.

Esquema esquemàtic del control remot:

Les connexions de pins per al mòdul i el joystick NRF24L01 es proporcionen al diagrama. Si teniu problemes, consulteu la taula de connexions de pins indicada.

En moure el joystick cap endavant (AMUNT), cap enrere (avall), dreta i esquerra, el cotxe es mou en conseqüència.

joystick de cotxe remot

Tingueu en compte que totes les connexions de cable es troben al costat esquerre, aquest és el punt de referència i ara podeu moure el joystick a moure el cotxe .

Prement el joystick a l’eix Z podeu controlar la llum LED del cotxe.

Programa per al comandament a distància:

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

Això conclou el control remot.

Ara fem una ullada al receptor.

El circuit receptor es col·locarà al cotxe base. Si teniu alguna idea per afegir el vostre projecte en aquesta base mòbil, planifiqueu la geometria adequadament per col·locar el receptor i el vostre projecte de manera que no us quedeu sense espai.

El receptor està format per Arduino, mòdul de controlador de motor CC de doble pont L298N L298N, LED blanc que es col·locarà a la part davantera del cotxe, mòdul NRF24L01 i bateria de 12V i 1.3AH. Els motors poden venir amb cotxe base.

Esquema del receptor:

Tingueu en compte que la connexió entre la placa Arduino i NRF24L01 NO es mostra al diagrama anterior per evitar confusions de cablejat. Consulteu l’esquema del comandament a distància.

La placa Arduino s'alimentarà del mòdul L298N que té incorporat un regulador de 5 V.

El LED blanc es pot col·locar com a llum frontal o podeu personalitzar aquest pin segons les vostres necessitats, prement el joystick, el pin # 7 es torna alt i si premeu el joystick de nou, el pin baixarà.

Presteu atenció als motors laterals esquerre i dret especificats al diagrama esquemàtic del receptor.

Programa per al receptor:

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

Això conclou el receptor.

Després de completar el projecte, si el cotxe es mou en la direcció equivocada, només cal invertir el motor de polaritat.

Si el cotxe base té 4 motors de tracció, connecteu els motors esquerres en paral·lel amb la mateixa polaritat, feu el mateix per als motors del costat dret i connecteu-vos al controlador L298N.

Si teniu alguna pregunta sobre aquest cotxe RC de 2,4 GHz controlat per joystick que utilitza Arduino, no dubteu a expressar-ho a la secció de comentaris, és possible que rebeu una resposta ràpida.




Anterior: S'explica el mòdul del controlador de motor DC L298N Següent: Circuit senzill de mesurador de cabal digital amb Arduino