Prezentowany układ jest przystawką do komputera służącą do pomiaru temperatury oraz wilgotności powietrza. Mierzy temperaturę od -40 do 80°C z rozdzielczością 0,1°C i dokładnością 0,2°C oraz wilgotność od 0 do 100% z rozdzielczością 0,1% i dokładnością 2%. Urządzenie zostało zaprojektowanie na malutkiej płytce o wymiarach z przewagą elementów do montażu powierzchniowego, dzięki czemu może być stosowane jako przystawka do laptopa lub komputera stacjonarnego.
Jego „sercem” jest mikrokontroler ATmega8 pracujący z zewnętrznym rezonatorem kwarcowym 7,3728 MHz. Częstotliwość taktowania tak dobrano, aby błąd transmisji układu UART wynosił 0%.
Do pomiaru temperatury i wilgotności zastosowano cyfrowy czujnik DHT22 zapewniający pomiar temperatury w zakresie -40…+80°C z rozdzielczością 0,1°C i niepewnością 0,2° oraz wilgotności w zakresie 0…100% z rozdzielczością 0,1% i niepewnością 2%. Zmierzone dane prezentowane są w programie komputerowym. Do komunikacji z komputerem wykorzystano interfejs USB. W celu uproszczenia komunikacji wykorzystywano wirtualny port RS232.
Zasilanie termometru jest czerpane ze złącza USB, dlatego konieczne było wykonanie filtru z koralika ferrytowego K1 oraz kondensatora C5. Komunikacja z czujnikiem rozpoczyna się od wysłania sygnału startowego składającego się z poziomu niskiego trwającego co najmniej 18 ms oraz wysokiego przez 20…40 μs. Następnie czujnik wysyła odpowiedź w postaci poziomu niskiego i kolejno wysokiego przez 80 μs, po czym jest wysyłana ramka bit po bicie. Logicznemu zeru odpowiada poziom niski przez 50 μs oraz wysoki przez 26…28 μs, a logicznej jedynce poziom niski przez 50 μs oraz wysoki przez 70 μs. Po zakończeniu ramki czujnik wymusza poziom niski przez około 54 μs i następnie wchodzi w stan czuwania oczekując na kolejne rozkaz odczytu danych. Pełna ramka składa się z 40 bitów, czyli 5 bajtów. Bajt piaty zawiera sumę kontrolną w postaci arytmetycznej sumy temperatury i wilgotności (ramek od pierwszej do czwartej). Bajty 1 i 3 zawierają część całkowitą kolejno wilgotności i temperatury, a bajty 2 i 4 część ułamkową kolejno wilgotności i temperatury.
Program sterujący mikrokontrolerem został napisany w środowisku Bascom AVR. Podprogram odczytu temperatury i wilgotności z czujnika DHT11 jest w materiałach dodatkowych na serwerze FTP. Po odczytaniu wszystkich bitów jest sprawdzana suma kontrolna. Dane z czujnika wysyłane są w dwóch bajtach: pierwszy zawiera część całkowitą a drugi ułamkową, aby uzyskać temperaturę lub wilgotność z jednym miejscem po przecinku należy wartość całkowitą przesunąć o osiem miejsc w lewo i dodać do niej część ułamkową. Po takiej czynności uzyskuje się liczbę 16-bitową reprezentującą temperaturę wymnożoną 10 razy. Dlatego, aby uzyskać miejsce po przecinku, należy wynik podzielić przez 10. Aby nie obciążać mikrokontrolera, dane wysyłane są do komputera w postaci 16-bitowej a dzielenia jest wykonywane w programie obsługi termometru. W celu uniknięcia błędów transmisji pomiędzy mikrokontrolerem a programem komputerowym jest przesyłane dodatkowe słowo – suma kontrolna wyliczana jako suma arytmetyczna wilgotności i temperatury.
Wysyłane dane są oddzielone znakiem dwukropka. Na przykład, ramka wysyłana do komputera „227:457:684” oznacza temperaturę 22,7°C oraz wilgotność 45,7%.
Aplikację wykonano za pomocą C# .NET Framework, dlatego do jej uruchomienia jest wymagane zainstalowanie środowiska Microsoft .NET Framework w wersji 4.0 lub nowszej. Fragment programu reprezentujący obsługujący zdarzenia odebrania znaków przez port szeregowy zamieszczono na serwerze FTP. Po odczytaniu całej linii (do znaku przejścia do nowej linii) program rozdziela zmienne na trzy osobne łańcuchy znakowe i dokonuje konwersji na typ liczbowy. W kolejnym kroku jest obliczana suma kontrolna oraz porównywana z odebraną sumą kontrolną. Przy zgodności program dokonuje dzielenia zmiennych przez dziesięć w celu odzyskania jednego miejsca po przecinku. Dodatkowo, oprogramowanie pozwala na zminimalizowanie okna i przeniesienia do zasobnika systemowego, z którego może wyświetlać komunikaty o aktualnej temperaturze i wilgotności co pewien czas.