Equipo inalámbrico NooLite y Smart Home (Parte 2). Mega Servidor Arduino

imagen

Entonces, pasamos a la segunda parte de nuestra historia sobre la integración del control inalámbrico nooLite en los sistemas de automatización del hogar. Y en esta parte hablaremos sobre el módulo de control nooLite MT1132 y su integración en el popular sistema Arduino Mega Server. Esto extiende las capacidades AMS ya altamente desarrolladas al controlar de forma inalámbrica luces y electrodomésticos en su Smart Home.

Sobre la primera parte


La primera parte de esta serie habló sobre cómo funciona el control inalámbrico nooLite y cómo puede controlar este equipo desde bocetos en Arduino. Y en la primera parte, se proporcionó información detallada sobre la conexión del módulo MT1132 y su programación. Y nos ayudará mucho ahora.

Por qué

Porque Arduino Mega Server es Arduino. Y todo lo que está escrito en el artículo anterior también es cierto para Arduino Mega Server. Por lo tanto, antes de leer este artículo, se recomienda que se familiarice con la primera parte del ciclo.

Algunas palabras sobre Arduino Mega Server


Arduino Mega Server es un sistema multifuncional con muchas características únicas. Puede obtener más información sobre esto en el sitio web del proyecto. Claramente y con "imágenes" describe sus principales características. En resumen, este es el sistema operativo para los controladores Arduino. Y las capacidades del controlador simple difieren de las capacidades del controlador con AMS a bordo de la misma manera que las capacidades de la computadora simple difieren de las capacidades de una computadora con Windows o Linux a bordo.

Esta es una comparación figurativa, pero da una buena idea de qué es el Arduino Mega Server.

Integración


Ahora veamos cómo se integra el módulo de control MT1132 en el sistema. Físicamente, conectar el módulo no es diferente de conectarse a un Arduino Mega o Arduino Due, descrito en un artículo anterior. Por lo tanto, nuevamente lo remito al artículo anterior para no repetir lo mismo aquí.

Con cables: alimentación, tierra y RX para recibir comandos de control de Arduino y el módulo está listo para funcionar. En verdad, nooLite MT1132 es el campeón en la facilidad de conectar equipos al microcontrolador.

La parte del software también es muy similar a la descrita en el artículo anterior y coincide con ella en un 85%. Las diferencias están solo en las variables y funciones específicas de AMS, que examinaremos en detalle en este artículo.

Kernel de gestión NooLite


Por núcleo de control nooLite nos referimos al código que realiza las funciones básicas de generar comandos y controlar el módulo MT1132 (que, a su vez, envía comandos al aire).

Este código, de acuerdo con la ideología de la estructura modular de AMS, está diseñado como un módulo separado y es una unidad lógica separada del sistema. Este módulo puede activarse (si necesita el control nooLite) o desactivarse (si no necesita el control nooLite).

imagen

Esto es ventajoso porque ahorra memoria valiosa del microcontrolador y no utiliza este módulo para aquellos que no necesitan el control nooLite. El módulo se puede apagar dinámicamente (mientras no se guarde la memoria), y se puede apagar en la etapa de compilación simplemente comentando una línea de código.

//#define NOO_FEATURE

Y en este caso, toda la memoria ocupada por el módulo permanece libre. El sistema está diseñado para que reconozca automáticamente el módulo compilado o no y procese correctamente este evento.

imagen

Para conveniencia de los usuarios, la información sobre el estado de todos los módulos del sistema se muestra en el tablero en el encabezado del sitio. Y allí puedes ver inmediatamente su estado en este momento. Esto funciona tanto en la versión Arduino Mega como en la versión Arduino Due.

Código del módulo del núcleo NooLite


Ahora, echemos un vistazo al código para el módulo "noo" del sistema Arduino Mega Server. Esas funciones que se discutieron en el artículo anterior, omitiré aquí. Si de repente no comprende algo, vuelva al artículo anterior y revíselo nuevamente.

El código del módulo está enmarcado en las directivas de compilación condicional, que se utilizan para habilitar o deshabilitar la compilación del código del módulo de acuerdo con sus instrucciones.

#ifdef NOO_FEATURE


#endif

A continuación, se establecen las conclusiones a las que está conectado el módulo MT1132 (la salida 19 es opcional, sirve para confirmar el envío exitoso del comando por parte del módulo)

byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

Y las letras de los canales están configuradas (solo para facilitar su uso)

byte const NOO_CHANNEL_1 = 0;
byte const NOO_CHANNEL_2 = 1;

Actualmente, solo se usan dos canales, pero nada le impide agregar algunas líneas de código y usar los 32 canales.

La función inicializa el módulo.

void nooInit() {
  Serial1.begin(9600);
  modulNoo = MODUL_ENABLE;
  started("nooLite");
}

en el que Serial1 se inicializa a una frecuencia estándar de 9600, al módulo se le asigna el estado "ENABLE" y se muestra un mensaje de prueba en Serial para controlar el proceso de inicialización.

La función "principal" que forma los comandos y las funciones "envolventes" que simplifican los comandos hasta el límite se describen en detalle en el artículo anterior. Ese es todo el núcleo del control nooLite. Ahora podemos acceder libremente a cualquier función de control desde cualquier parte del código Arduino Mega Server. Y controle el equipo nooLite de cualquier manera.

Aquí está el código completo del núcleo de control nooLite.

Código de núcleo completo
/*
Modul nooLite
part of Arduino Mega Server project
*/

#ifdef NOO_FEATURE

byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

byte const NOO_CHANNEL_1 = 0; // channel (address) 0...31 (MT1132)
byte const NOO_CHANNEL_2 = 1;
byte const NOO_CHANNEL_3 = 2;
byte const NOO_CHANNEL_4 = 3;
byte const NOO_CHANNEL_5 = 4;

void nooInit() {
Serial1.begin(9600);
modulNoo = MODUL_ENABLE;
started(«nooLite»);
}

void nooWork() {

}

void nooSendCommand(byte channel, byte command, byte data, byte format) {
byte buf[12];

for (byte i = 0; i < 12; i++) {
buf[i] = 0;
}

buf[0] = 85;
buf[1] = B01010000;
buf[2] = command;
buf[3] = format;
buf[5] = channel;
buf[6] = data;

int checkSum = 0;
for (byte i = 0; i < 10; i++) {
checkSum += buf[i];
}

buf[10] = lowByte(checkSum);
buf[11] = 170;

for (byte i = 0; i < (12); i++) {
Serial1.write(buf[i]);
}
}

void nooBind (byte ch) {nooSendCommand(ch, 15, 0, 0);}
void nooUnbind (byte ch) {nooSendCommand(ch, 9, 0, 0);}

void nooOn (byte ch) {nooSendCommand(ch, 2, 0, 0);}
void nooOff (byte ch) {nooSendCommand(ch, 0, 0, 0);}
void nooTrigger(byte ch) {nooSendCommand(ch, 4, 0, 0);}
void nooCancel (byte ch) {nooSendCommand(ch, 10, 0, 0);}

void nooUp (byte ch) {nooSendCommand(ch, 3, 0, 0);}
void nooDown (byte ch) {nooSendCommand(ch, 1, 0, 0);}
void nooRevers (byte ch) {nooSendCommand(ch, 5, 0, 0);}

void nooValue (byte ch, byte v) {nooSendCommand(ch, 6, v, 1);}

#endif // NOO_FEATURE

Interfaz de enlace y desatado


Dado que el Arduino Mega Server nos proporciona una interfaz de lujo, podemos usarla para todas las funciones de trabajo con el módulo y el sistema nooLite. No necesitaremos hacer nada manualmente, la comunicación con todas las funciones del sistema nooLite se realizará utilizando elementos de interfaz estándar que le son familiares cuando trabaje con sitios en Internet. Estos serán botones, listas desplegables, etc.

Comencemos con los bloques de alimentación "vinculantes" y "desvinculados" de la interfaz. Aquí todo es extremadamente simple: en la lista desplegable, selecciona el número de canal deseado, luego selecciona el tipo de acción: “Enlazar” o “Desenlazar” y haz clic en “Enviar”. Aquí hay breves instrucciones sobre qué hacer después de hacer clic en el botón "Enviar". En general, todo se hace de manera muy simple y elegante.

imagen

Puede "enlazar" y "desatar" bloques en cualquier cantidad y en cualquier canal (puede haber tantos bloques de alimentación en un canal y se encenderán simultáneamente, ya que están en el mismo canal).

Aquí solo debe recordar que en el montaje de 0.14 se implementa el control sobre dos canales. Si dos canales no son suficientes para usted, entonces puede, por analogía, agregar control para cualquier cantidad de canales que necesite (hasta 32).

Interfaz de control


Ahora veamos cómo está organizada la interfaz de gestión de dispositivos nooLite en AMS. En el menú del sistema hay un elemento "Management nooLite". Cuando hace clic en él, se abre una página con la que puede encender y apagar los dispositivos nooLite de forma inalámbrica. Como dije, en 0.14 el control de versiones está organizado en dos canales. Se llaman "Bloque 1" y "Bloque 2" (es decir, bloques de dímero de potencia inalámbrico nooLite).

imagen

Hacemos clic en "Bloque 1" y vemos un bonito botón: esta es la interfaz de control del primer bloque de alimentación. Puede conectar la iluminación o cualquier aparato eléctrico (de la potencia correspondiente) a esta unidad y ... controlar de manera conveniente y cómoda su encendido y apagado presionando este botón.

La interfaz del Arduino Mega Server es adaptativa, lo que significa que puede controlar el encendido y apagado de los aparatos eléctricos directamente desde su teléfono inteligente: la interfaz se "plegará" y la excavadora será grande y fácil de presionar en el teléfono inteligente.

imagen

Eso no es todo. Además de encender y apagar los dispositivos, el sistema nooLite le permite hacer muchas otras cosas, por ejemplo, atenuar (cambiar gradualmente) el brillo de las lámparas o establecer la potencia de carga requerida. Otro elemento de interfaz está diseñado para esto: un widget para configurar la potencia y la atenuación.

Widget de potencia y atenuación


En el segundo canal hay dos elementos de interfaz: un botón de encendido y apagado y un widget de configuración de energía. Con este widget, puede establecer la potencia, calificada como un porcentaje del máximo. Esta es una solución universal adecuada para la mayoría de los casos.

También puede conectar al dímero inalámbrico nooLite (por ejemplo, SU111-300) una lámpara de araña en su habitación o un dispositivo eléctrico que requiera un ajuste de potencia (dentro de la potencia nominal de su unidad de potencia) y puede instalar fácilmente cualquier potencia deseada directamente desde la página web.

imagen

Si necesita ajustar la potencia de una manera diferente, por ejemplo, con mayor precisión o de forma no lineal, puede cambiar el widget estándar ajustando el código fuente (que, por supuesto, es totalmente accesible).

La imagen muestra el momento en que la potencia se establece al 20% del máximo. Al mismo tiempo, puede cambiar la potencia del boceto al Arduino automáticamente. Por ejemplo, con este sistema, no vale nada organizar el "despertador de amanecer" tan de moda ahora, cuando el brillo de las lámparas aumenta lentamente y "naturalmente" lo despierta por la mañana. Y sin cables! Potencia y control, es suficiente para integrar el dímero en una lámpara o lámpara de araña.

El widget y el botón funcionan de forma independiente. Esto significa que puede configurar la energía que necesita (brillo) y después de apagarla y encenderla nuevamente, se guardará la energía instalada, lo cual es muy conveniente.

Otras funciones


El documento de Nootekhnika que describe los comandos de control del instrumento nooLite contiene muchos más comandos adicionales, algunos de los cuales ya están presentes en el núcleo y otros no. Si necesita otros comandos, puede agregarlos usted mismo, ya que esto no es nada difícil y el sistema ya tiene muchos ejemplos.

Conclusión


Por lo tanto, examinamos la integración del módulo de control nooLite MT1132 en el Arduino Mega Server y el principio de organizar la interfaz de gestión de hardware nooLite . Con un núcleo de control integrado, puede controlar fácilmente los dispositivos nooLite desde AMS en su Smart Home.

Sobre esto, el segundo artículo llegó a su fin, y en el tercer artículo de la serie conocerá el concepto absolutamente fantástico del sistema Arduino Mega Server "100 en 1", cuando un controlador con AMS a bordo lo reemplaza con muchos dispositivos y sistemas y le ahorra su costo.

Y se mostrará en el ejemplo de una estación de soldadura, que haremos literalmente de la nada, de un dímero inalámbrico nooLite.

PS

Arduino Mega Server es un sistema versátil y flexible que se puede integrar con casi cualquier cosa, por lo tanto, las empresas interesadas en popularizar sus tecnologías y expandir la base de usuarios están invitadas a cooperar: su equipo también se puede integrar fácilmente con el popular sistema Arduino Mega Server.

Tener su propio módulo (y sitio web) en el Arduino Mega Server es una muy buena idea.

La primera , tercera y cuarta parte del ciclo.

Suplemento . Un canal de Youtube está abierto y aquí hay un video promocional del Arduino Mega Server, que muestra cómo trabajar con un sistema real.

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


All Articles