RGB HexMatrix IoT-часы — динамический шестиугольный LED-дисплей
Компоненты и материалы
| Arduino UNO | ×1 |
| NodeMCU ESP8266 Breakout Board | ×1 |
| NeoPixel WS2811 LED (96 шт.) | ×1 лента/модуль |
| Блок питания 5V 2.5A (коммутируемый) | ×1 |
Необходимые инструменты
- Паяльник
- Пряжа для пайки (без свинца)
- Флюс для пайки
- Обрезальщик для проводов (143 мм)
Приложения и сервисы
- Arduino IDE
О проекте
HexMatrix — LED-матрица из треугольных пикселей. Шесть пикселей образуют шестиугольник. На матрице можно запускать анимации из библиотеки FastLED, а также отображать время — цифры 0–9 спроектированы из 10 сегментов каждый. Получаются IoT-часы.
Необходимые детали
- ESP8266 или Arduino (Uno/Nano)
- WS2811 LED (96 шт.)
- БП 5V/2A
- 3D-печать
Шаг 1: 3D-печать
- Распечатайте все STL-модели (ссылка в исходнике: «Click here for STL Files and Codes»).
- Слой-экран печатайте белым PLA.
Шаг 2: Схема подключения
- Соберите по схеме (изображения в разделе Schematics).
- GND → - питания
- Vin → 5V → + питания
- Data In → Pin 2 (GPIO2 на ESP8266 / D2 на Arduino)
- Важно: Продлите провода питания до последнего LED и подключите их там — это предотвратит падение напряжения на длинной ленте.
Шаг 3: Важное замечание
- На Arduino можно выводить только анимации (нет Wi-Fi для времени).
- На ESP8266 можно выводить время и анимации (есть Wi-Fi + NTP).
Шаг 4: Сборка
- Установите все LED в «змеевидном» порядке (serpentine).
- Соберите корпус, соедините части.
- Припаяйте разъем к микроконтроллеру (разъем берется с свободного конца ленты LED).
Шаг 5: Программирование
Три скетча: HexMatrix.ino, clock1.ino, clock2.ino (ссылка в исходнике).
HexMatrix.ino — анимации (любой микроконтроллер)
- Откройте в Arduino IDE.
- Установите библиотеку FastLED (Library Manager).
- Выберите плату, порт, загрузите.
Clock1 и Clock2 — часы (только ESP8266)
- Откройте в Arduino IDE.
- Настройте цвета цифр и фона (RGB):
// Цвет цифр
int r=255, g=255, b=255;
// Цвет фона
int br=0, bg=20, bb=10;
- Введите Wi-Fi учетные данные:
const char* ssid = "Wifi_Name";
const char* password = "Password";
- Укажите часовой пояс (в секундах от UTC):
// Пример: Индия UTC+5:30 = 5.5 * 3600
int timezone = -5.5 * 3600; // знак минус — для западных поясов, плюс для восточных
- Выберите плату ESP8266, порт, загрузите.
Также доступны анимации из примеров FastLED.
Код (фрагменты)
Clock1 — основной скетч часов
Использует ESP8266WiFi, time.h, FastLED. 96 LED, пин 2, яркость 255. В setup() — подключение к Wi-Fi, синхронизация времени через NTP (pool.ntp.org, time.nist.gov). В loop() — получение времени, расчет часов/минут (12-часовой формат), вызов функций отрисовки цифр для текущего часа и минуты, FastLED.show(), FastLED.clear().
Функции hour1()…hour12() и min0()…min59() задают индексы LED для каждого значения (хардкод). Функция background() заливает все 96 LED цветом фона.
Clock2 — вариант с анимацией фона
Аналогичен Clock1, но вместо статичного фона запускает эффект pride() (радужная волна из примеров FastLED) перед отрисовкой цифр. Использует beatsin88, sin16, nblend для плавной анимации.
Оба скетча полные и рабочие. Полный код доступен в разделе Code исходника (файлы clock1 и clock2).
Схемы
Две схемы в разделе Schematics (подключение ленты к ESP8266/Arduino и блок питания).
Производственный процесс
- Кукушка: история, мастерство и современная эволюция
- Создание кнопки AWS IoT с управлением движением на Raspberry Pi, PIR-датчике и MQTT
- Расширение GoPiGo v2 на Windows 10 IoT Core для Raspberry Pi 3
- Arduino POV-часы: сборка дисплея на эффекте сохранения образа
- Предотвращение холодных пайных соединений: обеспечение надежной промышленной электроники через правильный…
- Бесконечное зеркало-часы: элегантный дизайн и точное время
- Пайка: виды, техники и пошаговое руководство
- Экспертное руководство: устранение проблем с волновой пайкой на печатных платах
- Осваиваем процесс пайки: профессиональное руководство по точному соединению металлов
- Мастерство пайки печатных плат: типы, техники и ключевые ресурсы