Tartalomjegyzék:

Crawl Space Monitor (más néven: No More Frozen Pipes !!): 12 lépés (képekkel)
Crawl Space Monitor (más néven: No More Frozen Pipes !!): 12 lépés (képekkel)

Videó: Crawl Space Monitor (más néven: No More Frozen Pipes !!): 12 lépés (képekkel)

Videó: Crawl Space Monitor (más néven: No More Frozen Pipes !!): 12 lépés (képekkel)
Videó: A 1000 Year Old Abandoned Italian Castle - Uncovering It's Mysteries! 2024, November
Anonim
Crawl Space Monitor (más néven: Nincs több fagyasztott cső !!)
Crawl Space Monitor (más néven: Nincs több fagyasztott cső !!)

A víz a házamba a kútból jön egy fűtetlen kúszótéren keresztül. A konyha és a fürdőszoba összes vízvezetéke ezen a területen is áthalad. (A beltéri vízvezeték a 70-es évek közepén egy utólagos gondolat volt ezen a házon!) Hőlámpákat használtam "stock tank" termosztatikus dugaszokon a fagypont feletti hőmérséklet fenntartásához. Ezzel az elrendezéssel pár jelentős probléma merült fel: 1 - Nincs láthatóság. A kiégett izzók első jele a befagyott csövek! 2 - Néha a dugók nem kapcsolnak ki. Ez csúnya meglepetéseket okozott a villanyszámlán.3 - Nincs részletesség. 3 izzót "online" tartottam (összesen 750 watt), és minden vagy semmi megoldás volt. (2 izzó nem mindig birkózik meg vele.) Miután bemutatkoztam az Arduino -nak, és láttam néhány dolgot, amit mások csináltak vele, úgy döntöttem, hogy forgatok egyet. Rögtön bevallom a csúszdából, hogy szégyentelenül elcsaltam és módosítottam a mintakódot mások projektjeiből, hogy ezt a munkát elvégezzem, bár végül mindent újraírtam. Kezdetben én építettem ezt a "WiFi Weather Station" -t Adafruit.com és módosította. A webhely frissítése helyett az Amazon Web Services segítségével küldtem SMS -frissítéseket. Hozzáadtam néhány 110 V -os relé vezérlését is (https://www.adafruit.com/products/268). Ekkor "okos" lettem, és úgy döntöttem, hogy "megmerevítem" - hát - valami rövidre zárott valamit, és kaptam egy fújást a varázslatos kék füstből. Minden sült… Mivel nem volt újabb CC3000 WiFi -kitörésem, ezúttal másképp csináltam a dolgokat. Úgy építettem, hogy soros interfészen keresztül interaktívan figyelhető legyen, majd hozzáadtam egy EZ-Link Bluetooth FTDI interfészt. (Nem kell tovább húzni a laptopot a ház alatt a szoftverfrissítésekért !!!) Építettem egy Python felületet is, amely Bluetooth -on keresztül csatlakozik az egységhez, rendszeresen lekérdezi, és megjeleníti az állapotinformációkat a Mac gépemen. (Van egy "emberi interfész" is, amelyet bármilyen terminál-emulációs szoftver elérhet.) Az összes WiFi és RTC kód újraírása és eltávolítása következtében a projekt mérete 29K-ról alig 10K-ra zsugorodott. A megbízhatóságot is olyan mértékben javította, hogy a hardveres felügyelet egyáltalán nem váltott ki néhány hét alatt, amíg fut, és én módosítok.

16.02.17 Frissítés/megjegyzés: A kód egyes formáinak megfelelő formázására (különösen a Python -kód behúzására) törekedve a dolgok csúnyáról használhatatlanra változtak. Biztos vagyok benne, hogy a probléma valahol a végén van, és megpróbálok rájönni. Addig a DropBoxon keresztül adtam hozzá linkeket a kódfájlokhoz. Bárki számára hozzáférhetőnek kell lenniük. Ha nem, kérem, tudassa velem, hogy más módon eljuttassam Önhöz!

1. lépés: Megoldandó problémák

A rendszernek a következő dolgokat kellett elvégeznie számomra: 1 - figyelemmel kíséri a hőmérsékletet a kúszótérben. 2 - kapcsolja be a hőlámpákat, ha szükséges, hogy a hőmérsékletet fagypont felett tartsa. 3 - ha nem működik, rendszeresen ellenőrizze az izzókat, és tegye láthatóvá állapotukról. - MI a hőmérséklet most? - Mi a leghidegebb hőmérséklet? - hány izzó futott? - hány izzó teszt jó? - mennyi az összes időm "fénypercekben" (más néven "égési idő")? 5 - végezze el a fentieket anélkül, hogy be kellene másznom a ház alá !!! Úgy döntöttem, hogy a legegyszerűbb módja az izzó működésének tesztelése egy fényérzékelő. Néhány más probléma, amivel foglalkozni akartam, a lámpák ciklusideje volt. Túl lassú, és felesleges áramot égetek. Túl gyors, és fennáll annak a veszélye, hogy kigyulladok minden be- és kikapcsolásból a kapcsolódó felmelegedéssel és lehűtéssel.

2. lépés: A hardver

A hardver
A hardver

2 250 wattos hőlámpa 1 500 wattos munkahelyi lámpa (az egyik hőlámpám eltűnt, ezért ez egy stand-in) Arduino UnoDHT22 hőmérséklet/páratartalom érzékelőGA1A12S202 fényérzékelő PowerSwitch 110V relék Bluefruit EZ-Link soros interfész és programozó High-tech tok (szendvics méretű Rubbermaid kád)) Kábelmirigy 1/2 méretű kenyértáblaAkrill lemez kenyérsütőlaphoz és ArduinohozVálogatott jumper vezetékek. Coleman 5-aljzatos "műhelycsík" Én is használtam egy Adafruit Trinket hardverőrzőként, de szükségtelennek bizonyult (persze jinx!) És én külön utasításokat írt róla, így ezt itt nem ismétlem meg. A Coleman malacka szép lelet volt, mivel 4 kimenetet adott a hőlámpáimhoz, PLUSZ egy kivezetést az Arduino tápegységhez, minden további osztó vagy elosztó nélkül. Teljes áramerősséggel 15 amperrel, kapcsolóval és belső megszakítóval, képes kezelni mindent, amit egyetlen konnektoron keresztül tudtam húzni.

3. lépés: A megközelítés

Míg a rendszer arra épült, hogy várakozni tudjon, és bizonyos dolgokat viszonylag lassan végezzen, én nem akartam olyan rendszert építeni, amelyben a vezérlő késleltetett () ciklusokban nem reagált. Azt is szerettem volna, hogy a konfigurációs paramétereket a lehető legközelebb lehessen változtatni menet közben-természetesen nem olyan módon, amely megkövetelné a kód újraírását, vagy tömeges keresési és cserélési műveleteket a forráson. megtalálta Bill Earl legkiválóbb cikkeit a "Multitasking the Arduino" témában (kezdje itt: https://learn.adafruit.com/multi-tasking-the-arduino-part-1), és elfoglalt. Az "időzítő" és a "fűtőberendezés" osztályok létrehozásával késedelem nélkül () (csak néhány kivétellel) elvégezhettem az összes kívánt időzítési funkciót, és beállíthattam az izzókat ("fűtőelemeket") egy -egy kódsorral egy.

4. lépés: Csatlakoztassa

Bekötés
Bekötés
Bekötés
Bekötés

A Fritzing diagram nem tartalmazza a Bluefruit EZ-LinkArduino 5V & Ground-t a kenyértáblás buszhoz DHT22 pin 1-5V busz DHT22 pin 2 to Arduino pin 7DHT22 pin 4 to Ground bus10K ellenállás a DHT22 1. és 2GA1A12S202 VCC pin és 5V busz közé GA1A12S202 GN busGA1A12S202 OUT pin to Arduino A0Arduino 3V pin to Arduino AREF pin. Az egyetlen kritikus, hogy a fényérzékelő OUT -vezetékének analóg érintkezőre kell mennie. Ez a pin-out a megírt kódommal fog működni. Ha a hardver felügyeletét használja, látni fogja, hogy a kódom a szívverést adja ki az Arduino pin 2-n.

5. lépés: Az Arduino kód, fő vázlat

CrawlSpace_monitor.ino

6. lépés: Megjegyzések a kódexhez

A következő kódsorok hozzák létre a fűtőberendezés példányait és határozzák meg a működési paramétereket: // Heater (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (perc), luxDelta) Fűtőberendezés1 = Heater (A1, 38, 43, 20, 1440, 5); Fűtőberendezés2 = Fűtőberendezés (A2, 36, 41, 20, 1440, 5); Fűtésmelegítő3 = Fűtés (A4, 32, 37, 20, 1440, 5); (És igen, mind a 4 fűtőt definiáltam, annak ellenére, hogy jelenleg csak 3 -at használok. Még mindig szükségem lesz egy másik relére, de a 4. fűtőelem hozzáadása olyan egyszerű legyen, mint bekapcsolni.) Megingatom az indítóhőmérsékletüket, az elsőnél 38 foknál kezdve, a nem létező 4-nél pedig 32-nél. Az egyik dolog, amit akkor találtam, amikor először kezdtem el együtt kavarni, az volt, hogy meg kell adnom a hőmérséklet tartományát, valamint meg kell határoznom a minimális "égési időt", vagy őrülten kerékpároztam. Itt mindegyiküknek 5 fokos szórást, valamint 20 perces minimális égési időt adok. A tesztintervallumot 24 órára állítottam be, és 5 luxot állítottam be minimális fényjelzésként, amelyre szükségem volt annak megállapításához, hogy az izzó továbbra is működik. Szinte minden, ami konfigurálást igényel, itt van ebben a 4 kódsorban.

7. lépés: Az Arduino kód, osztályok

Három osztályt hoztam létre a projekthez. Ezek "időzítő", "fűtő" és "akkumulátor" voltak. Kicsit jobban átgondolva képes leszek az akkumulátort időzítővé hajtani, de még nem sikerült. Itt vannak teljes egészében: fűtés.h

időzítő.h

akkumulátor.h

8. lépés: A rendszer figyelése

A rendszer figyelése
A rendszer figyelése

Létrehoztam egy interfészt két különálló monitorhoz. Ez egy interaktív munkamenet a soros konzolon keresztül. Az én esetemben a Bluefruit EZ-Link-et használom, hogy anélkül férhessek hozzá a rendszerhez, hogy bemásznék a ház alá, vagy megpróbálnék USB-kábelt kígyózni a padlógerendák között! Az EZ-Link további előnye, hogy új programkódot is feltölthetek az Arduino-ba a Bluetooth-on keresztül. Az "emberi" interfész bármely terminál-emulációs szoftverrel, beleértve az Arduino IDE sorozatát, elérhető (Bluetooth vagy fizikai kábel) monitor. Amikor először csatlakozik, nincs válasz, de az "u" ("frissítés") és a "t" ("teszt") megnyomásával megkapja a képernyőképen látható kimenetet. Az "m" ("monitor") és az "s" ("sys check") ugyanazokat az adatokat kapja, de sokkal kevésbé olvasható formátumban. Ezeket egy másik program "lekaparni" kívánja az automatikus megjelenítés érdekében. Összeállítottam egy Python -szkriptet, ami ezt teszi. Bármely más kulcs a hibaüzenetet jeleníti meg. Látni fogja az "égési idő" értékét - gondoljon erre, mint "izzópercek" - 1 izzó 10 percig = 10 perc, 3 izzó 10 percig = 30 perc.

9. lépés: A Python -szkript

A Python -szkript
A Python -szkript

crawlspace_gui.py

10. lépés: Még tennivaló…

Lehet, hogy nem szép vagy tökéletes, de hatékony és megbízhatónak bizonyul. ÉS, ezen a télen még nem volt fagyott cső problémám !!! Van egy listám a tennivalókról. Természetesen most, hogy működik, lehet, hogy soha nem fogom elérni a legtöbb ilyen elemet: Kapcsolja be a Bluetooth -ot az egyik Raspberry Pi -n, hogy létrehozzak egy dedikált monitort. További információ a Pythonról - majd tisztítsa meg a Python -t felület. Ez az elemek szétválasztása nem szándékos, és nem értem, miért van ez. Adjon hozzá kezelőfelületet az Adafruit IO szolgáltatásához, így bárhonnan figyelemmel kísérheti. Szöveges üzenet hozzáadása. Áthelyezés egy kisebb vezérlőhöz (esetleg metróhoz) Mini vagy Trinket Pro?), Olcsóbb relék és jobb csomagolás. Vegye le a kenyérsütő tábláról és a "Perma Proto" táblára. Konfigurációs paraméterek az EEPROM -ban. Részletesebb felület, amely jelzi, hogy melyik izzó jó, és esetleg még az egyes izzók égési ideje is. Amint elkészülök, visszatérek és frissítem ezt az utasítást.

11. lépés: Frissítse a 3/16, "állandó" buildet

Frissítés 3/16,
Frissítés 3/16,
Frissítés 3/16,
Frissítés 3/16,
Frissítés 3/16,
Frissítés 3/16,

A hideg időben jó szünetet szereztem, és elővettem az egységet, és áthelyeztem egy kisebb vezérlőbe (Trinket Pro -t akartam használni, de az Adafruit Metro Mini -t más projekt nem igényelte), felforrasztottam egy Perma-Proto táblát, és tegye mindezt jobb tokba. A megbízhatóság alapján nem tettem vissza rá a hardveres felügyeletet. Továbbra is csak 3 lámpát/relét használok, ahol a rendszer kezeli a 4. A Bluetooth modul forrasztott fejrészen van, így eltávolítható, ha máshol szükségem van rá. Az új vezérlőre való áttéréshez nem volt szükség kódmódosításokra - egy egyszerű újrafordítás és betöltés néhány perc alatt elindított. (A Metro Mini azonos pinout -al rendelkezik, mint az Arduino Uno, és egyben ATMega328 processzor is.)

12. lépés: Frissítés 2018.1.1. - Üdvözöljük az IoT -ban

Nálunk a rendszer hibátlanul működött. Két meglehetősen súlyos tél után NINCS fagyott cső. Valójában a rendszer képes volt karbantartani a csöveket anélkül, hogy 2 izzónál többet égetett volna. A harmadik izzó online biztosítása jó biztosítás volt, de a mai napig nem volt rá szükségünk.

A rendszer 3. évében a Bluetooth modul meghibásodott. Új házat is építettünk, így a felügyeleti rendszer jóval kívül esik a Bluetooth hatótávolságán. (A régi ház egy ideig fent marad, de nem örökké.) A köztes időben sokat dolgoztam az ESP8266 WiFi -kompatibilis processzorral; mind Adafruit Feather, mind nyílt forráskódú "NodeMCU" formátumban. A NodeMCU általában megtalálható az Amazonon körülbelül 5 dollárért - sokkal kevesebb, ha tömegesen vásárol és/vagy olyan személytől, mint az AliExpress.

Ez az új verzió fenntartja a soros interfészt, így továbbra is használható Bluetooth-modullal vagy közvetlen USB-soros kapcsolattal és a korábbi python-szkripttel, azonban az új verzió weboldal-interfésszel rendelkezik. Mint írták, a következő funkciót tartalmazza:

WiFi hálózatkezelő a kemény kódolású WiFi hitelesítő adatok kiküszöbölésére.

A firmware vezeték nélküli frissítésének képessége az Arduino IDE használatával (mindaddig, amíg ugyanazon a WiFi hálózaton van-vegye figyelembe, hogy az USB-feltöltés elvégzése után az eszközre vissza kell állítani az OTA frissítések működését). KÉRJÜK, változtassa meg az OTA jelszót a 6. sorban, hogy egyedi legyen !!

Egy weboldal, amely ugyanazokat az adatokat jeleníti meg, mint a python -szkript, percenként automatikus frissítéssel. Nem tettem semmiféle biztonságot az oldalra, mert csak megjeleníthető.

Az új kódot itt találja. Ne feledje, hogy a tűnevek megváltoznak, amikor a NodeMCU -ra költözik.

Ajánlott: