Оглавление:
- Шаг 1. Проблемы, которые необходимо решить
- Шаг 2: оборудование
- Шаг 3: подход
- Шаг 4: Подключение
- Шаг 5: Код Arduino, основной набросок
- Шаг 6: Примечания к Кодексу
- Шаг 7: Код Arduino, классы
- Шаг 8: Мониторинг системы
- Шаг 9: сценарий Python
- Шаг 10. Еще предстоит сделать…
- Шаг 11. Обновление 3/16, «постоянная» сборка
- Шаг 12. Обновление 01.12.2018 - Добро пожаловать в Интернет вещей
Видео: Crawl Space Monitor (также известный как: No More Frozen Pipes !!): 12 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Вода в мой дом поступает из колодца через неотапливаемое пространство. Вся сантехника для кухни и ванной также проходит через это пространство. (В середине 70-х годов в этом доме о внутренней водопроводной системе не задумывались!) Я использовал тепловые лампы на термостатических пробках «резервуара», чтобы поддерживать температуру выше точки замерзания. При такой компоновке было несколько серьезных проблем: 1 - Отсутствие видимости. Первый признак перегоревших ламп - замерзшие трубы! 2 - Иногда свечи не отключались. Это преподнесло неприятные сюрпризы - счет за электричество. 3 - Нет детализации. Я оставил 3 лампы в режиме «онлайн» (всего 750 Вт), и это было решение «все или ничего». (Две лампочки не всегда справлялись бы с этим.) После того, как я познакомился с Arduino и увидел некоторые вещи, которые с ней делали другие люди, я решил, что стоит попробовать. Я сразу признаю, что я бесстыдно зацепил и настроил образцы кода из чужих проектов, чтобы заставить эту работу работать, хотя в конечном итоге я почти все переписал. Изначально я построил эту «метеостанцию WiFi», которую нашел на Adafruit.com и изменил его. Вместо обновления веб-сайта я использовал Amazon Web Services для отправки мне обновлений статуса по SMS. Я также добавил управление некоторыми реле на 110 В (https://www.adafruit.com/products/268). Затем я стал «умным» и решил «укрепить» его - ну, что-то замкнуло что-то, и я получил клуб волшебного синего дыма. Все поджарилось… Не имея еще одного выхода CC3000 WiFi, на этот раз я сделал все по-другому. Я построил его для интерактивного мониторинга через последовательный интерфейс, а затем добавил интерфейс EZ-Link Bluetooth FTDI. (Больше не нужно таскать ноутбук под дом для обновления программного обеспечения !!!) Я также создал интерфейс Python, который подключается к устройству через Bluetooth, регулярно запрашивает его и отображает информацию о состоянии на моем Mac. (Существует также «человеческий интерфейс», к которому может получить доступ любое программное обеспечение эмуляции терминала.) В результате перезаписи и удаления всего кода WiFi и RTC размер проекта уменьшился с 29 КБ до 10 КБ. Он также повысил надежность до такой степени, что аппаратный сторожевой таймер вообще не сработал за пару недель, когда он работал, и я настраивал его.
17.02.16 Обновление / примечание: в попытке добиться правильного форматирования некоторой части кода (особенно отступа кода Python) все пошло от уродливого до непригодного для использования. Я уверен, что проблема где-то на моей стороне, и я постараюсь разобраться в ней. А пока я добавил ссылки на файлы кода через DropBox. Они должны быть доступны каждому. Если нет, дайте мне знать, и я смогу доставить их вам другим способом!
Шаг 1. Проблемы, которые необходимо решить
Система должна была делать для меня следующие вещи: 1 - контролировать температуру в подвесном пространстве; 2 - включать нагревательные лампы по мере необходимости, чтобы поддерживать температуру выше точки замерзания; 3 - когда не работает, периодически проверяйте лампы, чтобы я мог видеть их состояния. 4 - дайте мне возможность видеть температуру и состояние системы, в том числе: - Система работает? - какая температура ТЕПЕРЬ? - какая самая холодная температура? - сколько лампочек пробежало? - сколько лампочек тестируют хорошо? - сколько у меня общего времени в "световых минутах" (также известное как "время горения")? 5 - делайте все вышеперечисленное без необходимости лазить под домом !!! Я решил, что самый простой способ проверить исправность лампочки - это Датчик освещенности. Еще я хотел решить проблему продолжительности цикла освещения. Слишком медленно, и я сжигаю ненужное электричество. Слишком быстро, и я рискую сжечь их из-за всех включений и выключений с соответствующим нагревом и охлаждением.
Шаг 2: оборудование
2 лампы накаливания 250 Вт 1 рабочая лампа 500 Вт (одна из моих ламп накаливания исчезла, так что это замена) Датчик температуры / влажности Arduino UnoDHT22 Датчик освещенности GA1A12S202 Реле PowerSwitch 110 В Последовательный интерфейс и программатор Bluefruit EZ-Link Высокотехнологичный корпус (туба Rubbermaid размером с бутерброд) Кабельный ввод Макетная плата размером 1/2 Акриловая пластина для макета и перемычки Arduino Ассорти из перемычек. Колеман 5-розеточная "рабочая полоса" Я также использовал брелок Adafruit в качестве сторожевого таймера, но он оказался ненужным (проклятие, конечно!), И я написал об этом отдельную инструкцию, поэтому я не буду повторять это здесь. Пигтейл Coleman был хорошей находкой, так как он дал мне 4 розетки для моих тепловых ламп ПЛЮС розетку для источника питания Arduino без каких-либо дополнительных разветвителей или удлинителей. Рассчитанный на полные 15 А с переключателем и внутренним прерывателем, он мог справиться со всем, что я мог вытащить через единственную розетку.
Шаг 3: подход
В то время как система представляет собой приложение, созданное для ожидания и выполнения некоторых задач относительно медленно, я не хотел создавать систему, в которой контроллер находился в циклах delay () и не отвечал. Я также хотел иметь возможность изменять параметры конфигурации как можно ближе к "на лету" - конечно, не таким образом, который требовал бы переписывания кода или выполнения массовых операций поиска и замены в источнике. нашел самые прекрасные статьи Билла Эрла по теме «Многозадачность Arduino» (начало здесь: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) и занялся этим. Создав классы «таймер» и «обогреватель», я смог выполнять все функции синхронизации, которые я хотел, без использования delay () (только с парой исключений) и настраивать лампочки («обогреватели») с помощью одной строки кода для каждого. один.
Шаг 4: Подключение
Диаграмма Фритцинга не включает Bluefruit EZ-Link Arduino 5 В и заземление к шине макетной платы DHT22 от 1 до 5 В шины DHT22 от 2 до Arduino 7, DHT22 от 4 до шины заземления Резистор 10 кОм между выводами 1 DHT22 и 2GA1A12S202 Вывод VCC на шину 5 ВGA1A12S202 Вывод GND на землю busGA1A12S202 Вывод OUT на Arduino A0 Вывод Arduino 3V на вывод AREF Arduino Реле заземления Выводы питания на шину заземления Вывод питания реле 1 к Arduino A1 Вывод питания реле 2 к Arduino A2 Вывод питания реле 3 к Arduino A3 Вывод питания реле 4 к Arduino A4 Большинство этих соединений можно переставить по своему усмотрению.. Единственное, что имеет решающее значение, это то, что вывод OUT на датчике освещенности должен подключаться к аналоговому выводу. Эта распиновка будет работать с моим кодом в том виде, в каком он написан. Если вы используете аппаратный сторожевой таймер, вы увидите, что мой код выводит сердцебиение на вывод 2 Arduino.
Шаг 5: Код Arduino, основной набросок
CrawlSpace_monitor.ino
Шаг 6: Примечания к Кодексу
Следующие строки кода создают экземпляры нагревателя и определяют рабочие параметры: // Нагреватель (relayPin, onTemp (f), offTemp (f), minMinutes, testInterval (minutes), luxDelta) Heater heating1 = Heater (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 класса для этого проекта. Это были «таймер», «обогреватель» и «аккумулятор». Немного подумав, я смогу сложить аккумулятор в таймер, но я еще не сделал этого. Вот они полностью: heating.h
timer.h
аккумулятор.h
Шаг 8: Мониторинг системы
Я создал единый интерфейс для двух отдельных мониторов. Это интерактивный сеанс через последовательную консоль. В моем случае я использую Bluefruit EZ-Link, поэтому я могу получить доступ к системе, не забираясь под дом и не пытаясь протянуть USB-кабель между балками пола! Дополнительным преимуществом EZ-Link является то, что я могу загружать новый программный код в Arduino через Bluetooth. Доступ к «человеческому» интерфейсу (Bluetooth или физический кабель) можно получить с помощью любого программного обеспечения эмуляции терминала, включая серийный номер Arduino IDE. монитор. При первоначальном подключении ответа нет, но нажатие клавиши «u» (для «обновления») и «t» (для «теста») даст вам результат, показанный на снимке экрана. «m» («монитор») и «s» («sys check») дают вам те же данные, но в гораздо менее читаемом формате. Они предназначены для "очистки" другой программой для автоматического отображения. Я собрал скрипт Python, который делает именно это. Появится сообщение об ошибке, связанное с любыми другими клавишами. Вы увидите значение «время горения» - подумайте об этом как «лампочки в минутах» - 1 лампочка на 10 минут = 10 минут, 3 лампочки на 10 минут = 30 минут.
Шаг 9: сценарий Python
crawlspace_gui.py
Шаг 10. Еще предстоит сделать…
Он может быть некрасивым или не идеальным, но он эффективен и доказывает свою надежность. Этой зимой у меня еще не было проблем с замороженными трубами !!! У меня есть список дел. Конечно, теперь, когда это работает, я могу или не смогу когда-либо выполнить большинство из этих задач: запустить Bluetooth на одном из моих Raspberry Pi, чтобы я мог создать специальный монитор. Выучите еще немного Python, а затем очистите Python интерфейс. Это разделение элементов сделано не намеренно, и я не понимаю, почему оно существует. Добавьте интерфейс к чему-то вроде службы ввода-вывода Adafruit, чтобы я мог отслеживать его из любого места. Mini или Trinket Pro?), Менее дорогие реле и лучшая упаковка. Возьмите его с макета на плату «Perma Proto». Параметры конфигурации в EEPROM. Более подробный интерфейс, который укажет, какие лампы хороши, и возможно, даже время горения для отдельных лампочек. Когда я их сделаю, я вернусь и обновлю это руководство.
Шаг 11. Обновление 3/16, «постоянная» сборка
Получив хороший перерыв в холодную погоду, я взял устройство и переместил его на контроллер меньшего размера (я намеревался использовать Trinket Pro, но у меня был Adafruit Metro Mini, не востребованный ни в одном другом проекте), припаял его на плату Perma-Proto, и поместите все это в лучшую сторону. Исходя из того, насколько он был надежным, я не возвращал на него аппаратный сторожевой таймер. Я по-прежнему использую только 3 лампы / реле, с которыми система будет работать. 4. Модуль Bluetooth находится на припаянном разъеме, поэтому его можно удалить, если он мне понадобится в другом месте. Для перехода на новый контроллер не потребовалось никаких изменений кода - простая перекомпиляция и загрузка позволили мне начать работу за считанные минуты. (Metro Mini имеет такую же распиновку, что и Arduino Uno, а также является процессором ATMega328.)
Шаг 12. Обновление 01.12.2018 - Добро пожаловать в Интернет вещей
Система у нас сработала безупречно. После двух довольно суровых зим НЕ замерзших труб. Фактически, система смогла обслуживать трубы, не сжигая более двух лампочек. Наличие 3-й лампочки онлайн было хорошей страховкой, но на сегодняшний день она нам никогда не нужна.
На третьем году работы в системе произошел сбой модуля Bluetooth. Мы также построили новый дом, поэтому система мониторинга находится вне зоны действия Bluetooth. (Старый дом стоит некоторое время, но не навсегда.) За это время я много работал с процессором ESP8266 с поддержкой WiFi; как в формате Adafruit Feather, так и в формате «NodeMCU» с открытым исходным кодом. NodeMCU обычно можно найти на Amazon примерно за 5 долларов - намного меньше, если вы покупаете оптом и / или у кого-то вроде AliExpress.
Эта новая версия поддерживает последовательный интерфейс, поэтому ее можно по-прежнему использовать с модулем Bluetooth или прямым последовательным USB-соединением и предыдущим скриптом Python, однако новая версия имеет интерфейс веб-страницы. Как написано, он включает в себя следующие функции:
Сетевой менеджер WiFi для устранения жесткого кодирования учетных данных WiFi.
Возможность обновления прошивки по воздуху с помощью Arduino IDE (пока вы находитесь в одной и той же сети Wi-Fi - обратите внимание, что после загрузки на устройство USB-накопителя необходим сброс до того, как OTA-обновления будут работать). ПОЖАЛУЙСТА, измените пароль OTA в строке 6, чтобы он был уникальным для вас !!
Веб-страница, которая отображает те же данные, что и скрипт Python, с автоматическим обновлением каждую минуту. Я не делал никаких мер безопасности на странице, потому что она предназначена только для отображения.
Вы можете найти новый код здесь. Обратите внимание, что имена контактов меняются при переходе к NodeMCU.
Рекомендуемые:
Боевые дроны, квадрокоптеры, также известные как настоящий воздушный бой: 8 шагов (с изображениями)
Боевые дроны, квадрокоптеры, также известные как настоящий воздушный бой: добро пожаловать в мою " ible " # 37 Мы должны признать, что нынешние боевые дроны на рынке немного запутаны. Очень сложно понять, кто выигрывает, а кто проигрывает. Когда один дрон падает, другой следует за ним (врезаясь друг в друга
Узнайте, как сделать портативный монитор с батарейным питанием, который также может питать Raspberry Pi: 8 шагов (с изображениями)
Узнайте, как сделать портативный монитор с питанием от батареи, который также может питать Raspberry Pi: вам когда-нибудь хотелось написать код на Python или иметь вывод дисплея для вашего робота Raspberry Pi, на ходу, или нужен портативный дополнительный дисплей для вашего ноутбука или фотоаппарат? В этом проекте мы построим портативный монитор с батарейным питанием и
Спутник-1, известный как первый спутник, выведенный на орбиту Советским Союзом, в 1957 году: 5 шагов (с фотографиями)
Спутник-1, известный как первый спутник, выведенный на орбиту Советским Союзом в 1957 году: меня всегда восхищала история со спутником-1, потому что он вызвал космическую гонку. 4 октября 2017 года мы отметили 60-летие. о запуске этого российского спутника, вошедшего в историю, потому что это был первый
IOT BIT (формально известный как PiAnywhere V1.31) 4G и LTE Hat для Raspberry Pi: 10 шагов (с изображениями)
IOT BIT (формально известный как PiAnywhere V1.31) 4G и LTE Hat для Raspberry Pi: IOT BIT 4G & LTE Hat для Raspberry Pi4G (100 Мбит / с вниз / 50 Мбит / с вверх) - Сверхбыстрое подключение к Интернету для вашего raspberry pi, отлично подходит для больших загрузок и потокового видео. IOT BIT 4G & LTE Hat для Raspberry Pi Beta
3-осевой миниатюрный штатив Ballhead Thingie (также известный как Tennisball-pod): 5 шагов
3-осевой миниатюрный штатив Ballhead Thingie (также известный как Tennisball-pod): Думаю, название говорит само за себя, но картинка стоит тысячи слов! Это мое первое руководство, поэтому конструктивные комментарии приветствуются. Изначально я разместил это в своем блоге, и после того, как мои друзья долго не хотели размещать здесь сообщения, я