- 32 punktowa linijka LED WS2812 służąca do wskazywania temperatury,
- odczyt temperatury z maksymalnie 5 czujników DS18B20 dołączonych do wspólnej magistrali,
- ustawianie wartości temperatury reprezentowanej przez początek i koniec skali,
- zasilanie 5 V co najmniej 1 A.
Urządzenie wyróżnia się nietypowym wyglądem. Wskazywanie temperatury na pasku wielobarwnych diod LED jest czytelne nawet z dużej odległości, a dodatkowo może być ciekawą ozdobą pomieszczenia. Nieskomplikowana konstrukcja pozwala na wykonanie termometru przez każdego kto ma możliwość lutowania elementów SMD, co w dzisiejszych czasach jest konieczne, ponieważ wiele elementów nie jest dostępnych w obudowach THT.
Budowa i działanie
Urządzenie nie ma zasilacza, tę funkcję pełni dowolna ładowarka z wtykiem mini USB. Należy tylko zwrócić uwagę, aby jej wydajność prądowa była nie mniejsza niż 1 A. Optymalnym wyborem będzie ładowarka o wydajności 2 A ponieważ właśnie taki prąd mogą pobrać diody przy maksymalnej jasności świecenia kolorem białym. Napięcie 3,3 V służące do zasilania mikrokontrolera, wyświetlacza OLED i termometrów jest stabilizowane przez U3.
Pracą urządzenia steruje mikrokontroler STM32F072RBT6. Ma on cenną właściwość negowania sygnałów TX i RX interfejsu UART. Jest to istotna cecha dla tego projektu, ponieważ do transmisji danych do LED WS2812 wykorzystano właśnie interfejs UART, który w tym nietypowym zastosowaniu wymaga zanegowania wyjścia. Wydaje się, że UART nie może bezpośrednio wysterować WS2812. Gwarantowany poziom „H” dla WS2812 wynosi 0,7 Vdd co przy 5 V daje 3,5 V.
Mikrokontrolerowi zasilanemu z 3,3 V brakuje 200 mV. Można by zasilić mikrokontroler napięciem 3,6 V ale takie stabilizatory nie są łato dostępne. Ponadto, przy zasilaniu 5,2 V (takie napięcie może dostarczyć ładowarka bo jest zgodne ze specyfikacją USB) poziom „H” będzie interpretowany przy 3,62 V. Jednak dzięki budowie peryferiów STM32F072 można bez dodatkowych układów sterować WS2812. Wyjście UART mikrokontrolera może pracować jako OD(OC) – otwarty dren (otwarty kolektor), w każdym możliwym trybie, nie tylko half-duplex jak w innych mikrokontrolerach. Ponadto, praktycznie wszystkie linie GPIO, w tym UART, akceptują napięcia 5 V. W innych mikrokontrolerach możemy nie znaleźć takich rozwiązań. Ustawiając wyjście TX w tryb OD oraz podciągając je rezystorem 1,5 kΩ do 5 V powodujemy, że poziom „H” ma wartość 5 V.
Ze względu na to, że połączenie pomiędzy sterownikiem a taśmą LED może mieć znaczną długość, na płytce przewidziano miejsce na układ U4 typu 74HC(T)2G00DP. Może on pełnić rolę konwertera 3,3 V na 5 V ale tylko w wersji HCT, gdzie poziom „H” odpowiada napięciu 2,4 V lub wyższemu. Gdy zastosuje się układ serii HC, to występują takie same problemy jak w przypadku sterowania LED przez mikrokontroler.
Do komunikacji 1-Wire używany jest interfejs UART3 w trybie 1-Wire master-slave. Rezystor R8 wymusza stan wysoki w czasie bezczynności na magistrali. Układ U2 typu DS9503 zabezpiecza GPIO przed skutkami przepięć, które mogą pojawić się, gdy przewód łączący czujnik z mikrokontrolerem będzie długi. Bezpiecznik F1 zabezpiecza przed skutkami zwarcia na magistrali.
Magistrala I2C jest używana do komunikacji z opcjonalnym wyświetlaczem (nie jest on niezbędny do pracy termometru). Elementy R4, R5 podciągają linie SCL, SDA do zasilania. Nastawniki szesnastkowe SW1, SW2 pozwalają ustawić dolną i górą temperaturę reprezentowaną przez początek i koniec skali termometru. Potencjometr P2 umożliwia regulację jasności świecenia LED.