Sensores DIY Smart Home con Arduino, MySensors y OpenHAB

Los sensores de casa inteligente cuestan una cantidad ridícula de dinero. Cablear una casa entera es dominio de aquellos con cantidades absurdas de ingresos disponibles. Construyamos el nuestro con MySensors.

Los sensores de casa inteligente cuestan una cantidad ridícula de dinero.  Cablear una casa entera es dominio de aquellos con cantidades absurdas de ingresos disponibles.  Construyamos el nuestro con MySensors.
Anuncio

Los sensores de casa inteligente cuestan una cantidad ridícula de dinero. A $ 60- $ 100 solo por un detector de movimiento o sensor de humedad, el cableado de una casa entera se convierte en el dominio de aquellos con cantidades absurdas de ingresos disponibles. Construyamos el nuestro.

Afortunadamente, el trabajo duro ya lo han hecho los buenos amigos detrás de MySensors.org. Hoy te mostraré cómo usar el marco de MySensors para crear una gama barata de sensores de hogares inteligentes que pueden alimentar en una instalación de OpenHAB (mira nuestra guía para comenzar con OpenHAB en Raspberry Pi) Comenzar con OpenHAB Home Automation en Raspberry Pi Comenzar con OpenHAB Home Automation en Raspberry Pi OpenHAB es una plataforma de automatización del hogar madura y abierta que se ejecuta en una variedad de hardware y es independiente del protocolo, lo que significa que puede conectarse a casi cualquier hardware de automatización del hogar actual. Lee mas . Supongo que ya tiene un servidor MQTT en funcionamiento y comprende los conceptos básicos del formato de mensajes MQTT; si no, asegúrese de leer el seguimiento de la guía OpenHAB, que incluye instrucciones para instalar un servidor MQTT. Guía de principiante de OpenHAB Parte 2: ZWave, MQTT, reglas y gráficos Guía para principiantes de OpenHAB Parte 2: ZWave, MQTT, reglas y gráficos OpenHAB, el software de domótica de fuente abierta supera con creces las capacidades de otros sistemas de automatización del hogar en el mercado, pero no es fácil configurarlo. De hecho, puede ser francamente frustrante. Lee mas .

Aunque me ocuparé específicamente de reenviar los datos de MySensors desde una red de Arduinos, usando MQTT, a una instalación de OpenHAB, debo señalar que el marco de MySensors puede alimentar a una serie de diferentes controladores de automatización del hogar. He presentado esto aquí como una solución completa que funciona para mí, pero consulte el sitio de MySensors ya que es posible que también se adapte a su propósito similar, pero utilizando hardware ligeramente diferente o un protocolo de mensajería diferente. Es increíblemente versátil.

hardware de misterios -1

El costo del hardware para mi configuración es menos de $ 10 por nodo (un poco más para la puerta de enlace), pero se pueden agregar sensores y actuadores adicionales por muy poco (el sensor de humedad y temperatura DHT11 por ejemplo cuesta $ 1 cada uno; un relevador de alto voltaje es alrededor de $ 3).

Lo que estamos haciendo

La idea básica es que en lugar de agregar a nuestra red local abarrotada existente usando Wi-Fi no confiable o escudos Ethernet costosos, creamos una red totalmente independiente con capacidad de malla solo para los Arduinos; luego, conéctelo a la red local utilizando un único nodo de puerta de enlace, que tiene una conexión Ethernet y una conexión de radio con los otros Arduinos. Así que estamos creando un par de nodos de sensores, que recopilan datos; y un nodo de puerta de enlace, que transmite esos datos al servidor OpenHAB.

De nuevo, esto es lo que funciona para mí, porque mi recepción de Wi-Fi es horrible y no quiero saturarla con datos innecesarios. Si está contento con Wi-Fi, mire utilizando el bajo costo ESP8266 Arduino compatible con Arduino Killer: ESP8266 Conozca el Arduino Killer: ESP8266 ¿Qué pasa si le dijera que hay una placa de desarrollo compatible con Arduino con Wi incorporado -Fi por menos de $ 10? Bueno, lo hay. Lea más con tarjetas Wi-Fi integradas: MySensors también las admite.

Nota importante para los usuarios de El Capitan y Clones de Arduino: Apple logró romper los controladores serie utilizados para comunicarse con una serie de placas clon Arduino en la última versión de El Capitán gracias a las nuevas medidas de seguridad. Para ver si está afectado, mire su tablero y el chip más cercano al puerto USB. Si dice CH340, te afecta esto. Siga las instrucciones aquí para deshabilitar la firma de kext del controlador, instale de nuevo los controladores serie CH340.

Componentes necesarios

Para la puerta de enlace, necesitarás:

  • Arduino Uno
  • Escudo Ethernet (basado en W5100)
  • Módulo NRF24L01 - He usado las versiones + PA + LNA en todas partes, que tienen un rango incrementado de hasta 1 km. El cableado es el mismo que elijas.

Para cada nodo sensor:

  • Arduino Uno
  • Módulo NRF24L01
  • Sensores (para empezar, sugeriría un módulo de temperatura y humedad DHT11 o DHT22)

Adicional / Opcional:

  • Condensadores de 10uF, uno para cada módulo de RF que tenga (¡el enlace es para un paquete de 50!)
  • Fuente de alimentación con salida de 5v y 3.3v (YwRobot MB102 funciona bien y cuestan $ 1 cada uno) - se requiere si se usa un clon Arduino. También necesitará una fuente de alimentación de CC 9-12v para estos.
  • Prototipos de protectores, o alambres de puente corto macho-hembra.

Trabajando con los módulos NRF24L01

Comencemos con los módulos NRF24L01, ya que son la parte más compleja del proyecto. Fui a la versión más costosa y de mayor alcance de estos: técnicamente conocida como NRF24L01 + PA + LNA . Vienen con un circuito de amplificación de señal a bordo y conexión de antena, aunque te sugiero que pruebes primero la versión más económica de los módulos sin antenas si tienes un hogar normal con paredes regulares, no el tipo de pared de piedra sólida de un metro de grosor que Hago. El rango reclamado de estos es de aproximadamente un kilómetro, más que suficiente para poner en el cobertizo del jardín.

Sin embargo, estas cosas son realmente difíciles de trabajar; Si continúa y lo conecta todo sin leer estos consejos primero, se sentirá decepcionado.

  • El módulo necesita una potencia de entrada de 3.3v para el pin de VCC, no 5v . Si pones 5v, lo freirás.
  • Suelde un capacitor de 10uF a través de los terminales VCC / GND. La línea gris continua en el condensador indica el lado negativo / GND.
  • Use cables de salto cortos y de alta calidad; o mejor aún, soldarlos directamente a un escudo de prototipos para mantener la longitud del cable al mínimo y las conexiones sólidas.
  • Si está usando un clon Arduino, el regulador de voltaje no proporciona suficiente para ellos en un pin de 3.3v; necesitará usar un panel de fuente de alimentación externo (vinculado anteriormente), disponible por alrededor de $ 1 cada uno. Estos proporcionan una 3.3v estable. Si está utilizando una marca original Arduino Uno, esto no parece ser un problema.

Le sugiero que haga algunas pruebas básicas primero para establecer que su radio esté funcionando. Conecte dos radios como se muestra en la página de MySensor. No importa que su diagrama muestre placas Arduino Micro: se usan los mismos números de pin. Tenga en cuenta que el diagrama muestra NRF24L01 desde arriba ; en realidad estarás conectando cosas desde la parte inferior . Ajusta mentalmente en consecuencia. Ignore el pin IRQ gris, no se usa actualmente. En resumen:

  • VCC va a 3.3v en su fuente de alimentación externa
  • GND va al ferrocarril de tierra común
  • CE al pin 9
  • CSN / CS al pin 10
  • MOSI al pin 11
  • MISO al pin 12
  • SCK al pin 13

cableado desde la página de misensores

Necesitarás dos nodos completamente cableados para probar. Descargue la biblioteca RF24 y cargue el ejemplo básico más simple. Encienda ambos módulos, pero deje uno conectado a través de USB y abra la consola serie. Escriba "T" y envíe, para cambiarlo al modo de transmisión, en cuyo punto debería recibir los mensajes de depuración indicando que está enviando un mensaje al otro nodo.

Construyendo la puerta de enlace de cliente MySensors MQTT

Bien, ahora que sabemos que las radios RF24 están conectadas y funcionando correctamente, continúe y descargue la rama de desarrollo del paquete MySensors Arduino. Este tutorial fue escrito usando la versión 1.5, pero también debería estar bien con versiones posteriores. Estamos utilizando la rama de desarrollo porque, en el momento de redactar este informe, la puerta de enlace del cliente MQTT todavía no forma parte del paquete principal.

Aunque hay MQTTGateway disponible en la rama principal, también actúa como servidor, lo que no queremos porque ya tenemos un servidor MQTT estable ejecutándose en la Raspberry Pi. Solo queremos reenviar los datos de MySensors a eso. De nuevo, si esto no es lo que desea, si prefiere no usar MQTT en absoluto, consulte EthernetGateway o SerialGateway, que también son compatibles con OpenHAB.

Vale la pena señalar que el paquete de descarga no solo incluye los archivos esenciales de MySensors, sino que también incluye bibliotecas compatibles necesarias para cada sensor posible. Para evitar conflictos, sugiero simplemente realizar una copia de seguridad de toda su carpeta de bibliotecas actual y reemplazarla por todas las que están en el paquete de descarga.

El cableado para la puerta de enlace es un poco diferente; una vez que tenga su blindaje Ethernet, use los siguientes pines para el módulo de radio:

  • CE al pin 5
  • CSN al pin 6
  • SCK al pin A0
  • MOSI al pin A1
  • MISO a pin A2

También necesita habilitar la línea #define SOFTSPI en el archivo libraries / mySensors / MyConfig.h . Haga esto eliminando el // para descomentarlo, está alrededor de la línea 309 en el mío.

Necesitamos hacer esto porque tanto el módulo de radio como el escudo de red usan SPI, y son incompatibles; así que simplemente cambiamos el módulo de radio SPI a otros pines y realizamos la comunicación SPI en el software (por lo tanto, SPI suave ).

Cargue el bosquejo MySensors / GatewayW5100MQTTClient . Si no ve esto en el menú de MySensors, no tiene instalada la rama de desarrollo . Use el enlace provisto arriba para volver a descargar la biblioteca completa.

puerta de enlace de los misteriosos

Tendrá que definir una dirección IP estática para el controlador, la IP de su enrutador de red y subred, y la dirección IP de su servidor MQTT existente. Siéntase libre de modificar los prefijos del tema también si lo desea. Cargue y conecte esa cosa a la red. Compruebe brevemente la consola serie para ver si hay errores evidentes, como no poder conectarse a su servidor MQTT; de lo contrario, déjelo a un lado (pero déjelo activado).

direcciones IP para cambiar

Construyendo los Nodos del Sensor

Primero, comente nuevamente la línea #define SOFTSPI en el archivo MyConfig.h poniendo de nuevo // al inicio. Solo es necesario para la puerta de enlace; estamos utilizando el cableado estándar NRF24L01 para los nodos del sensor, que utilizan hardware SPI. Si necesitas recordatorio:

  • VCC va a 3.3v en su fuente de alimentación externa (o en el propio Arduino si es un original y no un clon)
  • GND va al ferrocarril de tierra común
  • CE al pin 9
  • CSN / CS al pin 10
  • MOSI al pin 11
  • MISO al pin 12
  • SCK al pin 13

A continuación, conecte su sensor de elección; Utilizo el sensor de humedad y temperatura DHT11 para realizar pruebas, pero si se desplaza hacia abajo a la lista de sensores y actuadores en la barra lateral de la página de MySensor, encontrará una gran selección de otras opciones: puertas, pluviómetro, luz, movimiento, incluso RFID: y carga más. Puedes ver que también agregué un relevo al nodo que se muestra a continuación, pero más sobre eso más adelante.

hardware de misensores -2

Finalmente, cargue el ejemplo de HumiditySensor del menú MySensors y agregue la siguiente línea inmediatamente después de los comentarios.

 #define MY_NODE_ID 2 

Dado que estamos utilizando una versión especial del controlador que simplemente reenvía cosas a nuestro propio servidor MQTT, no tiene la función de controlador estándar que asignaría automáticamente ID de nodo a cada nuevo nodo. En su lugar, solo vamos a definirlo manualmente cada vez. Anote este número en algún lugar para sus propios registros, y cámbielo por cada nodo.

Habilite la salida de depuración también:

 #define MY_DEBUG 

Finalmente, verifique que el pin de datos de su sensor DHT11 sea correcto.

 #define HUMIDITY_SENSOR_DIGITAL_PIN 7 

Entonces, ¡sube!

Vale la pena abrir la consola serial para echar un vistazo. El aspecto crucial para buscar es st =, que es el estado del mensaje. st = fail significa que el mensaje no fue enviado. Es posible que no haya definido una ID de nodo única o que su puerta de enlace esté fuera de línea. Fingí estas fallas simplemente desconectando la puerta de enlace:

st-fail

Si todo está funcionando, debería comenzar a ver algunas lecturas de datos en su servidor MQTT. Poner ésos en OpenHAB está fuera del alcance de este tutorial, pero fue cubierto en la parte 2 de la guía OpenHAB Guía para principiantes de OpenHAB Parte 2: ZWave, MQTT, reglas y gráficos Guía para principiantes de OpenHAB Parte 2: ZWave, MQTT, reglas y gráficos OpenHAB, el software de automatización del hogar de código abierto supera con creces las capacidades de otros sistemas de automatización del hogar en el mercado, pero no es fácil configurarlo. De hecho, puede ser francamente frustrante. Lea más para que pueda consultar allí.

Combinando código de sensor

Aunque poner en funcionamiento un solo nodo de sensor es relativamente simple, resulta un poco más complicado cuando desea agregar múltiples sensores a cada nodo. Básicamente, combinará los fragmentos de código de dos ejemplos diferentes. ¡La forma más fácil de mostrarte esto es por ejemplo con un video! Aquí estoy combinando nuestro sensor de humedad básico con un relé.

Aquí puede encontrar el código completo para el sensor de humedad y el relé, que ya se ha modificado con un ciclo sin bloqueo como mencioné en el video. Para obtener más información sobre la estructura de comandos MQTT necesaria para activar el relé, consulte la API serie, pero basta con decir que el siguiente canal controla el primer relevador en el código que he dado (con un cuerpo de mensaje de 0 o 1):

 misensores-en / 9/1/1/0/2 

Su única limitación ahora es la cantidad de memoria en el Arduino, y lo diré: los sensores más confiables en mi casa inteligente no son los módulos comerciales Z-Wave que cuestan $ 80, sino los personalizados de MySensor.

Lo terminaré allí hoy, pero si tiene problemas puede preguntar en los comentarios o en los foros de usuarios muy activos de MySensors. ¿Vas a armar tus propios nodos sensores baratos? ¿Cómo está llegando tu hogar inteligente?

In this article