Taula de continguts:

Crawl Space Monitor (també conegut com: No More Frozen Pipes !!): 12 passos (amb imatges)
Crawl Space Monitor (també conegut com: No More Frozen Pipes !!): 12 passos (amb imatges)

Vídeo: Crawl Space Monitor (també conegut com: No More Frozen Pipes !!): 12 passos (amb imatges)

Vídeo: Crawl Space Monitor (també conegut com: No More Frozen Pipes !!): 12 passos (amb imatges)
Vídeo: Тест каравана в -25° . Ночёвка зимой. Как не замёрзнуть? 2024, De novembre
Anonim
Crawl Space Monitor (també conegut com: No More Frozen Pipes !!)
Crawl Space Monitor (també conegut com: No More Frozen Pipes !!)

L’aigua de casa meva prové del meu pou a través d’un espai de rastreig sense calefacció. Tota la fontaneria de la cuina i el bany també travessa aquest espai. (La fontaneria interior va ser una reflexió a mitjans de la dècada dels 70 en aquesta casa!) He utilitzat làmpades de calor als endolls termostàtics de "dipòsit estoc" per mantenir una temperatura superior a la congelació. Hi va haver un parell de problemes significatius amb aquest acord: 1 - Sense visibilitat. La primera indicació de bombetes cremades són les canonades congelades. 2 - De vegades els endolls no s’apagaven. Això suposa desagradables sorpreses: la factura elèctrica. 3 - Sense granularitat. Vaig mantenir 3 bombetes "en línia" (750 watts en total) i era una solució total o nul·la. (2 bombetes no sempre ho manegaven.) Després de presentar-me a Arduino i veure algunes de les coses que hi feien altres persones, vaig decidir que li donaria un remolí. Admetré que, de bon tros, he arrencat i modificat sense vergonya el codi de mostra dels projectes d’altres persones perquè aquest treball funcioni, tot i que en última instància he reescrit la majoria de tot. Adafruit.com i el va modificar. En lloc d’actualitzar un lloc web, he utilitzat Amazon Web Services per enviar-me actualitzacions d’estat per SMS. També he afegit el control d’alguns relés de 110 V (https://www.adafruit.com/products/268). Aleshores em vaig posar "intel·ligent" i vaig decidir "fer-lo més resistent" (bé), alguna cosa va provocar un curt curt i em va sortir un fum del màgic fum blau. Tot fregit … No tenint cap altra connexió WiFi CC3000, he fet les coses de manera diferent aquesta vegada. El vaig construir per controlar-lo de manera interactiva mitjançant una interfície sèrie i després vaig afegir una interfície FTDI Bluetooth EZ-Link. (Ja no heu d'arrossegar el portàtil per sota de casa per obtenir actualitzacions de programari !!!) També he creat una interfície Python que es connecta a la unitat mitjançant el Bluetooth, la consulta regularment i mostra informació d'estat al meu Mac. (També hi ha una "interfície humana" a la qual es pot accedir mitjançant qualsevol programari d'emulació de terminal.) Com a resultat de la reescriptura i l'eliminació de tot el codi WiFi i RTC, el projecte ha reduït la seva mida de més de 29K a amb prou feines 10K. També ha millorat la fiabilitat en la mesura que el gos de vigilància del maquinari no s’ha activat en absolut en les dues setmanes que ha estat funcionant i he estat ajustant.

17/02/16 Actualització / nota: en un intent d’obtenir un format adequat en alguns dels codis (especialment la sagnia del codi Python), les coses van passar de lletja a inutilitzable. Estic segur que el problema ja està en algun punt i intentaré esbrinar-ho. Fins llavors, he afegit enllaços als fitxers de codi mitjançant DropBox. Han de ser accessibles per a tothom. Si no, si us plau, aviseu-me per poder-los arribar d’una altra manera.

Pas 1: Problemes per resoldre

El sistema necessitava fer les coses següents per a mi: 1 - controlar la temperatura a l'espai de rastreig. 2 - encendre les làmpades de calor segons sigui necessari per mantenir la temperatura per sobre de la temperatura de congelació. 3 - quan no funciona, proveu periòdicament les bombetes i doneu-me visibilitat. del seu estat.4: doneu-me visibilitat de la temperatura i l’estat del sistema, inclosos: - el sistema està funcionant? - quina és la temperatura ARA? - quina temperatura fa més fred? - quantes bombetes funcionaven? - quantes bombetes fan bones proves? - Quin és el meu temps total en "minuts lleugers" (també conegut com "temps de gravació")? 5 - Feu tot el que he dit abans que no hagi de rastrejar per sota la casa !!! Vaig decidir que la forma més fàcil de provar el funcionament de la bombeta era amb un sensor de llum. Alguns altres problemes que volia tractar era el temps de cicle a les llums. Massa lent i estic cremant electricitat innecessària. Massa ràpid i corro el risc de cremar-los per tot l’encesa i l’apagada amb la calefacció i la refrigeració relacionades.

Pas 2: el maquinari

El maquinari
El maquinari

2 làmpades de calor de 250 watts 1 làmpada de treball de 500 watts (una de les meves làmpades de calor ha desaparegut, per la qual cosa es tracta d’un stand-in) Arduino UnoDHT22 Sensor de temperatura / humitat GA1A12S202 Sensor de llum Relés PowerSwitch 110 V Interfície i programador serial EZ-Link de color blau Funda d’alta tecnologia (banyera Rubbermaid de mida sandvitx) Premsa de cables Taula de pa de mida 1/2 Placa acrílica per a taulers de pa i Arduino Filferes de pont variats. "Tira de taller" Coleman de 5 sortides. També he utilitzat un Adafruit Trinket com a gos de vigilància del maquinari, però ha demostrat ser innecessari (jinx, és clar!) I jo va escriure un document instructiu separat sobre això, així que no ho repetiré aquí. La coleta Coleman va ser una bona troballa, ja que em va donar 4 sortides per a les meves làmpades de calor PLUS una presa de corrent per a la font d’alimentació Arduino sense cap tipus de separadors ni tires d’alimentació addicionals. Amb una potència completa de 15 A amb un interruptor i un interruptor intern, podia gestionar tot el que pogués treure a través d’una única presa de corrent.

Pas 3: l'enfocament

Tot i que el sistema està construït per l’aplicació per estar a l’espera i fer algunes coses relativament a poc a poc, el que no volia fer era construir un sistema on el controlador estava assegut en cicles de delay () sense respondre. També volia ser capaç de canviar els paràmetres de configuració tan a prop de la marxa com poguessin obtenir, sens dubte no d’una manera que requeria tornar a escriure codi o fer operacions de cerca i substitució massives a la font. he trobat els articles més excel·lents de Bill Earl sobre "Multitasking the Arduino" (comenceu aquí: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) i m'he ocupat. En crear classes de "temporitzador" i "escalfador" vaig poder fer totes les funcions de sincronització que volia sense fer servir delay () (amb només un parell d'excepcions) i configurar les bombetes ("escalfadors") amb una sola línia de codi per a cada un.

Pas 4: cablejar-lo

El cablejat
El cablejat
El cablejat
El cablejat

El diagrama Fritzing no inclou el Bluefruit EZ-LinkArduino 5V & Ground al bus de la placa de control DHT22 pin 1 a 5V bus DHT22 pin 2 al pin Arduino 7DHT22 pin 4 al bus de terra Resistència 10K entre DHT22 pins 1 i 2GA1A12S202 VCC pin a 5V busGA1A12S202 GND pin a Ground busGA1A12S202 OUT pin a Arduino A0Arduino 3V pin to Arduino AREF pinRelay Ground leads to Ground busRelay 1 power power to Arduino A1Relay 2 power power to Arduino A2Relay 3 power power to Arduino A3Relay 4 power power to Arduino A4 La majoria d’aquestes connexions es poden reordenar com vulgueu. L'únic que és crític és que el cable OUT del sensor de llum ha d'anar a un pin analògic. Aquest pin-out funcionarà amb el meu codi tal com estava escrit. Si feu servir el gos de vigilància del maquinari, veureu que el meu codi posa el batec al pin 2 d’Arduino.

Pas 5: el codi Arduino, esbós principal

CrawlSpace_monitor.ino

Pas 6: Notes sobre el codi

Les línies de codi següents creen les instàncies de l'escalfador i defineixen els paràmetres de funcionament: // Escalfador (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (minutes), luxDelta) Heater heater1 = Heater (A1, 38), 43, 20, 1440, 5); Escalfador 2 = Escalfador (A2, 36, 41, 20, 1440, 5); Escalfador3 = Escalfador (A3, 34, 39, 20, 1440, 5); Escalfador4 = Escalfador (A4, 32, 37, 20, 1440, 5); (I sí, he definit els 4 escalfadors tot i que només en funcionen 3 en aquest moment. Encara caldria obtenir un altre relé, però després afegir el quart escalfador ser tan senzill com endollar-lo.) Escalono les seves temperatures d’activació, començant a 38 graus per al primer i acabant a 32 per al 4t inexistent. Una de les coses que vaig trobar quan vaig començar a empaperar-ho va ser que calia definir un rang de temperatura i definir un "temps de gravació" mínim, o bé estava encès i apagat com un boig. Aquí els dono a cadascun d’ells una extensió de 5 graus i un temps mínim de gravació de 20 minuts. Vaig establir l'interval de prova a 24 hores i vaig establir 5 lux, ja que la lectura mínima de llum que necessitava per determinar que una bombeta encara funcionava. Gairebé tot el que cal configurar és aquí mateix en aquestes 4 línies de codi.

Pas 7: el codi Arduino, classes

Vaig crear 3 classes per a aquest projecte. Eren "temporitzador", "escalfador" i "acumulador". Amb una mica més de reflexió hauria de poder plegar l’acumulador al temporitzador, però encara no ho he fet. Aquí els teniu sencers: heater.h

temporitzador.h

acumulador.h

Pas 8: supervisió del sistema

Supervisió del sistema
Supervisió del sistema

Vaig crear una interfície única per a dos monitors separats. És una sessió interactiva a través de la consola sèrie. En el meu cas, estic fent servir el Bluefruit EZ-Link per poder accedir al sistema sense arrossegar-me per sota de la casa ni intentar fer un cable USB entre les biguetes del terra. Un avantatge addicional de l’EZ-Link és que també puc carregar nou codi de programa a l’Arduino mitjançant Bluetooth. Es pot accedir a la interfície “humana” (Bluetooth o cable físic) amb qualsevol programari d’emulació de terminal, inclòs el serial de l’IDE Arduino. monitor. Quan us connecteu inicialment, no hi ha resposta, però la tecla que premeu "u" (per a "actualització") i "t" (per a "prova") us donarà la sortida que es mostra a la captura de pantalla. "m" ("monitor") i "s" ("sys check") us ofereixen les mateixes dades però en un format molt menys llegible. Està pensat per ser "raspat" per un altre programa per a la visualització automàtica. He elaborat un script Python que ho fa exactament. Qualsevol altra clau obtindrà el missatge d’error que apareix. Veureu un valor per a "temps de gravació": penseu en això com "minuts de bombetes": 1 bombeta de 10 minuts = 10 minuts, 3 bombetes de 10 minuts = 30 minuts.

Pas 9: l'escriptura Python

L’escriptura Python
L’escriptura Python

crawlspace_gui.py

Pas 10: Encara per fer …

Potser no és bonic o perfecte, però és eficaç i demostra ser fiable. I, encara no he tingut cap problema de pipa congelada aquest hivern !!! Tinc una llista d'èxits per fer. Per descomptat, ara que funciona, pot ser que pugui o no aconseguir mai la majoria d’aquests elements: fer funcionar el Bluetooth en un dels meus Raspberry Pi per poder crear un monitor dedicat. interfície. Aquesta separació d’elements no és intencionada i no entenc per què hi és. Afegiu una interfície a alguna cosa com el servei d’IO d’Adafruit perquè pugui controlar-lo des de qualsevol lloc. Afegiu una alerta de missatges de text. Moveu-vos a un controlador més petit (possiblement un Metro Mini o un Trinket Pro?), Relés menys costosos i un millor embalatge. Traieu-lo d’una tauleta de pa i pengeu-lo en un tauler "Perma Proto". Paràmetres de configuració a EEPROM. Una interfície més granular que indiqui quines bombetes són bones i possiblement fins i tot cremar temps per a les bombetes individuals. A mesura que les acabi fent, tornaré i actualitzaré aquesta instrucció.

Pas 11: actualitzeu el 3/16, compilació "permanent"

Actualització 3/16,
Actualització 3/16,
Actualització 3/16,
Actualització 3/16,
Actualització 3/16,
Actualització 3/16,

Aconseguint un bon descans amb el fred, he recuperat la unitat i l'he traslladat a un controlador més petit (tenia intenció d'utilitzar un Trinket Pro, però tenia un Adafruit Metro Mini assegut sense reclamar per cap altre projecte), l'he soldat a un tauler de Perma-Proto, i posa-ho tot en un millor cas. Basant-me en la seva fiabilitat, no hi vaig tornar a posar el gos de vigilància del maquinari. Encara només faig servir 3 làmpades / relés on el sistema gestionarà 4. El mòdul Bluetooth es troba en una capçalera soldada, de manera que es pot treure si el necessito en un altre lloc. No hi va haver canvis de codi necessaris per passar al nou controlador: una simple recompilació i càrrega em va fer funcionar en qüestió de minuts. (El Metro Mini té un pinout idèntic a l’Arduino Uno i també és un processador ATMega328.)

Pas 12: actualització l'1/1/2018: benvingut a l'IoT

El sistema ha funcionat perfectament per a nosaltres. Després de dos hiverns força forts, SENSE canonades congelades. De fet, el sistema va poder mantenir les canonades sense cremar mai més de 2 bombetes. Tenir el tercer bulb en línia era una bona assegurança, però no l’hem necessitat mai fins ara.

Arribat l’any 3 del sistema, el mòdul Bluetooth ha fallat. També hem construït una casa nova, de manera que el sistema de control està molt fora del rang de Bluetooth. (La casa vella es manté desperta durant un temps, però no per sempre.) En el moment intermedi, he estat fent moltes coses amb el processador habilitat per a l'ESP8266 WiFi; tant en format Adafruit Feather com en format de codi obert "NodeMCU". Generalment, el NodeMCU es pot trobar a Amazon per uns 5 dòlars, molt menys si compres de manera massiva i / o a algú com AliExpress.

Aquesta nova versió manté la interfície sèrie, de manera que encara es podria utilitzar amb un mòdul Bluetooth o una connexió serial USB directa i l’escriptura Python anterior, però, la nova versió té una interfície de pàgina web. Tal com està escrit, inclou la característica següent:

Un gestor de xarxes WiFi per eliminar les credencials WiFi de codificació dura.

La possibilitat d’actualitzar el microprogramari per antena mitjançant l’IDE Arduino (sempre que estigueu a la mateixa xarxa WiFi; tingueu en compte que després de fer una càrrega USB al dispositiu, cal un restabliment abans que funcionin les actualitzacions d’OTA). Si us plau, canvieu la contrasenya OTA a la línia 6 per ser única per a vosaltres.

Una pàgina web que mostra les mateixes dades que el script Python, amb una actualització automàtica cada minut. No he posat cap tipus de seguretat a la pàgina, perquè només és de visualització.

Podeu trobar el nou codi aquí. Tingueu en compte que els noms dels pins canvien quan es mou al NodeMCU.

Recomanat: