Un reemplazo de control remoto de acondicionador de aire (3 / 4 paso)

Paso 3: Programación - lado de la PC

Lado de la PC (ya sea un Pi o cualquier otro linux PC), aquí es un programa para enviar comandos al arduino. Se basa en el "encode.c" previamente dado construir un comando IR.

El programa construirá la carga de comandos según las opciones de línea de comandos (consulte la uso) y enviar el comando al dispositivo conectado al puerto USB.
El puerto puede especificarse con la opción -u, de lo contrario tratará de/dev/ttyUSB0, / dev/ttyUSB0, / dev/ttyACM0, /dev/ttyACM1, como los arduinos pueden asignarse como (al menos) estos archivos, dependiendo del tipo de arduino y desconexiones/reconexiones.

Como se indica en la introducción que el Arduino tiene que tener su función autoreset deshabilitado, de lo contrario reiniciará cada vez que se realiza una conexión. Esto es lo que el IDE puede programar el chip, pero no es deseable en nuestro caso. Si desea probar el código con un arduino autoreset habilitado, debe agregar un comando de sleep(2) después de la conexión (después de abrir el archivo tty) y dejó que reset arduino pudiendo llegar los mensajes.

Como era de esperar el código envía un 'I' carácter a Arduino, y luego envía la carga útil y lee el archivo para esperar respuesta de Arduino. Este paso no es crucial para un simple comando envíe, pero será si el objetivo es obtener información de Arduino sí mismo o a otro dispositivo controlado por radio. Por ahora el Arduino solo responde "OK" así que el programa sólo muestra la respuesta como es.

En cuanto a la parte de Arduino, es una parte del código donde el mensaje se convierte en la representación ASCII del mensaje binario.

mensaje [0] = 'I';
convertir carga útil binaria, en caracteres de ASCII (representación HEX)
para (i = 1, j = 0; i < 39; i += 2, j ++) {}
mensaje [i] = (carga útil [j] & 0xF0) >> 4;
Si (mensaje [i] < 10) {}
mensaje [i] += '0'; ASCII
} else {}
mensaje [i] += 'A' - 10;
}
mensaje [i + 1] = carga útil [j] & 0x0F;
Si (mensaje [i + 1] < 10) {}
mensaje [i + 1] += '0'; ASCII
} else {}
mensaje [i + 1] += 'A' - 10;
}
printf ("0 x %c %c", mensaje [i], message[i+1]);
}

Los operadores bit a bit una vez más se utilizan para seleccionar y cambiar el nombre o apellidos 4 pedacitos y convertirlo en un dígito o un carácter (A F):
mensaje [i] = (carga útil [j] & 0xF0) >> 4;
Aquí tomamos el byte y aplicar una máscara 11110000 así obtenemos sólo los bits izquierdos primeros, y cambiar estos bits a la derecha
mensaje [i + 1] = carga útil [j] & 0x0F;
Aquí mismo pero bits seleccionados ya están a la derecha del byte por lo que hay un cambio es necesario.

Si (mensaje [i] < 10) {}
mensaje [i] += '0'; ASCII
} else {}
mensaje [i] += 'A' - 10;
}

Aquí si el dígito es < 10 valor ASCII es comprendido entre 48 y 57 (decimal), y sólo tiene que añadir el valor mentionado aquí el valor de carácter '1' (que es de 48 '1' es utilizable sin saber la tabla ASCII por corazón ;)). El mismo se aplican a caracteres A F pero A(Hex) es 10(Decimal) por lo que si añadimos el valor mentionado aquí el valor ASCII de 'A' estaríamos 10 valores a alta. Así que sumamos el valor -10 y el final con el carácter propio.

Ahora, te preguntarás por qué nos molestamos conversión de hexadecimal a ASCII y ASCII a Hex en el otro lado. Sería correcto ;)
De hecho, en este caso es inútil, y la primera versión del código trabajó directamente con valores binarios. Realmente funciono enviando sólo los 5 bytes que son realmente útiles y Arduino había hecho la actualización de la plantilla de carga útil. Así que ahora enviamos 40 bytes en vez de 5. ¿Por qué razón?
Bueno, aunque esto está fuera de esta particular instructivo que indicaba que tenía un segundo regulador micro en mi habitación para la segunda unidad de acondicionador de aire. Este chip es una abeja de Wifi Seeediuno. Me resultó difícil de implementar el comportamiento correcto en que chip usar zócalos así que acabé utilizando el servidor web incorporado minimalista, así que le mande el comando completo de IR en la dirección URL en caracteres Hex.
Ahora usted tiene la razón: quería usar el mismo código para el control de ambas unidades, envío de datos a USB o por WiFi, pero manipulando el mismo mensaje, en el mismo formato.

Artículos Relacionados

Reemplazo de controles remotos infrarrojos con un iPhone

Reemplazo de controles remotos infrarrojos con un iPhone

En todo el mundo vida, todo el mundo encuentra con un montón de diferentes mandos a distancia IR, pero a veces consigue frustrar apuntando el control remoto en la dirección correcta, o el DVR no juega cuando lo desee. Surgió la idea de hacer una espe
Control de un acondicionador de aire de IR con Arduino y Android

Control de un acondicionador de aire de IR con Arduino y Android

Para mi primer proyecto de Arduino que decidí controlar mi acondicionador de aire por internet con la ayuda de Arduino y mi celular Android donde tengo acceso a internet. Video es en español pero tendrás lo que estoy demostrando.Paso 1: requisitosReq
Protocolo de control de acondicionador de aire IR remoto ingeniería inverso

Protocolo de control de acondicionador de aire IR remoto ingeniería inverso

Hola, este es mi primer instructivo, espero te guste.En electrónica elegí un proyecto de automatización del hogar: un sistema que me permite a programa de control y dos unidades de aire acondicionado en mi piso. En este instructable muestro cómo lleg
Económico reemplazo dominante del control remoto para un Toyota Yaris

Económico reemplazo dominante del control remoto para un Toyota Yaris

la llave alejada para mi Toyota Yaris de 2006 tenía 2 botones que estaban cubiertas con una fina lámina de plástico. Con el tiempo, la hoja llevaba y los botones de debajo se caiga! Durante un tiempo, usé una capa de cola de silicona para cubrir sobr
Coche de Control remoto Lego (1997 Volvo 850)

Coche de Control remoto Lego (1997 Volvo 850)

Construye tu propio coche teledirigido de Lego! El video y las fotos de arriba cuentan con mi Lego Volvo, un modelo a escala 1:14 de uno de mis coches favoritos, el carro de finales de los 90 Volvo 850. Este instructable le mostrará cómo construir es
Control remoto vía GSM/GPRS SMS(Arduino)

Control remoto vía GSM/GPRS SMS(Arduino)

control remoto, especialmente cuando este no ethernet o Wifi en el exterior, ha sido una cosas muy profundas en el pasado. Cuando era un niño, siempre imagen que yo tengo un equipo que puede controlar todos los electrodomésticos. Ahora, esto se convi
LED control remoto usando Bluetooth HC-05, Arduino y App móvil

LED control remoto usando Bluetooth HC-05, Arduino y App móvil

¿La tecnología está avanzando a velocidad de rotura de cuello, cada uno de nosotros tiene teléfonos inteligentes hoy en día, existen aplicaciones que nos permiten estar en contacto con nuestros amigos y familiares, obtener información meteorológica m
Reparación de un accesorio clave roto en un llavero de entrada a control remoto

Reparación de un accesorio clave roto en un llavero de entrada a control remoto

hace poco compré un vehículo usado que vino con un llavero de entrada a control remoto.  Lamentablemente, el accesorio para el llavero fue mal diseñado y rompió.  Por lo tanto, el dueño anterior une las teclas con un aparejo hecho de cinta de fibra d
Control remoto bricolaje para Hexdrake

Control remoto bricolaje para Hexdrake

Hola, soy David y este es mi segundo instructable :).Es una continuación de mi primer instructable, donde me muestra cómo construí mi pequeño hexápodo, Hexdrake:En este nuevo instructivo te voy a mostrar cómo hice este controlador protoype para Hexdr
Probar un Control remoto

Probar un Control remoto

En este día en edad, casi todos nuestros sistemas de entretenimiento y dispositivos pueden controlarse por control remoto. Televisores, iHome y algún sistema de videojuegos tienen para controlar los dispositivos y hacer nuestra vida más cómoda. Estos
Gesto-captura Control remoto consola

Gesto-captura Control remoto consola

Resumen del proyectoEste proyecto proporciona una alternativa a la TV estándar remota: una manera más interesante (y mucho más frío) para controlar equipos habilitados para IR. (Para ser claro: esto es falso gesto-captura - sólo estoy utilizando un c
Cómo solucionar cualquier no funciona Control remoto por infrarrojos

Cómo solucionar cualquier no funciona Control remoto por infrarrojos

has siempre encuentro agarrar el control remoto y gire sus electrodomésticos en y no funciona creo que es sólo una situación de batería baja que puede ser fijo, pero cuando lo cambie no funciona en absoluto y te rindas solo tirar el mando a distancia
Control de tus electrodomésticos con control remoto de TV!!

Control de tus electrodomésticos con control remoto de TV!!

Ver el proyecto salida vídeo aquí.He encontrado que algunas personas son muy perezosos para levantarse ir a la Junta y pulse el interruptor para encender la luz o ventilador o cualquier otro aparato pero Hey!, ahora hay una solución más fácil. Ahora
Papel avión-TV mando a distancia con control remoto

Papel avión-TV mando a distancia con control remoto

Crear un avión de papel controlada remota controlado por televisor medio remoto. Super divertido y barato para hacer!Paso 1: Para el paso 1, usted debe obtener todos los materiales: una pequeña li-poli batería (3,7 voltios), un trozo de PCB, motor el