Добавить в корзинуПозвонить
Найти в Дзене
Паяльник и код

Собираем часы с точным временем и Яндекс погодой. ESP-01 ESP8266

Проект по сборке красивых часов с точным временем и погодой с сайта Яндекс в среде разработки Arduino IDE Модуль для разработки ESP-01 Маленький удобный недорогой модуль с оптимальным количеством пинов Шаблон обычный из статьи https://dzen.ru/a/ZxtuYmff-0CbqUwI Изменил способ получения и передачи данных от веб сервера. Данные теперь передаются и получаются в виде строки с параметрами, разделенными точка запятой. Это позволило создать одну функцию для передачи, и одну для получения данных На веб сервере ESP-01 создал меню управления часами Текущее время и температура. Сколько секунд показывать каждый элемент. Если равно нулю, то скрывать. Так же задать настройки будильника. В роли будильника лампочка WS2812b на пине GPIO3 В роли экрана – дисплей TM1637 на пинах GPIO0 и GPIO2 Принцип работы часов: Глобальные переменные int clock0_s = 0; //секунда
int clock_h = 0; //час
int clock_m = 0; //минута
int clock_s = 0; //время на экране часов
int temp_ = 0; //температура
int temp_s = 0; //в
Оглавление

Проект по сборке красивых часов с точным временем и погодой с сайта Яндекс в среде разработки Arduino IDE

Программная часть

Модуль для разработки ESP-01

-2

Маленький удобный недорогой модуль с оптимальным количеством пинов

Шаблон обычный из статьи https://dzen.ru/a/ZxtuYmff-0CbqUwI

Изменил способ получения и передачи данных от веб сервера. Данные теперь передаются и получаются в виде строки с параметрами, разделенными точка запятой. Это позволило создать одну функцию для передачи, и одну для получения данных

На веб сервере ESP-01 создал меню управления часами

-3

Текущее время и температура. Сколько секунд показывать каждый элемент. Если равно нулю, то скрывать. Так же задать настройки будильника. В роли будильника лампочка WS2812b на пине GPIO3

В роли экрана – дисплей TM1637 на пинах GPIO0 и GPIO2

Принцип работы часов:

Глобальные переменные

int clock0_s = 0; //секунда
int clock_h = 0; //час
int clock_m = 0; //минута
int clock_s = 0; //время на экране часов
int temp_ = 0; //температура
int temp_s = 0; //время на экране температуры
int alarm_h = -1; //час будильника
int alarm_m = -1; //минута будильника
int alarm_box = 0; //вкл/выкл будильник

Создан таймер с помощью библиотеки Ticker.h Таймер каждую секунду увеличивает глобальные переменные времени и следит за переключением дисплея со времени на температуру и обратно. Функция clock0_tick().Так же при изменении глобальных переменных выводит новые значения на дисплей. Функция display_ct()

В основном потоке каждые 10 минут проверяется время и температура с сервера Яндекс. За это отвечает функция YA_get(). Данные берутся со страницы https://yandex.com/time/sync.json?geo=<номер региона>

<номер региона> - можно получить, зайдя на страницу https://ya.ru/ и нажав на ярлык погоды

https://yandex.ru/pogoda/<тут будет номер>

Получаем json файл, который разбираем с помощью библиотеки ArduinoJson.h

Сравниваем с нашими глобальными переменам, при необходимости заменяем значения

Получается, что таймер работает вне зависимости от состояния подключения. Т.е. если по какой-то причине невозможно получить данные с сервера Яндекс, часы будут продолжать ходить

Настройка часов сохранятся в EEPROM. При срабатывании будильника минуту моргает лампочка (код прописан в основном потоке)

Прошить ESP-01 можно удобным устройством с Алиэкспресс

ESP8266 ESP32-WROVER Плата разработки на AliExpress
-4

Сборка

-5

Компоненты: ESP-01, TM1637, WS2812b, порт USB, DC-DC 5 to 3.3v, провода

Схема

-6

Спаиваем и склеиваем

-7

Корпус

-8

Корпус – подставка под свечку звезда. Две прокладки для зажима экрана внутри корпуса. Нужно покрасить в чёрный цвет, чтобы экран сделать однотонным. И рассеиватель, чтобы заглушить свет от экрана. Вырезал из бутылки от мыла

-9

Собираем всё вместе

-10

Подключаем USB провод

-11

Результат

-12

Ссылки

Проект - https://disk.yandex.ru/d/jVAzemV11sBLjg