Dawno temu byłem zafascynowany prostym układem DS18S20, który działa za pośrednictwem 1-wire i umożliwia dokładny odczyt temperatury przez komputer. Schematów podłączenia termometru przez USB wtedy nie było, za to opisów podłączenia przez RS-232 była masa, koszt układu niewielki. Jedyne co powstrzymywało mnie wtedy przed uruchomieniem to… brak realnej potrzeby.
Potem sytuacja się zmieniła – port szeregowy zaczął w komputerach zanikać. A mnie coraz bardziej interesowała temperatura z wbudowanych czujników (płyta główna, dyski), a nie temperatura otoczenia. Były co prawda schematy jak to podłączyć przez USB, ale w stosunku do pierwowzoru rósł i poziom skomplikowania, i koszt.
Niedawno pojawiła się potrzeba (no dobra, powiedzmy, że potrzeba, bardziej pretekst), więc odświeżyłem temat. Okazało się, że istnieją tanie moduły PL2303HX USB UART, a także nieco nowsza wersja cyfrowych termometrów, oznaczona symbolem DS18B20. Różnica między wersjami w sumie pomijalna, z perspektywy tego wpisu. Każda z tych rzeczy to ok. 6 zł z dostawą (Allegro), a podłączenie jest jeszcze prostsze i nie wymaga żadnych dodatkowych elementów, jak widać na schemacie.
Do odczytu temperatury z termometru na USB służy digitemp. Opis użycia (zaczerpnięty stąd).
Instalacja pakietu:
apt-get install digitemp
Skanowanie układów:
digitemp_DS9097 -i -s /dev/ttyUSB0
Odczyt wartości:
digitemp_DS9097 -a
Bardziej zależało mi na sprawdzeniu, czy taka prosta wersja faktycznie będzie działać – w wielu miejscach podawane są bardziej skomplikowane schematy. Faktycznie, działa. Rozwiązanie zlutowane na krótko, bez żadnego przewodu ma jednak tę wadę, że moduł PL2303HX grzeje się na tyle, że wpływa na odczyt temperatury. Myślę, że ok. 10 cm kabla załatwi temat, ale gdyby ktoś był zainteresowany to można pomyśleć od razu o kupnie nieznacznie droższej wersji wodoodpornej, z przewodem. Mi akurat zależało żeby kabel się nie pałętał, ale wersję z kablem można zawsze skrócić…
Oczywiście gdyby ktoś chciał całkiem nowocześnie, to teraz czujniki temperatury montuje się do ESP8266 i odczytuje po WiFi. Tyle, że w moim wypadku to byłoby niewygodne. Miałbym problem z zasilaniem, a dane i tak mają trafić do pełnoprawnego komputera, ew. do SoC z Linuksem.
Gdyby ktoś bał się, że blog skręca całkiem w tematy elektroniczne – bez obaw, będzie najwyżej parę wpisów. I raczej w ramach wspomnienia o czymś, niż jako podstawowa tematyka.
Nie trzeba iść aż w ESP8266, ale Arduino nano to całkiem dobry pomysł. Koszt u majfriendów to tyle samo co moduł UART, a jednak daje więcej możliwości.
@Vokiel Niby tak, ale porównuj jabłka z jabłkami. Z Chin czeka się typowo 2-4 tygodnie, z Polski 2-4 dni. I oba elementy są tam po ok. $0.6/szt. Trochę zależało mi na czasie.
Plus uruchomienie tego na Arduino to więcej roboty (zwł. dla mnie – mam minimalną znajomość platformy, choć oczywiście jest bardzo fajna) – tu mam pakiet ze standardowej dystrybucji i potrzebuję dwóch poleceń. Last but not least – skoro można proście i taniej i ma to być wykorzystane w konkretnym celu to „więcej możliwości” jest czysto teoretyczne.
Dla mnie skręt ciekawy.
Chcemy o elektronice! Najlepiej takie wpisy dla beginnerów 🙂
Wadą DS18B20 jest to, że niektóre egzemplarze mają tendencje do ostrego przekłamywania temperatury, nawet +/- 10C. Przez moje ręce przeszło z kilkaset sztuk i około 10% było do wyrzucenia, bo dedykowane oprogramowanie nie pozwalało na tak dużą korektę temperatury.
Oprócz tego, jest to bardzo fajny czujnik, które można podpinać praktycznie pod wszystkie dostępne na rynku płytki.