Sensores inteligentes para el hogar diy con arduino, mysensors y openhab
sensores inteligentes para el hogar cuestan una cantidad ridícula de dinero. A $ 60- $ 100 sólo por un detector de movimiento o sensor de humedad, el cableado de una casa entera se convierte en el dominio de los que tienen cantidades tontas de la renta disponible. Vamos a construir nuestra propia.
Por suerte, el trabajo duro ya se ha hecho por la gente fina detrás MySensors.org. Hoy voy a mostrar cómo utilizar el marco MySensors para crear una matriz barata de sensores inteligentes para el hogar que puede contribuir a una OpenHAB instalar (ver nuestra guía de Introducción a OpenHAB de Frambuesa Pi). Estoy suponiendo que tiene un servidor MQTT trabajando ya, y entender los conceptos básicos de la mensajería MQTT Format- si no, asegúrese de leer el seguimiento de la guía OpenHAB, que incluye instrucciones para la instalación de un servidor MQTT.Introducción a OpenHAB Home Automation en la Raspberry PiIntroducción a OpenHAB Home Automation en la Raspberry PiOpenHAB es una plataforma madura, abierta casa fuente de automatización que se ejecuta en una variedad de hardware y es el protocolo agnóstico, lo que significa que se puede conectar a casi cualquier hardware de automatización del hogar en el mercado hoy en día.Lee mas
A pesar de que le trata específicamente de la transmisión de los datos MySensors de una red de Arduino, utilizando MQTT, a un OpenHAB instalar, debo señalar que el marco MySensors puede alimentar en un número de diferentes controladores de automatización del hogar. He presentado esta aquí como una solución completa que funciona para mí, pero por favor, compruebe el sitio MySensors como se puede encontrar también se adapte a su propósito similar, pero usando un poco diferente hardware o un protocolo de mensajería diferente. Es increíblemente versátil.
El costo de hardware para mi configuración es menos de $ 10 por nodo (un poco más por la puerta de enlace), pero los sensores y actuadores adicionales se puede añadir por muy poco (la humedad y la temperatura del sensor DHT11 por ejemplo, es alrededor de $ 1 cada uno- un relé de alto voltaje es de alrededor de 3 $).
Lo que estamos haciendo
La idea básica es que en lugar de añadir a nuestra red local lleno de gente poco fiable existente mediante Wi-Fi o Ethernet escudos caros, creamos una red de malla capaz completamente separados sólo por el puente que Arduinos- continuación a la red local utilizando un único nodo de pasarela , que tiene tanto una conexión Ethernet y una conexión de radio a los otros Arduino. Así que estamos haciendo un par de nodos de sensores que se reúnen de datos y un nodo de pasarela, que retransmite estos datos en el servidor OpenHAB.
Una vez más, esto es lo que funciona para mí, porque mi recepción Wi-Fi es tan terrible y no quiero saturar con datos innecesarios. Si está satisfecho con Wi-Fi, buscar en el uso del bajo costo compatible con Arduino ESP8266 Con una función de tableros Wi-Fi - MySensors soporta los mismos.Cumplir con el asesino de Arduino: ESP8266Cumplir con el asesino de Arduino: ESP8266Lo que si te dijera que hay una una junta dev compatible con Arduino con una función de Wi-Fi para menos de $ 10? Bueno, la hay.Lee mas
Nota importante para los usuarios de Arduino El Capitán y Clones: Apple logró romper los conductores de serie que se utilizan para comunicarse con un número de placas Arduino clon en la última versión de El Capitan gracias a las nuevas medidas de seguridad. Para ver si está afectado, mira la tabla y el chip más cercano al puerto USB. Si dice CH340, que está afectado por este. Siga las instrucciones para desactivar controlador firma kext, instalar controladores serie CH340 nuevo.
componentes necesarios
Por la puerta de entrada, se necesita:
- Arduino Uno
- Ethernet Shield (basado W5100)
- Módulo NRF24L01 - He utilizado el +PA + LNA versiones de todo, que tienen un mayor alcance de hasta 1 km. El cableado es el mismo cualquiera que elija.
Para cada nodo sensor:
- Arduino Uno
- módulo NRF24L01
- Sensores (para empezar, me gustaría sugerir un DHT11 temperatura y humedad DHT22 o módulo)
Adicional / Opcional:
- 10uF condensadores, uno para cada módulo de RF que tiene (el enlace es para un paquete de 50!)
- Fuente de alimentación con 5 V y 3,3 V de salida (YwRobot MB102 funciona bien y son $ 1 cada uno) - si se requiere el uso de un clon de Arduino. Usted también necesitará una fuente de alimentación DC 9-12V para estos.
- Prototyping Shields, o cables de puente macho-hembra cortos.
Trabajar con módulos NRF24L01
Vamos a empezar con los módulos NRF24L01, ya que son parte más compleja del proyecto. Fui para la versión de gama más caro, ya de estos: técnicamente se conoce como NRF24L01 + PA + LNA. Vienen con una conexión de circuito y la antena de amplificación de la señal a bordo, aunque le sugiero que pruebe la versión no antena más barato de los módulos primero si usted tiene una casa normal con paredes regulares, no es el tipo de piedra sólida metros de espesor de pared que se Hago. El intervalo reivindicado de estos es de aproximadamente un kilómetro, más que suficiente para me meta en el cobertizo del jardín.
Sin embargo, estas cosas son De Verdad difícil trabajar si con- seguir adelante y conecta todo sin necesidad de leer estos consejos en primer lugar, que será decepcionado.
- El módulo necesita potencia de entrada de 3,3 V a la patilla VCC - no 5v. Si usted pone en 5v, podrás freír.
- Soldar un condensador 10uF través de los terminales VCC / GND. La línea gris sólido en el condensador indica el lado negativo / GND.
- El uso a corto, alta calidad cables- salto o mejor aún, soldarlos directamente a un escudo de prototipos para mantener la longitud del cable al mínimo y conexiones sólidas.
- Si está utilizando un clon de Arduino, el regulador de voltaje no acaba de proporcionar suficiente para ellos en el pin 3.3v - tendrá que utilizar una tabla de fuente de alimentación externa (vinculado anteriormente), disponible por alrededor de $ 1 cada uno. Estos proporcionan una 3.3v estable. Si estás usando una original Arduino Uno de marca, esto no parece ser un problema.
Le recomiendo encarecidamente que hacer algunas pruebas básicas de primeros acaba de establecer su radio está funcionando. Dos radios de alambre como se muestra en la página MySensors. No importa que sus tablas muestran el diagrama de Arduino Micro - se utilizan los mismos números de pin. Tenga en cuenta que el diagrama muestra el NRF24L01 de la parte superior- que realmente va a la conectará las cosas en desde la parte inferior. Mentalmente ajustar en consecuencia. Ignorar el pasador gris IRQ, no se utiliza actualmente. 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
Usted necesitará dos nodos completamente cableado a probar con. Descargar la biblioteca RF24 y cargar el más simple Empezando ejemplo. Potencia en ambos módulos, pero deje uno conectado a través de USB y abrir la consola serie. Tipo “T” y enviar, para cambiar en el modo de transmisión, momento en el que debe recibir los mensajes de depuración diciendo que es hacer ping con éxito un mensaje a otro nodo.
La construcción de la MySensors MQTT cliente gateway
Ok, ahora que sabemos que los radios RF24 están conectados en y funciona correctamente, siga adelante y descargar la rama de desarrollo del paquete de MySensors Arduino. Este tutorial fue escrito usando la versión 1.5, pero debería estar bien con versiones posteriores también. Estamos utilizando la rama de desarrollo, porque en el momento de la escritura, la MQTT cliente puerta de entrada aún no es una parte del paquete principal.
Aunque no es MQTTGateway disponible en la rama principal, que actúa como un servidor también, lo que no queremos, porque ya tenemos un servidor MQTT el funcionamiento estable de la Frambuesa Pi. Sólo queremos que transmita los datos MySensors en eso. Una vez más, si esto no es lo que quiere - si usted prefiere no utilizar MQTT a todos - y luego mirar EthernetGateway o SerialGateway, ambos de los cuales también son compatibles con OpenHAB.
Vale la pena señalar que el paquete de descarga no sólo incluye los archivos MySensors esenciales, sino que también incluye las bibliotecas compatibles necesarios para cada sensor sea posible. Para evitar conflictos, sugeriría simplemente copias de seguridad de su carpeta entera bibliotecas actuales y su sustitución por todos con los que está en el paquete de descarga.
Cableado de la puerta de entrada es un poco diferente- vez que tenga su escudo Ethernet, utilice los siguientes pines para el módulo de radio:
- CE al pin 5
- CSN a la clavija 6
- SCK a la patilla A0
- MOSI al pin A1
- MISO a la clavija A2
También es necesario para que el #define SOFTSPI línea en el bibliotecas / mySensors / MyConfig.h archivo. Para ello, la eliminación de la // quitar los comentarios de ella, que es alrededor de la línea 309 en la mía.
Tenemos que hacer esto porque tanto el módulo de radio y el escudo de la red utilizan SPI, y ellos están incompatible- así que sólo cambiamos el módulo de radio SPI para algunos otros pines y llevar a cabo la comunicación SPI por software en lugar (por lo tanto, suave SPI).
Capacidad de carga hasta la MySensors / GatewayW5100MQTTClient bosquejo. Si no ve esta en el menú MySensors, usted no tiene la rama de desarrollo instalada. Utilice el enlace que aparece a continuación para volver a descargar toda la biblioteca.
Tendrá que definir una dirección IP estática para el controlador, la IP del router de la red y la subred y la dirección IP de su servidor MQTT existente. Siéntase libre de modificar los prefijos tema también si lo desea. Sube y conecte esa cosa en la red. Brevemente comprobar la consola de serie de los errores flagrantes, como ser incapaz de conectar con su servidor MQTT, de lo contrario dejó a un lado (pero dejarlo encendido).
La construcción de los nodos sensores
En primer lugar, comentar que #define SOFTSPI línea en el MyConfig.h presentar de nuevo poniendo el // volver al inicio. Es sólo necesario para la puerta de entrada - que estamos utilizando el cableado NRF24L01 estándar para los nodos de sensores, que utilizan hardware de SPI. Si necesita recordar:
- VCC va a 3.3v en su fuente de alimentación externa (O en el propio Arduino si se trata de un original y no una copia)
- 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
A continuación, el alambre hasta su elección de por sensores que utilizan DHT11 la humedad y el sensor de temperatura para la prueba, 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 , medidor de lluvia, luz, movimiento, incluso RFID - y un montón más. Se puede ver también añadí un relé para el nodo se muestra a continuación, pero lo veremos más adelante.
Por último, cargar el Sensor de humedad ejemplo, en el menú MySensors y añadir la siguiente línea inmediatamente después de los comentarios.
Vídeo: Cheap Bed Occupancy Sensor using Arduino & MySensors
#define MY_NODE_ID 2
Puesto que estamos utilizando una versión especial del controlador que simplemente reenvía cosas en nuestro propio servidor MQTT, que no tiene la función de controlador estándar que se asignará automáticamente identificadores de nodo a cada nodo nuevo. En su lugar sólo vamos a definir manualmente cada vez. Anote este número en algún lugar para sus propios registros, y cambiarlo para cada nodo.
Vídeo: $4 Battery Powered Chair Occupancy (Contact) Sensor using Arduino and MySensors
Habilitar la salida de depuración también:
MY_DEBUG #define
Por último, compruebe el pin de datos de su sensor DHT11 es correcta.
HUMIDITY_SENSOR_DIGITAL_PIN #define 7
A continuación, subir!
Vale la pena la apertura de la consola serie para echar un vistazo. La parte crucial para buscar es st =, que es el estado del mensaje. st = fallan significa que el mensaje no fue enviado. Es posible que no haya definido un ID de nodo único, o que su puerta de entrada está desconectado. Fingí estos fracasos simplemente desconectando la puerta de entrada:
Si todo funciona, usted debe comenzar a ver algunos datos de lecturas entran en su servidor MQTT. Poner aquellos en los OpenHAB está fuera del alcance de este tutorial, pero estaba cubierta de parte 2 de la guía de OpenHAB por lo que puede referirse de nuevo allí.Guía del Principiante OpenHAB Parte 2: Z-Wave, MQTT, Reglas y la CartografíaGuía del Principiante OpenHAB Parte 2: Z-Wave, MQTT, Reglas y la CartografíaOpenHAB, el software de automatización del hogar de código abierto, es muy superior a las capacidades de otros sistemas de automatización del hogar en el mercado - pero no es fácil para ponerse en marcha. De hecho, puede ser francamente frustrante.Lee mas
La combinación del sensor Código
Aunque conseguir un sensor de un solo nodo en funcionamiento es relativamente simple, se pone un poco más complicado cuando se desea añadir varios sensores para cada nodo. Esencialmente se va a mezclar juntos los fragmentos de código a partir de dos ejemplos diferentes. La forma más fácil de mostrar que esto es por ejemplo, con un video! Aquí estoy combinando nuestro sensor de humedad básica con un relé.
Puede encontrar el código completo para el sensor de humedad y el relé aquí, que ya ha sido modificada con un bucle sin bloqueo como he mencionado en el video. Para obtener más información sobre la estructura de mando MQTT necesaria para activar el relé, compruebe la API de serie -pero basta con decir que el canal siguiente controla el primer relevo en el código que he dado (con un cuerpo de mensaje de 0 o 1):
mysensors-IN / 9/1/1/0/2
Su única limitación es ahora la cantidad de memoria en el Arduino, y voy a decir esto - los sensores más fiables en mi casa inteligente no son los módulos comerciales Z-Wave que cuestan $ 80, pero los MySensors los personalizados.
Voy a terminar allí hoy, pero si usted tiene problemas de distancia y pregunta directamente en los comentarios o los foros de usuarios muy activos de MySensors. Va a estar armando sus propios nodos de sensores baratos? ¿Cómo está llegando a su casa inteligente?