original in de Stefan Blechschmidt
de to en Jürgen Pohl
en to pl Miros�aw Majka
B�d�c elektrykiem zosta�em posadzony przed monitorem stacji roboczej CAD w celu rozwijania pewnego prze��cznika i stacji kontroli. Najwyra�niej zarazi�em si� wtedy nieznanym "wirusem" i dobrze mi z tym.
Serwery linuksowe sprawuj� si� odpowiedzialnie i bezpiecznie,
nie potrzebuj� specjalengo nadzoru, po prostu dzia�aj�, dzia�aj� i dzia�aj�... Ale co si� dzieje, kiedy ma�emu pingwinkowi zaczyna by� za gor�co? Ostatnie lato nam nie�le pokaza�o: powinni�my sprawi� naszemu ma�emu przyjacielowi system monitoringu temperatury. Ten artyku� poka�e Wam jak zainstalowa� w�a�nie taki system za cen� ok. 10 Euro.
Brian C.Lane napisa� program dla czujnika temperatury DS1820 from DALLAS Semiconductor Nie jest trudno z�o�y� omawiany system kontroli temp. przy u�yciu dw�ch takich komponent�w i kilku innych cz�ci.
Uwaga:
Brian C.Lane zmodyfikowa� swoj� stron� i zaprzesta� rozwijania wersji u�ytej w tym artykule. Mo�esz zatem �ci�gn�� j� st�d:
digitemp-1.3.tar.gz
Ci z Was, kt�rzy chc� u�y� aktualnej wersji digitemp-3.2.0.tar.gz mog� pobra� j� z http://www.digitemp.com/software.shtml
.
Czujnik zosta� oryginalnie wyprodukowany przez DALLAS Semiconductor,
kt�ra to fimra zosta�a wcielona do Maxim/Dallas Semiconductor.
Zgodnie ze specyfikacj�, czujnik mo�e mierzy� temperatur� w zakresie od -55°C do 125°C. Dane pomiarowe s� generowane jako cyfrowy sygna� d�ugo�ci 9 bit�w. Dodatkowo, ka�dy czujnik posiada 64 bitowy numer I.D., kt�ry pozwala pod��czy� wi�cej czujnik�w. Mo�liwe jest u�ycie stu czujnik�w na z��czu d�ugo�ci 300 metr�w.
Obw�d, kt�ry tutaj prezentujemy b�dzie dzia�a� tylko z dziesi�cioma czujnikami na z��czu 60 - metrowym. Obecnie u�ywam czterech czujnik�w na ok. 12 - metrowym z�aczu.
Mo�esz znale�� wi�cej informacji na temat samego czujnika w Specyfikacji.
Chcia�bym doda�, �� obw�d prezentowany tutaj mo�e mierzy� maksymaln� temperatur� w wysoko�ci 75°C, co powinno by� adekwatne dla naszego zastosowania.
Aby m�c pod��czy� czujnik do interfejsu szeregowego potrzebujemy kilku dodatkowych skladnik�w. Znajdziesz je w wi�kszo�ci sklep�w detalicznych z cz�ciami elektronicznymi, w internecie lub (najlepiej) w sklepie elektronicznym tu� za rogiem.
Ilo�� | Identyfikator | Typ | Typ alternatywny |
---|---|---|---|
1 | Opornik | 1,5 k Ohm | -------- |
2 | Dioda Schottky | 1N5818 | BAT 43 |
1 | Dioda Zener | 1N5228 | ZPY 3,9V |
1 | Dioda Zener | 1N5234 | ZPY 6,2V |
1 | Czujnik | DS18S20 | -------- |
1 | Gnizdko, Szeregowe | RS232C/9 | -------- |
1 | Pow�oka ��cznika | SUB-D/9 | -------- |
1 | Deska do krojenia chleba | Papier laminowany | -------- |
Obw�d interfejsu jest stosunkowo �atwy do skonstruowania, wi�c wybra�em desk� do krojenia chleba jako podstaw�. Przepraszam za moj� ma�o sp�jn� prac� :-).
Przy odrobninie umiej�tno�ci komponenty mog� zosta� zainstalowane we wtyczce interfejsu szeregowego.
Uwaga
Na tej stronie LinuxNetMag
mo�emy znale�� artyku� o digitemp, jak r�wnie� i forum opisuj�ce obw�d przystosowany do pomiar�w wi�kszych ni� 75°C. Osobi�cie jeszcze nie testowa�em �w obwodu.
Dla naszego obwodu interfejsu potrzebne s� tylko po��czenia czujnika, ��cze VDD mo�e by� usuni�te. Ja je po prostu odci��em :-).
Oto tabela obwodu karty interfejsu, czujnika i interfejsu szeregowego.
Opis | DB-25 | DB-9 | Czujnik |
DTR | 20 | 4 | Data (PIN 2) |
RXD | 3 | 2 | GND (PIN 1) |
TXD | 2 | 3 | |
GND | 1 and 7 | 5 |
Oprogramowanie jest dost�pne jako archiwum tar, mo�na je zainstalowa� w nast�puj�cy spos�b:
tar -xvzf digitemp-1.3.tar.gzw aktualnym katalogu.
W nowo zainstalowanym katalogu
digitemp1-3
znajduje si� kod �r�d�owy,
dokumentacja i kilka skrypt�w Perla, jak r�wnie� pliki binarne
digitemp
, kt�re mog� zosta� u�yte od razu.
Je�li digitemp
jest wywo�ywany bez parametr�w, wtedy zobaczysz przegl�d mo�liwych opcji.
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing Usage: digitemp -s<device> [-i -d -l -r -v -t -p -a] -i Initalize .digitemprc file -s/dev/ttyS0 Set serial port -l/var/log/temperature Send output to logfile -f5 Fail delay in S -r500 Read delay in mS -v Verbose output -t0 Read Sensor # -a Read all Sensors -d5 Delay between samples (in sec.) -n50 Number of times to repeat -o2 Output format for logfile -o"output format string" See description below Logfile formats: 1 = One line per sensor, time, C, F (default) 2 = One line per sample, elapsed time, temperature in C 3 = Same as #2, except temperature is in F #2 and #3 have the data seperated by tabs, suitable for import into a spreadsheet or other graphing software. The format string uses strftime tokens plus 3 special ones for digitemp - %s for sensor #, %C for centigrage, %F for fahrenheight. The case of the token is important! The default format string is: "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F" which gives you an output of: May 24 21:25:43 Sensor 0 C: 23.66 F: 74.59
"Pomoc" podpowiada, �e zainstalowane czujniki musz� zosta� zainicjowane. Dlatego musimy zdefiniowa� interfejs, do kt�rego nasz obw�d jest pod��czony, jak r�wnie� parametry pocz�tkowe.
Polecenie
digitemp -i -s/dev/ttyS0za�atwia to. W tym przypadku obw�d interfejsu jest pod��czony do pierwszego portu szeregowego.
Oprogramowanie wykrywa czujniki, wiadomo�� podobna do tej powinna si� pojawi�:
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing ROM #0 : 1032724700080086 ROM #1 : 1092214400080089Zauwa�amy, �e program wykry� 2 czujniki. Dodatkowo w aktualnym katalogu zostaje utworzony plik
.digitemprc
, kt�ry b�dzie zawiera� dane o czujnikach, interfejsie i formacie danych wyj�ciowych.
Poleceniem ./digitemp -a
mo�emy przeczyta� dane wyj�ciowe czujnika. Prosz� zauwa�y� znak
./
, nadal jeste�my w katalogu, ktory nie jest cz�ci� zmiennej $PATH, czyli miejsc, gdzie pow�oka szuka plik�w wykonywalnych.
Dane wyj�ciowe pomiaru
DigiTemp v1.3 Copyright 1997-99 by Nexus Computing Sep 24 21:53:35 Sensor 0 C: 37.94 F: 100.29 Sep 24 21:53:38 Sensor 1 C: 10.62 F: 51.129
Aby zintegrowa� nasz program z systemem, musimy dokona� kilku poprawek.
Najpierw musimy skopiowa� plik binarny
digitemp
w miejsce, kt�re pozwala na uruchomienie go bez redefiniowania �cie�ki. Ja wybra�em /usr/local/bin/
dla tego celu. Ci, kt�rzy nie s� pewni co do �cie�ki, mog� to sprawdzi� poleceniem echo
$PATH
. Ponadto, plik
.digitemprc
z danymi inicjacyjnymi powinien zosta� skopiowany do katalogu domowego u�ytkownika, kt�ry b�dzie dokonywa� pomiar�w. Aby zapisywa� dane do pliku a nie na terminal, prze��cznik -l[PATH/FILE NAME]
powinien zosta� u�yty.
Teraz przyda�oby si� zautomatyzowa� nasze pomiary. Dobrze wypr�bowany
cron powinien spe�ni� swoj� rol�. Poprzez crontab -u [USER]
-e
mo�emy ustawi� to dla ka�dego u�ytkownika. Wpis w /etc/crontab
0-59/15 * * * * /usr/local/bin/digitemp -a -l/var/log/digitemp.loginicjuje digitemp aby ten mierzy� temperatur� co 15 minut i aby zapisywa� wyniki do
/var/log/digitemp.log
.
Poleceniem tail /var/log/digitemp.log
mo�emy sprawdzi� ostatnie linijki pomiar�w. Je�li plik
/var/log/digitemp.log
nie jest generowany,
prosz� sprawdzi� prawa dost�pu do plik�w.
Archiwum tar zawiera kilka skrypt�w Perla do graficznej interpretacji wynik�w. Nie b�d� ich tutaj opisywa�. My�l� nad napisaniem kolejnego artyku�u o tym jak zbiera� dane czujnik�w w bazie mySQL i jak interpretowa� je poprzez stron� www.
Tak� sztuczk� mo�na osi�gn�c dzi�ki Perlowi u�ywaj�� funkcji mySQL, CGI, graphic.