Paso 6: Regulador de programa IR-LED
El chip ATMega328P es también ampliamente utilizado en muchos sistemas de Arduino incluyendo el Arduino UNO más común. Esto nos da acceso fácil a una I2C controlado IR LED remoto desarrollo el código en un Arduino UNO normal (con todas sus bibliotecas y capacidades) y después transferir el programa a nuestra variante SMD de la IC de ATMega. Utilicé el control remoto IR biblioteca desarrollado Ken Shirriff que puede encontrar aquí. Esta pieza muy útil del código simplifica la generación de la señal de 38 kHz y el calendario para enviar la señal derecha hacia unas líneas fácil de código y al final sólo tienes que especificar cual código numérico que desea enviar con un protocolo específico. Para encontrar el código correcto y el protocolo se puede utilizar por ejemplo el impresionante tutorial publicado por adafruit.
En mi caso los siguientes códigos son enviados mediante el protocolo NEC para el control de la lámpara:
Gire a la luz de LED: 0xFFE01F (32 bits)
Activar LED luz blanco: 0xFFD02F (32 bits)
Subir la energía del LED: 0xFFA05F (32 bits)
Encender LED: 0xFF20DF (32 bits)
Gire a la luz de LED: 0xFF609F (32 bits)
Así que si quieres por ejemplo encender la lámpara, utilizaría la siguiente línea de código en el motor de desarrollo de Arduino:
En mi caso he querido el ATMega a escuchar en la dirección I2C 8 por un código numérico que será enviada con el LED IR en el formato de NEC. Así que si quiero incluir un nuevo código, sólo tengo que agregar (por ejemplo a través de SSH sobre una conexión Wi-Fi) a la secuencia de comandos en el tablero de Edison que es mucho más simple que al reprogramar el IC en el reloj. He incluido el código fuente, así como una copia del archivo hexadecimal binario para programar el IC en este paso.
Sin embargo, todavía tienes que transferir el programa inicial en el IC de ATMega soldada en la placa. Para facilitar esto la Junta tiene un conector específico de SPI como se indica en la primera foto. Sólo necesitas unos trozos de alambre, una placa Arduino y gratuito paquete de software winavr.
Comience por conectar el Arduino al ordenador y cargar el programa ArduinoISP en la sección de ejemplo de su SDK de Arduino. A continuación, conecte los pines de Arduino en el código a los pines correspondientes en el tablero de energía. Si está utilizando un Arduino UNO deben ser las siguientes conexiones:
Arduino -> tablero de energía
GND -> GND
5V -> 5V
D10 -> RST
D13 -> SCK
D12 -> MISO
D11 -> MOSI
Después de eso puede abrir una línea de comandos en el equipo y verificar si el IC está respondiendo. Después de escribir el siguiente comando debe ver una respuesta que le da el número de serie y set de fusibles de la IC (como se muestra en el cuadro 2). Tienes que reemplazar COM # con el puerto serie real que tu Arduino está conectado a (como se muestra en la parte inferior derecha en el SDK de Arduino).
Si usted está usando un IC "fresco" tienes que decirle ahora a usar el cristal de cuarzo de 16 MHz como entrada de reloj. Esto se hace mediante el establecimiento de llamada "fusibles" (ver imagen 3). Tenga mucho cuidado en este paso para configurar el fusible correcto según lo dado arriba. Otra cosa, usted podría inutilizar su IC.
Si todo ha funcionado hasta ahora, puede cargar el programa en el ATMega. Se necesita el archivo "hexagonal" generado por el SDK de Arduino al compilar el código. Activando salida verbosa durante la compilación (opciones de Arduino SDK) fácilmente podrás encontrar el directorio temporal donde se almacena el archivo hex. Alternativamente puede utilizar el archivo "I2CRemote.cpp.hex" junto con el código fuente. Sin embargo, tenga en cuenta que sólo enviará la señal de infrarrojos mediante el protocolo NEC. Para cargar el programa en el tipo de IC:
Ahora tienes funcional completo control remoto infrarrojo que puede desencadenar y control por su tablero de Edison.