Cuprins:

Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 pași (cu imagini)
Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 pași (cu imagini)

Video: Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 pași (cu imagini)

Video: Crawl Space Monitor (aka: No More Frozen Pipes !!): 12 pași (cu imagini)
Video: 25 Most Frightening SCP (SCP Animation) 2024, Noiembrie
Anonim
Crawl Space Monitor (aka: No More Frozen Pipes !!)
Crawl Space Monitor (aka: No More Frozen Pipes !!)

Apa către casa mea vine din fântâna mea printr-un spațiu neîncălzit. Toate instalațiile sanitare din bucătărie și baie trec și prin acest spațiu. (Lucrările de instalații interioare au fost o gândire ulterioară la mijlocul anilor 70 în această casă!) Am folosit lămpi de căldură pe dopurile termostatice "rezervor de stoc" pentru a menține o temperatură peste îngheț. Au existat câteva probleme semnificative cu acest aranjament: 1 - Fără vizibilitate. Prima indicație a becurilor arse este țevile înghețate! 2 - Uneori dopurile nu se opreau. Acest lucru a făcut surprize urâte și factura electrică.3 - Fără granularitate. Am păstrat 3 becuri „online” (750 de wați în total) și a fost o soluție totul sau nimic. (2 becuri nu s-ar descurca întotdeauna.) După ce am fost prezentat la Arduino și am văzut câteva dintre lucrurile pe care le făceau alți oameni cu el, am decis să-i dau un vârtej. Voi recunoaște chiar din jgheab că am înșelat și modificat cu nerușinare codul de eșantion din proiectele altor oameni pentru a face acest lucru, deși în cele din urmă am rescris aproape tot. La început, am construit această „Stație meteo WiFi” pe care am găsit-o Adafruit.com și l-a modificat. În loc să actualizez un site web, am folosit Amazon Web Services pentru a-mi trimite actualizări de stare SMS. Am adăugat și controlul unor relee de 110V (https://www.adafruit.com/products/268). Am devenit apoi „deștept” și am decis să-l „rugezesc” - bine - ceva a scurtat ceva și am primit o pufă din fumul albastru magic. Totul a fost prăjit … Neavând o altă ieșire WiFi CC3000, am făcut lucrurile diferit de data aceasta. L-am construit pentru a fi monitorizat interactiv prin interfața serială și apoi am adăugat o interfață EZ-Link Bluetooth FTDI. (Nu mai trageți laptopul sub casă pentru actualizări de software !!!) De asemenea, am construit o interfață Python care se conectează la unitate prin Bluetooth, o interogă în mod regulat și afișează informații de stare pe Mac-ul meu. (Există, de asemenea, o „interfață umană” care poate fi accesată de orice software de emulare a terminalului.) Ca urmare a rescrierii și eliminării tuturor codurilor WiFi și RTC, proiectul a scăzut ca dimensiune de la peste 29K la abia 10K. De asemenea, a îmbunătățit fiabilitatea în măsura în care câinele de supraveghere hardware nu sa declanșat deloc în câteva săptămâni pe care le rulează și am modificat-o.

17.02.17 Actualizare / notă: În încercarea de a obține formatarea corectă a unora dintre coduri (în special indentarea codului Python), lucrurile au trecut de la urât la inutilizabil. Sunt sigur că problema este pe undeva la sfârșitul meu și voi încerca să-mi dau seama. Până atunci, am adăugat linkuri către fișierele de cod prin DropBox. Ar trebui să fie accesibile oricui. Dacă nu, vă rog să-mi spuneți, pentru a-ți putea aduce altfel!

Pasul 1: Probleme de rezolvat

Sistemul trebuia să facă următoarele lucruri pentru mine: 1 - monitorizați temperatura din spațiul de acces. 2 - porniți lămpile de căldură după cum este necesar pentru a menține temperatura peste îngheț. 4 - dați-mi vizibilitatea temperaturii și a stării sistemului, inclusiv: - funcționează sistemul? - care este temperatura ACUM? - care este cea mai rece temperatură? - câte becuri au funcționat? - câte becuri testează bine? - care este timpul meu total în „minute ușoare” (alias „timpul de ardere”)? 5 - faceți toate cele de mai sus fără ca eu să trebuiască să mă târăsc sub casă !!! Am decis că cel mai simplu mod de a testa funcționarea becului a fost cu un senzor de lumină. Unele alte probleme pe care am vrut să le abordez a fost timpul ciclului pe lumini. Prea lent și ard energie electrică inutilă. Prea repede și risc să le ard de la toate pornirile și opririle cu încălzirea și răcirea aferente.

Pasul 2: Hardware-ul

Hardware-ul
Hardware-ul

2 lămpi de căldură de 250 wați 1 lampă de lucru de 500 de wați (una dintre lămpile mele de căldură a dispărut, deci acesta este un stand-in) Senzor de temperatură / umiditate Arduino UnoDHT22 senzor de lumină GA1A12S202 senzor de lumină PowerSwitch relee 110V Interfață serială și programator EZ-Link Bluefruit Carcasă de înaltă tehnologie (cadă Sandwich Rubbermaid) Presetupă pentru cabluri 1/2 panou de dimensiuni Placă acrilică pentru panou de măsurare și ArduinoSârme jumper asortate. Coleman "priză de atelier" cu 5 ieșiri. a scris un instructable separat despre el, așa că nu voi repeta aici. Coada coleman a fost o descoperire drăguță, deoarece mi-a oferit 4 prize pentru lămpile de căldură PLUS o priză pentru sursa de alimentare Arduino fără niciun separator suplimentar sau benzi de alimentare implicate. Evaluat la un maxim de 15 Amperi, cu întrerupător și întrerupător intern, ar putea rezolva tot ce puteam trage printr-o singură priză.

Pasul 3: Abordarea

În timp ce sistemul este construit în aplicație pentru a sta în așteptare și pentru a face unele lucruri relativ încet, ceea ce nu am vrut să fac este să construiesc un sistem în care controlerul stătea în cicluri de întârziere (), fără să răspundă. De asemenea, am vrut să pot schimba parametrii de configurare cât mai aproape de zbor, cu siguranță nu într-un mod care să necesite rescrierea codului sau efectuarea operațiunilor de căutare și înlocuire în masă pe sursă. a găsit cele mai excelente articole ale lui Bill Earl despre „Multitasking the Arduino” (începe aici: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) și s-a ocupat. Prin crearea claselor de „cronometru” și „încălzitor” am reușit să fac toate funcțiile de sincronizare dorite fără să folosesc întârziere () (cu doar câteva excepții) și să configurez becurile („încălzitoare”) cu o singură linie de cod pentru fiecare unu.

Pasul 4: Cablare

Cablarea acestuia
Cablarea acestuia
Cablarea acestuia
Cablarea acestuia

Diagrama Fritzing nu include Bluefruit EZ-LinkArduino 5V și masă la magistrala de panou DHT22 pin 1 la 5V magistrală DHT22 pin 2 la pinul Arduino 7DHT22 pin 4 la masă bus Rezistor 10K între DHT22 pinii 1 și 2GA1A12S202 VCC pin la 5V busGA1A12S202 GND pin la masă busGA1A12S202 OUT pin la Arduino A0Arduino 3V pin la Arduino AREF pinRelay Ground conduce la Ground busRelay 1 conduce la Arduino A1Relay 2 conduce la Arduino A2Relay 3 conduce la Arduino A3Relay 4 conduce la Arduino A4 Majoritatea acestor conexiuni pot fi rearanjate după cum doriți. Singurul aspect critic este cablul OUT al senzorului de lumină pentru a merge la un pin analogic. Acest pin-out va funcționa cu codul meu așa cum este scris. Dacă utilizați câinele de pază hardware, veți vedea că codul meu pune bătăile inimii pe pinul Arduino 2.

Pasul 5: Codul Arduino, schița principală

CrawlSpace_monitor.ino

Pasul 6: Note despre cod

Următoarele linii de cod creează instanțele încălzitorului și definesc parametrii de funcționare: // Încălzitor (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (minute), luxDelta) Heater heater1 = Heater (A1, 38), 43, 20, 1440, 5); Incalzitor incalzitor2 = Incalzitor (A2, 36, 41, 20, 1440, 5); Incalzitor incalzitor3 = Incalzitor (A3, 34, 39, 20, 1440, 5); Incalzitor incalzitor4 = Incalzitor (A4, 32, 37, 20, 1440, 5); (Și da, am definit toate cele 4 încălzitoare, deși rulez doar 3 în acest moment. Aș mai avea nevoie să obțin un alt releu, dar apoi adăugarea celui de-al 4-lea încălzitor ar fi să fie la fel de simplu ca să-l conectați.) Le scald temperaturile de declanșare, începând de la 38 de grade pentru primul și terminând la 32 pentru inexistentul 4. Unul dintre lucrurile pe care le-am găsit atunci când am început să cobblăm împreună a fost că trebuia să dau o gamă de temperatură, precum și să definesc un „timp de ardere” minim, sau mergeam pe bicicletă aprinse și stinse ca o nebunie. Aici le dau fiecăruia dintre ei o răspândire de 5 grade, precum și un timp de ardere minim de 20 de minute. Am setat intervalul de testare la 24 de ore și am setat 5 lux, deoarece citirea minimă a luminii de care aveam nevoie pentru a determina un bec funcționează în continuare. Aproape tot ce trebuie configurat este chiar aici în aceste 4 linii de cod.

Pasul 7: Codul Arduino, clase

Am creat 3 clase pentru acest proiect. Erau „cronometru”, „încălzitor” și „acumulator”. Cu puțin mai multă gândire, ar trebui să pot plia acumulatorul în temporizator, dar încă nu am făcut-o. Iată-le pe deplin: încălzitor.h

cronometru.h

acumulator.h

Pasul 8: Monitorizarea sistemului

Monitorizarea sistemului
Monitorizarea sistemului

Am creat o singură interfață pentru două monitoare separate. Este o sesiune interactivă pe consola serială. În cazul meu, folosesc Bluefruit EZ-Link, astfel încât să pot accesa sistemul fără să mă târăsc sub casă sau să încerc să șterg un cablu USB între grinzile podelei! Un avantaj suplimentar al EZ-Link este că pot încărca un nou cod de program pe Arduino și prin Bluetooth. Interfața „umană” poate fi accesată (Bluetooth sau cablu fizic) cu orice software de emulare a terminalului, inclusiv seria Arduino IDE monitor. Când vă conectați inițial, nu există niciun răspuns, dar tasta apasă pe „u” (pentru „actualizare”) și „t” (pentru „test”) vă va oferi ieșirea afișată în captura de ecran. „m” („monitor”) și „s” („sys check”) vă oferă aceleași date, dar într-un format mult mai puțin lizibil. Acestea sunt destinate a fi „răzuite” de un alt program pentru afișare automată. Am pus împreună un script Python care face exact asta. Orice altă cheie generează mesajul de eroare afișat. Veți vedea o valoare pentru „timpul de ardere” - gândiți-vă la asta ca „minute cu bec” - 1 bec timp de 10 minute = 10 minute, 3 becuri timp de 10 minute = 30 minute.

Pasul 9: Scriptul Python

Scriptul Python
Scriptul Python

crawlspace_gui.py

Pasul 10: Încă de făcut …

Poate că nu este frumos sau perfect, dar este eficient și se dovedește a fi de încredere. ȘI, încă nu am avut probleme cu conductele înghețate în această iarnă !!! Am o listă de lucruri de făcut. Desigur, acum că funcționează, s-ar putea să nu reușesc sau nu să realizez majoritatea acestor elemente: Rulați Bluetooth pe unul dintre Raspberry Pi, astfel încât să pot crea un monitor dedicat. Aflați mai mult Python - apoi curățați Python interfață. Această separare a elementelor nu este intenționată și nu înțeleg de ce există. Adăugați o interfață la ceva de genul serviciului IO Adafruit, astfel încât să îl pot monitoriza de oriunde. Adăugați un mesaj de alertă text Mutați-vă pe un controler mai mic Mini sau un Trinket Pro?), Relee mai puțin costisitoare și o ambalare mai bună. Scoateți-l de pe o placă de calcul și pe o placă "Perma Proto". Parametrii de configurare în EEPROM. O interfață mai granulară care va indica -care- becurile sunt bune și eventual chiar arde timp pentru becurile individuale. Pe măsură ce le voi face, mă voi întoarce și voi actualiza acest instructabil.

Pasul 11: actualizați 3/16, versiunea „permanentă”

Actualizare 3/16,
Actualizare 3/16,
Actualizare 3/16,
Actualizare 3/16,
Actualizare 3/16,
Actualizare 3/16,

Obținând o pauză bună pe vreme rece, am recuperat unitatea și am mutat-o pe un controler mai mic (intenționasem să folosesc un Trinket Pro, dar aveam un Adafruit Metro Mini care nu era revendicat de niciun alt proiect), l-am lipit pe o placă Perma-Proto și pune totul într-un caz mai bun. Pe baza cât de fiabil a fost, nu am pus din nou supravegherea hardware. Încă folosesc doar 3 lămpi / relee unde sistemul va gestiona 4. Modulul Bluetooth este pe un antet lipit, deci poate fi îndepărtat dacă am nevoie de el în altă parte. Nu au fost necesare modificări de cod necesare pentru a trece la noul controler - o simplă recompilare și încărcare ma făcut să funcționez în câteva minute. (Metro Mini are un pinout identic cu Arduino Uno și este, de asemenea, un procesor ATMega328.)

Pasul 12: Actualizare 01.01.2018 - Bine ați venit la IoT

Sistemul a funcționat impecabil pentru noi. După două ierni destul de severe, NU conducte înghețate. De fapt, sistemul a reușit să întrețină conductele fără să ardă vreodată mai mult de 2 becuri. A avea al treilea bec online a fost o asigurare plăcută, dar nu am avut vreodată nevoie de el până acum.

Intrând în anul 3 pentru sistem, modulul Bluetooth a eșuat. De asemenea, am construit o casă nouă, astfel încât sistemul de monitorizare este mult în afara razei de acțiune Bluetooth. (Vechea casă rămâne ridicată pentru o vreme, dar nu pentru totdeauna.) În timp, am făcut multe lucruri cu procesorul ESP8266 WiFi; atât în formatul Adafruit Feather, cât și în formatul open-source „NodeMCU”. NodeMCU poate fi găsit în general pe Amazon la aproximativ 5 USD - mult mai puțin dacă cumpărați în vrac și / sau de la cineva precum AliExpress.

Această nouă versiune menține interfața serială, deci ar putea fi utilizată în continuare cu un modul Bluetooth sau o conexiune serială USB directă și cu scriptul anterior Python, cu toate acestea, noua versiune are o interfață de pagină web. După cum este scris, include următoarea caracteristică:

Un manager de rețea WiFi pentru a elimina acreditările WiFi de codare dură.

Posibilitatea de a actualiza firmware-ul în aer folosind Arduino IDE (atâta timp cât vă aflați în aceeași rețea WiFi - rețineți că, după efectuarea unei încărcări USB pe dispozitiv, este necesară o resetare înainte ca actualizările OTA să funcționeze). Vă rugăm să schimbați parola OTA pe linia 6 pentru a fi unică pentru dvs. !!

O pagină web care afișează aceleași date pe care le face scriptul python, cu o reîmprospătare automată în fiecare minut. Nu am pus niciun fel de securitate pe pagină, deoarece este doar pentru afișare.

Noul cod îl puteți găsi aici. Rețineți că numele pinilor se schimbă atunci când treceți la NodeMCU.

Recomandat: