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

Matrycowy zegar LED z termometrem i WiFi

pirotechnik1212 27 May 2020 19:16 4554 15
  • Witam,
    dziś postanowiłem przedstawić szerszej publiczności mój ostatni projekt jakim jest zegar LED. Nie będę ściemniać, że jest on wyjątkowy i innowacyjny, ale po raz pierwszy od dłuższego czasu (w moim mniemaniu) udało mi się zrobić coś co działa i nawet nie odraża swoim wyglądem (choć kto wie jak dla innych... :D ).
    Zegar wykorzystuje cztery matryce LED 8x8 punktów z sterownikiem MAX7219. Procesorem sterującym całością jest ESP8266 a układ zegara RTC to DS3231. Zegar oprócz wyświetlania czasu potrafi wyświetlać temperaturę, wilgotność i ciśnienie. Do tego celu korzysta z DHT22 zamontowanego na tyle obudowy i BMP280 w jej środku (ten czujnik i wyświetlanie ciśnienie to bardziej opcja).
    Zegar potrafi pobierać czas z internetu - na moim serwerze znajduje się skrypt w PHP, który odpytany, zwraca datę w JSON. ESP to dekoduje i wpisuje do RTC. Zegar nie ma żadnych przycisków do ustawiania godziny, w całości opiera się o czasie z internetu. Dodatkowo RTC jest podtrzymywany bateryjnie, wiadomo, zegar wystartuje wcześniej niż router i wtedy nie mógłby zaktualizować czasu od razu. Poza tym, chciałem nieco wykorzystać miejsce na płytce :D
    Płytka zaprojektowana w Eagle i wykonana w Chinach przez JLCPCB - to była moja pierwsza płytka zamawiana w Chinach i w ten sposób chciałem sprawdzić tą drogę robienia PCB. Nie jest idealna, ale spełnia swoje zadanie. Projekt płytki dwustronnej powstał właśnie po to by zobaczyć jak będzie to wyglądać w wykonaniu z fabryki. Nigdy wcześniej nie projektowałem płytek dwustronnych, więc warstwa bottom jest dość mało zagospodarowana.
    Jasność ekranu jest regulowana na podstawie odczytu z ADC, do którego podłączony jest dzielnik napięcia z fotorezystorem. Pozwala to na zmniejszenie jasności nocą i podbicie jej w dzień.
    Całość zasilana jest z zasilacza wtyczkowego 5V 500mA, który podłącza się z tyłu do złącza DC 5.5/2.1mm. Pobór prądu waha się od 1,5 do 2,5W w zależności od jasności świecenia wyświetlacza.
    Program powstał w Arduino - co zapewne części forumowiczów się nie spodoba :D napisany trochę niechlujnie, ale spełnia swoje zadanie. Korzystam z biblioteki MD Parola do obsługi wyświetlacza, dodatkowo oczywiście biblioteki do obsługi każdego z peryferiów.
    Poza wyświetlaniem danych, zegar również wysyła je na serwer. Zbieram je przy pomocy skryptu PHP do bazy danych, skąd dane mogą być potem pobierane do wyświetlania np. wykresy itp. Domyślnie zegar wysyła pomiary co 5 minut.

    Miałem problem wyświetlaczem, jeden z segmentów (pierwszy od frontu, ostatni od strony przewodów) po kilku godzinach przestawał odpowiadać. Pomogło wlutowanie kondensatorów na zasilaniu w jego okolicach (100nF i 100uF). Widać je na jednym ze zdjęć.

    Poniżej kilka zdjęć, schemat oraz podgląd płytki.
    Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi
    Po więcej szczegółów (zdjęć a nawet gifów z działania oraz kodu programu i plików projektu) zapraszam na moją stronę.

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    pirotechnik1212
    Level 15  
    Offline 
    Has specialization in: technik elektronik, informatyk
    pirotechnik1212 wrote 187 posts with rating 44, helped 16 times. Live in city Płock. Been with us since 2009 year.
  • #2
    khoam
    Level 42  
    Podoba mi się ten zegarek i jest starannie wykonany. Chciałbym taki ;)
    Ale jest też łyżka dziegciu: umiejscowienie ESP nie jest do końca zgodne z zaleceniem producenta:

    Matrycowy zegar LED z termometrem i WiFi

    Edit: ze strony WWW umieszczonej na płytce wyczytałem, że "Zastosowanie pamięci EEPROM ma umożliwić zachowanie pomiarów w pamięci w przypadku braku połączenia z serwerem." Nie lepiej SPIFFS w ESP i bez dodatkowych układów?
  • #3
    pier
    Level 24  
    A ja się zapytuję do czego autor wykorzystuje taką dokładność pomiarów? Szczególnie wilgotności.
    A i jeszcze jedno. Do czego Wykorzystujesz pamięć 24C...
  • #4
    pirotechnik1212
    Level 15  
    Zapewne okolica wokół anteny modułu ESP ma spore znaczenie w jakości sygnału itp. jednak jeśli zegar znajduje się kilka metrów od routera nie robi to większej różnicy. Biblioteka ESP do Eagle zawierała warstwę Restrict wokół anteny, tak więc poza laminatem nie ma pod nią żadnej miedzi. Jednak oczywiście, na pewno to nie jedyna rzecz, która nie jest zgodna z zaleceniami producenta, czy dokumentacją poszczególnych elementów składowych. Niedociągnięcia te na szczęście nie przekreślają działania układu zgodnie z założeniem :D

    Po co taka dokładność? Hmmm... chyba głównie dlatego, że się da. Czujnik DHT22 występuje w obudowie, która spełniała moje założenia tzn dało się ją przykręcić od zewnątrz obudowy oraz wyglądała w miarę estetycznie. Dokładność tego czujnika oraz "w opór" pamięci w mikrokontrolerze aby bez skrupułów używać zmiennych float sprawiły, że wilgotność jest z taką a nie inną dokładnością. Pomiary te zbieram do bazy danych, choć na chwilę obecną nie służą mi do żadnych "wyższych celów", po prostu mam małego fioła na tym punkcie :wink: To już któreś z kolei urządzenie, które zbiera dane typu temperatura, wilgotność itp do bazy danych. Z resztą, nawet moja praca inżynierska opisywała budowę stacji meteorologicznej - swoją drogą właśnie pracuję nad jej wersją 2.0, którą jak dobrze pójdzie również tutaj zaprezentuję.

    Odnośnie pamięci... tutaj sprawa wygląda dość zabawnie? głupio? Ale po prostu miałem ich dość sporo, płytka do JLCPCB może mieć 10x10cm w najniższym progu cenowym. Sam układ również był dość prosty, więc ta pamięć to przepis jak skomplikować układ tylko po to by był bardziej skomplikowany :P Skoro już płacę za wykonanie PCB, to niech coś się na nim dzieje! W założeniu (jeszcze nie zrealizowanym) mają być w niej zapisywane pomiary w przypadku gdy z jakichś względów nie można ich wysłać na serwer. Serwer zwraca w JSON informację o błędzie zapisu, tak samo cała funkcja wysyłania danych może zwrócić błąd w przypadku nieudanego wysłania pomiaru np. brak WiFI albo internetu. Na tej podstawie pomiary wraz z datą z RTC mają być zapisywane w pamięci by później je wysłać "hurtem" gdy połączenie powróci. Skrypt przyjmujący dane po stronie serwera - jeśli nie dostrzeże daty i czasu w przesłanych danych, do bazy wstawi datę z serwera. Ale jeśli w przesłanych danych będzie data, to zapisze tą, którą otrzymał czujnika. Dzięki temu teoretycznie możliwe jest wysyłanie zaległych pomiarów z zachowaniem dobrej daty pomiaru. Zdaję sobie sprawę, że na pewno można to było zrobić lepiej, bez dodatkowych układów czy użyć czegoś lepszego. Decyzja zapadła kila miesięcy temu, już podczas oczekiwania na dostawę płytki z Chin miałem refleksje, jak mógłbym coś zrobić inaczej, ale wtedy to już za późno na zmiany.
  • #5
    zgierzman
    Level 31  
    Spojrzałem na zdjęcia, na przykład to:

    Matrycowy zegar LED z termometrem i WiFi

    I zastanawiam się, dlaczego płytka nie jest cynowana?
    Przyjąłbym zakład, że nie ma różnicy w cenie, dlaczego więc pola lutownicze to goła miedź?
    Nie trzeba wiele czasu, żeby lutowanie czegoś takiego straciło urok, bo miedź szybko się utlenia. Co więcej, nawet nie wiedziałem, że można zamówić bez cynowania, bo HASL jest tam (JLCPCB) w standardzie...
  • #6
    khoam
    Level 42  
    zgierzman wrote:
    Co więcej, nawet nie wiedziałem, że można zamówić bez cynowania, bo HASL jest tam (JLCPCB) w standardzie...

    Może to jest ENIG-RoHS ;)
  • #7
    pirotechnik1212
    Level 15  
    Płytka jest pocynowana, jednak po prostu zdjęcia z jakiego względu nie oddały prawdziwego koloru padów. Załączam dwa nowe wykonane w innym oświetleniu.
    Matrycowy zegar LED z termometrem i WiFi Matrycowy zegar LED z termometrem i WiFi
    Ogólnie z jakości wykonania płytki w JLCPCB jestem bardzo zadowolony. Na początek wykonałem tam dwa projekty aby sprawdzić z czym to się je i czy podczas projektowania nie skaszaniłem czegoś co przekreślałoby prawidłowe wykonanie płytki dwustronnej w fabryce. Teraz już wiem, że wkrótce zamówię tam kolejne PCB bo efekt jest znakomity :D
  • #8
    adversus
    Level 32  
    Bardzo fajna konstrukcja. Ile czasu trwało zrobienie płytek u chińczyka i jakie były koszty ?
  • #9
    pirotechnik1212
    Level 15  
    Płytki dostałem po miesiącu i jednym dniu, co uważam za świetny wynik w czasach pandemii. Skorzystałem z promocji 2$ za 5 płytek dwustronnych w rozmiarze do 10x10cm. Oczywiście najdroższa była dostawa - 7,39$ i to najtańszą opcją. Na szczęście zamówiłem jeszcze jeden projekt (już bez promocji za 4$) więc koszt przesyłki rozłożył się na dwa i sumarycznie po dość wysokim kursie dolara wyszło około 6zł z groszami za jedną płytkę (po 5 płytek z każdego z dwóch projektów).
    Jeśli zaś chodzi o koszty całego zegara, to ciężko się wypowiedzieć, nawet ich nie liczyłem. Jednak próbując to zrobić teraz:
    wyświetlacz ~16zł
    DHT22 w fajnej obudowie ~12zł
    obudowa Z1A ~11zł + filtr zielony ~2zł
    Zasilacz wtyczkowy - 10zł
    ESP-12E ~7zł
    BMP280 ~5zł
    DS3231 ~4zł
    Pierdoły po 1-2 zł typu stabilizator, gniazdo zasilania, gniazdo baterii, EEPROM, przyciski i elementy pasywne.

    Większość rzeczy zamówiona z Aliexpress, niektóre jeszcze przed skokiem kursu dolara, więc gdyby je kupować teraz wyszłoby drożej.
    Ogólnie obudowa Z1A była jasna (tylko taką mogłem dostać w sklepie) co mi się nie podobało i pomalowałem ją farbą w spreju, tak jak i tekturkę, w której zamocowany jest wyświetlacz. Na upartego można by więc doliczyć koszt farby - około 9zł.
    Jak zazwyczaj w takich konstrukcjach cena jest nieadekwatna do efektu, ale liczy się przyjemność wykonania :) Oczywiście można powiedzieć, że wiele elementów już miałem i nie trzeba by ich wliczać do rozliczenia, ale przecież jeśli nie do zegara, to kiedyś wcześniej musiałem je przecież nabyć.
  • #12
    japko1024
    Level 18  
    NIXIE_123 wrote:
    Walnąłeś literówkę na płytce. "Martycowy" zamiast "matrycowy"
    Może myślał o jakiejś Marcie :D
    Do synchronizacji czasu powinno się korzystać z NTP w celu kompensacji opóźnień w transmisji danych.
  • #13
    pirotechnik1212
    Level 15  
    Myślenie o Marcie podczas projektowania płytki jest pewne jak w banku, więc w sumie już wszystko jasne :)

    japko1024 wrote:
    Do synchronizacji czasu powinno się korzystać z NTP

    Wiedziałem, że prędzej czy później ktoś poruszy ten aspekt. I nie, nie mam usprawiedliwienia dla takiej a nie innej decyzji. Słyszałem o NTP ale nigdy się w tym temacie nie zagłębiałem, poszedłem po najmniejszej linii oporu i wykorzystałem już coś, co znałem i potrafiłem zaimplementować. To zwykły zegar w salonie, jeśli będzie się późnił, dajmy na to 10 sekund, to mój świat się nie zawali. Dla mnie liczy się to, że zegar potrafi ten czas zaczytać z internetu i jest pod tym względem praktycznie bezobsługowy. ALE, mam w planach kolejne zegary, więc może czas douczyć się jak zrobić to bardziej fachowo.
  • #14
    siewcu
    Level 34  
    Wszystko fajnie, ogólnie mało popularna sprawa z tymi matrycami, ale... mogłeś je zamontować równo :( A co do synchronizacji czasu - są specjalne serwery do tego tak jak wspomniał kolega wyżej. Zajrzałem na szybko w google, implementacja tego jest śmiesznie prosta... Chyba prościej niż zapytania do php i inne takie ;)
  • #15
    Pi0trek121
    Level 23  
    Obecne sam pracuje nad stacją pogodową, z ESP8266, tylko bardziej rozbudowaną, przerobiłem już wiele rzeczy i okazało się, że NTP to chyba najlepsza opcja (jest możliwość ustawienia 3 serwerów, z których będzie pobierał czas, jak jeden padnie to jest drugi, a jak drugi też to jest trzeci ;) ale ma taką wadę, że trzeba określić strefę czasową - o ile nie masz zamiaru przemieszczać się, to można samemu z palca to wpisać, ale jak chcesz zrobić uniwersalke, to pojawia się problem, oczywiście można wyczytać strefe czasową na podstawie IP, ale problem pojawia się przy VPNach, lub internecie mobilnym - często zwraca pozycję stolicy, no i nie można na tej podstawie wyświetlić pogody ;)
  • #16
    pirotechnik1212
    Level 15  
    Również pracuję nad stacją (druga płytka zamówiona w JLCPCB jest właśnie do tej stacji) a że sporo głosów tutaj na forum wspomina o NTP to na pewno w niej to zastosuję :) Mam nadzieję, że ją również uda mi się tutaj zaprezentować, jednak przede mną jeszcze sporo do zrobienia.