Tabla de contenido:

Control remoto basado en navegador Arduino (linux): 9 pasos (con imágenes)
Control remoto basado en navegador Arduino (linux): 9 pasos (con imágenes)

Video: Control remoto basado en navegador Arduino (linux): 9 pasos (con imágenes)

Video: Control remoto basado en navegador Arduino (linux): 9 pasos (con imágenes)
Video: Crea tu servidor Docker Remoto en Linux - Programación con Remote Containers y Visual Studio Code 2024, Noviembre
Anonim
Control remoto basado en navegador Arduino (linux)
Control remoto basado en navegador Arduino (linux)
Control remoto basado en navegador Arduino (linux)
Control remoto basado en navegador Arduino (linux)

Tenemos hijos. Me encantan, pero siguen ocultando el mando a distancia del satélite y la televisión cuando ponen los canales de los niños. Después de que esto sucediera a diario durante varios años, y después de que mi querida esposa me permitiera tener un Arduino para Navidad, decidí que era hora de hacer algo útil (¡en sus ojos!) Con el Arduino. Así que aquí tenemos la culminación de eso: una interfaz basada en web para Arduino que reemplaza mis controles remotos y es accesible desde mi red interna. Cuando descubra por qué mi escudo ethernet no permite que mi arduino mantenga un boceto, escribiré un nuevo boceto que usa el escudo ethernet como servidor web, lo que significa que no necesito apache instalado en mi computadora. ¡Estén atentos, llegaré allí!

Paso 1: requisitos previos

Prerrequisitos
Prerrequisitos

Hardware: Lado de Arduino: Arduino - Estoy usando una placa de pruebas Arduino Uno R2 - su tienda de electrónica local, o la cocina si desea una placa de prueba auténtica Caja de montaje - Usé una vieja caja de plástico con una tapa transparente Componentes: LED infrarrojo - Desoldado uno de un control remoto roto (¡gracias niños!) Receptor de infrarrojos - Obtuve el mío de un extensor remoto de ojo mágico Transistor - Usé una resistencia BC547 - Usé una resistencia variable de 1.5k ohmios configurada en cables de puente de placa de pruebas de 1k ohmios - Obtuve la mía desde un carrete de cable RJ45 de núcleo sólido Lado de la computadora: Computadora para usar como servidor Cable USB a Arduino Software: Software Arduino - de la biblioteca irremote arduino.cc - de https://www.arcfn.com/2009/08/multi-protocol- infrared-remote-library.html (gracias Ken, gran trabajo!) Servidor web Apache con PHP instalado - apache.org Dirección IP interna - la mía es 192.168.0.9 Imagen de su control remoto - google o una imagen tomada con su cámara. Guardé el mío con una resolución de 200x600

Paso 2: construcción del tablero

Construyendo el tablero
Construyendo el tablero

Se recomienda encarecidamente usar una placa de pruebas para un arduino. Monté mi Arduino y una placa de pruebas en el mismo gabinete y conecté todos los pines que uso regularmente directamente a la placa de pruebas de forma permanente. Pines de Arduino utilizados para este proyecto: 5v, tierra Pines digitales 3, 11 (el pin 3 controla el LED de infrarrojos, el pin 11 se conecta al receptor de infrarrojos)

Paso 3: esquema

Esquemático
Esquemático

Este esquema es muy simple, 4 componentes y 6 cables. Conexiones LED IR: Conecte una de las patas de la resistencia al pin digital Arduino 3 Conecte la otra pata de la resistencia al pin base del transistor (la pata del medio en mi caso) Conecte el emisor del transistor a tierra Conecte el colector del transistor a la pata negativa del LED (pata corta, lado plano del LED) Conecte la pata positiva (pata larga, lado curvo) del LED a las conexiones del receptor IR de 5v pin (necesitaría encontrar el pinout para su receptor de infrarrojos en particular): pin GND a tierra VS pin a 5v VO pin a Arduino pin digital 11

Paso 4: agregue la biblioteca Irremote al software Arduino

Agregue la biblioteca Irremote al software Arduino
Agregue la biblioteca Irremote al software Arduino

irremote es una gran biblioteca escrita por Ken Shirriff y está disponible en su blog en https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Descargue la biblioteca de https:// arcfn.com / files / IRremote.zip e instálelo como lo haría con cualquier otra biblioteca para arduino. Su blog tiene mucha información útil sobre la biblioteca y cómo instalarla.

Paso 5: registre los códigos de sus controles remotos

Aquí está el comienzo de la parte aburrida (pero inevitable): presionar todos los botones del control remoto, guardar la cadena de salida y asignarla al control remoto virtual. Solo necesita hacerlo una vez, espere tomar aproximadamente 20 minutos más o menos. Inicie un editor de texto para guardar su salida. Cree un nuevo documento y escriba cada botón en su control remoto, uno por línea: Encendido, Abajo, Izquierda, Derecha … etcétera Inicie el IDE de Arduino y haga clic en "Archivos-> Ejemplos-> IRremote-> IRrecvDump" y cárguelo en su Arduino. Este ejemplo volcará los códigos remotos al puerto serie. Inicie el monitor del puerto serie y presione una tecla en su control remoto. Verá aparecer una cadena en la ventana del monitor serial: "Decodificado *: * (* bits)". Copie esta línea y guárdela en su documento en la línea correspondiente. Repita hasta que tenga todas sus claves almacenadas en el archivo de texto. Sé lo divertido que es este bit, lo he hecho dos veces hasta ahora: P Ahora tenemos que buscar y reemplazar un poco en el archivo de texto: buscar "Decodificado" reemplazar con "" buscar ": 0x" reemplazar con "," buscar "(" reemplazar con "," buscar "bits)" reemplazar con "" Entonces, para una línea como: Decodificado NEC: 0x000110 (15 bits) ahora deberíamos tener una línea que diga: NEC, 000110, 15

Paso 6: cree la página web para su control remoto

Ahora necesitamos mapear los botones en su imagen de su control remoto.

Usé https://www.maschek.hu/imagemap/imgmap para mapear los botones y modifiqué el código que te da el sitio web para que funcione.

Haga clic en "Usar una imagen en su computadora: [elegir archivo]", seleccione su imagen, haga clic en [cargar], haga clic en [aceptar] Coloque rectángulos, círculos, etc. en cada botón. Para HREF, coloque /remote.php?command= y la línea para ese botón del documento de texto, por ejemplo /remote.php?command=NEC, 000110, 15 Sería prudente (y ayuda enormemente en la depuración) si también completa Alt: con el nombre del botón, pero eso depende de usted.

Repita para cada botón.

¿Todo listo? Entonces continuaremos. En la parte inferior de esa página está "Código", haga clic en él y se abrirá un cuadro que muestra el código del mapa de imágenes. Cópielo y péguelo en un nuevo documento de texto. Esta es la parte principal de nuestra página web.

Aquí está mi página web completa, solo reemplace el…

con su propio código arriba y guárdelo como remote.php en su directorio web (/ var / www en linux) junto con sus imágenes de control remoto. Cambie las líneas por sus propias imágenes:

"https://www.w3.org/TR/html4/loose.dtd">

Control de LED Arduino

Paso 7: cargue el código de control remoto en su Arduino

Sube el código de control remoto a tu Arduino
Sube el código de control remoto a tu Arduino

Cree un nuevo boceto y pegue el siguiente código en él: / * * WebRemote * Se debe conectar un LED de infrarrojos al pin 3 de Arduino PWM. * Versión 0.1 de julio de 2009 * Este código es propiedad intelectual de Gregory Fenton, https://labby.co. uk / 2012/02 / irremote-arduino-experimentation / * IRremote Library copyright 2009 Ken Shirriff, https://arcfn.com * / #include template inline Print & operator << (Print & obj, T arg) {obj.print (arg); return obj; } booleano finalizado = falso; char inData [64]; // Tamaño según corresponda byte index = 0; #define EOP "\ n" IRsend irsend; configuración vacía () {Serial.begin (9600); Serie << "Puerto serie inicializado" << EOP; } bucle vacío () {String pch, sType, sTemp; char inChar, sTest, k; int sBits; long sHex; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); if (índice == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {finalizó = verdadero; índice = 0; rotura; } else {if (índice <64) // Tamaño de la matriz {pch + = inChar; índice ++; }}} if (finalizó) {// Analice los datos en inData aquí… pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // omitir ',' o '' // i ahora apunta al inicio de hexadecimal j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j ahora apunta a ',' o '' después de hex sHex = 0; sTemp = pch.substring (i, j); if (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); para (i = 0; i <sTemp.length (); i ++) {k = sTemp ; if (! ((k> = '0' && k = 'A' && k <= 'F'))) romper; sHex * = 16; if (k> = '0' && k <= '9') sHex + = (k - '0'); de lo contrario, si (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); if (! ((k> = '0' && k = 'A' && k <= 'F'))) romper; } sTemp = pch.substring (j + 1); sBits = 0; para (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits * = 10; if (k> = '0' && k <= '9') sBits + = (k - '0'); } if (sType.length ()> 0) {Serial << pch << EOP << "Tipo de código:" << sType << "Hex:"; Serial.print (sHex, HEX); Serie << "Bits:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; terminó = 0; }}} void sendIt (String sType, long sHex, int sBits) {for (int i = 0; i <2; i ++) {if (sType.equals (String ("RC6"))) {irsend.sendRC6 (sHex, sBits); } else if (sType.equals (String ("RC5"))) {irsend.sendRC5 (sHex, sBits); } else if (sType.equals (String ("SONY"))) {irsend.sendSony (sHex, sBits); } else if (sType.equals (String ("NEC"))) {if (! i) irsend.sendNEC (sHex, sBits); } else if (sType.equals (String (""))) {Serial << "Retrasar" << EOP; retraso (450); } retraso (30); }}

Paso 8: Conéctese al servidor web desde su computadora

Conéctese al servidor web desde su computadora
Conéctese al servidor web desde su computadora

.. o teléfono o android o ipad o lo que sea: vaya a https:// dirección IP del servidor web / remote.php en su navegador. Para mí, la dirección es https://192.168.0.9/remote.php pero la suya sin duda será diferente. Si todo está funcionando, debería ver una imagen de su control remoto con botones en los que puede hacer clic.

Paso 9: Paso opcional: edite su archivo de hosts para que sea más fácil de usar

Paso opcional: edite su archivo de hosts para que sea más fácil de usar
Paso opcional: edite su archivo de hosts para que sea más fácil de usar

Un paso que hice fue editar mi archivo de hosts (/ etc / hosts en linux, C: / Windows / System32 / Drivers / etc / hosts en Windows). Tenga en cuenta que este archivo solo se puede editar en un símbolo del sistema administrativo (Windows) o por su (Linux) Agregue la línea ip.add.re.ss remote reemplace ip.add.re.ss con la dirección IP del servidor y guarde el archivo. Debería hacer esto en todos los dispositivos que desee para acceder a la página web con el nombre corto. Ahora puede acceder al control remoto con https://remote/remote.php. Este es mi primer instructable adecuado, sea amable y avíseme si hay algún problema para que pueda solucionarlo.

Recomendado: