Paso 2: Código de Arduino
Inicialización de
Se incluyen sólo el WDT (WatchDogTimer) y las bibliotecas RFM. El WDT se utiliza en el caso de Arduino cuelga en algún lugar y con el WDT reiniciará por sí mismo. Sin embargo con esta caja, el Arduino no se perdió hasta ahora.
El código está vinculado y debe ser bastante directo. Se supone que sabes que cosas al menos a medio leer.
El código de Arduino puede parecer familiar como ha sido copiado de diferentes fuentes, modificado y juntos.
No llevo demasiado exigente el idNodo; mantener 2 dígitos ya que probablemente no tendrá nodos más de 90 en su casa. No cambie el número de dígitos, o tendrá que cambiar prácticamente por todas partes más tarde.
Definir la banda de frecuencia determinada por el módulo de compra. La ChannelFreq puede ser que necesite para ajustarse a las normas de donde usted vive; el número es en Hertz.
// RFM69#define NODEID 21 //unique for each node on same network Floor&Room&Node#=X&XX&X#define NETWORKID 666 //the same on all nodes that talk to each other#define GATEWAYID 1#define FREQUENCY RF69_433MHZ#define ENCRYPTKEY "1234567890ABCDEF" //exactly the same 16 characters/bytes on all nodes!#define ChannelFreq 434520000
La estructura del mensaje tiene que ser el mismo en toda la red
typedef struct { // Radio packet formatint nodeID; // node identifierint devID; // device identifierint cmd; // read or write long intVal; // integer payloadfloat fltVal; // floating payloadchar payLoad[32]; // string payload} Message;
Los botones no eran Unidos directamente a los 3, 3V, pero a los pines de datos de Arduino por lo que podrían ser conectar y desconectar como deseaba.
También hay muchas variables para almacenar la fecha y hora, estado y estado anterior de botones.
Programa de instalación
Obviamente los modos pin están "out" por el poder y "en" para la pulsación. Un abrir y cerrar botones para demostrar que la fase de instalación haya terminado, entonces pasan a su estado normal.
Lazo
El Arduino comprueba primero si recibe un comando desde el servidor de OH. El comando se analiza fuera el código de bucle.
Luego se lee el estado de los botones si la situación cambió desde la última iteración. Tenga en cuenta que nada es enviado hasta ahora.
Dependiendo del estado de los botones, el relé se abre o se cierra para activar la máquina de café o de.
Después de los colores del botón cambian dependiendo de su estado. Tenía más sentido para mí para hacerlo así en lugar de cambiar directamente en el botón lectura de estado.
Cerca del final del bucle el estado del relé se envía hacia el servidor OH así como el estado del botón azul. Estado rojo y verde no se envían detrás como son controlados por el estado del relé
Los puntos fuertes de la señal (RSSI) se envían al servidor OH para conocer la intensidad de la señal de dos formas: desde y hacia la puerta de entrada RFM.
Tenga en cuenta que hay un tiempo de búfer "StateChangeInterv" en el código. Esto está escrito para los chicos divertidos que vienen a su casa para ver después cómo muchas veces encendido/apagado el fusible se fundirá o la máquina de café sube en humo... La variable (aquí establecida en 2,5 seg) impide un cambio de estado por 2,5 segundos. Por lo tanto puede cambiar la máquina sólo después de ese tiempo variable; y la gente perderá interés rápidamente...
El BlueBlink se inicia sólo por el servidor OH 30 minutos antes de que la máquina va a apagar. Pulsando el botón parpadeante azul, cambia a un azul añejo y el tiempo de desconexión se supone para moverse a la siguiente 00 o 30 minutos la hora. Por supuesto 30 minutos antes de apagar, el parpadeo volverá.