Наткнулся недавно в интернете на интересный
материал, идея заинтересовала, но после сборки отказалась корректно работать, погуглив дальше наткнулся на другой вариант, который и представляю.
Простой цифровой термометр с подключением через COM-порт.
Рабочий вариант схемы был найден
здесь.
Для сборки данного девайса понадобятся следующие компоненты:
1) Термодатчик DALLAS DS1820 — самая главная часть всей схемы, датчиков можно прицепить несколько параллельно. По описанию каждый сенсор имеет собственный 64 битный ID, что позволяет использовать одновременно 100 сенсоров на шине, длиной 300 м, проверить не довелось, но два датчика на шине длиной 5 метров успешно работают.
2) Стабилитроны на 3.9V, 6.2V, 5.6V, самой минимальной мощности — они компактнее.
3) Диод Шоттки, использовал 1N5818 в количестве 2шт.
4) Диод 1N4148 — 1шт.
5) Резистор 1,5кОм, 0,25Вт — 1шт.
6) Конденсатор 10мкФ, 16V — 1шт.
7) 9-контактный разъем COM-порта, тип — мама.
8) Корпус для разъема.
9) Паяльник, припой, и прямые руки =)
Компоненты необходимо собрать по следующей схеме:
Для людей не подкованных в электронике стоит отметить что на всех диодах/стабилитронах полоска на корпусе обозначает катод. Из следующей картинки можно понять как необходимо монтировать детали.

На корпусе конденсатора есть пометка полярности — не ошибетесь, резистор полярности не имеет, паяем как хотим.
Выводы датчика расположены следующим образом:
Монтаж можно вести прямо на разъеме, при некоторой сноровке, достаточно плотный монтаж можно уместить в корпусе разъема, что несомненно удобно и практично.
Посмотреть на Яндекс.Фотках
Посмотреть на Яндекс.Фотках
Подключать несколько датчиков нужно параллельно, в итоге получается примерно вот такая штуковина
Посмотреть на Яндекс.Фотках
Датчик на конце можно залить эпоксидкой и ему не будут страшны условия за окном.
Термометр готов, и что особенно приятно, все работает без какой либо калибровки сенсоров.
Для считывания показаний термометра потребуется программа digitemp, она есть в репозитариях популярных дистрибутивов Linux, установить сложности не составит. Также у нее есть официальный
сайт.
Для пользователей Gentoo стоит отметить что для данной схемы необходимо собрать пакет с опцией
USE="ds9097" emerge digitemp
Далее запускаем инициализацию программы командой
digitemp_DS9097 -i -s /dev/ttyS0
На выводе видим следующее:
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - www.digitemp.com
Turning off all DS2409 Couplers
..
Searching the 1-Wire LAN
10E89CA3000800B2 : DS1820/DS18S20/DS1920 Temperature Sensor
10C162A300080096 : DS1820/DS18S20/DS1920 Temperature Sensor
ROM #0 : 10E89CA3000800B2
ROM #1 : 10C162A300080096
Wrote .digitemprc
Программа нашла два датчика, значит устройство работает верно.
Теперь можно считать информацию со всех датчиков командой
digitemp_DS9097 -a -s /dev/ttyS0
Получаем следующие данные:
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - www.digitemp.com
Mar 28 18:29:00 Sensor 0 C: 6.38 F: 43.47
Mar 28 18:29:01 Sensor 1 C: 26.50 F: 79.70
Для удобства интеграции в систему мониторинга можно использовать следующий вариант:
/usr/bin/digitemp_DS9097 -c /root/.digitemprc -t 0 -s /dev/ttyS0 -q -o "%.2C"
Считывает показания нулевого сенсора и без лишней мишуры выводит сухие цифры, для считывания других датчиков можно менять параметр -t.
Устройство было подключено к серверу, где уже давно его ждала система мониторинга cacti, теперь можно наблюдать такие интересные графики:

Видно когда в комнате было открыто окно и как медленно под вечер опускается температура на улице. =)
Устройство делалось исключительно ради интереса, но оно может принести и практическую пользу, у меня в комнате появился термометр и теперь одеваясь с утра на работу не нужно идти на кухню для того, чтобы посмотреть сколько градусов за окном.
В планах написать апплет для панельки gnome, который будет брать информацию с сервера и выводить на панель текущую температуру.
комментарии (143)
Главное руки прямые иметь, а остальное дело техники :)
В итоге всю ночь мучаешь его меряя температуру каждые 25-30 минут.
Как ни странно у производителей подобные решения отсутствуют, по крайней мере я их не нашел.
На сервере стоит еще zabbix, можно заставить рассылать смски с температурой каждые несколько минут, или при превышении порога.
еще некоторые дампы на гуглопочту приходят =)
Будет время — напишу к нему статистику и админку.
А потом можно будет и публичный сервис сделать =)
// К слову, лекарства мне не помогают. В детстве меня какими лекарствами только не кормили, результат был один. Сейчас лечусь только компрессами и припарками, а также соблюдением диеты. Вы знаете, даже хронические болезни стали вылечиваться :-)
На подобии градусника, тонометра, только более удобной и функциональной в бытовом применении.
Ребенок: М, 3650 гр, 58 см, 37.6 °С
Установить драйвер устройства.))
админамродителям.:0)
Ситуация тривиальная, но производителем не окученная.
Лежит больной ребенок температура скачет. Если не дать жаропонижающее вовремя возможны очень серьезные последствия. До критической планки давать нельзя, можно затянуть болезнь на недели, а в этом случае не избежать приема антибиотиков, это очень плохо для ребенка 1-5 лет с несформировавшейся иммунной системой.
И вот реальная ситуация — ты рядом с кроваткой, меряешь температуру электронным градусником, быстро — 10 секунд, но для начала надо развернуть ребенка и засунуть термометр подмышку.
Ребенок который только заснул в 2 ночи, просыпается и начинает плакать. Ты укачиваешь, успокаиваешь…
Ситуация житейская, дети наше все и если потребуется не будем спать ночь, две, три, но завтра опять на работу и если на работу не пойти не будет денег на лекарства, еду итд.
Промышленных решений, повторюсь, нет.
Идеальное решение — мониторинг с тревожным сигналом при превышении критического предела.
Так что автору спасибо за статью, это самый простой и самый реальный вариант из всего что я нарыл по этой теме в данном применении.
Можно и без музыки в колонках, просто через инет посылать смску на мобилу.
Но лучше в этом вопросе я буду полагаться на себя, чем на железку.
Нет! Не в этом контексте. Надо полагаться на все что может помочь в совокупности, дублируя для надежности. В конце концов, человеческий фактор самый ненадежный.
На сколько помню DS1820 давно не производят, заменены DS18S20 (точность 0.5 С).
По моим наблюдениям эти датчики в диапозоне 10—40 С ошибка одинакова.
П.С. Я бы верил производителю в первую очередь, а не магазину.
В принципе, мониторинг, возможно, тоже решение, только в таком виде, как описано — нельзя. Нужно, как минимум, опторазвязку городить и автономное батарейное питание датчика.
Интересно, а как меряют температуру на прикроватных мониторах в больницах?
Я вижу это в виде эластичного рукава который одевается на ребенка как майка, но без бретелек. Датчик оказывается подмышкой, сам прибор в максимально расплющенном и гибком виде смещен чуть к груди или спине. В этом месте он не будет мешать.
Я не нашел к сожалению, простой схемы термометра с возможностью вывода сигнала при превышении (уменьшении) определенного порога.
В этом плане предложенная схема — лучший вариант, но как верно заметили есть возможность отказа, к тому же наличие шлейфа это опасно.
Речь о детях год — пять.
Ну вопрос конечно если ребенка уже отучают от соски :)
А вообще регулятор на батарее теоретически есть, но он под слоем краски и его уже несколько десятилетии никто не двигал, поэтому боюсь его трогать.
И, кстати, я тут не видел ни одной батареи без регулятора, и они ими очень пользуются.
«Замёрз во сне из-за глюка винды»
>Кстати на сайте разработчика существует также версия под Windows, но как она работает, я не проверял.
запускать одоимённый файл из директории /win архива digitemp-3.6.0.tar.gz. нужен cygwin.
при его запуске из под windows xp появляется диалоговый мессадж требующий cygwin1.dll.
у меня был установлен cygwin и я экзешник скопировал в ту папку где cygwin1.dll находится, запустил консоль и повторил указанные автором
инициализирующую: digitemp_DS9097.exe -i -s /dev/ttyS0
и «сканирующую»: digitemp_DS9097.exe -a -s /dev/ttyS0
командные строки.
Microsoft Windows XP [Version 5.1.2600]
© Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system>digitemp_DS9097.exe -i -s /dev/ttyS0
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 — www.digitemp.com
owAcquire: failed to set attributes: Permission denied
Error 24: Failed to initialize system resource
А ещё есть программаторы, чуть опускающие температуру ночью (известно что человек лучше спит в прохладную погоду) и подогревающие помещение к утру.
Ну и само собой — прогрев загородного дома по смс, или через сайт.
Обычно такие системы стоят ровно в два раза дороже. В принципе мне предлагали за 200 рублей такую умную вещь.
если протокол 1wire критичен к временным задержкам, то будет сбоить 100%
думаю есть чипы которые на входе имеют компорт, а на выходе 1wire
и уже такой чип можно втыкать в usb через переходник
и апи там будет простенький.
А скажи пожалуйста — как ты рисовалку графиков прикрутил?
А вообще это можно сделать и без cacti при помощи rrdtools.
По поводу мощностей чем меньше тем лучше, потому что элементы будут компактнее и получится все уместить в корпус разъема, smd конечно не подойдут =)
digitemp записывает в файл:
digitemp_DS9097 -l /var/log/temperature -n -q -c /home/dmitriy/digitemp.conf -t 0
Из файла можно взять инфу с помощью например conky вот так:
${tail /var/log/temperature 3}
Получается прикольно (в самом низу в conky):
screenoteka.ru/files/screenshots/Screenshot-2_0.png
Сори за такой большой скрин.
#файл graph.sh
#!/usr/bin/gnuplot
set terminal png
set output "~/stat.png"
set xdata time
set timefmt "%b-%d-%H:%M:%S"
plot [*:*][-10:28] "/var/log/temperature" using 1:3 with linespoints title «temp»
#EOF
#файл pictgraph.sh
#!/bin/bash
~/graph.sh
eog ~/stat.png
Кто подскажет как бы еще датчик давления и влажности прикрутить к ком порту и будет замечательная метеостанция.
Помнится у друзья собирали такую штуку лет 5-6 назад, и уже тогда это была не в новинку, инструкций в нете дофигища.
В Чип-и-Дип'е
chipdip.ru/product0/411816766.aspx — 960 руб.
700 руб модуль стоил еще когда бакс был по 26 руб, и термометр тогда же стоил поболее 50 руб.
Вы где-то прямо сейчас видели, как это всё продаётся или Вам просто кажется, что оно так стоит?
Выходит дешевле усб термометр, только в продаже у нас я их не видел. Мне проще использовать даласовский, к нему можно подцепить много термометров, и других устройств и SDK открыт и стандартен
Детальки надо подбирать достаточно тщательно, так как вся шина работает не в режиме и если что-то не так, то читаться начинает очень плохо.
Еще интересный момент — градусник потребляет больше энергии при измерении горячего воздухе, т.е. потестировав его зимой можно обнаружить провалы летом.
Просто так расшарить КОМ-порт там не так просто. Цикл шины 1-wire (стартовый импульс) там делается при помощи последовательности 0xff засылаемой в порт на большой скорости, а потом порт переводится на низкую скорость и на ней уже считываются данные.
Для особо умных рекомендую подумать, как в этом протоколе по одному проводу (!) организуется не только адресация различных устройств и взаимодействие с ними, но и определение этих самых адресов когда на линии несколько заранее неизвестных устройств. Очень занятно.
Ставлю Вам + за творческий подход! :)
думаю это из области фантастики =)
может, не стоило паяльник включать?
У резистора нет полярности, в школе об этом рассказывали =)
Через digitemp все работает отлично. (OS:Debian)