Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andaran/smart_garland
Код контроллера для адресной светодиодной гирлянды
https://github.com/andaran/smart_garland
esp8266 platformio remote-control wemos-d1-mini
Last synced: 3 days ago
JSON representation
Код контроллера для адресной светодиодной гирлянды
- Host: GitHub
- URL: https://github.com/andaran/smart_garland
- Owner: andaran
- Created: 2024-12-14T15:53:32.000Z (about 2 months ago)
- Default Branch: master
- Last Pushed: 2025-02-01T14:18:12.000Z (3 days ago)
- Last Synced: 2025-02-01T15:25:37.950Z (3 days ago)
- Topics: esp8266, platformio, remote-control, wemos-d1-mini
- Language: C++
- Homepage:
- Size: 637 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# (Без)Умная гирлянда
Контроллер для адресной светодиодной ленты в виде гирлянды на ёлку на базе микроконтроллера WeMos D1 Mini (esp8266). Воспринимает гирлянду как коническую спираль, что позволяет воспроизводить на ней 3д эффекты.
## Особенности
- **Разнообразие эффектов**: в программе реализовано 36 эффектов разных типов;
- **Продвинутая рисовалка**: возможность рисовать и создавать анимации (гифки) на гирлянде. На фон анимации можно накладывать другие эффекты;
- **Удаленное управление**: гирлянда управляется с любого устройства по Wi-Fi через удобное приложение в [appex-system](https://github.com/andaran/appex-system);
- **Множество возможностей**: настройка яркости, таймера выключения, слайдшоу из эффектов.
- **Технологичность**: в основе проекта лежит динамический цифровой двойник ёлки, позволяющий удобно управлять гирляндой и разрабатывать эффекты.## Установка
1. Установить расширение platformio для VSCode или другого редактора;
2. Склонировать репозиторий:
```bash
git clone https://github.com/andaran/smart_garland
```3. Создать файл `src/settings.h` и настроить параметры гирлянды:
```cpp
#pragma once// Сетевые настройки
#define ussid "ussid" // Название Wi-Fi сети
#define pass "pass" // Пароль Wi-Fi сети#define roomIDSetting "roomID" // ID комнаты в appex
#define roomPassSetting "roomPass" // Пароль комнаты// Параметры ленты
#define LED_PIN D1 // Пин ленты
#define NUM_LEDS 200 // Количество светодиодов
#define BASE64_LENGTH 901 // 3 * NUM_LEDS * 3 / 2 + 1// Кнопка
#define BUTTON_PIN D3 // Пин кнопки
```4. Скомпилировать прошивку и загрузить на микроконтроллер;
## Первое включение
1. Намотать гирлянду на ёлку по рекомендациям приложения.
2. Подключить гирлянду к контроллеру, контроллер к питанию. На гирлянде загорятся белые огоньки.
3. Открыть терминал в приложении. Включить режим стрима состояния гирлянды через wifi и войти в режим настройки 3д модели ёлки:
```
stream wifi
```
```
setup model
```4. Настроить параметры расположения витков гирлянды на ёлке c помощью команды, рекомендуемой приложением. Пример:
```
turns 33 31 27 24 22 18 15 12 8 6 4
```5. На гирлянде отобразится синяя полоска вдоль образующей конуса ёлки. При необходимости её можно подкорректировать. Затем завершить настройку:
```
setup done
```6. Приятного использования!
## Эффекты
Проект поддерживает множество эффектов разных типов. Эффекты каждого типа представлены в разных цветовых исполнениях.
### 1. **Простые эффекты**
- **rainbow**: Цвета плавно меняются по очереди (цветовое колесо).### 2. **Мерцающие цвета**
Позволяют настроить гирлянду на один цвет, каждый светодиод плавно меняет яркость от минимума к максимуму и обратно:
- **cherry**
- **lime**
- **blueberry**
- **gold**
- **deep**
- **peony**
- **dream**
- **lemongrass**### 3. **Эффекты на основе палитр**
Используют заранее заданные палитры цветовых градиентов для создания плавных переходов с помощью линейной интерполяции:
- **cyberpunk**
- **sunset**
- **optimus**
- **warm**
- **cold**
- **hot**
- **pink**
- **comfy**
- **girl**
- **christmas**
- **acid**
- **smoke**
- **aurora**
- **redwhite**
- **ocean**
- **fog**Часть эффектов взята из [проекта Алекса Гайвера](https://github.com/AlexGyver/GyverTwink)
### 4. **Эффекты - полоски**
Полоски из двух цветов, вращающиеся вокруг ёлки (3д эффект):
- **candy**
- **police**
- **blueberry-candy**
- **lemonade**
- **mint-candy**
- **strawberry**### 5. **Эффекты - дождь**
Имитируют дождь с различными цветами капель (3д эффект):
- **rain**
- **snow**
- **acid-rain**
- **bite-a-lemon**
- **hell-rain**## Документация по командам
### Универсальные команды
```
setup
```
Команда для перехода в режим настройки. При аргументе `"done"` завершает настройку и возвращает в начальное состояние. Для начала настройки анимации или модели:
- `"anim "` — начало настройки анимации с указанным именем;
- `"model"` — начало настройки модели.```
save
```
Сохраняет текущие изменения. Работает только в контексте настройки анимации.```
remove
```
Удаляет анимацию по указанному имени. Используется формат:
- `remove anim ````
memory
```
Выводит информацию о текущем состоянии памяти устройства, включая общий объём, свободную память и степень фрагментации.```
fs
```
Управляет файловой системой. Доступны следующие аргументы:
- `"format"` — форматирует файловую систему;
- `"list"` — выводит список файлов в корневой директории;
- `"status"` — выводит информацию о статусе файловой системы (в Кб);
- `"remove "` — удаляет файл;
- `"read "` — читает содержимое файла.```
stream
```
Управляет состоянием трансляции состояния гирлянды. При отсутствии аргумента возвращает текущее состояние:
- `"off"` — стрим выключен;
- `"wifi"` — стрим через Wi-Fi;
- `"cable"` — стрим через кабель.---
### Команды основного состояния
```
effect
```
Устанавливает эффект для ленты. При отсутствии аргументов возвращает текущий эффект. В качестве аргумента можно передать:
- `"random"` — случайный эффект;
- `""` — для выбора нужного эффекта;
- `"anim-"` — для выбора пользовательской анимации.```
power
```
Включает или выключает ленту. При отсутствии аргумента возвращает текущее состояние ленты. В качестве аргумента можно передать:
- `"on"` — включить ленту;
- `"off"` — выключить ленту.```
brightness
```
Устанавливает яркость ленты в диапазоне от 0 до 255. При отсутствии аргумента возвращает текущую яркость.
- `""` — устанавливает яркость.```
timer
```
Устанавливает таймер для ленты. При отсутствии аргумента возвращает текущее состояние таймера. В качестве аргумента можно передать:
- `"off"` — выключить таймер;
- `""` — установить таймер на указанное количество минут.```
slideshow
```
Управляет слайдшоу. При отсутствии аргумента запускает слайдшоу с предыдущим тайм-аутом. В качестве аргумента можно передать:
- `"off"` — остановить слайдшоу;
- `""` — установить тайм-аут для слайдшоу.---
### Команды настройки анимации
```
led
```
Добавляет или удаляет светодиоды для анимации. Поддерживает следующие подкоманды:
- `"add "` — добавляет светодиод на указанную позицию с заданными цветами (RGB);
- `"remove "` — удаляет светодиод с указанного индекса.```
background
```
Добавляет или удаляет фоновый эффект для анимации. Поддерживает следующие подкоманды:
- `` — добавляет фоновый эффект с указанным именем;
- `"remove"` — удаляет фоновый эффект.```
frame
```
Управляет кадрами анимации. При отсутствии аргумента возвращает текущий кадр. Поддерживает следующие подкоманды:
- `"next"` — переключается на следующий кадр;
- `"prev"` — переключается на предыдущий кадр;
- `"delete"` — удаляет текущий кадр.```
duration
```
Устанавливает длительность кадра анимации. В качестве аргумента передаётся длительность в миллисекундах. При отсутствии аргумента возвращает текущую длительность.
- `""` — устанавливает длительность.---
### Команды настройки модели ёлки
```
turns
```
Обновляет количество светодиодов в каждом витке гирлянды. Аргументом передаётся строка с числами, разделёнными пробелами, которые определяют количество светодиодов в каждом витке. Пример:`"turns 33 31 27 24 22 18 15 12 8 6 4"`
После выполнения команды обновляется модель ёлки.