Иногда перед человеком встает необходимость контролировать температуру, скажем, в помещении серверной или в любимом инкубаторе для крокодильчиков. Те, кто не хотят заморачиваться, имеют деньги или не владеют руками, тупо покупают специализированные приборы. Те же, кто дружит с паяльником, или хотя бы знает, что такое припой и для чего нужна канифоль, ищут возможности проще и дешевле.
Недавно передо мной стала задача дистанционного контроля температуры в серверных помещениях моей конторы. Как тру-инженер прекрасно владеющий паяльником и знающий что такое DS1820, я решил собрать контроль самостоятельно и сэкономить конторе денежку.
В интернетах не мало сломано копий по данному вопросу. Материал везде достаточно одинаковый и сводится к одному: берем датчик температуры DS1820 фирмы Dallas и путем довешивания дополнительно двух диодов Шоттки, двух стабилитронов и одного резистора, получаем приблуду на COM-порт, которая в состоянии замерять температуру.
Все бы хорошо, однако нормального ПО для работы с такой приблудой я так и не нашел. Точнее, оно есть, но за него хотят денег. Что я понимаю под нормальным ПО? Да мне всего-то и надо что контролировать температуру в помещении, и, когда она превысит, скажем, 30 градусов, оповестить меня об этом. Вот тут-то и загвоздка: есть ПО которое бесплатное, но оно просто показывает температуру, что мне нафиг не надо. И есть ПО, которое еще позволяет что-то делать, когда температура выше определенного предела, но оно стоит денег.
Поскольку денег платить я не хочу, а использовать ломаное ПО в организации нельзя, я пошел своим путем и написал программу контроля температуры, которая, при определенных пользователем условиях, позволяет производить какие-либо действия. А поскольку я не жадный, выкладываю программу здесь, глядишь, еще кому пригодится.
Итак. Прежде всего схема. Она валяется везде в интернете и собрать ее совсем не сложно. По стоимости деталек: в моем городе на расстоянии 500 км от столицы все детали обошлись мне в 300 рублей. Самый дорогой был именно датчик температуры DS1820, остальное — копейки.
Собираем схему, можно прямо на разъеме для com-порта. На рисунке показано сразу 3 датчика. Это как пример того, как подключить к одной одной линии много датчиков. Для работы достаточно только одного. Подключаем собранную схему к компьютеру и дальше в действие вступает специальная программулина.
Моя программа на самом деле не замеряет температуру, а является посредником. Температуру замеряет портированная под Windows линуксовая программа DigiTemp. А моя программа анализирует работу консольной DigiTemp и соответственно реагирует. Ничего дополнительно устанавливать не нужно, все уже есть внутри.
Для работы программы требуется установленная платформа .NET версии не ниже 3.5, она сейчас есть практически везде.
Краткая инструкция:
1. Запускаем программу. При первом запуске она сразу открывает раздел настроек. Там нужно указать COM-порт, и просто нажать кнопку «Поиск сенсоров».
2. Если железо в порядке, com-порт работает и ничем больше не занят и наш адаптер спаян правильно, программа обнаружит подключенные сенсоры, отобразит табличку с их названиями, типом и прочей служебной информацией.
3. Двойным кликом на обнаруженных датчиках открываем их настройки, где можно изменить имя датчика (чтобы было понятно, где он) и добавить действие, которое будет выполняться при определенных условиях.
По кнопке «Добавить» добавляется действие. На текущий момент программа поддерживает только одно действие — запуск внешней программы. Я посчитал это действие самым важным и реализовал его в первую очередь. Далее, если будет желание читателей и хорошие идеи — добавим еще. Окошко действия «Запуск программы» выглядит так:
Тут все просто — указываем выше/ниже какой температуры срабатывать, выбираем программу, рабочий каталог, если нужно и параметры командной строки, опять же, если нужно.
После всех настроек, можно нажать кнопку «Пуск» основного окна программы и она начнет свой монотонный никому не нужный труд. С интервалом, заданным в параметре «Интервал опроса сенсоров» программа будет запускать опрос, обрабатывать данные и выводить их в таблицу. Заодно будет проверять условия срабатывания действий, и при их совпадении — запускать действие.
Поле «Количество попыток опроса» предназначено для увеличения количества циклов чтения за один интервал опроса. При неуверенном чтении датчиков можно попытаться увеличить это значение в разумных пределах (скажем, до 5).
Время чтения одного датчика где-то 0,7 — 1 секунда, соответственно, опрос 3х датчиков будет длиться в районе 3х секунд.
При установленной галке «Автозапуск мониторинга при старте программы» мониторинг будет запускаться автоматически, что даст возможность запихнуть программу в автозагрузку.
А вот, собственно, и сама программа:
Предложения, пожелания и прочий флуд приветствуется.
диги темп тоже ставить или без неё?
Без нее
а программа может сохранять данные в Excel (температуру и время, дату замеров)
Программа понравилась! Спасибо!
В условия срабатывания не плохо бы добавить время
(для регулирования t в тепличке с учетом времени)
Вывод данных в таблицу пока не реализован?
Если работает то как?
С уважением Сергей Тюленев
Кстати, а обязательно DS1820 нужен? Я смог только DS18B20 найти, но чтото TempKeeper не хочет работать, хотя датчик видет, но температуру не может с него получить
Было бы полезно реализовать сохранение показания температуры в какой либо файл. Т.е. программа постоянно читает данные датчиков и сохраняет значения показаний в файлы. Для каждого датчика свой файл. Тогда эти файлы можно читать любой другой программой.
Программа отличная ,но очень нужна статистика по каждому датчику,был-бы очень благодарен за реализацию этой возможности в Вашей программе.
Что-то я не пойму, как эта схема работает?
DB9 2 — TXD
DB9 3 — RXD
DB9 4 — DTR
DB9 5 — GND
При первом же включении компьютер выдаст на DTR -12В.
Далее сразу же должны сгореть выход DTR и диод D1.
vladislav.neappprecganddy@live.com
yulechka_riapretirper@me.com
konstantin_riepretlixe@bk.ru
Ссылка на скачивание битая.