Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Carro Arduino 4WD RC

Componentes e suprimentos

Arduino UNO
× 2
SparkFun Transceiver Breakout - nRF24L01 + (RP-SMA)
× 2
Funduino Joystick Shield V1.A
× 1
Drivers de motor SparkFun Dual H-Bridge L298
× 2
Kit de chassi de carro robô inteligente 4WD
× 1
LED (genérico)
× 3
Resistor 221 ohm
× 2
Breadboard (genérico)
× 2
Baterias 18650
× 2
Powerbank
× 1
Fios de jumpers (genérico)
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)

Aplicativos e serviços online

Arduino IDE

Sobre este projeto





História


Olá a todos! Este é meu próximo projeto - Arduino 4WD RC Car com Joystick Controller ou Como é fácil controlar um Arduino 4WD Smart Car com um Joystick analógico.

Este carro controlado por joystick RC usa NRF24l01 como transmissor e receptor. Tem alcance de até 1 km em espaço aberto. Também é muito simples e fácil de fazer.





1. Joystick Controller


Componentes para joystick:



O escudo do joystick fica sobre o seu Arduino e o transforma em um controlador simples. 7 botões de pressão momentâneos (4 botões grandes, 2 botões pequenos e um botão de seleção de joystick) e um joystick de polegar de dois eixos dão ao seu Arduino funcionalidade no nível dos controladores antigos da Nintendo. Esta unidade também oferece interfaces Nokia 5110 LCD e nRF24L01.





Recursos:

  • Interface nRF24L01
  • Interface LCD do Nokia 5110
  • Interface Bluetooth
  • Interface I2C
  • Compatível com Arduino
  • Tensão de operação 3,5 V ou 5 V

Na verdade, é rotulado como BTE16-49 - nRF24L01 + RFX2401C + PA + LNA módulos de comunicação sem fio com caixa de proteção de antena 2.4GHz 20dbm 1000m.

Características especificadas pelo vendedor:
  • Banda ISM aberta global de 2,4 GHz, uso isento de licença
  • a velocidade máxima de operação de 2 Mbps, modulação GFSK eficiente, transmissão de áudio, vídeo
  • 125 canais, para atender às necessidades de comunicação multiponto e de salto de frequência
  • o endereço da detecção de erro CRC de hardware integrado e controle de comunicação ponto a multiponto
  • tensão de trabalho 3,0-3,6 V, a potência de transmissão 20dBm (VDD =3,3 V)
  • a antena externa de 2,4 GHz
  • pinos de pitch de 2,54 mm, totalmente compatíveis sem a interface do módulo do amplificador, fáceis de substituir, aumentam a distância
  • distância de transmissão de até 1000 m





2. Joystick Controller


O escudo do joystick tem 4 botões grandes + 2 botões pequenos + botão de seleção do joystick e um joystick de dois eixos (eixo X de 0 a 1023, eixo Y de 0 a 1023) O escudo fica na parte superior do seu Arduino e o transforma em um controlador simples. No meu esboço, Button Up é para Buzzer (buzina), Botão Direito - luz frontal (LED + resistor 200 Ohm), Botão Esquerdo - luzes traseiras (LEDs + resistor 200 Ohm). Outros botões não são usados.

Teste de joystick:

Estado ocioso:X =499, Y =502, Up =1, Right =1, Down =1, Left =1






3. Carro RC Arduino 4WD






Faça as conexões como na imagem do diagrama de fiação acima.

Nota:antes de enviar o código, você deve desconectar os fios do jumper da placa Arduino Uno (pinos 0, 1).

Uma vez que você fez todas as etapas corretamente, o carro está pronto para ir!

Depois de ligar o Arduino Car e o controlador de joystick, você pode usar o joystick para controlar o carro movendo o joystick para frente e para trás, o carro se moverá na direção para frente ou para trás e movendo o joystick para a esquerda e direita fará o carro virar à esquerda e à direita.

Fique ligado!

Código

  • Car_nRF24.ino
  • Joystick_nRF24.ino
Car_nRF24.ino Arduino
Código para Arduino RC Car
 / * Código do receptor do módulo JoyStick - CONEXÕES:Módulos nRF24L01 Veja:1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE para Arduino pino 6 4 - CSN para Arduino pino 8 5 - SCK para Arduino pino 13 6 - MOSI para Arduino pino 11 7 - MISO para Arduino pino 12 8 - NÃO USADO * /// ----- ( Importe as bibliotecas necessárias) ----- # include  #include  #include  / * ----- (Declarar constantes e números de pinos) ----- * / # define CE_PIN 6 # define CSN_PIN 8 // NOTA:o "LL" no final da constante é "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Define o tubo de transmissão # define light_Front 18 // LED frontal direito pino A4 para Arduino Uno # define light_Back 19 // LED Back Right pino A5 para Arduino Uno # define horn_Buzz 7 #define ENA_m1 3 // Habilita / velocidade motor Front Right #define ENB_m1 5 // Habilita / acelera o motor Back Right # define ENA_m2 9 // Habilita / acelera o motor Front Left # define ENB_m2 10 // Habilita / acelera o motor Back Left # define IN_11 0 // L298N # 1 em 1 motor Front Right #define IN_12 1 // L298N # 1 em 2 motor Front Right # define IN_13 2 // L298N # 1 in 3 motor Back Right # define IN_14 4 // L298N # 1 in 4 motor Back Right # define IN_21 14 // L298N # 2 em 1 motor Front Left # define IN_22 15 // L298N # 2 in 2 motor Front Left # define IN_23 16 // L298N # 2 in 3 motor Back Left # define IN_24 17 // L298N # 2 in 4 motor Back Left / * ----- (Declarar objetos) ----- * / rádio RF24 (CE_PIN, CSN_PIN); // Criar um rádio / * ----- (Declarar variáveis) ----- * / int joystick [6]; // array de 6 elementos segurando Joystick readingsint speedRight =0; int speedLeft =0; int xAxis, yAxis; // as quatro variáveis ​​de botão do joystickint buttonUp; int buttonRight; int buttonDown; int buttonLeft; void setup () {pinMode (light_Front, SAÍDA); pinMode (light_Back, OUTPUT); pinMode (horn_Buzz, OUTPUT); pinMode (ENA_m1, OUTPUT); pinMode (ENB_m1, OUTPUT); pinMode (ENA_m2, OUTPUT); pinMode (ENB_m2, OUTPUT); pinMode (IN_11, SAÍDA); pinMode (IN_12, SAÍDA); pinMode (IN_13, SAÍDA); pinMode (IN_14, SAÍDA); pinMode (IN_21, SAÍDA); pinMode (IN_22, SAÍDA); pinMode (IN_23, OUTPUT); pinMode (IN_24, SAÍDA); / * Serial.begin (9600); Serial.println ("Nrf24L01 Receiver Iniciando"); * / radio.begin (); radio.openReadingPipe (1, tubo); radio.startListening ();} void loop () {if (radio.available ()) {radio.read (joystick, sizeof (joystick)); xAxis =joystick [0]; yAxis =joystick [1]; // as quatro variáveis ​​de botão do array de joystick int buttonUp =joystick [2]; botão interno direito =joystick [3]; int buttonDown =joystick [4]; int buttonLeft =joystick [5]; //Serial.println (); // para depuração // Buscar a carga útil de dados - Código de depuração abaixo if (buttonUp ==HIGH) {digitalWrite (horn_Buzz, LOW);} else {digitalWrite (horn_Buzz, HIGH);} if (buttonRight ==HIGH) {digitalWrite ( light_Front, LOW);} else {digitalWrite (light_Front, HIGH);} if (buttonLeft ==HIGH) {digitalWrite (light_Back, LOW);} else {digitalWrite (light_Back, HIGH);} // eixo Y usado para avançar e controle para trás if (yAxis <470) {// Define os motores corretos para trás digitalWrite (IN_11, LOW); digitalWrite (IN_12, HIGH); digitalWrite (IN_13, ALTO); digitalWrite (IN_14, LOW); // Define os motores esquerdos para trás digitalWrite (IN_21, HIGH); digitalWrite (IN_22, LOW); digitalWrite (IN_23, LOW); digitalWrite (IN_24, HIGH); // Converte as leituras decrescentes do eixo Y para retroceder de 470 a 0 para o valor de 0 a 255 para o sinal PWM para aumentar a velocidade do motor speedRight =map (yAxis, 470, 0, 0, 255); speedLeft =mapa (yAxis, 470, 0, 0, 255); } else if (yAxis> 550) {// Define os motores corretos para a frente digitalWrite (IN_11, HIGH); digitalWrite (IN_12, LOW); digitalWrite (IN_13, LOW); digitalWrite (IN_14, ALTO); // Ajuste os motores esquerdos para frente digitalWrite (IN_21, LOW); digitalWrite (IN_22, ALTO); digitalWrite (IN_23, HIGH); digitalWrite (IN_24, LOW); // Converte as leituras crescentes do eixo Y para avançar de 550 para 1023 no valor de 0 para 255 para o sinal PWM para aumentar a velocidade do motor speedRight =map (yAxis, 550, 1023, 0, 255); speedLeft =mapa (yAxis, 550, 1023, 0, 255); } // Se o joystick permanecer no meio, os motores não estão se movendo, else {speedRight =0; speedLeft =0; } // Eixo X usado para controle esquerdo e direito if (xAxis <470) {// Converte as leituras do eixo X em declínio de 470 para 0 em valores crescentes de 0 a 255 int xMapped =map (xAxis, 470, 0, 0 , 255); // Mover para a esquerda - diminuir a velocidade do motor esquerdo, aumentar a velocidade do motor direito speedLeft =speedLeft - xMapped; speedRight =speedRight + xMapped; // Limita o intervalo de 0 a 255 if (speedLeft <0) {speedLeft =0; } if (speedRight> 255) {speedRight =255; }} if (xAxis> 550) {// Converter as leituras crescentes do eixo X de 550 a 1023 em valores de 0 a 255 int xMapped =map (xAxis, 550, 1023, 0, 255); // Mover para a direita - diminui a velocidade do motor direito, aumenta a velocidade do motor esquerdo speedLeft =speedLeft + xMapped; speedRight =speedRight - xMapped; // Limita o intervalo de 0 a 255 if (speedLeft> 255) {speedLeft =255; } if (speedRight <0) {speedRight =0; }} // Evita zumbidos em baixas velocidades (ajuste de acordo com seus motores. Meus motores não podiam começar a se mover se o valor de PWM estivesse abaixo do valor de 70) if (speedLeft <70) {speedLeft =0; } if (speedRight <70) {speedRight =0; } analogWrite (ENA_m1, speedRight); // Envia o sinal PWM para o motor A analogWrite (ENB_m1, speedRight); analogWrite (ENA_m2, speedLeft); // Envia o sinal PWM para o motor B analogWrite (ENB_m2, speedLeft); / * Serial.print ("X ="); Serial.print (xAxis); Serial.print ("Y ="); Serial.print (yAxis); Serial.print ("Up ="); Serial.print (joystick [2]); Serial.print ("Right ="); Serial.print (joystick [3]); Serial.print ("Down ="); Serial.print (joystick [4]); Serial.print ("Esquerda ="); Serial.println (joystick [5]); * /}} 
Joystick_nRF24.ino Arduino
Código para Joystick Controller
 / * Código transceptor do módulo JoyStick - CONEXÕES:Módulos nRF24L01 Veja:1 - GND 2 - VCC 3.3V !!! NOT 5V 3 - CE para Arduino pino 9 4 - CSN para Arduino pino 10 5 - SCK para Arduino pino 13 6 - MOSI para Arduino pino 11 7 - MISO para Arduino pino 12 8 - NÃO USADO Pinos de botão padrão:Cima - pino 2 direito - pino 3 para baixo - pino 4 esquerdo - pino 5 - Módulo de joystick analógico GND para Arduino GND VCC para Arduino + 5V X Pot para Arduino A0 Y Pot para Arduino A1 / * ----- (Importar bibliotecas necessárias) ----- * / # include  #include "nRF24L01.h" #include "RF24.h" #define CE_PIN 9 # define CSN_PIN 10 # define xAxis 14 // A0 para Arduino UNO # define yAxis 15 // A1 para Arduino UNO // NOTA:o "LL" no final da constante é "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Definir o tubo de transmissão / * ----- (Declarar objetos) ----- * / RF24 radio (CE_PIN, CSN_PIN); // Criar um rádio / * ----- (Declarar variáveis) ----- * / int joystick [6]; // array de 6 elementos segurando a leitura do joystick e 4 botõesint buttonUp =2; int buttonRight =3; int buttonDown =4; int buttonLeft =5; void setup () {Serial.begin (9600); radio.begin (); radio.openWritingPipe (tubo); radio.stopListening (); // declara pinMode para todos os botões e estado inicial pinMode (buttonUp, INPUT_PULLUP); pinMode (buttonRight, INPUT_PULLUP); pinMode (buttonDown, INPUT_PULLUP); pinMode (buttonLeft, INPUT_PULLUP); digitalWrite (buttonUp, LOW); digitalWrite (buttonRight, LOW); digitalWrite (buttonDown, LOW); digitalWrite (buttonLeft, LOW);} void loop () {joystick [0] =analogRead (xAxis); joystick [1] =analogRead (yAxis); joystick [2] =digitalRead (botão para cima); joystick [3] =digitalRead (buttonRight); joystick [4] =digitalRead (botão para baixo); joystick [5] =digitalRead (buttonLeft); radio.write (joystick, sizeof (joystick)); atraso (20); Serial.print ("X ="); Serial.print (analogRead (xAxis)); Serial.print ("Y ="); Serial.print (analogRead (yAxis)); Serial.print ("Up ="); Serial.print (digitalRead (buttonUp)); Serial.print ("Right ="); Serial.print (digitalRead (buttonRight)); Serial.print ("Down ="); Serial.print (digitalRead (buttonDown)); Serial.print ("Esquerda ="); Serial.println (digitalRead (buttonLeft));} 

Esquemas

rc_car_tp3A7JlpYw.fzz

Processo de manufatura

  1. Dados digitais Arduino
  2. Controlador de jogo Arduino
  3. Carro RC controlado por joystick
  4. Homem de Ferro
  5. Encontre-me
  6. Arduino 3D-Printed Robotic Arm
  7. Controle do umidificador Arduino
  8. Contador de carros usando Arduino + Processing + PHP
  9. NeoMatrix Arduino Pong
  10. Joystick Arduino