Управление NeoPixel-светодиодной лентой по Wi-Fi: проект на ESP8266 с Android-приложением
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Плата ElectroPeak ESP8266 Serial WIFI Witty Cloud Board | 1 |
| NeoPixel Smart LED Strip (60 LED/m) | 3 м (6 полос по 50 см) |
| Logic Level Converter (ElectroPeak) | 1 |
| Перемычки Male-Female 21 см (40 шт.) | 1 набор |
| ПВХ-труба 60 см, диаметр 2″ | 1 |
| Калька (tracing paper) | 1 лист |
| Стеклянный цилиндр (ваза) | 1 |
| Блок питания 5В (не менее 9 А) | 1 |
| Arduino Nano R3 (для прошивки/отладки) | 1 |
Инструменты
- Клейкий пистолет
- Паяльник
Приложения и сервисы
- Arduino IDE
О проекте
Создайте крутой эффект пламени с беспроводным управлением по Wi-Fi. Готовое Android-приложение с приятным интерфейсом позволяет играть с вашим творением. Используются Arduino и ESP8266 для управления пламенем. В итоге вы научитесь:
- Работе с NeoPixels (адресуемые RGB-светодиоды WS2812B).
- Программированию ESP8266 и управлению параметрами по Wi-Fi.
- Созданию реалистичного огненного эффекта на NeoPixels.
Знакомство с NeoPixels
Индивидуально адресуемые светодиоды (NeoPixels) позволяют управлять цветом каждого светодиода отдельно, создавая бесконечные паттерны и анимации. Для WS2812B достаточно 3 провода: 2 для питания и 1 для данных. То есть всего один свободный пин Arduino управляет сотнями светодиодов!
В проекте используется 6 полос по 30 светодиодов (всего 180), наклеенных на ПВХ-трубу, помещённую в стеклянный цилиндр. Для диффузии света и непрерывного вида используется калька.
Конструкция
- Получите стеклянный цилиндр (наш: высота 60 см, диаметр 12 см). Если нашли матовый — отлично, если прозрачный — обклейте калькой (внутри или снаружи).
- Измерьте внутреннюю длину цилиндра и отрежьте ПВХ-трубу под неё (у нас 59 см). Диаметр трубы ~4 см.
- Нарежьте LED-ленту на 6 равных частей по 50 см (всего 3 м при плотности 60 LED/m). Распределите их равномерно вокруг трубы и приклейте.
- Соедините полосы между собой: либо паяйте провода напрямую, либо припаяйте pin headers и используйте макетные провода.
- Установите трубу в цилиндр. Для центрирования вырежьте из пенопласта два кольца: внешний диаметр = внутренний диаметр цилиндра, внутренний = внешний диаметр трубы. Вставьте их на концы трубы и аккуратно поместите в цилиндр.
Код
Используется Arduino IDE. Плата ESP8266 должна иметь 3 МБ SPIFFS для загрузки веб-интерфейса управления. SPIFFS (Serial Peripheral Interface Flash File System) позволяет хранить файлы веб-интерфейса и открывать их в браузере по адресу ESP (по умолчанию 192.168.4.1) — это единственный вариант для iOS.
Скетч использует библиотеку FastLED (пример Fire2012 от Mark Kriegsman), адаптированный для нескольких полос. Параметры огня: SPARKING (искристость) и COOLING (остывание) меняются динамически через веб-интерфейс или приложение. Также настраиваются FPS, яркость и цветовая палитра (4 цветовые точки).
Полный код скетча приведён в исходнике.
Загрузка файлов в SPIFFS
- Создайте папку «data» в папке скетча и поместите туда файлы веб-интерфейса.
- Установите плагин «ESP8266 Sketch Data Upload» для Arduino IDE (инструкции на GitHub).
- Переведите ESP в режим программирования, выберите Tools → ESP8266 Sketch Data Upload. Скорость загрузки 921600 ускоряет процесс.
Принцип работы
Скетч на ESP8266 поднимает веб-сервер, отвечающий на GET-запросы от приложения. Приложение отправляет параметры (цвета палитры, SPARKING, COOLING, яркость, FPS) как аргументы запроса. Например, установка яркости: https://192.168.4.1/conf?brightness=224.
Android-приложение
Создано на Phonegap (HTML, CSS, JS) — кроссплатформенная технология. Исходный код доступен на сайте ElectroPeak.
Производственный процесс
- Использование IoT для раннего обнаружения и предотвращения лесных пожаров
- Создание быстрой надежной системы обнаружения пожара с Samsung SAMI, Arduino UNO и Raspberry Pi
- Создание бюджетного детектора плача ребенка на Raspberry Pi — DIY-руководство
- Пожарные ущерб и предотвращение: экспертные стратегии защиты жизней и имущества
- Революция в пожарном деле: как IoT повышает безопасность, реагирование и спасение
- iOS против Android: какая платформа обеспечивает превосходную безопасность корпоративных приложений?
- Мастерство метода strip() в Python: подробное руководство и практические примеры
- Axiom Equipment Group и спонсоры сообщества пожертвуют $11 000 пожарному департаменту Oxbow
- Умный счётчик посетителей с управлением через Android-приложение
- Интеграция ёмкостного сканера отпечатков DFRobot с Arduino или ESP8266