IoT, ESP, NODE WiFi лампа-будильник

AlexGyver

Гувер
Команда форума
30.07.2018
73
205
43
#1
Ветка обсуждения проекта Крутая WiFi лампа-будильник
Страница проекта на AlexGyver.ru: https://alexgyver.ru/gyverlamp/
Репозиторий на GitHub: https://github.com/AlexGyver/GyverLamp/
Видео:

Делитесь своими вариантами изготовления, модификациями и улучшениями!
 
Последнее редактирование:
09.12.2018
6
3
3
#3
Месяц назад сделал 3D модель светильника для своего проекта, лента работала параллельно 6 по 9 диодов(не матрица).
Прошивка была McLighting эффектов много но не для матрицы.
Сенсорной кнопки ещё нет

IMG_20190619_223632[1].jpg IMG_20190619_223644[1].jpg IMG_20190619_223717[1].jpg
 
Симпатии: Понравилось Egen_M
#4
Хочу похвастаться своим изделием.Плафон и корпус напечатал на 3D принтере. Пластик PET-g, сопло 1 мм, слой 0,6 мм.
1.JPG 3.JPG 4.JPG 5.JPG 6.JPG

Вот оно видео Ссылка на Youtub правда качество не очень.Всё таки в реале цвета гораздо сочнее и красивее.

Вот ссылка на 3D модель лампы: 3D модель
 
Последнее редактирование:
Симпатии: Понравилось SergeR
26.06.2019
8
3
3
#6
Версия на матрице 16×16 . Основа: 100я муфта разделленая пополам с 100й заглушкой . Сердцевина 50 труба . Колба: ваза прозрачная 100 рублёвая, покрашеная изнутри белым балончиком . Не греется! блок питания 5v - 5A
 

Вложения

03.07.2019
2
2
3
#7
4 меняющих цвет блюр шара, шатающиеся по матрице

C++:
// --------------------------------- lightBalls ----------------------------------
const uint8_t BorderWidth = 2;

void lightBalls()
{
  // Apply some blurring to whatever's already on the matrix
  // Note that we never actually clear the matrix, we just constantly
  // blur it repeatedly.  Since the blurring is 'lossy', there's
  // an automatic trend toward black -- by design.
  uint8_t blurAmount = dim8_raw( beatsin8(3,64,100) );
  blur2d( leds, WIDTH, HEIGHT, blurAmount);

  // Use two out-of-sync sine waves
  uint8_t  i = beatsin8(  91, BorderWidth, WIDTH-BorderWidth);
  uint8_t  j = beatsin8( 109, BorderWidth, WIDTH-BorderWidth);
  uint8_t  k = beatsin8(  73, BorderWidth, WIDTH-BorderWidth);
  uint8_t  m = beatsin8( 123, BorderWidth, WIDTH-BorderWidth);

  // The color of each point shifts over time, each at a different speed.
  uint16_t ms = millis();
  leds[XY( i, j)] += CHSV( ms / 29, 200, 255);
  leds[XY( j, k)] += CHSV( ms / 41, 200, 255);
  leds[XY( k, m)] += CHSV( ms / 73, 200, 255);
  leds[XY( m, i)] += CHSV( ms / 97, 200, 255);

}
// Trivial XY function for the SmartMatrix; use a different XY
// function for different matrix grids. See XYMatrix example for code.
uint16_t XY( uint8_t x, uint8_t y)
{
  uint16_t i;
    if( y & 0x01) {
      // Odd rows run backwards
      uint8_t reverseX = (WIDTH - 1) - x;
      i = (y * WIDTH) + reverseX;
    } else {
      // Even rows run forwards
      i = (y * WIDTH) + x;
    }

  return i;
}
 
Последнее редактирование:
05.07.2019
29
20
3
#8
Приветствую всех любителей турбореактивной тяги:)
Вопщем натянул я сову на глобус веб-интерфейс на лампу,решил поделиться с сообществом.
Для начала: я не прогер и посему могут быть глюки в работе и немало говнокода.
Что реализовано: изменение режимов, скорости, яркости, масштаба эффектов.
Что не реализовано: выключение лампы, функция рассвет (оно мне не нужно было).

Необходимые библиотеки:
arduinoWebSockets версии 2.1.1
ArduinoJson версии 5.13.5

Как прошить скетч:
Читаем как установить ESP8266 Sketch Data Upload, если он у вас не установлен (очень внимательно читать подзаголовок "Загрузка файлов в файловую систему").
После установки ESP8266 Sketch Data Upload, качаем архив из этого сообщения и распаковываем в папку с вашими скетчами Arduino.
Редактируем файл config.json из папки GyverLamp_v2.0/data. Вместо dd-wrt пишем ваш е название точки доступа. Пароль qwerty12345 также меняете на пароль от своей точки доступа.
Открываем файл GyverLamp_v2.0 в arduino ide. Идем в меню инструменты - выбираем flash size: 4M (3M SPIFFS).
Загружаем скетч на еспшку.
Идем в меню инструменты - выбираем ESP8266 Sketch Data Upload и ждем пока все файлы загрузятся.
Открываем терминал и перезагружаем устройство.
Ищем строку что то вроде этой
Все.
В браузере идем по адресу gyverlamp.local и управляем устройством в свое удовольствие :)
Если адрес gyverlamp.local не работает, то переходим по 192.168.1.57 или тому адресу, что высветится у вас в терминале.
Имейте ввиду, страница грузится не быстро, во время загрузки страницы индикация подтормаживает, но это не критично.
Всем удачи.
 

Вложения

08.12.2018
12
14
3
#9
итак мой вариант берем соединитель воздушного канала 100мм типа такого https://pvd.by/catalog/ventilyacziya/vozduxovodyi-plastikovyie/soedinitel-kruglogo-kanala-d100.html отрезаем одну часть до бортика , вторую разрезаем и отрезаем примерно 1 см .. соединяем края "термосплями" и закрепляем для надежности отрезанной частью , фиксируем вставленную часть в плафоне тремя - четырьмя каплями .
 

Вложения

03.07.2019
2
2
3
#10
Как прошить скетч:
Читаем как установить ESP8266 Sketch Data Upload, если он у вас не установлен (очень внимательно читать подзаголовок "Загрузка файлов в файловую систему").
После установки ESP8266 Sketch Data Upload, качаем архив из этого сообщения и распаковываем в папку с вашими скетчами Arduino.
Редактируем файл config.json из папки GyverLamp_v2.0/data. Вместо dd-wrt пишем ваш е название точки доступа. Пароль qwerty12345 также меняете на пароль от своей точки доступа.
Открываем файл GyverLamp_v2.0 в arduino ide. Идем в меню инструменты - выбираем flash size: 4M (3M SPIFFS).
Загружаем скетч на еспшку.
Идем в меню инструменты - выбираем ESP8266 Sketch Data Upload и ждем пока все файлы загрузятся.
не получается загрузить файлы в есп , ошибка - SPIFFS Error: esptool not found!
UPD : https://github.com/espressif/esptool качаем файл esptool.py и кидаем в папку tools
 
Последнее редактирование:
18.06.2019
27
7
3
#11
Я тоже перерабатываю прошивку.
Пока результаты такие:
1. Исправлена ошибка, связанная с WiFi (сценарий: нормальная работа в режиме подключения к роутеру, потом выключение роутера и последующий перезапуск лампы по watchdog'у или кнопкой reset, но не питанием, - и циклическая вечная перезагрузка с интервалом в 8 секунд). Вообще, исправлен механизм подключения к WiFi сети: поскольку функция отключения watchdog'а не работает (именно из-за этого наблюдаются перезагрузки через 8 секунд), библиотеке WiFiManager выставлен таймаут подключения к WiFi сети в 7 секунд. Этого более, чем достаточно. По-другому обойти не смог. Также добавлен таймаут ожидания ввода SSID и пароля новой WiFi сети в конфигурационном режиме - 3 минуты.
2. При переносе в другую WiFi сеть теперь не нужна перепрошивка, при неудачном подключении лампа развернёт WiFi точку доступа и запросит SSID и пароль от новой сети. Потом снова перезагрузится в режим подключения к роутеру для нормальной работы.
3. Добавлена опция выключения обращений в интернет, для этого нужно удалить или закомментировать строку "#define USE_NTP"
4. Добавлена опция использования лампы без кнопки, для этого нужно удалить или закомментировать строку "#define ESP_USE_BUTTON". Если просто не подключать кнопку, у меня возникала ошибка фальшивого длительного касания и как следствие повышения яркости до максимаьной на любом эффекте.
5. IP адрес лампы можно просто не вводить (в строке "uint8_t STA_STATIC_IP[] ={}"), тогда роутер сам назначит ей адрес из своего настроенного диапазона адресов. Полученный IP адрес можно будет посмотреть на роутере, приложением-сканером сети типа WiFiman с телефона или компьютера или в выводе Serial порта лампы. Я, например, задал адрес на роутере (привязка по mac адресу в DHCP), а в прошивке оставил пустым.
6. Включен вывод подробной отладки в Serial порт. Виден обмен данными с android приложением, если вдруг кто-то хочет его менять или дополнять. Отключить можно, удалив или закомментировав строку "#define GENERAL_DEBUG".
7. Отдельно добавлен подробный вывод отладочной информации библиотеки WiFiman, как самой капризной. Виден процесс подключения к WiFi сети или разворачивания WiFi точки доступа. Отключается установкой false вместо true в строке "#define WIFIMAN_DEBUG (true)".
8. Также, немного потестировал и вложил эксель табличку с результатами тестирования.
9. Переформатировал под себя код и добавил ещё больше комментариев (мне так удобнее, может, ещё кому-то пригодится).

В планах (если хватит времени и вдохновения):
1. Исправление регулировки скорости некоторых эффектов.
2. Обновление прошивки по воздуху, чтоб не расковыривать лампу при выходе новой прошивки.
3. Портирование прошивки под esp32 (это уже в совсем нескором будущем). Ибо во1, esp32 в отличие от esp8266 двухъядерный (одно ядро выполняет все "служебные" операции, например, поддерживает WiFi подключение, второе выполняет пользовательский код, это очень повышает стабильность и практически сводит к нулю эти перезагрузкт по watchdog'у); во2, быстрее. А стоит всего на пару баксов больше.

Буквы U в константах указаны там, где значения должны быть неотрицательные (unsigned). Так проще искать ошибки.

P.S. Тетировал на Wemos D1 mini. Его же выбирал как плату при прошивке.
P.P.S. Не претендую на полноту тестирования или безошибочность своих исправлений, дела, потому что мне так лучше. Если будете брать, пробуйте всё "на свой свой страх и риск".
 

Вложения

05.07.2019
29
20
3
#12
Небольшое обновление версии прошивки с веб-интерфейсом.
Что нового:
Добавлены 3 новых эффекта (один от товарища q7c и еще два найденных в сети)
При смене эффекта в веб-панели - отображаются текущие настройки эффекта (ползунки не статичны, как было раньше).
В настройках wi-fi возможно изменить адрес панели (по умолчанию http://gyverlamp.local/). Для чего это сделано? Это сделано для того, чтобы не было проблем при подключении двух и более ламп к одному роутеру.
Синхронизирована работа кнопки и веб интерфейса (попробуйте открыть панель управления эффектами и поуправлять настройками лампы с помощью кнопки :) )
После перезагрузки еспшки яркость лампы не меняется, как это было раньше.

ЗЫ. пытался еще реализовать такую фичу: при включении лампа пытается подключиться к роутеру, если роутер выключен и еспшка не может подключиться к роутеру в течении 10 сек.- еспшка переходит в режим точки доступа. и тут начинаются проблемы. Точка доступа создается, но спустя какое-то время пропадает (примерно через минуту-две). При этом есп не перезагружается и лампа работает. Но точки доступа нет. Кто разбирается - посмотрите файл wifi_init.h, где там собака зарыта.
 

Вложения

#13
Я решил повторить лампу, но в Леруа не удалось найти предложенный плафон. Видимо спрос на них действительно повысился многократно. Рядом лежали другие пласттиковые и под патрон рампы Е14. Но и тут сантехника рулит. Вот набор из которого я собрал корпус лампы.

WP_20190630_18_31_37_Pro.jpg
WP_20190630_20_21_11_Pro.jpg

Вот так он светится

 
16.05.2019
20
12
3
#14
Наконец то закончил лампу. Так как я хохол, то у меня нет возможности купить такой плафон в леруа. Купил похожий в Brille.
photo_2019-07-14_18-05-38.jpg
И через дружескую печать на сайте гайвера нашел человека, который напечатал мне подставку и крышку под этот самый плафон.
photo_2019-07-14_18-17-38.jpg photo_2019-07-14_18-17-41.jpg photo_2019-07-14_18-17-42.jpg photo_2019-07-14_18-17-45.jpg
Матрицу закрепил на куске алюминиевой трубы 50х2.
photo_2019-07-14_18-05-47.jpg
Даже косо-криво спроектированная подставка (моё первое 3д проектирование) нормально подходить под плафон и внутренний диаметр трубы. Всё сидит очень плотно.
Также добавил штекер и кнопку вкл-выкл.
photo_2019-07-14_18-27-41.jpg
И, конечно, калька, чтобы не было видно отдельных пикселей. Вид сверху)
photo_2019-07-14_18-05-49.jpg
И вот так оно красиво светится)
photo_2019-07-14_18-05-42.jpg
Спасибо Гайверу за проект. Очень классная штука получилась, не могу нарадоваться)
 
14.07.2019
2
6
3
#15
Все отлично, спасибо.

Собрал лампу с 16х16 матрицей, квадратный плафон, ножки из винных пробок.
Контроллер Sonoff SV, единственное на esp8266, что оказалось под рукой.
Шил из platformio, немного переделал прошивку, WifiManager из development с возможностью асинхронной работы, все остальное последнее из master веток.
https://github.com/CODeRUS/GyverLamp-sonoff-pio

photo_2019-07-14_23-05-44.jpg
Видео до сборки:
 
#17
Приветствую.
Представляю следующую версию моего варианта прошивки с веб-интерфейсом.
В этом варианте добавилась возможность добавлять эффекты в "избранное".
Также появился ползунок, задающий интервал смены избранных эффектов.
Интервал настраивается в пределах от 1 до 60 минут.

Как активировать режим "избранное".
выберите эффект, который вам нравится, из выпадающего списка.
Нажмите кнопку добавить в избранное. И так со всеми вашими избранными эффектами.
Нажмите кнопку "Включить режим избранное".
Задайте интервал смены режимов (по умолчанию - 10 минут).
Если в избранном нет ни одного режима - кнопка "Включить режим избранное" не активируется.

В архив включены 2 папки.
Одна версия прошивки с поддержкой mDNS. Доступ к панели управления по адресу gyverlamp.local (можно поменять в настройках в панели управления).
Другая версия прошивки без mDNS (т.к. mDNS может не у всех работать). Доступ к панели управления по адресу http://192.168.1.87 (IP-адреса настраиваются в файле wifi_init.h).

Задать настройки для подключения к вашей точке доступа можно двумя способами.
1. До прошивки отредактировать ssid и password в файле (вместо dd-wrt название вашей ТД, вместо qwerty12345 пароль от вашей ТД).
2. Прошить как есть, через 11 секунд появится точка доступа Gyverlamp, подключиться к Gyverlamp, перейти в настройки по адресу 192.168.4.1, открыть страницу "Настройка Wi-Fi", в поле SSID и Pass ввести название вашей ТД и пароль от вашей ТД соответственно. Нажать кнопку "сохранить" и перезагрузить устройство.
После перезагрузки лампа подключится к вашей ТД.
Усё.
 

Вложения

#18
Всем привет!
Тоже не смог удержаться!
За основу взял лампу из магазина ИКЕЯ Ссылка
Крышку напечатал на 3D принтере за 300 рублей
Внутри блок питания на 5В - 2,5А (купил на местном радиорынке) типа Ссылка
Мозги NodeMCU
NodeMCU.jpg
Кнопка в крышке, труба d=50 + заглушка d=50.
Прошивка от Уважаемого gunner47 Прошивка
Вот что получилось:
IMG_7159.JPG IMG_7163.JPG
IMG_7170.JPG
IMG_7169.JPG IMG_7162.JPG IMG_7166.JPG
 

Вложения

malec

Проходящий мимо
05.02.2019
112
26
28
#19
Здоровья всем Господа "рукоблуды". Загорелся этой лампой очень давно, но, то лишних копеек нет, то ещё какой "геморой". А после увидел ви фи лампу и ещё больше её "захотел"))) Короче заказал матрицу и ленты пяток метров ИСиПишку ну и т.д. и т.п. Не прошло и двух недель как мне пришла СМС , придите мол получите, ( я ещё всякую щнягу заказывал) и к моему удивлению пришла матрица и лента в одном пакете, хоть и заказывал в разных магазинах...Ну и на радостях поехал я в леруа, в инетмагазине плафон 400р. Заехал в один нет, в другой нет в третий тоже " борода", растроился и вдруг!!!!! Как в доброй сказке))) попался мне на глаза светильник на стойке, они там только длинной стоек и ценой отличаются. А матрица 16х16 как будто специально для этого светила... На работе нашёл огрызок трубы на 50, и понесло...вот фото проекта.
Да цена светила 900р самый маленький. Но оно того стоит)))) результат превзашол ожидание, правда ИСиПишка ещё не доехала залил тест матрицы на НАНО...)))
И перемычки распаять во внутрь трубы по моему лучше, матрица в стык ложиться без щелей и ровней...
Всем всех благ, и удачных решений)))
 

Вложения

#20
Яблочникам посвящается. Сделал простенькое приложение под iOS, умеет все то же, что и под андроид, разве что багов чуть больше ввиду отсутствия времени, ну и делал для себя. Уже доступно в AppStore https://apps.apple.com/ru/app/arduino-lamp/id1473000797 За основу взята доработка от
gunner47