Tabla de contenido:

Monitor de espacio de rastreo (también conocido como: ¡No más tuberías congeladas!): 12 pasos (con imágenes)
Monitor de espacio de rastreo (también conocido como: ¡No más tuberías congeladas!): 12 pasos (con imágenes)

Video: Monitor de espacio de rastreo (también conocido como: ¡No más tuberías congeladas!): 12 pasos (con imágenes)

Video: Monitor de espacio de rastreo (también conocido como: ¡No más tuberías congeladas!): 12 pasos (con imágenes)
Video: 76 Cosas que no sabías sobre los objetos que nos rodean 2024, Diciembre
Anonim
Monitor de espacio de rastreo (también conocido como: ¡¡No más tuberías congeladas !!)
Monitor de espacio de rastreo (también conocido como: ¡¡No más tuberías congeladas !!)

El agua que llega a mi casa proviene de mi pozo a través de un sótano sin calefacción. Toda la plomería de la cocina y el baño también pasa por este espacio. (¡La plomería interior fue una ocurrencia tardía a mediados de los 70 en esta casa!) He estado usando lámparas de calor en los enchufes termostáticos del "tanque de almacenamiento" para mantener una temperatura por encima del punto de congelación. Hubo un par de problemas importantes con esta disposición: 1 - No hay visibilidad. ¡La primera indicación de bombillas quemadas son tuberías congeladas! 2 - A veces, los enchufes no se apagaban. Eso provocó sorpresas desagradables en la factura de la luz. 3 - Sin granularidad. Mantuve 3 bombillas "en línea" (750 vatios en total) y fue una solución de todo o nada. (2 bombillas no siempre lo soportarían). Después de conocer Arduino y ver algunas de las cosas que otras personas estaban haciendo con él, decidí darle una vuelta. Admitiré desde el principio que descaradamente enganché y modifiqué el código de muestra de los proyectos de otras personas para que esto funcione, aunque finalmente he reescrito casi todo. Inicialmente, construí esta "Estación meteorológica WiFi" que encontré en Adafruit.com y lo modificó. En lugar de actualizar un sitio web, utilicé Amazon Web Services para enviarme actualizaciones de estado por SMS. También agregué el control de algunos relés de 110V (https://www.adafruit.com/products/268). Entonces me volví "inteligente" y decidí "reforzarlo", bueno, algo hizo cortocircuito y obtuve una bocanada del mágico humo azul. Todo frito… Al no tener otra ruptura de CC3000 WiFi, hice las cosas de manera diferente esta vez. Lo construí para ser monitoreado interactivamente a través de una interfaz en serie y luego agregué una interfaz EZ-Link Bluetooth FTDI. (¡¡¡No más arrastrar la computadora portátil debajo de la casa para actualizaciones de software !!!) También construí una interfaz Python que se conecta a la unidad a través de Bluetooth, la consulta regularmente y muestra información de estado en mi Mac. (También hay una "interfaz humana" a la que se puede acceder mediante cualquier software de emulación de terminal). Como resultado de la reescritura y la eliminación de todo el código WiFi y RTC, el proyecto se ha reducido en tamaño de más de 29K a apenas 10K. También ha mejorado la confiabilidad en la medida en que el perro guardián del hardware no se ha disparado en absoluto en las dos semanas que ha estado funcionando y he estado ajustando.

17/02/16 Actualización / nota: En un intento de obtener el formato adecuado en parte del código (especialmente la sangría del código Python), las cosas pasaron de ser feas a inutilizables. Estoy seguro de que el problema está en alguna parte y me esforzaré por resolverlo. Hasta entonces, he agregado enlaces a los archivos de código a través de DropBox. Deben ser accesibles para cualquier persona. Si no es así, ¡avíseme para que pueda entregárselos de otra manera!

Paso 1: problemas a resolver

El sistema necesitaba hacer las siguientes cosas por mí: 1 - monitorear la temperatura en el espacio de rastreo 2 - encender las lámparas de calor según sea necesario para mantener la temperatura por encima del punto de congelación 3 - cuando no esté funcionando, pruebe periódicamente las bombillas y déme visibilidad de su estado. 4 - darme visibilidad de la temperatura y el estado del sistema, incluyendo: - ¿el sistema está funcionando? - ¿Cuál es la temperatura AHORA? - ¿Cuál es la temperatura más fría? - ¿Cuántas bombillas funcionaron? - ¿Cuántas bombillas funcionan bien? - ¿Cuál es mi tiempo total en "minutos luz" (también conocido como "tiempo de combustión")? 5 - ¡Haz todo lo anterior sin que yo tenga que meterme debajo de la casa! Decidí que la forma más fácil de probar el funcionamiento de la bombilla era con un sensor de luz Algunos otros problemas que quería abordar era el tiempo de ciclo de las luces. Demasiado lento y estoy quemando electricidad innecesaria. Demasiado rápido, y corro el riesgo de quemarlos por todo el encendido y apagado con el calentamiento y enfriamiento relacionados.

Paso 2: el hardware

El hardware
El hardware

2 lámparas de calor de 250 vatios 1 lámpara de trabajo de 500 vatios (una de mis lámparas de calor desapareció, por lo que esta es un reemplazo) Arduino UnoDHT22 Sensor de temperatura / humedad GA1A12S202 sensor de luz PowerSwitch 110 V relés Bluefruit EZ-Link Serial Interface & Programmer Carcasa de alta tecnología (tina Rubbermaid de tamaño sándwich) Glándula de cable Placa de pruebas de tamaño 1/2 Placa acrílica para placa de pruebas y Arduino Cables de puente surtidos. "Tira de taller" Coleman de 5 salidas También utilicé una baratija de Adafruit como un perro guardián de hardware, pero ha demostrado ser innecesario (¡maldición, por supuesto!) Y yo Escribí un instructivo separado al respecto, así que no lo repetiré aquí. La coleta Coleman fue un buen hallazgo, ya que me dio 4 salidas para mis lámparas de calor MÁS una salida para la fuente de alimentación Arduino sin ningún divisor adicional o regletas de enchufes involucrados. Con un valor nominal de 15 amperios completos con un interruptor y un disyuntor interno, podría manejar todo lo que pudiera sacar a través de una sola toma de corriente.

Paso 3: el enfoque

Si bien el sistema está construido con una aplicación para sentarse a esperar y hacer algunas cosas con relativa lentitud, lo que no quería hacer era crear un sistema en el que el controlador estuviera sentado en los ciclos de retardo () sin responder. También quería poder cambiar los parámetros de configuración lo más cerca posible sobre la marcha, ciertamente no de una manera que requiriera reescribir el código o realizar operaciones masivas de búsqueda y reemplazo en la fuente. encontró los artículos más excelentes de Bill Earl sobre "Multitasking the Arduino" (comience aquí: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) y se puso a trabajar. Al crear las clases de "temporizador" y "calentador" pude hacer todas las funciones de temporización que quería sin usar delay () (con solo un par de excepciones) y configurar las bombillas ("calentadores") con una sola línea de código para cada uno.

Paso 4: Cableado

Cableándolo
Cableándolo
Cableándolo
Cableándolo

El diagrama de Fritzing no incluye el Bluefruit EZ-Link Arduino 5V y tierra al bus de la placa de pruebas DHT22 pin 1 al bus de 5VDHT22 pin 2 al pin Arduino 7DHT22 pin 4 al bus de tierra Resistencia de 10K entre DHT22 pines 1 y 2GA1A12S202 Pin VCC al bus de 5V GA1A12S202 GND pin a tierra busGA1A12S202 Pin de salida a Arduino A0 Pin de Arduino 3V a pin de AREF de Arduino Conductores de tierra de relé a bus de tierra Cable de alimentación de relé 1 a Arduino A1 Cable de alimentación de relé 2 a Arduino A2 Cable de alimentación de relé 3 a Arduino A3 Cable de alimentación de relé 4 a Arduino A4 La mayoría de estas conexiones se pueden reorganizar como desee. El único que es crítico es que el cable de SALIDA del sensor de luz debe ir a un pin analógico. Este pin-out funcionará con mi código tal como está escrito. Si está utilizando el perro guardián de hardware, verá que mi código pone el latido en el pin 2 de Arduino.

Paso 5: el código Arduino, bosquejo principal

CrawlSpace_monitor.ino

Paso 6: notas sobre el código

Las siguientes líneas de código crean las instancias del calentador y definen los parámetros de funcionamiento: // Heater (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (minutes), luxDelta) Heater Heating1 = Heater (A1, 38, 43, 20, 1440, 5); Calentador calentador2 = Calentador (A2, 36, 41, 20, 1440, 5); Calentador calentador3 = Calentador (A3, 34, 39, 20, 1440, 5); Calentador calentador4 = Calentador (A4, 32, 37, 20, 1440, 5); (Y sí, definí los 4 calentadores aunque solo estoy ejecutando 3 en este momento. Aún necesitaría obtener otro relé, pero luego agregar el cuarto calentador sea tan simple como enchufarlo). escalono sus temperaturas de activación, comenzando en 38 grados para el primero y terminando en 32 para el inexistente cuarto. Una de las cosas que encontré cuando empecé a armar esto fue que necesitaba dar un rango de temperatura, así como definir un "tiempo de combustión" mínimo, o estaba encendiendo y apagando las luces como loco. Aquí le doy a cada uno de ellos una extensión de 5 grados, así como un tiempo de combustión mínimo de 20 minutos. Establecí el intervalo de prueba en 24 horas y establecí 5 lux como la lectura de luz mínima que necesitaba para determinar que una bombilla aún funcionaba. Prácticamente todo lo que necesita configurarse está aquí en estas 4 líneas de código.

Paso 7: el código Arduino, clases

Creé 3 clases para este proyecto. Eran "temporizador", "calentador" y "acumulador". Con un poco más de pensamiento, debería poder doblar el acumulador en el temporizador, pero aún no lo he hecho. Aquí están en su totalidad: calentador.h

timer.h

acumulador.h

Paso 8: Supervisión del sistema

Supervisión del sistema
Supervisión del sistema

Creé una única interfaz para dos monitores separados. Es una sesión interactiva a través de la consola serie. En mi caso, estoy usando Bluefruit EZ-Link para poder acceder al sistema sin tener que arrastrarme debajo de la casa o intentar pasar un cable USB entre las vigas del piso. Un beneficio adicional del EZ-Link es que puedo cargar un nuevo código de programa al Arduino a través de Bluetooth también. Se puede acceder a la interfaz "humana" (Bluetooth o cable físico) con cualquier software de emulación de terminal, incluido el IDE de Arduino. monitor. Cuando se conecta inicialmente, no hay respuesta, pero si presiona la tecla "u" (para "actualizar") y "t" (para "prueba") obtendrá el resultado que se muestra en la captura de pantalla. "m" ("monitor") y "s" ("verificación del sistema") te dan los mismos datos pero en un formato mucho menos legible. Estos están destinados a ser "raspados" por otro programa para su visualización automática. Creé un script de Python que hace precisamente eso. Cualquier otra clave obtiene el mensaje de error que se muestra. Verá un valor para "tiempo de combustión"; piense en esto como "minutos de bombilla" - 1 bombilla durante 10 minutos = 10 minutos, 3 bombillas durante 10 minutos = 30 minutos.

Paso 9: el script de Python

El script de Python
El script de Python

crawlspace_gui.py

Paso 10: Aún queda por hacer …

Puede que no sea bonito o perfecto, pero es efectivo y está demostrando ser confiable. ¡Y aún no he tenido problemas con las tuberías congeladas este invierno! Tengo una lista de cosas que hacer. Por supuesto, ahora que funciona, es posible que pueda o no lograr la mayoría de estos elementos: hacer que Bluetooth se ejecute en uno de mis Raspberry Pi para poder crear un monitor dedicado, aprender un poco más de Python y luego limpiar Python interfaz. Esa separación de elementos no es a propósito y no entiendo por qué está allí. Agregue una interfaz a algo como el servicio IO de Adafruit para que pueda monitorearlo desde cualquier lugar. Agregue alertas por mensaje de texto. Muévate a un controlador más pequeño (posiblemente un Metro ¿Mini o un Trinket Pro?), Relés menos costosos y mejor empaque. Sáquelo de una placa de pruebas y colóquelo en una placa "Perma Proto". Parámetros de configuración en EEPROM. Una interfaz más granular que indicará qué bombillas son buenas. posiblemente incluso el tiempo de combustión de las bombillas individuales. A medida que las haga, volveré y actualizaré este Instructable.

Paso 11: Actualización del 16 de marzo, compilación "permanente"

Actualización 16/3,
Actualización 16/3,
Actualización 16/3,
Actualización 16/3,
Actualización 16/3,
Actualización 16/3,

Tomando un buen descanso en el clima frío, recuperé la unidad y la moví a un controlador más pequeño (tenía la intención de usar un Trinket Pro, pero tenía un Adafruit Metro Mini sin reclamar por ningún otro proyecto), lo soldé en una placa Perma-Proto, y ponerlo todo en un mejor caso. Basándome en lo confiable que ha sido, no volví a poner el perro guardián del hardware. Todavía estoy usando solo 3 lámparas / relés donde el sistema manejará 4. El módulo Bluetooth está en un encabezado soldado, por lo que se puede quitar si lo necesito en otro lugar. No hubo cambios de código necesarios para pasar al nuevo controlador; una simple recompilación y carga me puso en funcionamiento en cuestión de minutos. (El Metro Mini tiene un pinout idéntico al Arduino Uno y también es un procesador ATMega328).

Paso 12: Actualización 1/12/2018 - ¡Bienvenido a IoT

El sistema nos ha funcionado a la perfección. Después de dos inviernos bastante severos, NO hay tuberías congeladas. De hecho, el sistema pudo mantener las tuberías sin quemar más de 2 bombillas. Tener la tercera bombilla en línea fue un buen seguro, pero hasta la fecha nunca la hemos necesitado.

Al llegar al tercer año del sistema, el módulo Bluetooth falló. También construimos una nueva casa, por lo que el sistema de monitoreo está fuera del alcance de Bluetooth. (La vieja casa se queda despierta por un tiempo, pero no para siempre). En el tiempo intermedio, he estado haciendo mucho con el procesador habilitado para WiFi ESP8266; tanto en formato Adafruit Feather como en formato de código abierto "NodeMCU". El NodeMCU generalmente se puede encontrar en Amazon por alrededor de $ 5, mucho menos si lo compra al por mayor y / o de alguien como AliExpress.

Esta nueva versión mantiene la interfaz en serie, por lo que aún podría usarse con un módulo Bluetooth o una conexión en serie USB directa y el script de Python anterior, sin embargo, la nueva versión tiene una interfaz de página web. Tal como está escrito, incluye la siguiente característica:

Un administrador de red WiFi para eliminar las credenciales WiFi codificadas.

La capacidad de actualizar el firmware por aire usando el IDE de Arduino (siempre que esté en la misma red WiFi, tenga en cuenta que después de realizar una carga USB en el dispositivo, es necesario reiniciar antes de que funcionen las actualizaciones OTA). ¡¡POR FAVOR cambie la contraseña OTA en la línea 6 para que sea única para usted !!

Una página web que muestra los mismos datos que el script de Python, con una actualización automática cada minuto. No puse ningún tipo de seguridad en la página, porque es solo de visualización.

Puedes encontrar el nuevo código aquí. Tenga en cuenta que los nombres de los pines cambian al pasar a NodeMCU.

Recomendado: