Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Prosty stołowy zegar LED (NTP)

efi222 10 Apr 2022 13:10 13092 57
Nazwa.pl
  • Witam :)

    Zdaję sobie sprawę, ze na Elektrodzie jest sporo urządzeń tego typu. Ale mimo wszystko, dorzucę do kolekcji swoją konstrukcję. :)
    Jest to dość prosty projekt zegarka stołowego z synchronizacją NTP. Pomysł narodził się jakieś 3 lata temu, kiedy to przy kolejnej zmianie czasu letniego na zimowy, przy istniejącym zegarze domowym znowu padło pytanie "jak to się ten zegar przestawia??? (6 przycisków)". Postanowiłem wtedy zbudować zegarek pozbawiony tej wady. Początkowy zamysł był taki, żeby wykorzystać DCF. Kiedy jednak poczytałem o problemach z synchronizacją, montażem anten zewnętrznych i tym podobnych, postanowiłem wykorzystać ogólnie dostępny internet i serwery NTP. I tak powstał ten zegarek. Głównym założeniem był prosty, czytelny, bez bajerów zegar, który miał zastąpić fabryczny model. Początkowo zbudowany był na Atmega16, a ostatnio ewoluował do "mniejszego" MCU.

    Urządzenie po prawidłowej konfiguracji nie wymaga żadnych czynności od użytkownika. No, może za wyjątkiem okresowego odkurzania.

    W zegarku zastosowałem wyświetlacze LED o wysokości 57mm (2.3"). Konstrukcja pozwala na zastosowanie wyświetlaczy dowolnego rozmiaru ze wspólną anodą. Na schemacie wartości rezystorów prądowych segmentów dopasowane są dla wyświetlacza AS-23011BMG-B. (4 LED na segment).

    Do budowy użyłem modułu ESP8266 (01) i Atmega8/88. Kiedy powstawał ten projekt, A8 i A88 mozna było kupić za grosze. Niestety teraz ceny są lekko chore za te MCU.
    Komunikacja między ESP a Atmega odbywa się przez UART. Czas aktualizowany jest o pełnych godzinach. Po poprawnej aktualizacji, ESP przechodzi w głębokie uśpienie. Zaoszczędza to ok 70 mA pobieranego prądu. Jeśli w czasie pobierania czasu zabraknie z jakiegoś powodu dostępu do internetu, po trzech minutach dwukropek zmienia kolor na czerwony. Zegar pracuje dalej. W chwili, gdy internet jest ponownie dostępny i nastąpi aktualizacja, dwukropek zmienia kolor na zielony.
    Urządzenie pobiera od 20 do 120 mA w zależności od jasności świecenia wyswietlacza. Dodatkowe 70mA jest pobierane przez kilka sekund w czasie synchronizacji.

    Konfiguracja zegarka odbywa się przez dowolne urządzenie z dostępem do wifi. (laptop, tablet, telefon). W tym trybie tworzony jest punkt dostępu (AP). Należy się z nim połączyć i pod konkrentym IP za pomocą przeglądarki można wyświetlić stronę ustawień zegarka.
    W ustawieniach należy wpisać SSID i hasło sieci wifi, z którą zegarek bedzie się łączył w celu pobrania czasu. Można też określić preferowane, inne niż domyślne serwery NTP i określić wyświetlanie czasu. Dostepne tryby, to:
    czas automatyczny - czas będzie automatycznie przestawiany na czas letni i zimowy.
    Pozostałe tryby ustawiają czas na sztywno jako zimowy albo letni.
    Może UNIA zrezygnuje w końcu z sezonowego przestawiania czasu i te tryby mogą być wtedy przydatne
    Jasność wyswietlacza zmienia się w 31 krokach w zależnosci od światła otoczenia.
    Przyciskami jasności można ustawić żądaną jasność świecenia wyświetlacza w określonych warunkach oświetlenia.
    Niski poziom ustawiamy w ciemnym pomieszczeniu, a wysoki w pomieszczeniu jasnym. W czasie tych ustawień można obserwować jasność wyświetlacza LED, co ułatwia ocenę jego świecenia. Najlepiej zrobić to o zmroku.

    W załączniku hex do Atmega8, 88PA, 328P, binarka do ESP8266, PCB i schemat.

    Prosty stołowy zegar LED (NTP)

    Prosty stołowy zegar LED (NTP)

    Prosty stołowy zegar LED (NTP)

    Prosty stołowy zegar LED (NTP)

    Prosty stołowy zegar LED (NTP)

    Prosty stołowy zegar LED (NTP)

    Prosty stołowy zegar LED (NTP)

    Prosty stołowy zegar LED (NTP)

    Wyswietlacz w czasie konfiguracji.
    Prosty stołowy zegar LED (NTP)

    Prosty stołowy zegar LED (NTP)

    Menu konfiguracji.
    Prosty stołowy zegar LED (NTP)

    I to chyba wszystko. Pozdrawiam :)
    Poprawiony schemat

    Prosty stołowy zegar LED (NTP)

    Cool? Ranking DIY
    About Author
    efi222
    Level 13  
    Offline 
    efi222 wrote 166 posts with rating 550. Live in city Toruń. Been with us since 2019 year.
  • Nazwa.pl
  • #2
    Simon79
    Level 20  
    Ładne, estetyczne wykonanie, ciekawa konstrukcja i obudowa. Zegarków nigdy za dużo.
    Mój fabryczny zegarek synchronizowany siecią potrafi spóźnić się minutę w tydzień lub dwa, więc synchronizacja po wifi jest interesująca.
  • Nazwa.pl
  • #3
    TechEkspert
    Editor
    Super konstrukcja, pomysł, wykonanie oraz bardzo estetyczna obudowa.

    Jest coś zaskakującego w schemacie, Atmega o mniejszych możliwościach robi całość związaną z zegarkiem a ESP o znacznie większych możliwościach jako dostawca czasu z NTP.
  • #4
    efi222
    Level 13  
    Zgadzam się z kolegą. ESP to big maszyna w porównaniu z Atmega. Zastanawiałem się juz kiedyś, żeby przerzucić całe oprogramowanie na ESP, ale doszedłem do wniosku, że i tak trzeba dołożyć dodatkowe peryferia sprzętowe do obsługi wyswietlaczy LED. Dla małych wyświetlaczy gdzie 5V wystarcza do ich zasilania znalazłyby się jakieś dedykowane układy, ale przy zasilaniu dużych wyswietlaczy, gdzie na segment składają się 4 LED i spadek wynosi ok 8 - 9 V i tak trzeba stosować drivery i zasilić wszystko wyższym napięciem. Atmega8 jeszcze niedawno kosztowała 4PLN u chinczyka, no i zostało tak jak zostało :)
  • #5
    khoam
    Level 42  
    Jeżeli do napisania firmware dla ESP użyłeś jakichkolwiek bibliotek arduinowych lub ich modyfikacji, to źródła tego firmware są niejako z "automatu" na licencji GPL.

    Dodano po 5 [minuty]:

    TechEkspert wrote:
    Jest coś zaskakującego w schemacie, Atmega o mniejszych możliwościach robi całość związaną z zegarkiem a ESP o znacznie większych możliwościach jako dostawca czasu z NTP.

    Autor użył modułu ESP-01, więc praktycznie może korzystać jedynie z UART. Potraktował po prostu ten moduł jako programowalną kartę sieciową, a że procesor na tej karcie jest kilkanaście razy mocniejszy niż atmega8 to inna sprawa :)
  • #7
    khoam
    Level 42  
    dktr wrote:
    A wystarczyłby tylko ESP-01 i MAX7219. Mimo wszystko bardzo ładnie wykonane.

    Tak, jak w np. w tym projekcie: Link
  • #9
    Sam Sung
    Level 32  
    Ładna obudowa.
    Sądząc po zdjęciach, chyba nie udało się dobrać odcienia zielonego dwukropka do cyfr.
    Czy tranzystor BC337 do sterowania resetem ESP jest potrzebny - nie możnaby wprost z portu?
    Do czego służy połączenie Tx z ATmegi przez 1k do Rx w ESP? Tj. co wysyła ATmega do ESP?
    Proponuję załączyć schemat tak jak pozostałe obrazki, będzie łatwiej go obejrzeć niż wypakowywać z zipa (w którym i tak nie ma źródeł).
  • #10
    TechEkspert
    Editor
    Z mojej strony nie była to krytyka rozwiązania a jedynie wyraziłem swoje odczucie kontrastu technologii jakie zauważyłem na schemacie.

    Ponieważ nie jest to produkcja seryjna to można robić co się chce, Atmega posłużył jako programowalny sterownik multipleksowanego wyświetlacza + funkcje zegara. Podczas uruchamiania jest nawet mniejsze ryzyko, że w wyniku błędu zatrzymamy multipleksowanie na Atmedze niż na ESP otoczonym ekspanderami.

    W fabrycznych produktach często spotykałem moduł wyświetlacza/klawiatury/panela ze swoim własnym mikrokontrolerem, całość była połączona zasilaniem+komunikacją z modułem głównym.
  • #11
    efi222
    Level 13  
    Dwukropek jest jest zielony. Na zdjęciu tylko tak wygląda. Trudno sie fotografuje świecące LED. Na kolor jego świecenia mają wpływ dwa rezystory. Jeden zasila czerwony LED, a drugi Zielony. Ich wartościami można "dostroić" barwę świecenia zbliżoną do segmentów.
  • #12
    TechEkspert
    Editor
    LEDy rzeczywiście fatalnie się fotografuje, albo są "przepalenia" na zdjęciu albo nie naturalny kolor lub barwa. Oko widzi to inaczej.
    W niektórych zegarkach widziałem dwa środkowe wyświetlacze LED zamontowane odwrotnie tak aby kropki dziesiętne pojawiły się u góry i u dołu tworząc migający dwukropek zegarka. Wadą jest niewielki odstęp między wyświetlaczami. Kiedyś w ofercie wyświetlaczy widziałem "moduł dwukropka" o wysokości wyświetlacza 7-mio segmentowego, nie pamiętam jaki to był producent i to raczej rzadka sprawa.

    Co do zdjęć wyświetlaczy to próbowałem kiedyś pokazać różnicę między LED a VFD, każdy kto widział VFD zgodzi się, że film lub zdjęcie tego nie oddaje:


  • #13
    efi222
    Level 13  
    Sam Sung wrote:
    Ładna obudowa.
    Sądząc po zdjęciach, chyba nie udało się dobrać odcienia zielonego dwukropka do cyfr.
    Czy tranzystor BC337 do sterowania resetem ESP jest potrzebny - nie możnaby wprost z portu?
    Do czego służy połączenie Tx z ATmegi przez 1k do Rx w ESP? Tj. co wysyła ATmega do ESP?
    Proponuję załączyć schemat tak jak pozostałe obrazki, będzie łatwiej go obejrzeć niż wypakowywać z zipa (w którym i tak nie ma źródeł).

    No tak... Na schemacie brakuje przycisku konfiguracji podłączonego do Atmegi do portu PD6. Atmega wysyła kilka polecen do ESP. Np. że pobrała czas i wysyła informację o uśpieniu ESP. Po wybudzeniu ESP wysyła polecenie o pobranie czasu. A rezystor miedzy TX i RX napewno wywoła burzę. ESP zasilany jest 3.3V, a ATmega z 5V. Rezystor ogranicza prąd, który mogłby być większy przy połączeniu tych dwóch portów. Rozwiązanie prymitywne, ale sprawdza się przez kilka lat bezawaryjnie.
    Wrzucilem poprawiony schemat.
    Konstrukcja obudowy opisana tutaj:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=19277647#19277647
  • #15
    khoam
    Level 42  
    efi222 wrote:
    Max7219 nie wystarczy. Jego maksymalne zasilanie to 6V.

    To prawda. Jakby kogoś interesowało, to firma Maxim Integrated zaleca rozwiązania dla napięć wyższych: Link

    efi222 wrote:
    A rezystor miedzy TX i RX napewno wywoła burzę. ESP zasilany jest 3.3V, a ATmega z 5V. Rezystor ogranicza prąd, który mogłby być większy przy połączeniu tych dwóch portów. Rozwiązanie prymitywne, ale sprawdza się przez kilka lat bezawaryjnie.

    Moim zdaniem w tym konkretnym przypadku jest to rozwiązanie wystarczające.
  • #16
    tmf
    Moderator of Microcontroller designs
    efi222 wrote:
    Max7219 nie wystarczy. Jego maksymalne zasilanie to 6V. opisałem to w #4.

    Polecam SCT2024 - 16 segmentów, stały prąd ustawiany jednym rezystorem, do 17 V na segment, interfejs SPI.
    A projekt bardzo fajny. Czemu nie zasiiłeś MCU też z 3,3V? Byłoby prościej bo kilka elementów mniej.
  • #17
    efi222
    Level 13  
    Ja sobie zdaje sprawę, że podobne urządzenie można zaprojektować na 100 sposobów :)
    Jestem amatorem w dziedzinie elektroniki jak i programowania. Często dopasowuję projekt do swojej aktualnej wiedzy...
    Ale dzięki za wszystkie informacje. Zawsze się przydadzą do kolejnych konstrukcji :)
  • #18
    Anonymous
    Level 1  
  • #19
    thereminator
    Conditionally unlocked
    Świetny projekt. Schludne i eleganckie wykonanie. Szukałem właśnie czegoś podobnego - zegara na dużym wyświetlaczu z radiobudzika wyświetlającego czas systemowy z PC, ale twój z NTP jest lepszy i praktyczniejszy. Muszę tylko sprawdzić czy da się zaadaptować wspomniany wyświetlacz do tego projektu. Jak nie - pozostanie wykonanie 1:1.

    Uprzejmie proszę - jak sądzę, nie tylko w swoim imieniu - o dodanie płytek w formacie.pdf do samodzielnego naprasowania.
  • #21
    efi222
    Level 13  
    konrad1704 wrote:
    Cześć.
    Bardzo fajny projekt. Estetyczne wykonanie. Duża czytelność!!
    Czy wiesz jaki jest calkowity koszt części ?
    Z czego zrobiona jest obudowa?
    Czy płytkę przy braku możliwości zrobienia samodzielnie można gdzieś zamówić ?
    Pozdrawiam
    Konrad

    Dodano po 12 [minuty]:

    Czy masz może pełna listę użytych części ?


    Ramka obudowy zrobiona jest z MDF 6mm oklejonego okleiną samoprzylepną i przyklejona na silikon czarny do szyby antisol czarny 6mm.
    Można też spróbować z antisolem 4mm. Nie przyciemnia tak bardzo.
    Tył obudowy to polistyren 1 mm . W razie problemów dostarcze rysunki.
    Tutaj w skrócie jest to opisane.
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=19277647#19277647
    Całkowity koszt jest uzależniony jest od miejsca zakupów. Teraz sporo się zmieniło jesli chodzi o ceny MCU i inne.
    Płytki robię samodzielnie. Dla zamówienia w firmie pewnie trzeba je jakoś przygotować. Nigdy tego nie robiłem.
    Ale myślę , ze są tu specjaliści, którzy sobie z tym poradzą. W paczce płytki zaprojektowane w Sprint Layout 6.0
    Listy części nie mam, ale to proste urządzenie. Można je spisać ze schematu :)

    thereminator wrote:
    Świetny projekt. Schludne i eleganckie wykonanie. Szukałem właśnie czegoś podobnego - zegara na dużym wyświetlaczu z radiobudzika wyświetlającego czas systemowy z PC, ale twój z NTP jest lepszy i praktyczniejszy. Muszę tylko sprawdzić czy da się zaadaptować wspomniany wyświetlacz do tego projektu. Jak nie - pozostanie wykonanie 1:1.

    Uprzejmie proszę - jak sądzę, nie tylko w swoim imieniu - o dodanie płytek w formacie.pdf do samodzielnego naprasowania.


    Jesli wyświetlacz od radiobudzika jest typowy, ze wspólną anodą, powinien pasować. Chciaż spotkałem się z różnymi wynalazkami w produktach fabrycznych. I raczej potrzebna będzie korekta rezystorów prądowych segmentów.
    Płytki do termotransferu w pdf dodałem do pierwszego postu. Przy konwersji do pdf pojawiło sie troche śmieci. Proponuję też zrobić wydruk próbny, czy skala jest odpowiednia. Z wydrukami pdf różnie bywa.
    Ale można też spróbowac wydruku w Sprint Layout Viewer.

    sq3evp wrote:
    Ładnie wykonane, czy dałoby się zrobić coś mniejszego?
    Czy przeróbka na Arduino z jakimś mniejszym wyświetlaczem jest możliwa?


    Nie budowałem nic na oryginalnych płytkach Arduino. Ale wydaje mi się, że taka konstrukcja bedzie większa sprzętowo i bardziej zagmatwana.
    Ale to może niech się wypowiedzą specjaliści od Arduino :) Soft napisany jest w Arduino IDE dla płytki MiniCore.
    Dla mniejszych wyświetlaczy dla których wystarczy zasilanie 5V (czyli wysokość jakieś 16mm) można pozbyć się driverów ULN2003 w projekcie i zrobić małą korektę w sofcie.
    Płytka nieco się wtedy zmniejszy.
  • #22
    sq3evp
    Level 33  
    Znalazłem projekt - Arduino Nano + karta Wifi albo Ethernet + wyświetlacz + zasilanie.
    Pomysł ciekawy, ktoś już zrobił jest kilka projektów.
    Pomysł chwalę tylko pytanie było czy nie da się na Arduino.
  • #23
    efi222
    Level 13  
    Chyba się nie rozumiemy... Napisz proszę, co rozumiesz przez nazwę Arduino. Bo pod tą nazwą kryje się mnóstwo sprzętu.
    A okreslenie Arduino Nano + karta Wifi albo Ethernet + wyświetlacz + zasilanie to za mało danych. Nie wiem, czy to jest jeden moduł, czy kilka modułów połączonych ze sobą.
    Trzeba jeszcze wiedzieć jak to wszystko jest ze sobą połączone i wtedy napisać do tego odpowienie oprogramowanie.
    I pewnie się da :)
  • #24
    sq3evp
    Level 33  
    Arduino = platforma w moim rozumieniu, czyli tak jak piszesz różne moduły. W tym przypadku chodzi mi o płytkę z mikrokontrolerem (jakaś ATmega zależnie od wersji i producenta). Różnią się głownie µC, dostępną pamięcią i budową fizyczną płytki.
    Karta Wifi albo Ethernet = tzw. "hat" albo "shield" czyli nakładka do Arduino z interfejsem Wifi lub Ethernet.
    Reszta jest chyba zrozumiała.
  • #25
    efi222
    Level 13  
    Przykro mi, ale nie znam topografii płytek Arduino, czy jest to moduł z Atmega , czy z ESP, więc nie jestem w stanie odpowiedzieć, czy softy tego zegarka bedą poprawnie działać na takich modułach.
  • #26
    khoam
    Level 42  
    sq3evp wrote:
    Karta Wifi albo Ethernet = tzw. "hat" albo "shield" czyli nakładka do Arduino z interfejsem Wifi lub Ethernet.

    Na pewno się "da", jeżeli Autor sam przyznał, że napisał program z użyciem środowiska Arduino. Pozostaje kwestia konfiguracji Arduino IDE czy PlatformIO dla konkretnej płytki, które potocznie (i całkowicie mylnie) określane są jako "Arduino" oraz ewentualna korekcja numerów użytych portów. Oczywiście dopóki Autor nie udostępni kodów źródłowych, dyskusja ma charakter akademicki.
  • #27
    efi222
    Level 13  
    Szczerze, to wątpię żeby komuś się chciało robić zmiany w tym sofcie. Kilkadziesiąt użytkowników pobrało hexy i nikt nie wspomniał o kodach żródłowych. Ale jeśli ktoś jest ambitny może sobie pobrać żródła z artykułu Stacja pogodowa z zegarem NTP . Tam też jest zegarek NTP i może sobie wyciagnąć odpowiednie funkcje. Troche własnej inicjatywy nikomu nie zaszkodzi :)
  • #29
    khoam
    Level 42  
    efi222 wrote:
    Szczerze, to wątpię żeby komuś się chciało robić zmiany w tym sofcie.

    Ale za to można odnajdywać i usuwać błędy w programie :)
  • #30
    sq3evp
    Level 33  
    khoam wrote:
    efi222 wrote:
    Szczerze, to wątpię żeby komuś się chciało robić zmiany w tym sofcie.

    Ale za to można odnajdywać i usuwać błędy w programie :)


    Soft do Arduino jest zazwyczaj w C i tez można sobie w nim dłubać