logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1

p.kaczmarek2 13 Gru 2023 11:42 1494 2
  • Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Zapraszam na pierwszą część konstrukcji DIY wykonanej z elektrośmieci. Będzie to prosty zegar/kalendarz/miernik temperatury/wilgotności oparty o wyświetlacz ze starego radia samochodowego, bazujący na module WB2S od czytelnika i zasilany z zasilacza ze starego odtwarzacza DVD. Na WB2S postawię i skonfiguruję OpenBeken, które wzbogacę też o sterownik dla wspomnianego wyświetlacza oraz funkcjonalność przesuwania tekstu. Wszystko będzie mogło współpracować z Home Assistant po MQTT.
    Pomiar temperatury i wilgotności odbędzie się na DHT11, który miałem po poprzednim projekcie.

    Pochodzenie wyświetlacza, pierwsze jego uruchomienie
    Historię tego wyświetlacza opisałem w temacie:
    Wnętrze radia samochodowego, uruchomienie LCD z PT6523 na Arduino
    Moduł gotów do akcji:
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1

    Zasilanie konstrukcji
    Chyba część forumowiczów zwróciła uwagę na to, że czasem umieszczam krótkie tematy o złomowaniu sprzętów w dziale "Wnętrza urządzeń". Nie będzie zatem raczej zaskoczeniem fakt, że użyłem zasilacza ze starego odtwarzacza DVD bądź podobnego sprzętu:
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1 Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Na samym początku chciałem użyć 5V z USB, ale nie miałem akurat pod ręką przetwornicy step up, a podświetlenie wyświetlacza wymaga nieco wyższego napięcia, około 11V przy prądzie 14mA:
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1

    Użyty moduł WiFI
    Czasami ludzie wysyłają mi moduły BK7231 które zastąpili klasycznymi modułami opartymi o ESP8266. Najwięcej mam popularnych CB2S i WB2S, nieco też CB3S i WB3S (ale te trudniej wylutować, więc dostaję ich mniej), więc wybór padł na WB2S:
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Miałem już na niego wgrany OpenBeken.

    Kontrola podświetlenia
    Do tego starczył tylko tranzystor i dwa rezystory. BK7231 kontroluje jego bazę, którą podłączyłem do jednego z pinów PWM:
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Po stronie OBK skonfigurowałem pin PWM, dla OBK jest to taka sama konfiguracja jak jednokolorowej lampki LED lub paska:
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1

    Sterownik PT6523
    Sterownik PT6523 dla OpenBeken napisałem od 0, natomiast czcionkę bazowałem na gotowym przykładzie z Githuba, by nie musieć samodzielnie testować który bit odpowiada za który fragment.
    Zupełnie osobno napisałem też sterownik TextScroller, który służy do przewijania tekstu. Całość działa w ten sposób, że TS przewija tekst i wysyła go potem do aktywnego sterownika wyświetlacza, więc ta metoda wspiera wiele różnych wyświetlaczy.
    Szczegóły są na moim repo:
    https://github.com/openshwprojects/OpenBK7231T_App


    Skrypt autoexec.bat OpenBeken
    Teraz najciekawsze - czyli to, co widzi użytkownik. Uruchomienie sterownika nie wymaga rekompilacji firmware. Wszystko jest skryptowalne. Oto, jak to u mnie wygląda:
    
    startDriver PT6523
    startDriver TextScroller
    startDriver NTP
    led_enableall 1
    
    
    again:
    TS_Clear
    TS_Print 0 2 $hour 1
    TS_Print 2 1 "-"
    TS_Print 3 2 $minute 1
    
    TS_Print 5 2 "  "
    TS_Print 7 4 $year 1
    TS_Print 11 1 "-"
    TS_Print 12 2 $month 1
    TS_Print 14 1 "-"
    TS_Print 15 2 $mday 1
    
    delay_s 10
    goto again
    

    Powyższy skrypt najpierw uruchamia sterowniki, osobno ten konkretny wyświetlacz co mam oraz osobno uniwersalny TextScroller, oraz dodatkowo sterownik NTP do pobrania czasu z internetu.
    Następnie załącza podświetlenie, które dla OBK jest sterowane tak jak pasek LED.
    Potem, już w pętli, odświeżany jest wyświetlacz poprzez komendę TS_Print i użycie odpowiednich specjalnych słów kluczowych pozwalających na dostęp do parametrów czasu i daty.
    Te wszystkie słowa kluczowe były już gotowe w OpenBeken, więc po prostu składałem całość z gotowych elementów.

    Nieco później skrypt ulepszyłem. Teraz uwzględnia on też odczyty z DHT11. DHT11 jest podłączony na jednym z wolnych pinów WB2S oraz skonfigurowany tak, by zapisywać odczyty do kanałów 2 i 3:
    
    startDriver PT6523
    startDriver TextScroller
    startDriver NTP
    led_enableall 1
    
    
    again:
    TS_Clear
    TS_Print 0 2 $hour 1
    TS_Print 2 1 "-"
    TS_Print 3 2 $minute 1
    
    TS_Print 5 2 "  "
    TS_Print 7 4 $year 1
    TS_Print 11 1 "-"
    TS_Print 12 2 $month 1
    TS_Print 14 1 "-"
    TS_Print 15 2 $mday 1
    TS_Print 17 3 "   "
    TS_Print 20 2 $CH3 1
    TS_Print 22 1 "H"
    setChannel 10 $CH2/10
    TS_Print 23 1 " "
    TS_Print 24 2 $CH10 1
    TS_Print 26 1 "C"
    // Ch 2 - temperature, Ch 3 - humidity
    
    
    
    delay_s 10
    goto again
    

    Powyższy skrypt można zmodyfikować wedle uznania.

    Efekty:
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Poziom podświetlenia możemy samodzielnie zmodyfikować dla najlepszego kontrastu. W razie potrzeby można by też spróbować oskryptować go tak, by reagował na poziom oświetlenia w pokoju.

    Podsumowanie
    To była pierwsza, "elektroniczna" część konstrukcji. W drugiej części zajmę się obudową.
    Utworzony układ działa zadowalająco, pomiary z DHT11 są również przesyłane do Home Assistant (dzięki automatycznemu HASS Discovery w OBK), a również w razie potrzeby mogę przesyłać z HA wiadomości na wyświetlacz poprzez MQTT.
    Home Assistant widzi automatycznie również kontrolę podświetlenia (ON/OFF oraz dobór jasności), jest to z poziomu MQTT tożsame z kontrolą np. paska LED.
    Układ można by ulepszyć, chociażby tak by zasilany był z 5V z USB i być może taką modyfikacją też wprowadzę. Został chyba jeden wolny pin PWM WB2S, można by go do tego wykorzystać... ale o tym w kolejnej części.
    Oczywiście, w zależności tylko od tego ile mamy wolnego GPIO, do takiego modułu z OBK można podłączyć dużo urządzeń sterowalnych z Home Assistant, przykładowo przekaźników lub czujników (np. oświetlenia), a nawet odbiornik IR, ale tym razem nie miałem takiej potrzeby.

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
  • #2 20859633
    Mateusz_konstruktor
    Poziom 35  
    p.kaczmarek2 napisał:
    Na samym początku chciałem użyć 5V z USB, ale nie miałem akurat pod ręką przetwornicy step up, a podświetlenie wyświetlacza wymaga nieco wyższego napięcia, około 14mA:
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1
    Zegar z wyświetlaczem temperatury/wilgotności i czasem z internetu na WB2S - część 1

    Napięcie w żadnym przypadku nie jest wyrażane w miliamperach.
    W tym zdaniu czegoś zabrakło.
    Czy Kolega nie miał na myśli "napięcia 11V i poboru prądu o natężeniu około 14mA"?
  • #3 20859645
    p.kaczmarek2
    Moderator Smart Home
    Rzeczywiście, słuszna uwaga. Chyba coś mi "zjadło" środkowy fragment zdania. Teraz skorygowałem pierwszy post, dziękuję.
    Pomogłem? Kup mi kawę.
REKLAMA