Перейти к содержанию
  • Реклама

  • Социальные сети



    Новости сайта Лыткарино Online
    на главной странице Яндекса
    добавить на Яндекс
Авторизация  
Squidy

Мониторинг температуры с помощью Linux

Рекомендуемые сообщения

Squidy   

Как-то относительно давно нарвался у николоса на страницу с температурой онлайн, и захотелось собрать что-то подобное, у него была ссылка на оригинальную стать на linuxfocus и одним словом решил я всё это собрать. Хоть это всё уже и есть давно хочется попробовать сделать самому.

Так что хочу выдать две благодарности Николасу за идею и Молекуле за-то что привезла комплектующие.

Детали были куплены в магазине "Чип и Дип"

Собственно, самое главное - датчик температуры DS18S20 ( DS1820 )

post-671-1183360696.png

post-671-1183360709.png

2. Два диода Шотки 1N5818

3. Стабилитрон 1N5228 3.9 V

4. Стабилитрон 1N5234 6.2 V

5. Резистор 1.5 кОм.

6. 9 -pin'овый разъем ( для подключения к Com - порту материнской платы )

Я не нашел в магазине ни 1N5228 , ни 1N5234 , поэтому просто использовал аналоги с таким же напряжением.

Cхема довольно простая:

post-671-1183360873_thumb.png

Ну и всё же я решил изготовить печатную плату просто для самоудовлетворения.

Первым делом взял розетку сетевую самую обычную и выпаял всё из неё

post-671-1183361130.jpg

Потом взял кусок стеклотексталита и вырезал кусок

post-671-1183361289.jpg

Кусок вырезан

post-671-1183361438.jpg

Осталось теперь только нарисовать дорожки что-бы потом протравить плату, раньше в детстве я это делал путём рисования от руки, брали нитро краску и спичку и рисовали дорожки конечно качество было ужасным, ну у нас уже 21 век и мы будем дорожки делать по технологии "ЛУТ" (лазерно-утюжная технология)

Я использовал программу Sprint-Layout 4.0 RUS и нарисовал себе платку кому надо можете скачать исходник

post-671-1183362005_thumb.jpg

У меня был выбор из какого журнала вырезать кусок из "хакер" или "7 дней" не долго думая покромсал 7 дней

post-671-1183362200.jpg

наклеил на лист бумаги и засунул в принтер (у меня HP LaserJet 1020)

post-671-1183362321_thumb.jpg

Напечатал то что нарисовал в программе ранее, получилось у меня вот

post-671-1183362445.jpg

Теперь взял утюг нагрел пластину и стал переводить всё на кусок стеклотекстолита

post-671-1183362591.jpg

Вообщем у меня получилось довольно симпотишно

post-671-1183362735.jpg

Поместил это всё в раствор хлорного железа и вообщем в итоге у меня получилось

post-671-1183362850.jpg

Обрезаем, сверлим лудим травим вообщем теперь осталось самое приятное

post-671-1183362989.jpg

В итоге плата у меня получилась такого вида

post-671-1183363109.jpg

post-671-1183363114.jpg

Конечный вид девайса у меня получился такой, а датчик температуры подключается через коннектор у меня расстояние от датчика до схемы метров 10, датчик у меня на улице я его вынес гдето на пол метра

post-671-1183363298.jpg

Вообщем паяльник можно отложить теперь подключаем всё это к компьютеру и... ставим программу digitemp

После компиляции из исходников, перед началом работы , необходимо проинициализировать датчик, выполнив digitemp -i -s /dev/ttyS1 ( или /dev/ttyS0 , в зависимости к какому Com порту подключен дачтик ):

а потом уже можно снимать показания

[squidy@squidy ~]# digitemp -a -q -c /usr/local/etc/digitemp.conf 

Jul 02 12:07:03 Sensor 0 C: 23.25 F: 73.85
я решил все данные хранить в БД поэтому пришлось использовать скриптик на перле, правда изза помех датчик может выдавать ошибку 85 С бывает редко но всё-же что-бы не писать ошибки в БД, решил эти значения отсекать digitemp_mysql.pl
#!/usr/bin/perl -W


# Структура БД

# CREATE TABLE `temps` (

# `dtKey` int(11) NOT NULL auto_increment,

# `time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,

# `SerialNumber` varchar(17) NOT NULL default '',

# `Fahrenheit` decimal(3,1) NOT NULL default '0.0',

# PRIMARY KEY  (`dtKey`),

# KEY `serial_key` (`SerialNumber`),

# KEY `time_key` (`time`)

#) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=806;

#

use DBI;



# Информация о базе данных

my $db_name	 = "server";

my $db_user	 = "ваш_юзер";

my $db_pass	 = "ваш_пароль";


# Путь до файла конфигурации и самой программы 

my $digitemp_rcfile = "/usr/local/etc/digitemp.conf";

my $digitemp_binary = "/usr/local/bin/digitemp";



my $debug = 0;


# Соединяемся с БД

my $dbh = DBI->connect("dbi:mysql:$db_name","$db_user","$db_pass")

		  or die "I cannot connect to dbi:mysql:$db_name as $db_user - $DBI::errstr\n";



# Выдераем значения и пишем в БД при этом если значение равно 85 опросить датчик снова

my $temperature;

go_here:


open( DIGITEMP, "$digitemp_binary -q -a -o \"%s %.1C\" -c $digitemp_rcfile |" );


while( <DIGITEMP> )

{

  print "$_\n" if($debug);

  chomp;


  ($serialnumber,$temperature) = split(/ /);


  my $sql="INSERT INTO temps SET SerialNumber='$serialnumber',Fahrenheit=$temperature";

  print "SQL: $sql\n" if($debug);

  if ($temperature != 85)

  {

  $dbh->do($sql) or die "Can't execute statement $sql because: $DBI::errstr";

  }

}


close( DIGITEMP );


goto go_here if $temperature == 85;


$dbh->disconnect;
Осталось добавить скрипт в кронд чтобы он выполнялся скажем каждые 10 минут и писал данные
[squidy@squidy ~]# crontab -e

*/10 * * * * /usr/bin/perl /script/digitemp_mysql.pl

Всё данные теперь пишутся, собираются, теперь можно строить графики, и выдавать их скажем на сайте

У меня данные пока выводятся только на моём локальном сайте и выглядит это так

post-671-1183364954_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

bSd   

Николас такое делал года два назад ;)

у него вроде было с сохранением в бд в сыром виде и с графиком из GD

Изменено пользователем bSd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Squidy   

не, у него тоже ошибки отсекаются иначе график заключит, единственное из-за того что у нас дома в разных местах и этажи разные у нас показания отличаются немного на 1-2 градуса у меня ночью ниже температура у него ниже днём, хоть и датчик у меня в тени я просверлил сбоку балкона дырень и вынес датчик

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Squidy   

Вот для этого и написал статью может ещё кто в городе собирёт :) можно будет замутить карту города с распределением температур :) и выдавать среднюю температуру по городу потомучто в районе набережной температура наверняка на цать градусов ниже чем у нас

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
bSd   

угу, нарисовать скалярное поле температур

только дискретность надо поменьше, т.е. датчиков побольше )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Squidy   

правда сомневаюсь что найдётся много желающих собирать эти датчики хотя на самом деле довольный бюджетный проэктик на всё провсё ушло не больше 100р если не брать во внимание стеклотекстоли хлорное железо и прочую ерунду сам датчик стоял 70р

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
e_man   

даёшь в каждый чердак со свичем велкома по примочке с вынесенным датчиком

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
bSd   
даёшь в каждый чердак со свичем велкома по примочке с вынесенным датчиком

ну во-первых ещё добавить over ethernet часть, компутеры ставить - это жесть

во-вторых с езернет частью это стоит не 100 руб., и главное не железо а софт для микроконтролера

в-третих, кому надо измерять температуру(влажность и давление), правильно - Гидромету

а потратить кучу бабок чтобы рисовать красивую карту для <блабла> могут только дураки из другой неупоминаемой здесь конторы )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
St0rm   

Я чет смотрел смотрел на все это и так и не понял, а ### простите меня это все надо? 100 р. тратить на изготовление того, что можно купить дешевле? Я понимаю паять (читай - делать) что-то стоящее... Вот я, например, думаю как бы слепить антену/усилитель к бюджетному bluetooth ключу? (не узконаправленную)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Squidy   

паять и собирать что-то, дело не изза выгоды а изза процесса, если вам проще купить топайте в магазин, это болезнь так сказать сделать самому то, что можно купить и при том дешевле купить готовое изделие. и высказывания а аля а на ### это надо можно оставить и при себе

что касается усилителя то собрать можно былобы желание

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Kovrov   
не, у него тоже ошибки отсекаются иначе график заключит, единственное из-за того что у нас дома в разных местах и этажи разные у нас показания отличаются немного на 1-2 градуса у меня ночью ниже температура у него ниже днём, хоть и датчик у меня в тени я просверлил сбоку балкона дырень и вынес датчик

это не из за этажей разные градусы это DS1820 - жесть!!! якобы каллиброванные на заводе!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
St0rm   
паять и собирать что-то, дело не изза выгоды а изза процесса, если вам проще купить топайте в магазин, это болезнь так сказать сделать самому то, что можно купить и при том дешевле купить готовое изделие. и высказывания а аля а на ### это надо можно оставить и при себе

что касается усилителя то собрать можно былобы желание

Воистину, клуб радиолюбителей... У меня приятель давление еще меряет и скорость ветра. :hello: Видимо, я вырос из того возраста, когда видя в радиолюбительской мурзилке схему я истекаю слюнами шлифуя паяльник напильником и шкуркой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Kovrov   

Не ну я тоже не понимаю за кой это надо то температуру то мерить

зачем?

так для опыта попробывать сетевые технологии это интересно....

я это называю собачьи радости ну на день ну на 2 -3, а потом все в помойку пойдет...

есть другое предложение: поставить веб камеры с изернет интерфейсом и наблюдать за очредями на 538 (348)...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
St0rm   
есть другое предложение: поставить веб камеры с изернет интерфейсом и наблюдать за очредями на 538 (348)...

Хех... Что, статистику что ли собирать? :kal: С тем же успехом пожно с LPT управлять подрывом электролитных конденсаторов (скажем 5V), выброшенных на остановку 538 на тонких проводках через герконы на 220 В и наблюдать за зрелищем через веб-камеру. :jump: Гораздо смешнее.

:rolleyes: Че, еще никто не смеется? Хорошо! Тогда можно устроить следующее зрелище... потребуется один каскадер, 1 "нафталиновая" бомба и бачок с бензином. Значит каскадер наряжается в костюм шахида, ему в руки вручается чемодан с нафталинкой, а он сам обливается бензином. (нужные части тела смазать вазелином :unsure: ) Сценка: шахид бежит на толпу, стоящую на 538, подрывает заряд ярко вспыхивая в большом облаке огня (горит нафталин), далее загорается бензин и шахид с безумным видом бежит на толпу. :lol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Kovrov   
наблюдать за зрелищем через веб-камеру. :jump: Гораздо смешнее.

:rolleyes: Че, еще никто не смеется? Хорошо! Тогда можно устроить следующее зрелище...

а веб камера то зачем?

тут все это на HDвидео писать - и в Голивуд отсылать за гонорары........

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Igor   

Предлагаю развить эту идею дальше. Взять микроконтроллер UB2022 (производитель UBICOM), воткнуть с одной стороны к нему датчик, с другой стороны Ethernet через реалтековский чип. Исходиники WEB-сервера под этот проц есть. Получиться датчик температуры, который можно втыкать в любой свитч.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
bSd   
Предлагаю развить эту идею дальше. Взять микроконтроллер UB2022 (производитель UBICOM), воткнуть с одной стороны к нему датчик, с другой стороны Ethernet через реалтековский чип. Исходиники WEB-сервера под этот проц есть. Получиться датчик температуры, который можно втыкать в любой свитч.

и выставить его с реальным адресом в инет, вот потеха то будет :)

ping -f и нету датчика )) захлебнулсо )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

Авторизация  

×
Яндекс.Метрика
Лыткарино Online - городской информационно-развлекательный портал, 18+
Контакты | Реклама на сайте
При любом копировании материалов сайта гиперссылка на источник обязательна.