Съдържание:

Монитор за обхождане на пространството (известен още: Няма повече замразени тръби !!): 12 стъпки (със снимки)
Монитор за обхождане на пространството (известен още: Няма повече замразени тръби !!): 12 стъпки (със снимки)

Видео: Монитор за обхождане на пространството (известен още: Няма повече замразени тръби !!): 12 стъпки (със снимки)

Видео: Монитор за обхождане на пространството (известен още: Няма повече замразени тръби !!): 12 стъпки (със снимки)
Видео: Tales of a Wayside Inn Audiobook by Henry Wadsworth Longfellow 2024, Юли
Anonim
Crawl Space Monitor (известен още: Няма повече замразени тръби !!)
Crawl Space Monitor (известен още: Няма повече замразени тръби !!)

Водата към къщата ми идва от моя кладенец през неотопляемо пространство за пълзене. Цялата кухня и баня ВиК също минава през това пространство. (Вътрешните водопроводни инсталации бяха замислящи се в средата на 70-те години на тази къща!) Използвах топлинни лампи на термостатични щепсели „запасен резервоар“, за да поддържам температура над нулата. Имаше няколко значителни проблема с тази подредба: 1 - Няма видимост. Първата индикация за изгорели крушки са замръзналите тръби! 2 - Понякога щепселите не се изключват. Това доведе до неприятни изненади, идва и сметката за електроенергия.3 - Няма подробности. Запазих 3 крушки "онлайн" (общо 750 вата) и това беше решение на всичко или нищо. (2 крушки не винаги биха се справили.) След като бях запознат с Arduino и видях някои от нещата, които другите хора правеха с него, реших, че ще го завих. Ще призная направо от улея, че съм безсрамно присвоил и оправих примерен код от проекти на други хора, за да направя тази работа, макар че в крайна сметка съм пренаписал почти всичко. Първоначално изградих тази „WiFi Weather Station“, която намерих на Adafruit.com и го модифицира. Вместо да актуализирам уеб сайт, използвах Amazon Web Services, за да ми изпраща SMS актуализации за състоянието. Добавих и управлението на някои 110V релета (https://www.adafruit.com/products/268). След това станах "умен" и реших да го "издърпам" - добре - нещо скъси нещо и получих дъх на вълшебния син дим. Всичко пържено … Нямайки друг пробив на CC3000 WiFi, този път направих нещата по различен начин. Изградих го за интерактивно наблюдение чрез сериен интерфейс и след това добавих EZ-Link Bluetooth FTDI интерфейс. (Вече няма да влачите лаптопа под къщата за актуализации на софтуера !!!) Също така изградих интерфейс на Python, който се свързва с устройството чрез Bluetooth, редовно го запитва и показва информация за състоянието на моя Mac. (Има и „човешки интерфейс“, който може да бъде достъпен от всеки софтуер за емулация на терминали.) В резултат на повторното записване и премахване на целия WiFi и RTC код, проектът е намалял от над 29K до едва 10K. Той също така е подобрил надеждността до степен, в която хардуерният наблюдател изобщо не се е задействал през няколко седмици, в които работи и аз оправям.

2/17/16 Актуализация/бележка: В опит да се получи правилно форматиране на част от кода (особено отстъпа на кода на Python), нещата преминаха от грозни в неизползваеми. Сигурен съм, че проблемът е някъде при мен и ще се опитам да го разбера. Дотогава добавих връзки към кодовите файлове чрез DropBox. Те трябва да бъдат достъпни за всеки. Ако не, моля, уведомете ме, за да мога да ви ги доставя по друг начин!

Стъпка 1: Проблеми за решаване

Системата трябваше да направи следните неща за мен: 1 - наблюдение на температурата в пространството за пълзене. 2 - включване на топлинните лампи, колкото е необходимо, за да се поддържа температурата над нулата. 3 - когато не работи, периодично тествайте крушките и ми давайте видимост на тяхното състояние.4 - дайте ми видимост на температурата и състоянието на системата, включително: - системата работи ли? - каква е температурата СЕГА? - каква е най -студената температура? - колко крушки излязоха? - колко крушки са тествани добре? - какво е общото ми време в "светлинни минути" (известен още като "време за изгаряне")? 5 - направете всичко по -горе, без да се налага да пълзя под къщата !!! Реших, че най -лесният начин за тестване за работа на крушката е с сензор за светлина. Някои други проблеми, които исках да разгледам, беше времето на цикъла на светлините. Твърде бавно и изгарям ненужно електричество. Твърде бързо и рискувам да ги изгоря от всички включвания и изключвания със съответното загряване и охлаждане.

Стъпка 2: Хардуерът

Хардуерът
Хардуерът

2 250 ватови нагревателни лампи 1 работна лампа с мощност 500 вата (една от моите лампи за нагряване изчезна, така че това е резервно устройство) Arduino UnoDHT22 сензор за температура/влажностGA1A12S202 сензор за захранване 110V релета Bluefruit EZ-Link сериен интерфейс и програмист високотехнологичен калъф (вана от каучук с размер на сандвич)) Кабелен уплътнител 1/2 размер макет Акрилна плоча за макет и Arduino Асортирани джъмперни проводници. COLEMAN 5-изходна "лента за работилница" Използвах и Adafruit Trinket като хардуерен наблюдател, но се оказа ненужен (Jinx, разбира се!) И аз написах отделна инструкция за това, така че няма да го повтарям тук. Косичката Coleman беше приятна находка, тъй като ми даде 4 изхода за моите топлинни лампи PLUS изход за захранването на Arduino без никакви допълнителни сплитери или разклонители. Оценен на пълни 15 ампера с превключвател и вътрешен прекъсвач, той може да се справи с всичко, което мога да издърпам през един контакт.

Стъпка 3: Подходът

Докато системата е приложение, създадено, за да седи наоколо и да прави сравнително бавно някои неща, това, което не исках да направя, беше да изградя система, в която контролерът седеше в цикли на закъснение (), които не реагираха. Исках също така да мога да променя конфигурационните параметри възможно най-близо до „в движение“-със сигурност не по начин, който изискваше пренаписване на код или извършване на масови операции за търсене и замяна на източника. намери най-отличните статии на Бил Ърл за „Многозадачността на Arduino“(започнете от тук: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) и се заех. Чрез създаването на класове "таймер" и "нагревател" успях да изпълня всички функции за синхронизиране, които исках, без да използвам забавяне () (само с няколко изключения) и да конфигурирам крушките ("нагреватели") с един ред код за всеки един.

Стъпка 4: Окабеляване

Окабеляване
Окабеляване
Окабеляване
Окабеляване

Диаграмата на Fritzing не включва Bluefruit EZ-LinkArduino 5V & Ground към шината за платка DHT22 щифт 1 до 5V шина DHT22 щифт 2 към Arduino щифт 7DHT22 щифт 4 към заземяваща шина 10K резистор между DHT22 щифтове 1 и 2GA1A12S202 VCC щифт към 5V шинаGA1A12S202 busGA1A12S202 OUT pin към Arduino A0Arduino 3V pin към Arduino AREF pinReley Ground води към заземяваща шина Reley 1 захранващ кабел към Arduino A1Relay 2 захранващ кабел към Arduino A2Relay 3 захранващ кабел към Arduino A3Relay 4 захранващ кабел към Arduino A4 Повечето от тези връзки може да искате. Единственият, който е критичен, е изходният извод на сензора за светлина, който трябва да премине към аналогов щифт. Този пин-аут ще работи с моя код, както е написан. Ако използвате хардуерния наблюдател, ще видите, че кодът ми пуска сърцето на Arduino pin 2.

Стъпка 5: Кодът на Arduino, основна скица

CrawlSpace_monitor.ino

Стъпка 6: Бележки по Кодекса

Следните редове код създават екземплярите на нагревателя и определят работните параметри: // Нагревател (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (минути), luxDelta) Нагревател нагревател 1 = Нагревател (A1, 38, 43, 20, 1440, 5); нагревател на нагревател 2 = нагревател (A2, 36, 41, 20, 1440, 5); нагревател на нагревател 3 = нагревател (A3, 34, 39, 20, 1440, 5); нагревател на нагревател 4 = нагревател (A4, 32, 37, 20, 1440, 5); (И да, аз дефинирах всичките 4 нагревателя, въпреки че в момента работя само с 3. Все още ще трябва да взема друго реле, но след това добавянето на 4 -ти нагревател би бъди толкова прост, колкото да го включиш.) Зашеметявам температурите им на задействане, започвайки от 38 градуса за първия и завършвайки с 32 за несъществуващия 4-ти. Едно от нещата, които открих, когато за пръв път започнах да слагам това заедно, беше, че трябваше да дам диапазон на температурата, както и да определя минимално "време на изгаряне", или бях включвал и изключвал светлини като луд. Тук давам на всеки от тях 5 градуса разпределение, както и минимално време за изгаряне от 20 минути. Зададох тестовия интервал на 24 часа и зададох 5 лукса като минимално отчитане на светлината, от което се нуждаех, за да определя, че крушката все още работи. Почти всичко, което се нуждае от конфигуриране, е точно тук в тези 4 реда код.

Стъпка 7: Кодът на Arduino, класове

Създадох 3 класа за този проект. Те бяха „таймер“, „нагревател“и „акумулатор“. С малко повече мисъл бих могъл да сгъна акумулатора в таймер, но все още не съм го направил. Ето ги изцяло: heater.h

таймер.ч

акумулатор.ч

Стъпка 8: Наблюдение на системата

Мониторинг на системата
Мониторинг на системата

Създадох един интерфейс към два отделни монитора. Това е интерактивна сесия през серийната конзола. В моя случай използвам Bluefruit EZ-Link, за да мога да получа достъп до системата, без да пропълзя под къщата или да се опитвам да прокарам USB кабел между подовите греди! Допълнително предимство на EZ-Link е, че мога да качвам нов програмен код в Arduino и през Bluetooth. „Човешкият“интерфейс може да бъде достъпен (Bluetooth или физически кабел) с всеки софтуер за емулация на терминали, включително серийния Arduino IDE монитор. Когато първоначално се свързвате, няма отговор, но клавишът натиска „u“(за „актуализация“) и „t“(за „тест“), ще получите изхода, показан на снимката на екрана. „m“(„монитор“) и „s“(„проверка на системата“) получават същите данни, но в много по -малко четим формат. Те са предназначени да бъдат "изстъргани" от друга програма за автоматично показване. Събрах скрипт на Python, който прави точно това. Всеки друг ключ събира съобщението за грешка. Ще видите стойност за "време на изгаряне" - помислете за това като "минути на крушка" - 1 крушка за 10 минути = 10 минути, 3 крушки за 10 минути = 30 минути.

Стъпка 9: Скриптът на Python

Скриптът на Python
Скриптът на Python

crawlspace_gui.py

Стъпка 10: Все още предстои …

Може да не е красив или перфектен, но е ефективен и се доказва като надежден. И още тази зима не съм имал проблеми със замразени тръби !!! Имам списък с неща за вършене. Разбира се, сега, когато работи, мога или не мога да успея да постигна повечето от тези елементи: Включете Bluetooth на един от моите Raspberry Pi, за да мога да създам специален монитор. Научете още Python - след това почистете Python интерфейс. Това разделяне на елементите не е нарочно и не разбирам защо е там. Добавете интерфейс към нещо като IO услугата на Adafruit, за да мога да го наблюдавам отвсякъде. Добавете предупреждение за текстови съобщения. Преместете на по -малък контролер (вероятно Metro Mini или Trinket Pro?), По -евтини релета и по -добра опаковка. Махнете го от макет и върху платка "Perma Proto". Конфигурационни параметри в EEPROM. По -детайлен интерфейс, който ще покаже -кои- крушките са добри, и евентуално дори време за изгаряне на отделните крушки. Докато ги свърша, ще се върна и ще актуализирам тази инструкция.

Стъпка 11: Актуализация 3/16, „постоянна“компилация

Актуализация 3/16,
Актуализация 3/16,
Актуализация 3/16,
Актуализация 3/16,
Актуализация 3/16,
Актуализация 3/16,

Получавайки добра почивка в студеното време, изтеглих устройството и го преместих на по -малък контролер (възнамерявах да използвам Trinket Pro, но имах Adafruit Metro Mini, който седеше наоколо, непотърсен от никой друг проект), запоех го на платка Perma-Proto и поставете всичко в по-добър случай. Въз основа на това колко надежден е той, не върнах хардуерния наблюдател обратно към него. Все още използвам само 3 лампи/релета, където системата ще се справи с 4. Bluetooth модулът е на запоена заглавка, така че може да бъде премахнат, ако ми потрябва някъде другаде. Не бяха необходими промени в кода, за да се премине към новия контролер - просто прекомпилиране и зареждане ме накара да работя за няколко минути. (Metro Mini има идентичен извод като Arduino Uno и също е процесор ATMega328.)

Стъпка 12: Актуализиране на 12.12.2018 - Добре дошли в IoT

Системата работи безупречно за нас. След две доста тежки зими, НЯМА замръзнали тръби. Всъщност системата е в състояние да поддържа тръбите, без да изгаря повече от 2 крушки. Наличието на 3-та крушка онлайн беше добра застраховка, но досега никога не сме имали нужда от нея.

Навлизайки в трета година на системата, Bluetooth модулът се провали. Построихме и нова къща, така че системата за наблюдение е извън обхвата на Bluetooth. (Старата къща остава будна за известно време, но не завинаги.) През това време правех много с ESP8266 WiFi поддържащ процесор; както във формат Adafruit Feather, така и във формат "NodeMCU" с отворен код. NodeMCU обикновено може да се намери в Amazon за около $ 5 - много по -малко, ако купувате на едро и/или от някой като AliExpress.

Тази нова версия поддържа серийния интерфейс, така че все още може да се използва с Bluetooth модул или директна USB серийна връзка и предишния скрипт на python, но новата версия има интерфейс за уеб страница. Както е написано, той включва следната функция:

Мениджър на WiFi мрежа за премахване на твърдо кодирани идентификационни данни за WiFi.

Възможност за актуализиране на фърмуера по безжичен път с помощта на Arduino IDE (стига да сте в същата WiFi мрежа-имайте предвид, че след като качите USB към устройството, е необходимо нулиране, преди актуализациите на OTA да заработят). МОЛЯ, променете OTA паролата на ред 6, за да бъде уникална за вас !!

Уеб страница, която показва същите данни, които прави скриптът на python, с автоматично опресняване всяка минута. Не поставих никакъв вид защита на страницата, защото тя е само за показване.

Можете да намерите новия код тук. Имайте предвид, че имената на щифтовете се променят при преминаване към NodeMCU.

Препоръчано: