Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Coche Arduino 4WD RC

Componentes y suministros

Arduino UNO
× 2
Salida del transceptor SparkFun - nRF24L01 + (RP-SMA)
× 2
Funduino Joystick Shield V1.A
× 1
Controladores de motor SparkFun Dual H-Bridge L298
× 2
Kit de chasis de coche robot inteligente 4WD
× 1
LED (genérico)
× 3
Resistencia 221 ohm
× 2
Breadboard (genérico)
× 2
18650 Baterías
× 2
Powerbank
× 1
Cables de puente (genéricos)
× 1

Herramientas y máquinas necesarias

Soldador (genérico)

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Historia

¡Hola a todos! Este es mi próximo proyecto:Arduino 4WD RC Car con Joystick Controller o Qué fácil es controlar un Arduino 4WD Smart Car con un Joystick analógico.

Este coche controlado por joystick RC utiliza NRF24l01 como transmisor y receptor. Tiene un alcance de hasta 1 kilómetro en espacio abierto. Además es muy sencillo y fácil de hacer.

1. Controlador de joystick

Componentes para Joystick:

El escudo del joystick se coloca encima de su Arduino y lo convierte en un controlador simple. 7 botones pulsadores momentáneos (4 botones grandes, 2 botones pequeños y un botón de selección de joystick) y un joystick de dos ejes le dan a su Arduino la funcionalidad en el nivel de los viejos controladores de Nintendo. Esta unidad también ofrece interfaces Nokia 5110 LCD y nRF24L01.

Características:

  • Interfaz nRF24L01
  • Interfaz LCD Nokia 5110
  • Interfaz Bluetooth
  • Interfaz I2C
  • Compatible con Arduino
  • Voltaje de funcionamiento 3,5 V o 5 V

En realidad, está etiquetado como BTE16-49 - nRF24L01 + RFX2401C + PA + LNA módulos de comunicación inalámbrica con carcasa de blindaje de antena 2.4GHz 20dbm 1000m.

Características especificadas por el vendedor:

  • Banda ISM abierta global de 2,4 GHz, uso exento de licencia
  • la velocidad máxima de operación de 2Mbps, modulación GFSK eficiente, transmisión de audio, video
  • 125 canales, para satisfacer las necesidades de comunicaciones multipunto y de comunicaciones por salto de frecuencia
  • la dirección del control de comunicación de punto a multipunto y detección de errores CRC de hardware integrado
  • voltaje de funcionamiento 3.0-3.6V, la potencia de transmisión 20dBm (VDD =3.3V)
  • la antena externa de 2,4 GHz
  • Pines de paso de 2,54 mm, totalmente compatibles sin la interfaz del módulo amplificador, fácil de reemplazar para mejorar la distancia
  • distancia de transmisión hasta 1000 m

2. Controlador de joystick

Joystick Shield tiene 4 botones grandes + 2 botones pequeños + botón de selección de joystick y un joystick de pulgar de dos ejes (eje X de 0 a 1023, eje Y de 0 a 1023) El escudo se encuentra en la parte superior de su Arduino y lo convierte en un controlador simple. En mi boceto, Button Up es para Buzzer (bocina), Button Right - luz frontal (LED + resistencia 200 Ohm), Botón Izquierdo - luces traseras (LEDs + resistencia 200 Ohm). No se utilizan otros botones.

Prueba de joystick:

Estado inactivo:X =499, Y =502, Arriba =1, Derecha =1, Abajo =1, Izquierda =1

3. Coche Arduino 4WD RC

Realice las conexiones como se muestra en la imagen del diagrama de cableado anterior.

Nota:antes de cargar el código, debe desconectar los cables de puente de la placa Arduino Uno (pines 0, 1).

¡Que una vez que haya realizado todos los pasos correctamente, el automóvil estará listo para funcionar!

Después de encender el controlador Arduino Car y Joystick, puede usar el Joystick para controlar el automóvil moviendo el Joystick hacia adelante y hacia atrás, el automóvil se moverá hacia adelante o hacia atrás, y mover el Joystick hacia la izquierda y la derecha hará que el automóvil gire a la izquierda y a la derecha.

¡Manténganse al tanto!

Código

  • Car_nRF24.ino
  • Joystick_nRF24.ino
Car_nRF24.ino Arduino
Código para Arduino RC Car
 / * Código del receptor del módulo JoyStick - CONEXIONES:Módulos nRF24L01 Ver:1 - GND 2 - VCC 3.3V !!! NO 5V 3 - CE a Arduino pin 6 4 - CSN a Arduino pin 8 5 - SCK a Arduino pin 13 6 - MOSI a Arduino pin 11 7 - MISO a Arduino pin 12 8 - SIN USAR * /// ----- ( Importar las bibliotecas necesarias) ----- # include  #include  #include  / * ----- (Declarar constantes y números de pin) ----- * / # define CE_PIN 6 # define CSN_PIN 8 // NOTA:el "LL" al final de la constante es "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Defina el tubo de transmisión # define light_Front 18 // LED Front Right pin A4 para Arduino Uno # define light_Back 19 // LED Back Right pin A5 para Arduino Uno # define horn_Buzz 7 #define ENA_m1 3 // Habilitar / acelerar el motor Delantero derecho #define ENB_m1 5 // Habilita / acelera el motor Atrás Derecha # define ENA_m2 9 // Habilita / acelera el motor Delantero Izquierdo # define ENB_m2 10 // Habilita / acelera el motor Atrás Izquierda # define IN_11 0 // L298N # 1 en 1 motor Delantero Derecho #define IN_12 1 // L298N # 1 in 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 en 1 motor Delantero Izquierdo # define IN_22 15 // L298N # 2 en 2 motor Delantero Izquierdo # define IN_23 16 // L298N # 2 en 3 motor Atrás Izquierda # define IN_24 17 // L298N # 2 en 4 motor Atrás Izquierda / * ----- (Declarar objetos) ----- * / RF24 radio (CE_PIN, CSN_PIN); // Crear una radio / * ----- (Declarar variables) ----- * / int joystick [6]; // Array de 6 elementos con lecturas de Joystickint speedRight =0; int speedLeft =0; int xAxis, yAxis; // las cuatro variables de botón de joystickint buttonUp; int buttonRight; int buttonDown; int buttonLeft; void setup () {pinMode (light_Front, PRODUCCIÓN); pinMode (light_Back, SALIDA); pinMode (bocina_Buzz, SALIDA); pinMode (ENA_m1, SALIDA); pinMode (ENB_m1, SALIDA); pinMode (ENA_m2, SALIDA); pinMode (ENB_m2, SALIDA); pinMode (IN_11, SALIDA); pinMode (IN_12, SALIDA); pinMode (IN_13, SALIDA); pinMode (IN_14, SALIDA); pinMode (IN_21, SALIDA); pinMode (IN_22, SALIDA); pinMode (IN_23, SALIDA); pinMode (IN_24, SALIDA); / * Serial.begin (9600); Serial.println ("Inicio del receptor Nrf24L01"); * / radio.begin (); radio.openReadingPipe (1, tubería); radio.startListening ();} void loop () {if (radio.available ()) {radio.read (joystick, tamaño de (joystick)); xAxis =joystick [0]; yAxis =joystick [1]; // las cuatro variables de botón de la matriz de joystick int buttonUp =joystick [2]; int buttonRight =joystick [3]; int buttonDown =joystick [4]; int buttonLeft =joystick [5]; //Serial.println (); // para depurar // Obtener la carga útil de datos - Código de depuración a continuación 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);} // Eje Y usado para avance y control hacia atrás if (yAxis <470) {// Establecer motores derechos hacia atrás digitalWrite (IN_11, LOW); escritura digital (IN_12, ALTA); escritura digital (IN_13, ALTA); digitalWrite (IN_14, BAJO); // Establecer motores izquierdos hacia atrás digitalWrite (IN_21, HIGH); digitalWrite (IN_22, BAJO); digitalWrite (IN_23, BAJO); escritura digital (IN_24, ALTA); // Convierta las lecturas decrecientes del eje Y para retroceder de 470 a 0 en un valor de 0 a 255 para la señal PWM para aumentar la velocidad del motor speedRight =map (yAxis, 470, 0, 0, 255); speedLeft =map (yAxis, 470, 0, 0, 255); } else if (yAxis> 550) {// Establecer motores derechos hacia adelante digitalWrite (IN_11, HIGH); digitalWrite (IN_12, BAJO); digitalWrite (IN_13, BAJO); escritura digital (IN_14, ALTA); // Colocar motores izquierdos adelante digitalWrite (IN_21, LOW); escritura digital (IN_22, ALTA); escritura digital (IN_23, ALTA); digitalWrite (IN_24, BAJO); // Convierta las lecturas crecientes del eje Y para avanzar de 550 a 1023 en un valor de 0 a 255 para la señal PWM para aumentar la velocidad del motor speedRight =map (yAxis, 550, 1023, 0, 255); speedLeft =map (yAxis, 550, 1023, 0, 255); } // Si el joystick permanece en el medio los motores no se mueven else {speedRight =0; speedLeft =0; } // Eje X usado para control izquierdo y derecho if (xAxis <470) {// Convertir las lecturas decrecientes del eje X de 470 a 0 en valores crecientes de 0 a 255 int xMapped =map (xAxis, 470, 0, 0 , 255); // Mover a la izquierda - disminuir la velocidad del motor izquierdo, aumentar la velocidad del motor derecho speedLeft =speedLeft - xMapped; speedRight =speedRight + xMapped; // Limita el rango de 0 a 255 if (speedLeft <0) {speedLeft =0; } if (speedRight> 255) {speedRight =255; }} if (xAxis> 550) {// Convierta las lecturas crecientes del eje X de 550 a 1023 en 0 a 255 valor int xMapped =map (xAxis, 550, 1023, 0, 255); // Mover a la derecha - disminuir la velocidad del motor derecho, aumentar la velocidad del motor izquierdo speedLeft =speedLeft + xMapped; speedRight =speedRight - xMapped; // Limite el rango de 0 a 255 if (speedLeft> 255) {speedLeft =255; } if (speedRight <0) {speedRight =0; }} // Evite los zumbidos a bajas velocidades (ajuste de acuerdo con sus motores. Mis motores no podían comenzar a moverse si el valor de PWM estaba por debajo del valor de 70) if (speedLeft <70) {speedLeft =0; } if (speedRight <70) {speedRight =0; } analogWrite (ENA_m1, speedRight); // Enviar señal PWM al motor A analogWrite (ENB_m1, speedRight); analogWrite (ENA_m2, speedLeft); // Enviar señal PWM al motor B analogWrite (ENB_m2, speedLeft); / * Serial.print ("X ="); Serial.print (xAxis); Serial.print ("Y ="); Serial.print (yAxis); Serial.print ("Arriba ="); Serial.print (joystick [2]); Serial.print ("Derecha ="); Serial.print (joystick [3]); Serial.print ("Abajo ="); Serial.print (joystick [4]); Serial.print ("Izquierda ="); Serial.println (joystick [5]); * /}} 
Joystick_nRF24.ino Arduino
Código para Joystick Controller
 / * Código del transceptor del módulo JoyStick - CONEXIONES:Módulos nRF24L01 Ver:1 - GND 2 - VCC 3.3V !!! NO 5V 3 - CE al pin 9 de Arduino 4 - CSN al pin 10 de Arduino 5 - SCK al pin 13 de Arduino 6 - MOSI al pin 11 de Arduino 7 - MISO al pin 12 de Arduino 8 - SIN USAR Pines de botón predeterminados:Arriba - pin 2 Derecha - pin 3 Abajo - pin 4 Izquierda - pin 5 - Módulo de joystick analógico GND a Arduino GND VCC a Arduino + 5V X Pot a Arduino A0 Y Pot a Arduino A1 / * ----- (Importar bibliotecas necesarias) ----- * / # include  #include "nRF24L01.h" #include "RF24.h" #define CE_PIN 9 # define CSN_PIN 10 # define xAxis 14 // A0 for Arduino UNO # define yAxis 15 // A1 for Arduino UNO // NOTA:el "LL" al final de la constante es "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Definir la tubería de transmisión / * ----- (Declarar objetos) ----- * / RF24 radio (CE_PIN, CSN_PIN); // Crear una radio / * ----- (Declarar variables) ----- * / int joystick [6]; // Array de 6 elementos con lectura de Joystick y 4 botonesint buttonUp =2; int buttonRight =3; int buttonDown =4; int buttonLeft =5; void setup () {Serial.begin (9600); radio.begin (); radio.openWritingPipe (tubería); radio.stopListening (); // declara pinMode para todos los botones y el 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);} bucle vacío () {joystick [0] =analogRead (xAxis); joystick [1] =analogRead (yAxis); joystick [2] =digitalRead (buttonUp); joystick [3] =digitalRead (buttonRight); joystick [4] =digitalRead (buttonDown); joystick [5] =digitalRead (buttonLeft); radio.write (joystick, tamaño de (joystick)); retraso (20); Serial.print ("X ="); Serial.print (analogRead (xAxis)); Serial.print ("Y ="); Serial.print (analogRead (yAxis)); Serial.print ("Arriba ="); Serial.print (digitalRead (buttonUp)); Serial.print ("Derecha ="); Serial.print (digitalRead (buttonRight)); Serial.print ("Abajo ="); Serial.print (digitalRead (buttonDown)); Serial.print ("Izquierda ="); Serial.println (digitalRead (buttonLeft));} 

Esquemas

rc_car_tp3A7JlpYw.fzz

Proceso de manufactura

  1. Dados digitales Arduino
  2. Controlador de juego Arduino
  3. Coche RC controlado por joystick
  4. Iron Man
  5. Encuéntrame
  6. Brazo robótico Arduino impreso en 3D
  7. Control del humidificador Arduino
  8. Contador de autos usando Arduino + Procesamiento + PHP
  9. NeoMatrix Arduino Pong
  10. Joystick de Arduino
  11. RC Porsche Car (Proyecto Arduino)