Cómo controlar electrodomésticos, modelos controlados por radio, carriolas motorizadas con un vistazo



En mis artículos anteriores, hablé sobre cómo ayudar a las personas paralizadas a comunicarse con el mundo exterior: comunicar sus deseos, escribir cartas, navegar por Internet utilizando solo sus ojos y un dispositivo que rastrea su mirada (rastreador de ojos). En este caso, físicamente, una persona sigue estando limitada por el mundo de la computadora y la cama.

Aquí hablaré sobre las formas más simples (en mi opinión) de cambiar algo en el mundo exterior: encender la luz o una guirnalda en un árbol de Año Nuevo, controlar un vehículo todo terreno con un control de radio, hacer que un cochecito motorizado se mueva en la dirección correcta.

Contenido


Introduccion
Componentes requeridos
Conecta Arduino a una computadora
Esquema de control de toma de corriente
Circuito de control del motor

Introduccion


Además del dispositivo de seguimiento de la mirada y el software gratuito para él, descrito aquí en este artículo, necesitamos algo que conecte la computadora a objetos externos.

A pesar de la venta de varios dispositivos que se pueden controlar desde una computadora, la opción más simple y económica para mí era usar dos partes: una placa Arduino y una placa de relé múltiple.

Si nunca se ha encontrado con Arduino, aún no abandone la lectura, en el futuro verá que en este contexto es bastante simple trabajar con él, no es por nada que hay muchos diseñadores infantiles basados ​​en Arduino a la venta.

Al mismo tiempo, si no está familiarizado con la seguridad eléctrica y nunca ha realizado el cableado eléctrico en la casa, ¡no intente repetir los circuitos que utilizan la conexión a los enchufes!

Todo lo que necesita saber sobre Arduino: este es un pequeño dispositivo que se puede insertar en el puerto USB de la computadora, después de lo cual podrá encender / apagar las señales eléctricas en sus contactos de acuerdo con las instrucciones recibidas.

Las señales son de baja potencia, por lo tanto, para controlar algo más potente (bombillas eléctricas, por ejemplo), colocamos una unidad de relé que, en respuesta a la señal del Arduino, cierra y abre los contactos de control de dispositivos externos. Además, los relés aíslan los circuitos eléctricos de la computadora Arduino + de los circuitos eléctricos del dispositivo administrado.
Entonces, la base de los circuitos de control para tomas de corriente y motores, que se describirá más adelante, es la siguiente: dos partes conectadas por cables entre sí, conectadas por un cable USB a una computadora y cables a lo que queremos controlar:



En el mundo real, podría verse así:



Enviamos un comando desde una computadora, Arduino uno de sus contactos enciende / apaga el relé, que es el interruptor de cualquier dispositivo o un botón separado en el dispositivo.

Componentes requeridos


Lo necesitaremos (entre paréntesis están los precios de 2018 en una tienda local. Aquellos que pueden comprar en China pueden ahorrar mucho dinero, pero pierden el tiempo):

1) Placa Arduino UNO con un cable USB (es posible un mercado secundario, con CH340 barato en lugar de costoso FTDI) (450 rublos)

2) Una placa con cuatro relés que funcionan con un voltaje de 5 voltios y capaz de controlar dispositivos con un voltaje de 220 voltios. (450 rublos). Todavía hay tableros que funcionan con 12 voltios, ¡no lo mezcles!

3) Un montón de cables para conectar dos placas. En mi caso, se requerían cables con un enchufe en un lado y un pin en el otro, ya que el bloque de relé tiene contactos de pin, y Arduino tiene enchufes. Mire los conectores en sus tableros cuando compre cables (150 rublos).



Conecta Arduino a una computadora


Primero, instale el software de programación Arduino desde www.arduino.cc :

En la página https://www.arduino.cc/en/Main/Software, haga clic en "Windows Installer":



Haga clic en "Solo descargar":



Descargue y ejecute el instalador:



Estamos de acuerdo en todo:









Cuando se instala el programa, conecte la placa Arduino y la computadora con un cable USB.

Las luces de la placa Arduino se iluminan, y en el administrador de dispositivos verá que ha aparecido un nuevo puerto y se le ha asignado un número determinado, por ejemplo, COM3:



Cambiemos su número a COM9, ya que en el futuro todo estará vinculado específicamente a COM9. Para hacer esto, haga clic derecho sobre él, llame al menú contextual y seleccione "propiedades" en él:



En la pestaña "parámetros de puerto", haga clic en el botón "avanzado":



Y finalmente, seleccione "COM9" como el número de puerto COM.



Cierre todas las ventanas abiertas con el botón "Aceptar", luego retire e inserte el cable USB para verificar que Arduino continuará conectándose a través del puerto COM9 si está insertado en el mismo puerto USB de la computadora:



Ahora llame y configure el programa Arduino recientemente instalado desde el sitio:



En el menú "Herramientas", configure la placa "Arduino UNO" y el puerto "COM9":



Ahora todo está listo para recopilar los esquemas y darles vida.

Esquema de control de toma de corriente


Si no está familiarizado con la seguridad eléctrica y nunca ha realizado el cableado en la casa, ¡no intente repetir este diagrama! ¡El circuito usa voltaje que pone en peligro la vida!

Una vez más, preguntas de control:

  • ¿Sabes cómo distinguir un cable con una fase de un cable con un cero en un zócalo?
  • ¿Sabes cómo hacer sonar los cables y asegurarte de que no haya un cortocircuito después de enchufarlo?

Si está respondiendo con incertidumbre estas preguntas, pídale a una persona más experimentada que monte el circuito.

Ahora al grano.

Funciona así:


El diagrama de conexión del socket se ve así:



Suministramos cero directamente a los enchufes, y la fase a través del relé. Si hace lo contrario, funcionará, pero habrá un peligro de descarga eléctrica de los dispositivos APAGADOS. Es decir, tome el televisor defectuoso apagado y lo sorprenderá.

Si la casa tiene una tierra de protección, use una toma de tierra.

El siguiente es mi diseño de referencia. En él, cometí un error con el color de los cables: el color del cable neutro se volvió marrón y las fases azules. Presta atención a esto.

Tomamos un pedazo del tablero del tamaño apropiado para que quepa en él (de izquierda a derecha): Arduino, bloque de relés, cuatro enchufes, un soporte para presionar el cable al tablero.



Cortamos el exceso y usamos un cincel para hacer una ranura para los cables de modo que quepan libremente debajo de los enchufes.



Atornillamos las placas Arduino y el bloque de relés con tornillos a la placa, colocando arandelas de plástico.



Si las arandelas no estaban a la mano, puede cortar las espigas:



Prepare los cables: corte al largo deseado y quítelo del aislamiento. Es recomendable estañarlos con un soldador en lugares de contacto con enchufes y relés.



Presione el cable a la placa con un soporte para que no se pueda sacar.



Conectamos los cables y atornillamos los enchufes. Llamamos a la cadena.





Conectamos la placa Arduino a la unidad de relé con un paquete de cables de acuerdo con el diagrama anterior.



Cubrimos los tableros con una carcasa protectora de material no conductor. ¡Esto debe hacerse aquí, ya que el voltaje que pone en peligro la vida es adecuado para el bloque de relés! En un caso extremo, al menos envuelva los contactos eléctricos del relé.

Utilicé un contenedor para productos hechos de plástico duro como una carcasa, uniéndolo con tornillos:



Recuerde hacer un agujero para el cable USB.



Conecte el dispositivo a la computadora, pero no lo conecte a una toma de corriente .

Lanzamos el programa "Arduino" y copiamos este texto del programa allí:

//     2,3,4,5 int Relay1=2, Relay2=3, Relay3=4, Relay4=5; void setup() { pinMode(Relay1,OUTPUT); pinMode(Relay2,OUTPUT); pinMode(Relay3,OUTPUT); pinMode(Relay4,OUTPUT); Serial.begin(9600); } void loop() { delay (200); // 1.     while(Serial.available()) { switch(Serial.read()) { case '0': //    digitalWrite(Relay1,0); break; case '1': //    digitalWrite(Relay1,1); break; case '2': //    digitalWrite(Relay2,0); break; case '3': //    digitalWrite(Relay2,1); break; case '4': //    digitalWrite(Relay3,0); break; case '5': //    digitalWrite(Relay3,1); break; case '6': //    digitalWrite(Relay4,0); break; case '7': //    digitalWrite(Relay4,1); break; } // switch } // while } 

Luego haga clic en el botón de descarga del programa en Arduino (vea la figura a continuación). Si todo salió sin errores, entonces vemos la inscripción "Descarga completa".



Verifique que nuestro dispositivo ejecute comandos. Para hacer esto, llame al monitor de puerto:



Ahora escribiremos el número 1 y presionaremos Enter o el botón "Enviar":



Se escuchará un clic característico del relé y el contacto en el primer enchufe se conectará al cable de fase. Comprueba esto con un probador. Luego marque el número 0 y el relé desconectará el contacto.

Mirando el texto del programa, puede ver lo que sucederá si escribimos otros números:

3.2 - enciende, apaga la segunda salida

5,4 - enciende, apaga la tercera salida

7.6 - enciende, apaga la cuarta salida

Verifique con un probador la conexión de estos enchufes. Después de verificar, puede conectar el cable al voltaje en la red y comenzar a encender / apagar dispositivos reales.

Nuestra siguiente tarea es encender y apagar los dispositivos con un vistazo. Para hacer esto, configuramos el programa bkb descrito aquí en este artículo (¡SE NECESITA LA ÚLTIMA VERSIÓN DEL PROGRAMA!) .

Supongamos que queremos encender y apagar una lámpara y una guirnalda de árboles de Navidad.
En el programa Paint estándar, dibujamos cuatro dibujos de 200x200 en formato BMP :



También crearemos cuatro archivos por lotes: c.cmd, d.cmd, e.cmd, f.cmd

Contendrán comandos para enviar caracteres 1,0,3,2 al puerto COM9. Y recordamos que encienden y apagan los enchufes primero y segundo. ¡Es importante que no haya líneas vacías entre las dos líneas en estos archivos!

c.cmd:

 MODE COM9: BAUD=9600 DATA=8 STOP=1 PARITY=N to=off xon=off odsr=off octs=off rts=off idsr=off dtr=off echo 1 > com9: 

d.cmd:

 MODE COM9: BAUD=9600 DATA=8 STOP=1 PARITY=N to=off xon=off odsr=off octs=off rts=off idsr=off dtr=off echo 0 > com9: 

e.cmd:

 MODE COM9: BAUD=9600 DATA=8 STOP=1 PARITY=N to=off xon=off odsr=off octs=off rts=off idsr=off dtr=off echo 3 > com9: 

f.cmd:

 MODE COM9: BAUD=9600 DATA=8 STOP=1 PARITY=N to=off xon=off odsr=off octs=off rts=off idsr=off dtr=off echo 2 > com9: 

Sobrescribimos los archivos .bmp y .cmd creados en el directorio de cuadrícula del programa bkb .

Después de iniciar el programa bkb en modo tabla, aparecerá una nueva quinta línea con nuestras imágenes:



Cuando mantenemos nuestra mirada en la imagen, se inicia la acción correspondiente.

ATENCION! La primera vez después de iniciar el programa, la acción no funciona. Todas las veces posteriores: funciona. Esto se debe al hecho de que durante la primera inicialización del puerto, la señal en la línea DTR cambia, lo que hace que el Arduino se reinicie, que dura unos tres segundos.

Dicen que esto se puede resolver con un soldador, pero no me atreví a realizar tales trabajos de joyería. Entonces, por ahora, solo recuerda que la primera vez que necesitas encender dos veces.

Observación

Probablemente ya haya entendido que en los archivos .cmd puede llamar a cualquier programa externo. Si tiene algún dispositivo que pueda controlarse desde la línea de comandos, usted mismo puede ejecutar dichos comandos atribuyendo las acciones necesarias a las imágenes de la tabla.

Circuito de control del motor


Mi amigo actualizó el scooter giroscópico y lo reemplazó con el eje trasero del cochecito. La gestión se llevó a cabo por control remoto a través de la placa Arduino.



Decidimos intentar darle al niño la oportunidad de controlar el cochecito solo con una mirada. Para hacer esto, se agregó el modo de control de silla de ruedas al programa bkb .



Después de comenzar en este modo, aparecen flechas en la pantalla, una mirada que hace que el programa envíe caracteres de control al puerto COM9, que luego son interpretados por la carriola para avanzar / retroceder, girar a la izquierda / derecha y detenerse.


Mientras se finaliza el cochecito, decidí usar el mismo programa para el control remoto del modelo de tanque con seguimiento. Esto también es algo bastante útil. Primero, el niño recibe habilidades que son útiles para controlar el cochecito. En segundo lugar, este es solo un juego emocionante.



Cada una de las pistas del tanque está controlada por una palanca que se puede mover hacia adelante o hacia atrás. Al mover la palanca hacia adelante, presiona el botón, obligando al motor a girar hacia adelante. Al mover la palanca hacia atrás, presiona el botón, lo que hace que el motor gire en la dirección opuesta. No es posible presionar dos botones al mismo tiempo; es imposible avanzar y retroceder.
La unidad de relé se conectó a los botones del control remoto de acuerdo con el siguiente diagrama. El circuito no permite activar los botones "motor adelante" y "motor atrás" simultáneamente. Un relé enciende / apaga el motor y el segundo selecciona la dirección hacia adelante o hacia atrás.

Busque en la placa del panel de control dónde están conectados los botones y conéctese a ellos, de acuerdo con el diagrama anterior.

Tenga en cuenta que, a diferencia del circuito anterior, Arduino controla el bloque de relés con los pines 6 a 9.



Conecté el bloque de relé al control remoto a través del conector para que el control remoto se pueda desconectar fácilmente y usar por separado:



El programa que Arduino necesita descargar recibe los mismos comandos de la computadora que se utilizan para controlar la carriola motorizada:

F-adelante
B-back
Izquierda
Derecha
S-stop

El texto del programa se proporciona a continuación.

 //     6,7,8,9 int Relay1=6, Relay2=7, Relay3=8, Relay4=9; int heartbeat=0; //     void setup() { pinMode(Relay1,OUTPUT); pinMode(Relay2,OUTPUT); pinMode(Relay3,OUTPUT); pinMode(Relay4,OUTPUT); Serial.begin(9600); } void RCStop() { digitalWrite(Relay1,0); digitalWrite(Relay2,0); digitalWrite(Relay3,0); digitalWrite(Relay4,0); } void RCForward() { digitalWrite(Relay1,1); digitalWrite(Relay2,1); digitalWrite(Relay3,1); digitalWrite(Relay4,1); } void RCBack() { digitalWrite(Relay1,1); digitalWrite(Relay2,0); digitalWrite(Relay3,1); digitalWrite(Relay4,0); } void RCLeft() { digitalWrite(Relay1,1); digitalWrite(Relay2,0); digitalWrite(Relay3,1); digitalWrite(Relay4,1); } void RCRight() { digitalWrite(Relay1,1); digitalWrite(Relay2,1); digitalWrite(Relay3,1); digitalWrite(Relay4,0); } void loop() { // 1.     while(Serial.available()) { switch(Serial.read()) { case 'S': //  ! RCStop(); heartbeat=0; break; case 'F': //  ! RCForward(); heartbeat=0; break; case 'B': //  ! RCBack(); heartbeat=0; break; case 'L': //  ! RCLeft(); heartbeat=0; break; case 'R': //  ! RCRight(); heartbeat=0; break; } // switch } // while // 2.    //       -   delay(10); heartbeat++; if(heartbeat>30) { heartbeat=30; //    ! RCStop(); //   -   } } 

Si se interrumpe la conexión con la computadora (no llegan caracteres en 0.3 segundos, entonces el Arduino apaga los motores). Esta situación se puede modelar cerrando los ojos mientras se controlan los ojos. Aitreker no podrá determinar la dirección de visión y no se enviarán señales. Los motores se detendrán.

He equipado el modelo de tanque con una cámara de video, que generalmente se llama tasa de cambio, o FPV (Vista en primera persona), que transmite una señal analógica a una frecuencia de aproximadamente 5.8 GHz. Tomé una de las cámaras más baratas, también equipadas con un transmisor y una antena: AKK BA-3. Me costó 1050 rublos. La cámara con el transmisor es tan pequeña que cabe en las manos de la figura de Lego:



Todo lo que se necesita hacer para que la cámara funcione es conectarla a la alimentación (de 3,2 a 5,5 voltios). Luego, con un solo botón, seleccione el rango, la frecuencia y la potencia del transmisor.

La cámara se calienta significativamente, por lo que recomiendo configurar la potencia mínima (25 milivatios). Además, lo conecté a la batería del tanque con un voltaje de 6 voltios, que excede los valores permitidos. Por lo tanto, no sé cuánto durará. Le recomiendo que use un estabilizador de voltaje para alimentar la cámara.

Al conectar la cámara, pegué un elemento del constructor de Lego al tanque, y los elementos restantes ya estaban unidos a él con una simple conexión. Esto facilita la extracción y el orden de la cámara. Además, al toparse con un obstáculo, la cámara simplemente puede plegarse, lo que lo salvará de daños.



Para recibir la señal de video de la cámara, utilicé el receptor Eachine ROTG01. No tomó nuevo por 1800 rublos. Es solo una caja con una antena que se conecta al puerto USB de la computadora y es visible como una cámara USB. Es decir, iniciamos la aplicación Cámara en Windows y vemos qué acepta el receptor. Incluso al principio, debe mantener presionado el único botón del receptor para que escanee el éter y encuentre la frecuencia con la que nuestra cámara transmite una señal.

En general, necesitamos tres puertos USB en la computadora:

- para un rastreador de TI
- para Arduino, controlar el panel de control del tanque
- para receptor de video



Iniciamos la salida de imagen de la cámara, por ejemplo, el programa "Cámara". Lanzamos el programa bkb y seleccionamos el modo de control para la carriola motorizada.

Lo que puede suceder a continuación se muestra en el video:


Se puede ver que la velocidad de movimiento, y especialmente la velocidad de los giros, es demasiado grande. Entonces, si elige un modelo controlado por radio, elija el más lento. Una excavadora o algo así.

¿Y por qué no tomar el "robot espía" terminado?


Caí en manos de uno de ellos, HappyCow 777-325.



Estaba encantado: él tiene todo, y el control remoto y la transmisión de video, y viaja bastante despacio. Sin embargo, hay una característica: se controla solo a través de una aplicación en Android o iOS. Bueno, resolveremos esto a través del control remoto de Android, por ejemplo, usando scrcpy .

Pero resultó que, además de las deficiencias corregibles (ángulo de visión estrecho de la cámara), la máquina tiene una incorregible. El video transmitido a través de Wi-Fi tiene un retraso terrible.
Es decir, este robot se ha estrellado contra algo durante mucho tiempo, y todos están presionando el gas, pensando que aún no ha llegado a un obstáculo.

Para un niño que está aprendiendo a controlar una máquina de forma remota, esto, en mi opinión, es inaceptable.

Entonces el robot obtiene una resignación. Aunque me prestaría el chasis.

Conclusión


Les deseo todo el éxito en repetir y desarrollar las soluciones técnicas descritas.

Source: https://habr.com/ru/post/es430078/


All Articles