Bardzo prosty i tani termometr komputerowy

Interfejs DS9097 i DS18b20Pracując jako informatyk miałem kilka razy problem z serwerowniami z dużą ilością sprzętu, w których z różnych względów przestawały działać klimatyzatory. Skutkowało to wyłączaniem się co bardziej “inteligentnego” sprzętu lub uszkodzeniem tego tańszego, nie posiadającego zabezpieczeń. Zacząłem wtedy szukać rozwiązania, które będzie monitorować temperaturę i w razie przekroczenia zadanego progu zaalarmuje wysłaniem smsa lub maila. Spośród wielu komercyjnych, dedykowanych urządzeń, znalazłem również opis znanego od wielu lat modułu DS9097, który wraz z czujnikiem DS18b20 i Linuxem posiada olbrzymie możliwości. Jest to typowe rozwiązanie DIY – przystawkę DS9097 można zbudować samemu, a czas poświęcony na konfigurację oprogramowania zwróci się w postaci kompleksowego monitoringu z powiadamianiem, wcale nie gorszym od rozwiązań komercyjnych.

Przystawka DS9097 czyli termometr za 6zł

DS9097 można nazwać konwerterem RS232C<->1-wire. Jest to bardzo prosty układ pasywny, składający się z 4 diod, rezystora i gniazda DB9. Wszystkie elementy, łącznie z układem DS18b20 można kupić za mniej niż 6zł (ceny ze sklepu internetowego). W pobliskim sklepie RTV, w którym czasem kupuję części elektroniczne musiałbym za wszystko zapłacić nieco więcej, ale i tak poniżej 10zł. Schemat jest bardzo prosty i całość można polutować bez płytki drukowanej:

Schemat ds9097

Niezbędne części:

  • D1 – dioda Zenera na napięcie 3,9V, np. BZX55C3V9;
  • D2 – dioda Zenera na napięcie 6,2V, np. 1N5234;
  • D3, D4 – dioda Schottky, niskoprądowa, np. BAT85;
  • R1 – rezytor 1,5kΩ 0,25W;
  • U1 – DS18b20 lub starszy DS18S20;
  • J1 – gniazdo DB9 (żeńskie) z obudową;
  • kawałek kabla dwużyłowego, np para ze skrętki komputerowej.

Tak wyglądały moje elementy przed zmontowaniem:

Części do budowy DS9097

 

Oznaczenia poszczególnych pinów w gnieździe DB9 ułatwiają montaż, często są one ponumerowane na plastikowej części:

Oznaczenia gniazda DB9

Warto rozplanować montaż i przygotować elementy, by całość zmieściła się w pająku w obudowie gniazda. Ja na początku połączyłem ze  sobą diodę Zenera 6,2V D2 i diodę Schottkiego BAT85 D3 (anoda do anody, katoda do katody), tak samo postąpiłem z R1 i D4:

Przygotowanie elementów

 

W diodzie Zenera 3,9V D1 warto skrócić anodę do 5mm (nóżkę od strony obudowy bez czarnej kreski), drugą końcówkę, czyli katodę należy wygiąć w stronę anody i uciąć równo z nią. Odstęp między nóżkami powinien pozwalać na wsunięcie ich do 4 i 5 pinu gniazda DB9.

Lutowanie rozpocząłem od anody diody D1 wsuniętej w 5 pin DB9. Jej katoda została włożona do 4 pinu, razem z katodami diod D2 i D3 skróconymi do ok. 10mm od obudowy. Anody wygiąłem tak, by końcówka weszła do 2 pinu gniazdka. Końcówkę rezystora R1 i anody diody D4 skróciłem do 5mm, wsunąłem w pin 3 i zalutowałem. Pozostałą nóżkę okręciłem wokół anod diod D2, D3 i zespoliłem kropelką cyny. To miejsce stanowi masę dla układu U1 DS18b20 i należy tam przylutować jedną żyłę przewodu. Druga musi łączyć się z pinem 4 gniazdka, czyli z katodami D1, D2, D3.  Opis może wydawać się zagmatwany, więc warto spojrzeć na poniższe zdjęcie:

DS9097 w pająku

Do końca przewodu dolutowałem czujnik DS18b20 – połączone nóżki 1 i 3 do żyły przylutowanej do pinu 2 gniazdka, środkową nóżkę do żyły połączonej z pinem 4. Poniższy rysunek rozwieje ewentualne wątpliwości w numeracji końcówek:

Nóżki DS18B20Warto sprawdzić 2 razy czy wszystko jest OK i skręcić obudowę gniazdka. Mój interfejs DS9097 wygląda tak:

Interfejs DS9097 i DS18b20

Budując mój konwerter, wzorowałem się na układzie Cezarego Jackiewicza, który można znaleźć na jego stronie: http://eko.one.pl/?p=Termometr.

Do DS9097 można podłączyć więcej niż jeden czujnik DS18b20, każdy z nich ma unikalny 64 bitowy adres. Łączy się je równolegle.

Tak prosty konwerter ma również ograniczenia – kabel z czujnikami nie może być dłuższy niż 30 metrów (nie sprawdzałem) a w tym modelu zasilania (czujnik pobiera prąd z linii danych) można mierzyć temperatury do 70°C.

Termometr po Linuksem

Swój DS9097 zbudowałem właśnie ze względu na możliwość stworzenia systemu monitorującego temperaturę opartego na Linuksie, który można zainstalować na byle komputerze, terminalu czy routerze za kilkadziesiąt złotych.

Test konwertera przeprowadziłem na moim poczciwym IBM (o którym pisałem tu: Bardzo tani komputer dla elektronika amatora). Pracuje on pod kontrolą systemu Linux Mint 14. Zainstalowałem popularny digitemp (apt-get install digitemp) i podłączyłem mój układzik do 2 portu RS232, po wydaniu komendy:

digitemp_DS9097 -i -s /dev/ttyS1 -a

program zwrócił mi:

digitemp i DS9097 po RS232

Czyli sukces! Wszystko działa. Gdybym podłączył układ pod 1 port RS, ttyS1 musiałbym zastąpić przez ttyS0. Jeśli wykonanie komendy zakończy się na Searching the 1-Wire LAN, to znaczy, że mamy błędnie zmontowany układ, lub próbujemy odczytać dane nie z tego portu COM. Jeśli otrzymamy komunikat o braku uprawnień do portu, najprościej będzie wykonać powyższą komendę jako root.

Nie każdy posiada port RS, postanowiłem więc sprawdzić, czy układ działa z przejściówką USB<->RS232 opartą o układ PL2303, a właściwie jego podróbkę (więcej o tym kablu pisałem tutaj: Kabel USB-RS232 Prolific PL2303 i błąd kod 10). Wtyk USB wsadziłem do komputera, do drugiego końca dołączyłem zbudowany konwerter i wydałem komendę:

digitemp_DS9097 -i -s /dev/ttyUSB0 -a

i otrzymałem wynik:

Digitemp i DS9097 na PL2303

Łatwiej niż w Windowsach – nie trzeba instalować sterowników do przejściówki, ustawiać portu COM itp. Podłączasz i działa :).

Właśnie jesteśmy o krok od zbudowania prawdziwego systemu monitorowania temperatury z powiadamianiem w wersji ekonomicznej via e-mail, w wersji Pro via sms :). Zamiast prądożernego komputera, można wykorzystać router z możliwością instalacji Linuxa. Można też zbudować własną stację meteo dostępną z poziomu www z pomiarem temperatury, wykresami itp. Bardzo przydatne materiały znajdują się na linkowanej wcześniej stronie eko.one.pl.

Termometr pod Windowsem

Na Windowsy również można znaleźć wiele programów obsługujących DS9097, które umożliwiają pomiar i zapis temperatury. Wygooglałem na szybko dwa programiki, których autorem jest Grzegorz Podgórski – więcej można znaleźć na jego stronie: http://www.grzesiek21.republika.pl/termo.htm.

Moja platforma testowa to netbook MSI Wind U270 z Windows 7 x64 i przejściówką USB<->RS232 na PL2303 skonfigurowaną jako COM3. W przypadku problemów z tym kablem, polecam wpis: Kabel USB-RS232 Prolific PL2303 i błąd kod 10.

Jako pierwszy uruchomiłem program Maxitermo, który po krótkiej konfiguracji portu, ruszył bez problemu:

Program Maxitermo

Program dość ciekawy – można sobie ustawić dowolne tło, np zdjęcie lub plan monitorowanego obiektu i rozmieścić prostokąty z pomiarami temperatury tam, gdzie rzeczywiście znajdują się czujniki. Na screenie pomiar temperatury za oknem.

Drugi program to Termo – aplikacja mimo swojego wieku, podobnie jak pierwsza, bez problemu uruchomiła się w 64 bitowym Windowsie.

Program termo

Na koniec

Swój interfejs pomiarowy zbudowałem z myślą o całodobowym logowaniu temperatury zewnętrznej, coś na wzór rozwiązania, które można znaleźć na stronie eko.one.pl. Zaopatrzyłem się już w terminal HP5720, którego jednym z zadań będzie obsługa digitempa i serwera www. Opis takie rozwiązania zamieściłem tutaj: Odczyt temperatury przez internet.

Podziel się swoim zastosowaniem opisanego interfejsu DS9097, a może posiadasz inny układ?

Możesz również polubić…

6 komentarzy

  1. openworld pisze:

    Artykuł bardzo fajny.
    Jednak DS9097 jest jedynie konwerterem RS na 1 -wire, nie jest termometrem.
    Czy się mylę?

  2. Karol pisze:

    Witam, czy mógłbym prosić o jakieś wsparcie? Posiadam MSI GE70 i Windows 8,1 x64. Zmontowałem układ z dwoma termometrami. Działa na linuksie (chociaż z opóznieniem). Niestety nie potrafię sobie poradzić pod Windowsem. Zainstalowałem poprawne sterowniki. Kabel jest wykrywany i “działa poprawnie” na porcie COM3. Wchodzę do aplikacji Maxitermo i tam “wyszukiwanie sensorów” bez końca. Nie wiem co jeszcze mógłbym zrobić…

  3. Radzio6 pisze:

    Witam,

    Czy ktoś ma zarchiwizowane te programy Maxitermo oraz TERMO? Niestety ze strony republiki nie można ich już pobrać 🙁
    Jeśli tak to bardzo proszę o udostępnienienie.
    Z góry dziękuję.

  1. 21.04.2013

    […] interfejs DS9097 z czujnikiem DS18b20. Jego budowę opisałem dosyć dokładnie tutaj: Bardzo prosty i tani termometr komputerowy. HP T5720 posiada port RS232, ale interfejs nie działał na nim zbyt dobrze, losowe odczyty […]

  2. 22.04.2015

    […] 2 lat mierzę temperaturę zewnętrzną wykorzystując przejściówkę ds9097 podłączoną pod RS232 i odpowiednio skonfigurowany terminal. Wykresy z temperaturą można […]

Leave a Reply

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.