Neste post, vamos construir um carro-robô que pode ser controlado por um joystick em um link de comunicação sem fio de 2,4 GHz. O projeto proposto não é feito apenas como um carro RC, mas você pode adicionar seus projetos, como câmera de vigilância, etc. no carro.
Visão geral
O projeto está dividido em duas partes, o controle remoto e o receptor.
O carro ou a base, onde colocamos todos os componentes do receptor, pode ter tração nas três rodas ou nas quatro rodas.
Se você deseja mais estabilidade para o carro base ou se deseja dirigir em superfícies irregulares, como ao ar livre, recomenda-se uma base de carro com 4 rodas.
Você também pode usar o carro com tração nas 3 rodas, o que proporciona maior mobilidade nas curvas, mas pode fornecer menos estabilidade do que a tração nas 4 rodas.
Um carro com 4 rodas, mas também com 2 motores.
O controle remoto pode ser alimentado com bateria de 9 V e o receptor pode ser alimentado com bateria de chumbo-ácido selada de 12 V, 1,3 AH, que ocupa menos espaço do que a bateria de 12 V, 7 AH e também ideal para tais aplicações peripatéticas.
A comunicação de 2,4 GHz entre os dois é estabelecida usando o módulo NRF24L01 que pode transmitir sinais em 30 a 100 metros dependendo dos obstáculos entre os dois módulos NRF24L01.
Ilustração do módulo NRF24L01:
Funciona em 3,3V e 5V pode matar o módulo, portanto, deve-se tomar cuidado e funciona em protocolo de comunicação SPI. A configuração dos pinos é fornecida na imagem acima.
O remoto:
O controle remoto consiste em Arduino (recomenda-se Arduino nano / pro-mini), módulo NRF24L01, um joystick e uma fonte de alimentação de bateria. Tente embalá-los em uma pequena caixa de lixo, que será mais fácil de manusear.
Diagrama esquemático para remoto:
As conexões de pinos para o módulo NRF24L01 e joystick são fornecidas no diagrama, se você sentir alguma confusão, consulte a tabela de conexão de pinos fornecida.
Ao mover o joystick para frente (PARA CIMA), para trás (para baixo), para a direita e para a esquerda, o carro se move de acordo.
Observe que todas as conexões dos fios estão no lado esquerdo, este é o ponto de referência e agora você pode mover o joystick para mova o carro .
Ao pressionar o joystick no eixo Z, você pode controlar a luz LED no carro.
Programa para o Remoto:
//--------------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---------------//
Isso conclui o controle remoto.
Agora vamos dar uma olhada no receptor.
O circuito receptor será colocado no carro base. Se você tem alguma ideia de adicionar seu projeto nesta base móvel, planeje a geometria corretamente para colocar o receptor e seu projeto de forma que você não fique sem espaço.
O receptor consiste em Arduino, módulo de driver de motor CC de ponte H dupla L298N, LED branco que será colocado na frente do carro, módulo NRF24L01 e bateria de 12 V, 1.3AH. Os motores podem vir com carro básico.
Diagrama esquemático para receptor:
Observe que as conexões entre a placa Arduino e o NRF24L01 NÃO são mostradas no diagrama acima para evitar confusão na fiação. Consulte o esquema do controle remoto.
A placa Arduino será alimentada pelo módulo L298N que possui regulador de 5V integrado.
O LED branco pode ser colocado como luz principal ou você pode personalizar este pino de acordo com suas necessidades, pressionando o joystick, o pino 7 gira para cima e pressionando o joystick novamente irá diminuir o pino.
Preste atenção aos motores do lado esquerdo e direito especificados no diagrama esquemático do receptor.
Programa para o 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---------------//
Isso conclui o receptor.
Após concluir o projeto, se o carro se mover na direção errada, basta inverter a polaridade do motor.
Se o seu carro básico tem tração nas rodas de 4 motores, conecte os motores esquerdos em paralelo com a mesma polaridade, faça o mesmo para os motores do lado direito e conecte ao driver L298N.
Se você tiver alguma dúvida sobre este carro RC controlado por joystick de 2,4 GHz usando Arduino, sinta-se à vontade para expressar na seção de comentários, você pode receber uma resposta rápida.
Anterior: Módulo Driver de Motor DC L298N Explicado Próximo: Circuito de medidor de fluxo de água digital simples usando Arduino