Tabla de contenido:

Coche inalámbrico controlado por gestos: 7 pasos
Coche inalámbrico controlado por gestos: 7 pasos

Video: Coche inalámbrico controlado por gestos: 7 pasos

Video: Coche inalámbrico controlado por gestos: 7 pasos
Video: AUTO A CONTROL REMOTO CON SENSOR 2024, Noviembre
Anonim
Coche inalámbrico controlado por gestos
Coche inalámbrico controlado por gestos

En este tutorial vamos a aprender cómo hacer un coche controlado por gestos o cualquier robot. Este proyecto tiene dos partes, una parte es la unidad transmisora y la otra parte es la unidad receptora. La unidad transmisora está realmente montada en unos guantes de mano y la unidad receptora se coloca dentro de un automóvil o cualquier robot. Ahora es el momento de hacer un buen coche. ¡Vamos!

Paso 1: Equipos

Unidad transmisora

1. Arduino Nano.

2. Módulo de sensor MPU6050.

3. Transmisor RF 433 MHz.

4. Cualquier tipo de batería de 3 celdas y 11,1 voltios (aquí he usado una celda de botón).

5. Vero-Board.

6. Guantes de mano.

Unidad receptora

1. Arduino Nano o Arduino Uno.

2. Módulo de controlador de motor L298N.

3. Armazón de robot de 4 ruedas, incluidos motores.

4. Receptor RF 433 RF.

5. Batería Li-po de 3 celdas y 11,1 voltios.

6. Vero-tablero.

Otros

1. Pegamento en barra y pistola.

2. Cables de puente.

3. Destornilladores

4. Kit de soldadura.

etc.

Paso 2: archivo de imagen de diagrama de circuito

Archivo de imagen de diagrama de circuito
Archivo de imagen de diagrama de circuito

Paso 3: Archivo Fritzing del diagrama de circuito

Paso 4: Código del transmisor

#incluir

#incluir

#incluir

MPU6050 mpu6050 (cable);

temporizador largo = 0;

char * controlador;

configuración vacía ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (verdadero); vw_set_ptt_inverted (verdadero); // vw_set_tx_pin (10); vw_setup (4000); // velocidad de transferencia de datos Kbps

}

bucle vacío ()

{ ////////////////////////////////////////////////////////////////////////////////////////////////

mpu6050.update ();

si (millis () - temporizador> 1000)

{Serial.println ("========================================== =========== "); Serial.print ("temp:"); Serial.println (mpu6050.getTemp ()); Serial.print ("accX:"); Serial.print (mpu6050.getAccX ()); Serial.print ("\ taccY:"); Serial.print (mpu6050.getAccY ()); Serial.print ("\ taccZ:"); Serial.println (mpu6050.getAccZ ()); Serial.print ("gyroX:"); Serial.print (mpu6050.getGyroX ()); Serial.print ("\ tgyroY:"); Serial.print (mpu6050.getGyroY ()); Serial.print ("\ tgyroZ:"); Serial.println (mpu6050.getGyroZ ()); Serial.print ("accAngleX:"); Serial.print (mpu6050.getAccAngleX ()); Serial.print ("\ taccAngleY:"); Serial.println (mpu6050.getAccAngleY ()); Serial.print ("gyroAngleX:"); Serial.print (mpu6050.getGyroAngleX ()); Serial.print ("\ tgyroAngleY:"); Serial.print (mpu6050.getGyroAngleY ()); Serial.print ("\ tgyroAngleZ:"); Serial.println (mpu6050.getGyroAngleZ ()); Serial.print ("angleX:"); Serial.print (mpu6050.getAngleX ()); Serial.print ("\ tangleY:"); Serial.print (mpu6050.getAngleY ()); Serial.print ("\ tangleZ:"); Serial.println (mpu6050.getAngleZ ()); Serial.println ("=========================================== ========== / n "); temporizador = milis (); }

/////////////////////////////////////////////////////////////////////////////////////

if (mpu6050.getAccAngleX () 30) {controlador = "X2"; vw_send ((uint8_t *) controlador, strlen (controlador)); vw_wait_tx (); // Espere hasta que todo el mensaje desaparezca Serial.println ("FORWARD"); } más si (mpu6050.getAccAngleY ()> 40) {controlador = "Y1"; vw_send ((uint8_t *) controlador, strlen (controlador)); vw_wait_tx (); // Espere hasta que todo el mensaje desaparezca Serial.println ("LEFT"); } else if (mpu6050.getAccAngleY () <- 40) {controlador = "Y2"; vw_send ((uint8_t *) controlador, strlen (controlador)); vw_wait_tx (); // Espere hasta que todo el mensaje desaparezca Serial.println ("DERECHA"); } más si (mpu6050.getAccAngleX () - 10 && mpu6050.getAccAngleY () - 10) {controlador = "A1"; vw_send ((uint8_t *) controlador, strlen (controlador)); vw_wait_tx (); // Espere hasta que todo el mensaje desaparezca Serial.println ("STOP"); }}

Paso 5: Código del receptor

#incluir

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; configuración vacía () {Serial.begin (9600); vw_set_ptt_inverted (verdadero); // Requerido para DR3100 vw_set_rx_pin (12); vw_setup (4000); // Bits por segundo pinMode (13, SALIDA); pinMode (LA, SALIDA); pinMode (LB, SALIDA); pinMode (RA, SALIDA); pinMode (RB, SALIDA); vw_rx_start (); // Inicie el PLL del receptor ejecutando Serial.println ("Todo OK");

}

bucle vacío () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message (buf, & buflen)) // Sin bloqueo

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("ATRÁS"); hacia atrás(); retraso (100); //apagado(); } más si ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("ADELANTE"); hacia adelante(); retraso (100); //apagado(); }

más si ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("IZQUIERDA"); izquierda(); retraso (100); //apagado(); }

más si ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("DERECHA"); Derecha(); retraso (100); //apagado(); } más si ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("DETENER"); apagado(); retraso (100); }} else {Serial.println ("No se recibe señal"); }}

anular adelante ()

{analogWrite (LA, 70); analogWrite (LB, 0); escritura analógica (RA, 70); analogWrite (RB, 0); }

vacío al revés ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 0); analogWrite (RB, 70); }

vacío a la izquierda ()

{analogWrite (LA, 0); analogWrite (LB, 70); escritura analógica (RA, 70); analogWrite (RB, 0); }

vacío a la derecha ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 70); }

anular ()

{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }

Paso 6: archivos INO

Paso 7: enlace de bibliotecas

Biblioteca virtual de cables:

MPU6050_tockn Libraby:

Biblioteca de cables:

Recomendado: