87 lines
2.2 KiB
Markdown
87 lines
2.2 KiB
Markdown
# ESP32 OLED Clock with MQTT Temperature Display
|
||
|
||
## Описание
|
||
|
||
ESP32 часы с OLED дисплеем 1.3" (SH1106), синхронизация времени по NTP, отображение температуры из MQTT.
|
||
|
||
## Аппаратная часть
|
||
|
||
- 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`:
|
||
```cpp
|
||
const char* ssid = "Keenetic-3222";
|
||
const char* password = "28021980";
|
||
```
|
||
|
||
## MQTT настройки
|
||
|
||
```cpp
|
||
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 | Часы + дата |
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
esp32_oled_clock/
|
||
├── platformio.ini # конфигурация PlatformIO
|
||
└── src/
|
||
└── main.cpp # основной код
|
||
```
|
||
|
||
## Сборка и загрузка
|
||
|
||
```bash
|
||
cd ~/esp32_oled_clock
|
||
platformio run --target upload
|
||
```
|
||
|
||
## Мониторинг
|
||
|
||
```bash
|
||
platformio device monitor --baud 115200
|
||
```
|
||
|
||
## Зависимости
|
||
|
||
- U8g2 (библиотека для OLED дисплеев)
|
||
- PubSubClient (MQTT клиент)
|
||
- WiFi
|
||
- time.h (синхронизация NTP)
|
||
|
||
## Возможные проблемы
|
||
|
||
1. **Нет синхронизации NTP** — проверьте WiFi подключение, попробуйте другой NTP сервер
|
||
2. **Шум на дисплее** — проверьте провода SDA/SCL, попробуйте адрес 0x3D вместо 0x3C
|
||
3. **Нет MQTT данных** — проверьте работу брокера и топики
|
||
|
||
## Автор
|
||
|
||
UA1ZBE |