Этот учебник является частью: ESP32-S3 RGB LED матрица
Замечательный проект для создания развлекательных и практических приложений с использованием модуля RGB-матрицы ESP32-S3.
ESP32-S3 RGB LED матрица Wi-Fi + проект часов NTP - 1 Базовые часы
Часы Интернета ESP32-S3 с 8×8 NeoMatrix (Wi-Fi + время NTP)
Этот проект превращает ESP32-S3 и 8×8 RGB NeoMatrix (NeoPixel/WS2812) в маленькие интернет-часы. ESP32 подключается к Wi-Fi, синхронизирует местное время с сервера NTP, а затем прокручивает время какHH:MMпо всему 8×8 дисплею.

Как это работает (на высоком уровне)
ESP32-S3 подключается к вашему маршрутизатору с использованием<WiFi.h>.
2) Он синхронизирует время с сервером NTP с использованием"time.h"иconfigTime().
Время отформатировано какHH:MMи сохранено в небольшой текстовый буфер.
4) NeoMatrix отображает текст и прокручивает его по панели 8×8.

RGB Цвет
Цвет текста часов регулируется с помощью значений RGB (красный, зеленый, синий), где каждый цветовой канал варьируется от 0 до 255, а различные комбинации создают разные цвета на NeoMatrix. Путем регулированияcolor_RED,color_GREEN, иcolor_BLUEпеременные, вы можете легко настроить внешний вид часов на любой цвет, который вам нравится. Чтобы быстро найти точные значения RGB для определенного цвета, вы можете воспользоваться онлайн-инструментом выбора RGB-цветов здесь:RGB Цветовой выборщик.

Используемые библиотеки
Это включает в себя информацию о том, от чего именно зависит эскиз:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>УстановитьAdafruit NeoMatrixиспользуя диспетчер библиотек Arduino. Он также загрузит необходимые зависимости, такие какAdafruit GFX LibraryиAdafruit NeoPixel.
Важные пользовательские настройки, которые ВЫ ДОЛЖНЫ отредактировать.
1) Цвет текста (RGB)
Установите цвет текста часов, используя значения от 0 до 255:
//set the color of display made of Red, Green and Blue
unsigned int color_RED = 17;
unsigned int color_GREEN = 43;
unsigned int color_BLUE = 171;Эти значения используются здесь:
matrix.setTextColor(matrix.Color(color_RED, color_GREEN, color_BLUE));Примечание:Если вы установите все цвета на 0 (черный), текст станет невидимым. Эскиз включает проверку безопасности:
// if user set all colors to 0, the display will be turned off so set it green
if (color_RED == 0 && color_GREEN == 0 && color_BLUE == 0) {
color_GREEN = 200;
}Это гарантирует, что матрица никогда не выглядит "мертвой" из-за невидимой настройки цвета.
2) SSID Wi-Fi и пароль
Замените это своим настоящим именем Wi-Fi и паролем:
const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";Во время запуска ESP32 отображает прогресс подключения в Serial Monitor и завершает попытки через примерно 15 секунд (30 попыток × 500 мс).
3) NTP сервер
Сервер NTP по умолчанию:
const char* ntpServer = "pool.ntp.org";Вы можете оставить всё как есть. Если вы когда-либо захотите использовать локальный сервер, замените имя хоста на ваш предпочтительный NTP сервер.
4) Смещение часового пояса и смещение на летнее время
Эти два параметра контролируют местное время:
// Toronto-ish: UTC-5, plus 1 hour DST
const long gmtOffset_sec = -5 * 3600; // -5 hours
const int daylightOffset_sec = 3600; // +1 hour for DSTКак их настроить:
gmtOffset_sec= (часы смещения UTC) × 3600. Пример: UTC-5 →-5*3600, UTC+2 →2*3600.daylightOffset_sec=0если вы не хотите корректировку по переходу на летнее время, или3600если ваш регион в настоящее время соблюдает переход на летнее время (+1 час).
Эти применяются здесь:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);Конфигурация дисплея
Матрица данных пин
Данные контакта определены здесь:
#define MATRIX_PIN 14Если ваша проводка использует другой GPIO, измените это число, чтобы оно соответствовало.
Макет NeoMatrix + порядок цветов
Ваша матрица инициализируется следующим образом:
Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_RGB + NEO_KHZ800);Две распространенные причины, по которым дисплей выглядит "неправильно":
- Направление вращения / подключения:Если текст отображается вверх ногами или зеркально, настройте
NEO_MATRIX_*флаги (ВВЕРХ/ВНИЗ, СЛЕВА/СПРАВА, СТРОКИ/СТОЛБЦЫ, ПРОГРЕССИВНЫЙ/ЗИГЗАГ). - Цветовой порядок:Этот код использует
NEO_RGBНекоторые панели являютсяNEO_GRB. Если красный/зеленый/синий не совпадают, изменитеNEO_RGBк правильному порядку.
Яркость
Яркость установлена наinitMatrix():
matrix.setBrightness(40);Увеличьте яркость для более яркого экрана, уменьшите, чтобы снизить нагрев и потребление энергии.
Как генерируется время какHH:MM
Часы хранят отформатированное время в буфере на 6 символов:
char timeText[6] = "00:00";ЗатемupdateTimeText()считывает синхронизированное по NTP местное время и выводит текст:
// Format HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d",
timeinfo.tm_hour,
timeinfo.tm_min);Это обновляется раз в секунду в основном цикле.
Как работает прокрутка на дисплее 8×8
Матрица 8×8 слишком узкая, чтобы показать.HH:MMсразу, поэтому эскиз прокручивает текст. Он отображает время в меняющейся X позиции (scrollX), затем сдвигает его влево на один пиксель при каждом обновлении.
int16_t scrollX = 8;
const uint16_t scrollIntervalMs = 120;Каждый шаг прокрутки:
matrix.fillScreen(0);
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;Когда текст полностью выходит с левой стороны, код сбрасывает его, чтобы начать заново с правого края:
int16_t textWidth = 30;
if (scrollX < -textWidth) {
scrollX = matrix.width();
}Вывод последовательного монитора (отладка)
Этот скетч печатает полезные сообщения:
- Прогресс подключения Wi-Fi и IP-адрес
- Успешна ли синхронизация времени
- Форматированная строка времени (например,
Time text: 14:32)
Если экран пустой, первым местом для проверки является Серийный монитор, чтобы подтвердить, что Wi-Fi и NTP работают.
Демонстрация проекта
После загрузки и сброса:
- ESP32 подключается к Wi-Fi
- Синхронизирует время с
pool.ntp.org - Шоу
OKкратко о матрице - Постоянно прокручивает текущее время как
HH:MM
Загрузки и ссылки
Полный код представлен ниже в этой статье. Части, инструменты и технические данные также приведены ниже в этой статье.
Этот учебник является частью: ESP32-S3 RGB LED матрица
- ESP32-S3 RGB LED Matrix Project 1- Basic Dot
- ESP32-S3 RGB LED Matrix Project 2 - Scrolling Text
- ESP32-S3 RGB LED Matrix Project 3 - Text from mobile phone
- ESP32-S3 RGB LED Matrix Project 4 - Tilt dot
- ESP32-S3 RGB LED Matrix Project 5 - Arrow always up
- ESP32-S3 RGB LED Matrix Project 6 - Cible game
- ESP32-S3 RGB светодиодная матрица Интернет-часы - 2-часовой многоцветный дисплей времени и даты
- Проект интернет-часов на матрице RGB LED ESP32-S3 - 3 ночных цвета с датой
- Проект интернет-часов на матрице RGB LED ESP32-S3 - 5 радуга цветов
- Проект интернет-часы с матрицей RGB LED на ESP32-S3 - 4 случайных цвета
- Тест матрицы RGB LED ESP32-S3 для настройки RGB, GRB
Вещи, которые могут вам понадобиться
-
Амазонка
-
eBay
-
АлиЭкспрессКупить ESP32-S3 RGB-матрицу на AliExpresss.click.aliexpress.com
-
АлиЭкспрессПриобретите ESP32-S3 RGB Matrix на AliExpress (2)s.click.aliexpress.com
Ресурсы и ссылки
-
Видео
Файлы📁
Файл Fritzing
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB