Sensores de bricolaje para el hogar inteligente con Arduino, MySensors y OpenHAB

  • Gabriel Brooks
  • 0
  • 2703
  • 93
Anuncio

Los sensores domésticos inteligentes cuestan una cantidad ridícula de dinero. Por $ 60- $ 100 solo por un detector de movimiento o sensor de humedad, el cableado de toda una casa se convierte en el dominio de aquellos con cantidades tontas de ingresos disponibles. Construyamos el nuestro.

Afortunadamente, el trabajo duro ya ha sido realizado por la gente amable detrás de MySensors.org. Hoy te mostraré cómo usar el marco MySensors para crear una matriz barata de sensores inteligentes para el hogar que pueden alimentar una instalación de OpenHAB (consulta nuestra guía para Comenzar con OpenHAB en Raspberry Pi) Comenzando con OpenHAB Home Automation en Raspberry Pi Comenzando con OpenHAB Home Automation en Raspberry Pi OpenHAB es una plataforma de automatización del hogar madura y de código abierto que se ejecuta en una variedad de hardware y es independiente del protocolo, lo que significa que se puede conectar a casi cualquier hardware de automatización del hogar en el mercado actual. . Supongo que ya tiene un servidor MQTT en funcionamiento y comprende los conceptos básicos del formato de mensajes MQTT; de lo contrario, asegúrese de leer el seguimiento de la guía OpenHAB, que incluye instrucciones para instalar un servidor MQTT. 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 de configurar. De hecho, puede ser francamente frustrante. .

Aunque me ocuparé específicamente del reenvío de 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 una serie de controladores de automatización del hogar diferentes. He presentado esto aquí como una solución completa que funciona para mí, pero revise el sitio MySensors ya que puede encontrar que también se adapta a su propósito similar, pero utilizando hardware ligeramente diferente o un protocolo de mensajería diferente. Es increíblemente versátil.

El costo de hardware para mi configuración es inferior a $ 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 aproximadamente $ 1 cada uno; un relé 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 utilizando Wi-Fi poco confiable o costosos protectores de Ethernet, creamos una red completamente separada con capacidad de malla solo para los Arduinos; luego conecte eso a la red local usando un solo nodo de puerta de enlace, que tiene una conexión Ethernet y una conexión de radio a los otros Arduinos. Así que estamos haciendo un par de nodos sensores, que recopilan datos; y un nodo de puerta de enlace, que transmite esos datos en el servidor OpenHAB.

Nuevamente, esto es lo que funciona para mí, porque mi recepción de Wi-Fi es tan horrible y no quiero saturarla con datos innecesarios. Si está satisfecho con la conexión Wi-Fi, considere usar el ESP8266 de bajo costo compatible con Arduino Conozca al asesino de Arduino: ESP8266 Conozca al asesino de Arduino: ESP8266 ¿Qué pasa si le dijera que hay una placa de desarrollo compatible con Arduino con Wi incorporado? -Fi por menos de $ 10? Pues lo hay. con placas Wi-Fi integradas: MySensors también las admite.

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

Componentes necesarios

Para la puerta de enlace, necesitará:

  • Arduino Uno
  • Ethernet Shield (basado en W5100)
  • Módulo NRF24L01: he usado el +PA + LNA versiones a lo largo, que tienen un alcance aumentado de hasta 1 km. El cableado es el mismo que elija.

Para cada nodo del sensor:

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

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 una) - requerido si se usa un clon Arduino. También necesitará una fuente de alimentación de CC de 9-12 V para estos.
  • Protectores de prototipos, o cables de puente cortos macho-hembra.

Trabajando con módulos NRF24L01

Comencemos con los módulos NRF24L01, ya que son la parte más compleja del proyecto. Fui por la versión más cara 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 una conexión de antena, aunque le sugiero que pruebe primero la versión más barata de los módulos sin antena si tiene un hogar normal con paredes regulares, no el tipo de pared de piedra sólida de un metro de espesor que Hago. El rango reclamado de estos es de aproximadamente un kilómetro, más que suficiente para que lo ponga en el cobertizo del jardín.

Sin embargo, estas cosas son De Verdad difícil de trabajar con; si continúa y conecta todo sin leer estos consejos primero, se sentirá decepcionado.

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

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

  • VCC va a 3.3v en su fuente de alimentación externa
  • GND va al carril 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

Necesitará dos nodos completamente cableados para probar. Descargue la biblioteca RF24 y cargue la más simple Empezando ejemplo. Encienda ambos módulos, pero deje uno conectado a través de USB y abra la consola en serie. Tipo “T” y enviar, para cambiarlo al modo de transmisión, en ese momento debería recibir mensajes de depuración que dicen que está enviando un mensaje con éxito al otro nodo.

Creación de la puerta de enlace de cliente MySensors MQTT

Ok, ahora que sabemos que las radios RF24 están conectadas y funcionan 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 usando la rama de desarrollo porque al momento de escribir, el MQTT cliente Gateway aún no es parte del paquete principal.

Aunque hay MQTTGateway disponible en la rama maestra, también actúa como un servidor, lo que no queremos porque ya tenemos un servidor MQTT estable que se ejecuta en la Raspberry Pi. Solo queremos reenviar los datos de MySensors a eso. Nuevamente, si esto no es lo que desea, si prefiere no usar MQTT en absoluto, entonces mire EthernetGateway o SerialGateway, los cuales también son compatibles con OpenHAB.

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

El cableado de la puerta de enlace es un poco diferente; una vez que tenga su escudo de 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 al pin A2

También debe habilitar el #define SOFTSPI línea en el bibliotecas / mySensors / MyConfig.h expediente. Haga esto quitando el // para descomentarlo, está alrededor de la línea 309 en la mía.

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 SPI del módulo de radio a otros pines y realizamos la comunicación SPI en el software (por lo tanto, suave SPI).

Cargue el MySensors / GatewayW5100MQTTClient bosquejo. Si no ve esto en el menú MySensors, no tiene el rama de desarrollo instalado Use el enlace proporcionado anteriormente para volver a descargar toda la biblioteca.

Deberá definir una dirección IP estática para el controlador, la IP de su enrutador y subred de red, y la dirección IP de su servidor MQTT existente. Si lo desea, también puede modificar los prefijos del tema. Sube y conecta esa cosa a la red. Revise 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 encendido).

Construyendo los Nodos del Sensor

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

  • 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 carril 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

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

Finalmente, cargue el Sensor de humedad ejemplo 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 las 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 cambio, solo lo vamos a definir manualmente cada vez. Anote este número en algún lugar para sus propios registros y cámbielo para 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

Luego, sube!

Vale la pena abrir la consola en serie para echar un vistazo. La parte crucial para mirar es st =, cual es el estado del mensaje. st = fallar 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:

Si todo funciona, debería comenzar a ver algunas lecturas de datos en su servidor MQTT. Ponerlos en OpenHAB está fuera del alcance de este tutorial, pero se trató en la parte 2 de la guía de OpenHAB OpenHAB Beginner's Guide Parte 2: ZWave, MQTT, Reglas y gráficos OpenHAB Beginner's Guide 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 de configurar. De hecho, puede ser francamente frustrante. para que puedas consultar allí.

Código de combinación de sensores

Aunque poner en funcionamiento un solo nodo sensor es relativamente simple, se vuelve un poco más complicado cuando desea agregar múltiples sensores a cada nodo. Básicamente, vas a 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é.

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

mysensors-in / 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 hogar inteligente no son los módulos comerciales Z-Wave que cuestan $ 80, sino los personalizados MySensors.

Terminaré allí hoy, pero si tienes problemas, puedes preguntar en los comentarios o en los foros de usuarios muy activos de MySensors. ¿Armarás tus propios nodos sensores baratos? ¿Cómo va tu hogar inteligente??




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.