2a8a192f3ad68840dd4d39d6fdefab326f21bace
ESP32 OLED Clock with MQTT Temperature Display
Описание
ESP32 часы с OLED дисплеем 1.3" (SH1106), синхронизация времени по NTP, отображение температуры из MQTT. При включении показывает анимационную заставку UA1ZBE.
Аппаратная часть
- ESP32 DevKit
- OLED дисплей 1.3" (SH1106), 128x64, I2C
- Подключение: SDA → GPIO21, SCL → GPIO22
Схема подключения
ESP32 → OLED 1.3" SH1106
------ --------------
3.3V → VCC
GND → GND
GPIO21 → SDA
GPIO22 → SCL
WiFi настройки
В файле src/main.cpp:
// Основная сеть
const char* ssid = "Keenetic-3222";
const char* password = "28021980";
// Резервная сеть (подключается если основная недоступна)
const char* ssid2 = "TP-Link_45EC";
const char* password2 = "16314733";
MQTT настройки
const char* mqtt_server = "ua1zbe.ru";
const int mqtt_port = 1883;
const char* mqtt_topic_pz = "/Meteo/dsw1"; // Температура П-Зори
const char* mqtt_topic_kand = "max_kand/temp"; // Температура Кандалакша
Режимы отображения
| Секунды | Содержимое |
|---|---|
| 0-15 | Температура П-Зори |
| 15-30 | Часы + дата |
| 30-45 | Температура Кандалакша |
| 45-60 | Часы + дата |
Последовательность запуска
- Анимационная заставка UA1ZBE (рамка с надписью, 2 цикла)
- "Connecting..." - подключение к WiFi
- "NTP sync..." - синхронизация времени
- "WiFi + MQTT OK" - всё готово
- Режим отображения часов и температур
Структура проекта
esp32_oled_clock/
├── platformio.ini # конфигурация PlatformIO
├── README.md # документация
└── src/
└── main.cpp # основной код
Сборка и загрузка
cd ~/esp32_oled_clock
platformio run --target upload
Мониторинг
platformio device monitor --baud 115200
Зависимости
- U8g2 (библиотека для OLED дисплеев)
- PubSubClient (MQTT клиент)
- WiFi
- time.h (синхронизация NTP)
Возможные проблемы
- Нет синхронизации NTP — проверьте WiFi подключение, попробуйте другой NTP сервер
- Шум на дисплее — проверьте провода SDA/SCL, попробуйте адрес 0x3D вместо 0x3C
- Нет MQTT данных — проверьте работу брокера и топики
Автор
UA1ZBE
Description
Languages
C
90.1%
C++
8.2%
Makefile
1.7%