Przygotowując się do zimy, postanowiłem zainwestować w nawilżacz powietrza. Wybór padł na urządzenie Smartmi Evaporative Humidifier 2 (SKV6004EU), czasem nazywane Xiaomi, bo ładnie się integrowało z domową automatyką i nie wymagało drogich filtrów. Postawiłem na urządzenie z rynku wtórnego, bo i na urządzenie nie chciałem wydawać na nie zbyt dużych pieniędzy.
Po kilku miesiącach pracy nawilżacz jednak postanowił odmówić współpracy – wystąpiła w nim bardzo powszechna awaria czujnika poziomu wody. Czytałem gdzieś o tym problemie jeszcze na etapie zakupu urządzenia i kojarzyłem, że społeczność już się z nim uporała, więc bez większego namysłu zamówiłem układ Attiny85 i ochoczo zabrałem się za rozbiórkę urządzenia. Bardzo przydatny okazał się ten filmik, mimo że dotyczy starszego modelu
Zdjęcie górnej pokrywy jednak było dla mnie niemałym zaskoczeniem – pod spodem ukazała się płytka zupełnie inna niż we wszystkich opisach naprawy – próżno było szukać modułu odpowiadającego za odczyt poziomu wody.
Zacząłem więc rozbierać resztę urządzenia aby sprawdzić, czy czegoś nie pominąłem.
Po rozmontowaniu urządzenia udało mi się określić, że moduł którego szukam znajduje się przy gnieździe zasilania a łączy go z płytą główną jeden przewód. Postanowiłem go odpiąć, żeby zobaczyć co się stanie. Urządzenie nie zareagowało, co uznałem za dobry znak – oznaczało to, że tym przewodem musi iść komunikacja z nieszczęsnym czujnikiem i przy odrobinie szczęścia uda się go zastąpić układem przeznaczonym do starszego modelu.
Do przygotowania emulatora potrzebny był odpowiednio zaprogramowany układ scalony Attiny85 – miał za zadanie wysyłać do urządzenia sygnał, że zbiornik wody jest pełny.
Do zaprogramowania układu potrzebne jest Arduino IDE, doposażone w biblioteki Digispark Attiny. Oprogramowanie do emulowania czujnika napisał Tomas Vilda i udostępnił na swoim githubie.
Aby wgrać kod na attiny, ustawiamy w Adruino IDE Board: na Digispark (Default – 16.5MHz) oraz Programmer na Micronucleus, kopiujemy kod z repozytorium Tomasa a następnie klikamy upload – jeśli wszystko pójdzie dobrze, to Arduino IDE poprosi nas w pewnym momencie o podłączenie płytki do komputera – podłączamy ją do dowolnego portu USB przewodem microusb
Po wszystkim powinniśmy zobaczyć komunikat:
Micronucleus done. Thank you!
Następnie musimy jakoś podłączyć to do naszego urządzenia. Nie chciałem ciąć oryginalnego przewodu, ale udało mi się określić jaki typ złącza wykorzystuje moduł czujnika – okazało się, że jest to JST PH-2.0 5-pin. Na spodzie płyty głównej znajdowała się rozpiska pinów.
Wystarczyło podpiąć 5v i gnd modułu do odpowiednio opisanych przewodów wtyczki oraz Rx do P2 i urządzenie wróciło do żywych.
Wadą obecnego rozwiązania jest to, że moduł oszukuje urządzenie wysyłając cały czas sygnał o pełnym zbiorniku wody, więc trzeba ręcznie sprawdzać, czy woda wciąż znajduje się w zbiorniku. Widziałem na githubie inne rozwiązania, wykorzystujące też czujnik poziomu wody, ale pochylę się nad nimi kiedy indziej – póki co cieszę się z uruchomionego i (wystarczająco 😉 ) sprawnego nawilżacza.