___________________________________________________________________________________________________________________________________________________________________________
___________________________________________________________________________________________________________________________________________________________________________

25 stycznia 2026

TYPOWY ZEGAR Z NIETYPOWYM STEROWANIEM


Na moim blogu często prezentuję projekty związane z elektroniką i mikrokontrolerami. Dziś chciałbym przedstawić jeden z moich najciekawszych projektów: Zaawansowany zegar NTP współpracujący z lokalnym serwerem czasu i pełną konfiguracją przez interfejs WWW.

 


 

🕐 Koncepcja projektu

Zegar ten to niezwykle precyzyjne urządzenie czasu, które pracuje w całkowicie odizolowanej od internetu sieci WiFi. Jego dokładność wynika z synchronizacji z lokalnym serwerem NTP Stratum 1 opartym na odbiorniku GPS, który działa w tej samej sieci.

Zegar współpracuje z domowym AP opisanym tutaj. Serwer czasu zostanie przedstawiony i opisany w późniejszym czasie.

✨ Kluczowe funkcje

1. Autonomiczna sieć czasu

  • Praca w izolowanej prywatnej sieci WiFi

  • Synchronizacja z lokalnym serwerem NTP (GPS Stratum1)

  • Brak zależności od zewnętrznego internetu

2. Inteligentny wyświetlacz LED

  • 60 diod WS2812 ułożonych w pierścień

  • Oddzielne kolory dla godzin, minut i sekund

  • Programowalne kolory tarczy i znaczników

  • Adaptacyjna regulacja jasności (fotorezystor)

3. Pełna konfiguracja WebUI

  • Nowoczesny interfejs WWW z zakładkami

  • Konfiguracja WiFi, NTP, kolorów i jasności

  • Tryb Access Point do pierwszej konfiguracji

  • Statyczne/dynamiczne adresy IP

4. Zaawansowane sterowanie jasnością

  • Tryb automatyczny - dostosowanie do warunków oświetleniowych

  • Tryb ręczny - pełna kontrola przez WWW

  • Oddzielna regulacja jasności tarczy i wskazówek

  • Algorytm priorytetów wyświetlania

🔧 Techniczne detale

Platforma:

  • Mikrokontroler: ESP8266MOD (NodeMCU lub podobny)

  • Wyświetlacz: Pierścień 60x WS2812B LED

  • Czujnik światła: Fotorezystor podłączony do A0

  • Pamięć konfiguracji: EEPROM z wersjonowaniem struktury

Tryby pracy:

  1. STA (Station Mode) - normalna praca z siecią WiFi

  2. AP (Access Point Mode) - tryb konfiguracji przy braku sieci

  3. Automatyczne przełączanie między trybami w razie potrzeby

Konfiguracja przez WWW:

  • Adresowanie: http://192.168.4.13 (domyślnie)

  • Responsywny design - działa na komputerze i telefonie

  • Zapis konfiguracji z walidacją danych

  • Panel statusu systemu w czasie rzeczywistym

🎨 Możliwości personalizacji

Kolorystyka:

  • Godziny: programowalny kolor RGB

  • Minuty: programowalny kolor RGB

  • Sekundy: programowalny kolor RGB

  • Tarcza (godziny główne): programowalny kolor

  • Znaczniki 5-minutowe: programowalny kolor

Ustawienia sieci:

  • Wybór między DHCP a statycznym IP

  • Konfiguracja bramy i maski podsieci

  • Możliwość zmiany adresu serwera NTP

  • Przesunięcia czasowe UTC i czasu letniego

🔄 Zarządzanie systemem

Funkcje Administracyjne:

  • Restart systemu przez WWW

  • Reset do ustawień fabrycznych

  • Czyszczenie EEPROM (całkowity reset)

  • Wczytywanie/zapisywanie konfiguracji

  • Monitorowanie statusu w czasie rzeczywistym

Informacje systemowe:

  • Wolna pamięć mikrokontrolera

  • Status połączenia WiFi

  • Synchronizacja NTP

  • Aktualny czas systemowy

  • Wersja oprogramowania i konfiguracji

📊 Algorytm wyświetlania

Kolorem żółtym oznaczyłem "cyfry główne". Kolor zielony to aktualny czas: czerwony LED -godzina, zielony LED -minuta, niebieski LED -sekunda, czyli mamy godzinę 14:18:33.
 

Zegar wykorzystuje inteligentny algorytm priorytetów:

  1. Tarcza z godzinami głównymi i znacznikami 5-minutowymi

  2. Wskazówka godzinowa (z priorytetem nad tarczą)

  3. Wskazówka minutowa (z priorytetem nad godzinową)

  4. Wskazówka sekundowa (najwyższy priorytet)

Każdy element ma oddzielnie regulowaną jasność, co pozwala na optymalną czytelność w różnych warunkach oświetleniowych.

🛠️ Możliwości rozwoju

Projekt został zaprojektowany modularnie, co umożliwia łatwe rozszerzanie funkcjonalności:

  • Dodanie wyświetlania daty

  • Alarmy i timery

  • Integracja z innymi systemami domowymi

  • Wsparcie dla wielu stref czasowych

  • Logowanie historii zmian czasu

    Oczywiście można dodać tło z naniesionymi opisami godzin (tarcza zegara) ale to już pozostawiam inwencji ewentualnego wykonawcy. 

💡 Dlaczego ten projekt jest wyjątkowy?

  1. Niezależność - działa bez dostępu do internetu

  2. Precyzja - czas GPS z dokładnością do mikrosekund

  3. Elastyczność - pełna konfiguracja bez programowania

  4. Estetyka - piękne, płynne animacje LED

  5. Niezawodność - automatyczne odzyskiwanie po awariach

📋 Wymagania techniczne do budowy

  • ESP8266MOD (NodeMCU, Wemos D1 mini)

    ESP8266MOD

     

  • Pierścień 60 LED WS2812B

  • Fotorezystor + rezystor 10kΩ (jak nie masz na płytce)

  • Zasilacz 5V/3A

  • Obudowa (opcjonalnie)

  • Lokalny serwer NTP z GPS (oddzielne urządzenie)

           Informacja z serwera czasu (osobne urządzenie sieciowe).
     
     
     
    Na koniec kilka zrzutów ekranu pokazujących możliwości zdalnego sterowania zegarem:
     











Ten zegar to doskonały przykład, jak połączyć zaawansowaną elektronikę, precyzyjne pomiary czasu i nowoczesne interfejsy użytkownika. Cały kod jest dostępny ZA DARMO po przesłaniu zapytania na e-mail hf5wwl@gmail.com

Czy masz pomysł na dodatkowe funkcje, które można by dodać do tego zegara? Podziel się swoimi przemyśleniami w komentarzach!



✍️ Autor: Robert HF5WWL
📅 Data projektu: Styczeń 2026 r.
📍 Lokalizacja: Wołomin, POLSKA
📁 Kod źródłowy: Pytaj poprzez e-mail (hf5wwl@gmail.com).
🛠️ Poziom trudności: Łatwy (gdy masz gotowy program 
😊).


Licencja: Projekt open-source do użytku niekomercyjnego

 

 

Tagi:   #ESP8266 #NTP #GPS #LEDClock #DIY #IoT #Arduino #Stratum1 #WebUI 

 

 

16 stycznia 2026

ODBIORNIK VHF SA868S Z INTERFEJSEM WWW

Interfejs WWW

Cześć! Dziś chciałbym podzielić się z Wami moim najnowszym projektem: "profesjonalnym" odbiornikiem VHF z interfejsem webowym, który zbudowałem w oparciu o moduł radiowy SA868S, mikrokontroler ESP32 oraz wyświetlacz TFT ST7789. To urządzenie, które łączy w sobie możliwości odbioru pasma VHF (134–174 MHz) z nowoczesnym sterowaniem przez przeglądarkę internetową.

📡 Główne funkcjonalności:

  • Odbiornik VHF – pracuje w paśmie VHF (134–174 MHz) z możliwością strojenia krokami 12.5 kHz, 25 kHz, 100 kHz i 1 MHz.

  • Główny interfejs: panel webowy – dostępny z każdego urządzenia w sieci WiFi (telefon, tablet, laptop). Nie potrzebujesz dodatkowej aplikacji – wystarczy przeglądarka.

  • Wyświetlacz lokalny TFT – pełni rolę pomocniczego ekranu technicznego, pokazującego aktualną częstotliwość, nazwę kanału, poziom sygnału (S-meter) oraz status (BUSY/SQL/SCAN).

  • Bank pamięci kanałów – możesz zapisywać ulubione częstotliwości z własnymi nazwami, a potem jednym kliknięciem do nich wracać.

  • Skaner pasma – automatyczne przeszukiwanie zadanego zakresu z pauzowaniem na aktywnych kanałach.

  • Regulacja audio – głośności i squelcha z poziomu panelu webowego.

  • Filtry odbioru – wbudowane opcje: PRE/DE-EMPHASIS, HIGH-PASS, LOW-PASS.

🛠️ Jak to działa?

Urządzenie opiera się na ESP32, który pełni rolę serwera webowego (AsyncWebServer) i komunikuje się z modułem radiowym SA868S poprzez UART. Połączenie WiFi działa w trybie Access Point – urządzenie tworzy własną sieć Odbiornik_VHF, do której łączysz się bezpośrednio.

Główny interfejs to strona HTML serwowana z karty SD, która na żywo aktualizuje dane przez WebSocket (częstotliwość, poziom sygnału, status). Wyświetlacz TFT ST7789 pokazuje te same informacje w formie uproszczonej – idealnie, gdy nie chcesz otwierać przeglądarki.

   

         
                     
  
Wyświetlacz GMT020_02 (ST7789V) umieszczony w obudowie odbiornika. Wersja 1 i wersja 2.

 

🧩 Schemat podłączenia:

  • Moduł SA868S połączony jest z ESP32 przez UART (RX/TX) oraz pin BUSY do detekcji aktywności kanału.

  • Wyświetlacz ST7789 podłączony przez SPI.

  • Karta SD również przez SPI – przechowuje stronę HTML i banki kanałów.

    Karta musi być sformatowana w systemie FAT-32 i zawierać podstawowe pliki index.html i banki.txt. Opcjonalnie config.txt 

  • Audio – sygnał audio z SA868S trafia do wzmacniacza klasy D LTK5128, a potem do głośnika lub słuchawek.

  • Zasilanie przez USB-C 5V, z prostym układem stabilizatora 4.3V dla części analogowej. 

    Szkic połączeń toru audio.

     

    Szkic części cyfrowej.

     

    Kluczowe uwagi montażowe:

  • Zasilanie: Moduł SA868S potrafi pobrać sporo prądu w momencie inicjalizacji. Warto dodać kondensator elektrolityczny (np. 470uF) blisko wyprowadzeń VCC modułu radiowego.

  • Antena: Pamiętaj o podłączeniu anteny (lub sztucznego obciążenia 50 Ohm) przed uruchomieniem. Nawet jeśli tylko odbierasz, dobre dopasowanie chroni czułe stopnie wejściowe przed zakłóceniami z procesora.

  • Separacja: ESP32 generuje sporo szumu cyfrowego (WiFi/BT). Staraj się prowadzić przewody audio z modułu SA868S jak najdalej od anteny WiFi i linii sygnałowych SPI karty SD. 

 

💻 Oprogramowanie:

Kod napisany w Arduino IDE wykorzystuje m.in.:

  • AsyncWebServer do serwowania strony i API

  • WebSocket do komunikacji w czasie rzeczywistym

  • Adafruit_ST7789 do obsługi wyświetlacza

  • SD do odczytu/zapisu kanałów 

     

Panel webowy ma nowoczesny, ciemny styl z elementami inspirowanymi profesjonalnymi konsolami radiowymi. Wszystkie ustawienia można zmieniać w locie, a zmiany są natychmiast widoczne na wyświetlaczu TFT. 

Słów kilka na temat panela www:

Interfejs WWW – panel operatorski ładowany z karty SD

Interfejs użytkownika odbiornika został zrealizowany jako pojedynczy plik index.html, który nie znajduje się w pamięci flash ESP32, lecz jest ładowany bezpośrednio z karty SD podłączonej do mikrokontrolera.

Takie rozwiązanie zostało wybrane świadomie i niesie ze sobą kilka bardzo praktycznych korzyści.


Dlaczego karta SD zamiast flash ESP32?

Umieszczenie interfejsu WWW na karcie SD pozwala na:

  • łatwą modyfikację wyglądu i funkcji interfejsu bez ponownego wgrywania firmware,

  • szybką edycję HTML/CSS/JS bez ryzyka „uceglenia” urządzenia,

  • przechowywanie dodatkowych plików (np. przyszłych wykresów, logów, konfiguracji),

  • oddzielenie warstwy sprzętowej od warstwy interfejsu użytkownika.

W praktyce:

ESP32 odpowiada za radio i logikę, karta SD za „twarz” urządzenia.

I to jest dokładnie ten podział, który dobrze się skaluje.


Serwowanie plików WWW z karty SD

ESP32 działa jako serwer HTTP, który:

  • przy starcie inicjalizuje kartę SD,

  • udostępnia plik index.html oraz zasoby statyczne bezpośrednio z systemu plików,

  • obsługuje zapytania API i WebSockety równolegle.

Dla przeglądarki użytkownika:

  • strona zachowuje się jak klasyczna aplikacja webowa,

  • nie ma różnicy, czy plik pochodzi z serwera w chmurze, czy z ESP32 na biurku.

Dla konstruktora:

  • jest pełna kontrola nad zawartością,

  • zero zależności od zewnętrznej infrastruktury.


Technologia interfejsu

Interfejs został napisany w czystym HTML, CSS i JavaScript, bez frameworków i bibliotek zewnętrznych.

Zastosowane rozwiązania:

  • CSS Grid – układ dashboardu,

  • dark theme – czytelność i „techniczny” charakter,

  • JavaScript ES6 – logika interfejsu,

  • WebSocket – komunikacja czasu rzeczywistego,

  • HTTP API – konfiguracja i sterowanie odbiornikiem.

Całość działa w dowolnej nowoczesnej przeglądarce:

  • komputer,

  • tablet,

  • smartfon.

Nie ma instalacji aplikacji, nie ma parowania — wystarczy adres IP.


Komunikacja przeglądarka ↔ ESP32

Interfejs wykorzystuje dwa kanały komunikacji:

WebSocket

  • aktualna częstotliwość,

  • poziom sygnału (S-metr),

  • stan BUSY,

  • status skanera.

Zapewnia to:

  • brak opóźnień,

  • brak odświeżania strony,

  • bardzo płynną pracę interfejsu.

HTTP (REST-like API)

  • zmiana częstotliwości,

  • regulacja audio,

  • zapis i odczyt pamięci,

  • sterowanie skanerem.

To rozdzielenie upraszcza kod i zwiększa niezawodność.


Bank pamięci i dane użytkownika

Lista zapamiętanych częstotliwości:

  • przechowywana jest po stronie ESP32,

  • może być powiązana z plikami na karcie SD,

  • jest dynamicznie ładowana do interfejsu WWW.

Karta SD naturalnie nadaje się też do:

  • logowania zdarzeń,

  • zapisu historii skanowania,

  • przyszłej rozbudowy projektu.


Interfejs WWW jako „softwarowy front panel”

W tym projekcie interfejs WWW pełni rolę klasycznego panelu czołowego, tyle że:

  • bez gałek,

  • bez przycisków,

  • bez ograniczeń fizycznych.

Zmiana wyglądu lub funkcji:

  • nie wymaga lutownicy,

  • nie wymaga kompilatora,

  • wymaga tylko edytora tekstu.

A to w świecie projektów radiowych jest luksus, którego trudno się potem wyrzec.


Umieszczenie interfejsu WWW na karcie SD:

  • upraszcza rozwój projektu,

  • zwiększa elastyczność,

  • oddziela warstwę sprzętową od wizualnej.

ESP32 robi to, co potrafi najlepiej — steruje radiem i komunikuje się z siecią.
A karta SD? Ona daje projektowi przestrzeń do oddychania.

Krótko mówiąc:
to już nie jest „radio z webem”, tylko radio sterowane webem.

 

🚀 Możliwości rozbudowy:

  • Dodanie nadajnika (TX) i przejście w tryb transceivera

  • Integracja z zewnętrznymi źródłami częstotliwości (GPS, DDS, zewnętrzny serwer czasu)

  • Automatyczne logowanie odbieranych sygnałów na karcie SD

  • Równoległe sterowanie ręczne z poziomu samego odbiornika (enkoder obrotowy)

  • Wersja przenośna z baterią

📦 Podsumowanie:

To projekt, który łączy klasyczną radioamatorską elektronikę z nowoczesnym interfejsem webowym. Dzięki niemu możesz zamienić dowolne urządzenie z przeglądarką w pełnoprawny panel sterowania odbiornikiem VHF. Całość jest otwarta, modułowa i gotowa do dalszej rozbudowy.

 

Kod źródłowy, schematy i pliki są dostępne (pytaj poprzez e-mail hf5wwl@gmail.com  – zachęcam do eksperymentowania!

Masz pytania? Chcesz zbudować własny? Zapraszam do komentowania!

 

 

✍️ Autor: Robert HF5WWL
📅 Data projektu: Czerwiec 2025 r.
📍 Lokalizacja: Wołomin, POLSKA
📁 Kod źródłowy: Pytaj poprzez e-mail (hf5wwl@gmail.com).
🛠️ Poziom trudności: Średni, średnio-trudny. (gdy masz gotowy program 
😊).




Tagi: #radio #VHF #ESP32 #SA868S #IoT #webinterface #DIY #radioamator #STM7789 #websocket #hf5wwl



27 grudnia 2025

INTELIGENTNY PUNKT DOSTĘPOWY (AP)


Inteligentny Punkt Dostępowy (AP) z interfejsem WWW i obsługą kart SD

W świecie projektów opartych na ESP32 często brakuje narzędzi, które są jednocześnie potężne i proste w codziennej obsłudze. Dzisiaj chciałbym Wam przedstawić mój autorski projekt Punktu Dostępowego (AP), który wykracza (trochę) poza ramy zwykłego routera WiFi. To urządzenie, które nie tylko zarządza ruchem, ale też w czasie rzeczywistym identyfikuje podłączone urządzenia i informuje o stanie systemu na dwa sposoby.

Serce systemu: ESP32 i wyświetlacz ST7789

Głównym centrum informacyjnym urządzenia jest kolorowy wyświetlacz ST7789 (320x240 px). Pełni on rolę "technicznego podglądu". Bez wyciągania telefonu czy komputera, od razu po spojrzeniu na obudowę widzimy:

  • SSID sieci oraz aktualny adres IP,

  • Liczbę aktualnie połączonych klientów,

  • Status karty SD.

Interfejs graficzny został zaprojektowany tak, aby był czytelny nawet z większej odległości, wykorzystując eleganckie czcionki GFX i intuicyjne kolory dla każdego parametru.


 


Panel WWW: Moje centrum dowodzenia ;)

Prawdziwa magia dzieje się jednak po wpisaniu adresu IP urządzenia w przeglądarce. ESP32 serwuje nowoczesną, responsywną stronę WWW w ciemnym motywie (Dark Mode), która automatycznie odświeża się co 10 sekund.

Co znajdziemy w panelu?

  1. Szczegółowa lista klientów: Program nie wyświetla tylko "suchych" adresów MAC. Dzięki bazie danych urządzeń, system rozpoznaje, czy podłączony sprzęt to ESP-Cam w pokoju, Sterownik w garażu czy Laptop. Oczywiście z jego adresem IP. 

  2. Czas połączenia: Widzimy dokładnie, jak długo każde urządzenie jest aktywne w sieci.

  3. Logowanie zdarzeń: Każde połączenie i rozłączenie jest odnotowywane w logach na karcie SD (opcja).

    To chwilowo tyle bo projekt się rozwija i z pewnością będą zmiany. 


Konfiguracja bez programowania (SD Card Support)

To funkcja, z której jestem najbardziej dumny. Większość projektów Arduino wymaga edycji kodu i ponownego wgrywania programu (flaszowania), aby zmienić nazwę sieci (SSID) lub hasło. Tutaj jest inaczej.

Urządzenie posiada slot na kartę SD, która pełni rolę dysku twardego.

  • Plik config.txt: Tutaj wpisujemy nazwę sieci i hasło.

    Przykład:

    SSID=TwojaNazwaSieci
    PASSWORD=TwojeHaslo123

  • Plik devices.csv: To baza danych naszych urządzeń. Możemy tam przypisać przyjazną nazwę (np. "Termometr-Taras") do konkretnego adresu MAC.

    Przykład:

    A0:B1:C2,ESP32-Garaz,esp32 

    08:A6:F7,ESP-Cam_Pokoj,cam 

    8C:AA:B5,STM32-Kuchnia,stm32

Dzięki temu, aby dodać nowe urządzenie do listy "znanych" lub zmienić hasło WiFi, wystarczy wyciągnąć kartę SD, edytować plik na komputerze i włożyć ją z powrotem. Żadnego kompilowania kodu!

Możemy też podejrzeć info o karcie SD:


 

Przy braku dostępu do karty SD widok strony zmieni się:

 

Zmieni się też info o karcie:


 

Podsumowanie i bezpieczeństwo

Program został zoptymalizowany pod kątem stabilności – monitoruje zużycie pamięci RAM i pozwala na zdalny restart systemu jednym kliknięciem z poziomu strony WWW. Jeśli karta SD zostanie wyjęta, system automatycznie przejdzie w tryb awaryjny, korzystając z domyślnych ustawień zapisanych w pamięci stałej.

To urządzenie to idealna baza dla każdego, kto buduje własny ekosystem Smart Home i chce mieć nad nim pełną, lokalną kontrolę.

Opis połączeń (Pinout)

Aby układ działał poprawnie, oba moduły (TFT i SD) korzystają ze wspólnej magistrali SPI. Kluczowe jest poprawne podpięcie linii sygnałowych oraz pinów sterujących (CS, DC, RST).

 

Funkcja Pin ESP32 Pin Urządzenia Uwagi
Zasilanie 3.3V / VIN VCC Zależnie od wersji modułu
Masa GND GND Wspólna masa
SPI SCLK GPIO 18 SCL / SCK Wspólne dla TFT i SD
SPI MOSI GPIO 23 SDA / MOSI Wspólne dla TFT i SD
SPI MISO GPIO 19 MISO / SD_DO Tylko dla karty SD
TFT CS GPIO 15 CS (Display) Chip Select wyświetlacza
TFT DC GPIO 2 DC / RS Data/Command
TFT RST GPIO 4 RES / RESET Reset wyświetlacza
TFT BL GPIO 5 BL / LED Sterowanie podświetleniem
SD CS GPIO 13 CS (SD Card) Chip Select karty SD

Wskazówka dla budujących: Pamiętaj, aby przy używaniu karty SD i wyświetlacza jednocześnie, stosować dobrej jakości przewody. Magistrala SPI przy tak wysokim odświeżaniu jak w ST7789 bywa wrażliwa na zakłócenia.

Karta SD musi być sformatowana na FAT32. To bardzo ważne! 

 

Jeszcze jedna dość istotna uwaga: Po kliknięciu na czerwony przycisk na panelu WWW nastąpi reset urządzenia. W tym momencie należy zwrócić uwagę, czy przeglądarka nie dopisała sobie czegoś do adresu. 

W tym wypadku do adresu naszego AP przeglądarka dopisała /restart i teraz odświeżenie strony będzie powodował jej restart. Należy używać tylko samego adresu http:/192.168.4.1 (lub innego zdefiniowanego dla danej sieci.

Ten punkt dostępowy powstał na potrzeby mojej sieci domowej która z założenia nie będzie miała dostępu do internetu. To nie jest wada a świadome założenie projektu. 

  

✍️ Autor: Robert HF5WWL
📅 Data projektu: Grudzień 2025 r.
📍 Lokalizacja: Wołomin, POLSKA
📁 Kod źródłowy: Pytaj poprzez e-mail (hf5wwl@gmail.com).
🛠️ Poziom trudności: Średnio prosty.