ESP, IoT WiFi лампа-будильник. Обсуждение проекта

Сообщение изъято на правах администрации
ВНИМАНИЕ !!!
те кто живой и хочет увидеть ссылку на свое исполнение, прошу централизовать все свои доработки и сообщения. Далее в теме пишем сообщение с ссылкой на ваше сообщение (с проектом), с пометкой @mechanic .


В данной ветке обсуждаются только сия проект. Общие вопросы, доработки и проблемы, не относящиеся к конкретным прошивкам!. Вопросы по прошивкам решаем в темах самих прошивок. Здесь такие разговоры оффтоп.
Всякий любой вопрос не по теме сразу удаляется БЕЗ объяснения причины!
Для этого есть соответствующие ветки форума. Вопрос почему удалили мой пост? также удаляется.

  • Общаясь на форуме будьте взаимно вежливы!
  • Обратите внимание на то, что у нас принято говорить Спасибо путём повышения репутации, нажав на кнопочку
    .
  • Если есть претензии то нажмите кнопку .
  • Запрещено писать красным цветом в ваших постах - этот цвет только для Модераторов .
  • Вопросы, ответ на которые есть в шапке или в FAQ, будут удаляться. За повторный вопрос пользователь может быть наказан.
  • Убедительная просьба придерживаться тематики ветки, избегать флуда и оффтопа!
Очень часто при первом запуске лампы, при подключении к сети лампы не открывается менеджер сетей WIFI.
Помогает комментирование строки #define ESP_USE_BUTTON (отключение кнопки) и заливка скетча выставив Erase flash в All Flash Content
После того, как вы подключили лампу к сети эту строку можно раскомментировать и залить скетч с параметром Erase flash установленным в Only Sketh
Наш участник собрал много полезной информации по блокам питания для лампы. Качественное питание - необходимое условие надёжной работы любого устройства. Изучаем: https://community.alexgyver.ru/threads/nebolshoj-opus-po-bp-dlja-gyverlamp-wifi-lampa-budilnik.3523/

ВНИМАНИЕ! Если у вас не компилируется или не загружается скетч - значит вы сделали что-то неправильно. Специально для вас созданы две темы:
ESP8266, проблема с компиляцией скетча
ESP8266, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 

Комментарии

recoshet

★✩✩✩✩✩✩
15 Июн 2019
1
14
Сообщение изъято на правах администрации
ВНИМАНИЕ !!!
те кто живой и хочет увидеть ссылку на свое исполнение, прошу централизовать все свои доработки и сообщения. Далее в теме пишем сообщение с ссылкой на ваше сообщение (с проектом), с пометкой @mechanic .


В данной ветке обсуждаются только сия проект. Общие вопросы, доработки и проблемы, не относящиеся к конкретным прошивкам!. Вопросы по прошивкам решаем в темах самих прошивок. Здесь такие разговоры оффтоп.
Всякий любой вопрос не по теме сразу удаляется БЕЗ объяснения причины!
Для этого есть соответствующие ветки форума. Вопрос почему удалили мой пост? также удаляется.

  • Общаясь на форуме будьте взаимно вежливы!
  • Обратите внимание на то, что у нас принято говорить Спасибо путём повышения репутации, нажав на кнопочку
    .
  • Если есть претензии то нажмите кнопку .
  • Запрещено писать красным цветом в ваших постах - этот цвет только для Модераторов .
  • Вопросы, ответ на которые есть в шапке или в FAQ, будут удаляться. За повторный вопрос пользователь может быть наказан.
  • Убедительная просьба придерживаться тематики ветки, избегать флуда и оффтопа!
Очень часто при первом запуске лампы, при подключении к сети лампы не открывается менеджер сетей WIFI.
Помогает комментирование строки #define ESP_USE_BUTTON (отключение кнопки) и заливка скетча выставив Erase flash в All Flash Content
После того, как вы подключили лампу к сети эту строку можно раскомментировать и залить скетч с параметром Erase flash установленным в Only Sketh
Наш участник собрал много полезной информации по блокам питания для лампы. Качественное питание - необходимое условие надёжной работы любого устройства. Изучаем: https://community.alexgyver.ru/threads/nebolshoj-opus-po-bp-dlja-gyverlamp-wifi-lampa-budilnik.3523/

ВНИМАНИЕ! Если у вас не компилируется или не загружается скетч - значит вы сделали что-то неправильно. Специально для вас созданы две темы:
ESP8266, проблема с компиляцией скетча
ESP8266, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 

ssp1971

★★✩✩✩✩✩
14 Мар 2020
108
71
может кто возьмётся прикрутить пульт. было бы ооочень удобно. ну и яркость всё ещё актуальна.
 

bumba.FL

✩✩✩✩✩✩✩
26 Фев 2020
13
4
может кто возьмётся прикрутить пульт. было бы ооочень удобно. ну и яркость всё ещё актуальна.
Был пост на эту тему
Несколько раз спрашивали про пульт для лампы. Также это может помочь тем у кого айфон или, например, в приложении не будет возможности нормального управления DFPlayer (вкл. / выкл., регулировка уровня звука, выбор файла воспроизведения). DFPlayer у меня установлен, но пока не работает. Получилось подключить пульт. Расскажу подробнее:
1. Я использовал ИК-приемник VS1838B (можно и готовый модуль для Arduino). Пульт мелкий, китайский с али. Подключаем выход ИК- приемника на любой свободный pin кроме GPIO16 (для Wemos кроме D0).
2. Скачать и установить библиотеку IRremote ESP8266 отсюда: https://github.com/crankyoldgit/IRremoteESP8266
3. Добавляем в файл GyverLamp_v1.4.ino:
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>

// ----- настройка ИК пульта
#define REMOTE_TYPE 1 //0 - без пульта, 1 - мой пульт
IRrecv irrecv(IR_PIN);
decode_results results;
uint8_t IR_Key = 0; // +++ глобальная переменная нажатия клавиш на пульте

// ----- КНОПКИ ПУЛЬТА -----
#if REMOTE_TYPE == 1
#define BUTT_UP 0xFF18E7
#define BUTT_DOWN 0xFF4AB5
#define BUTT_LEFT 0xFF10EF
#define BUTT_RIGHT 0xFF5AA5
#define BUTT_OK 0xFF38C7
#define BUTT_1 0xFFA25D
#define BUTT_2 0xFF629D
#define BUTT_3 0xFFE21D
#define BUTT_4 0xFF22DD
#define BUTT_5 0xFF02FD
#define BUTT_6 0xFFC23D
#define BUTT_7 0xFFE01F
#define BUTT_8 0xFFA857
#define BUTT_9 0xFF906F
#define BUTT_0 0xFF9867
#define BUTT_STAR 0xFF6897 // *
#define BUTT_HASH 0xFFB04F // #
#endif

В void setup() добавляем строку
irrecv.enableIRIn(); // Запуск ИК приемника

В void loop() добавляем строки:
if (irrecv.decode(&results)) {
serialPrintUint64(results.value, HEX); // вывод кодов клавиш в serial
uint32_t low = results.value;
LOG.print(F(" Код = ")); LOG.print(low, HEX); // вывод кодов клавиш в telnet
#if REMOTE_TYPE == 1
remoteTick(); // опрос ИК пульта
#endif
irrecv.resume(); // Готов принимать следующие коды
Коды клавиш у вас будут свои, нужно смотреть в serial или telnet поочередно нажимая каждую клавишу, на это время закомментируйте в void loop() строку remoteTick();

В файл Constants.h строку:
#define IR_PIN (14U) // +++ пин ИК приёмника D5
У меня на Wemos подключен на D5 (GPIO14).

В файл time.ino (можно в другой) вставляем функцию:
void remoteTick() {
switch (results.value) {
case BUTT_1: IR_Key = 1;
break;
case BUTT_2: IR_Key = 2;
break;
case BUTT_3:
break;
case BUTT_4:
break;
case BUTT_5:
break;
case BUTT_6:
break;
case BUTT_7:
break;
case BUTT_8:
break;
case BUTT_9:
break;
case BUTT_0:
break;
case BUTT_STAR:
break;
case BUTT_HASH:
break;
case BUTT_OK:
break;
case BUTT_UP:
break;
case BUTT_DOWN:
break;
case BUTT_LEFT:
break;
case BUTT_RIGHT:
break;
default: // если не распознали кнопку, выход из функции!
break;
}
}
Здесь я взял (для примера) 2 клавиши пульта: клавиша «1» дублирует однократное нажатие на сенсорную кнопку, а клавиша «2» дублирует двукратное нажатие.

В файле button.ino:
находим блок для однократного нажатия, заменяем строку
if (clickCount == 1U)
на
if (clickCount == 1U || IR_Key == 1)
и добавляем строку перед закрытием блока if
IR_Key = 0;
должно получиться так:
// однократное нажатие
if (clickCount == 1U || IR_Key == 1)
{
if (dawnFlag)
{
manualOff = true;
dawnFlag = false;
FastLED.setBrightness(modes[currentMode].Brightness);
changePower();
}
else
{
ONflag = !ONflag;
changePower();
}
settChanged = true;
eepromTimeout = millis();
loadingFlag = true;

#if (USE_MQTT)
if (espMode == 1U)
{
MqttManager::needToPublish = true;
}
#endif
IR_Key = 0;
}
находим блок для двукратного нажатия, заменяем строку
if (ONflag && clickCount == 2U)
на
if ((ONflag && clickCount == 2U) || (ONflag && IR_Key == 2))
и добавляем строку перед закрытием блока if
IR_Key = 0;
должно получиться так:
// двухкратное нажатие
if ((ONflag && clickCount == 2U) || (ONflag && IR_Key == 2))
{
if (++currentMode >= (int8_t)MODE_AMOUNT) currentMode = 0;
FastLED.setBrightness(modes[currentMode].Brightness);
loadingFlag = true;
settChanged = true;
eepromTimeout = millis();
FastLED.clear();
delay(1);

#if (USE_MQTT)
if (espMode == 1U)
{
MqttManager::needToPublish = true;
}
#endif
IR_Key = 0;
}
Далее по аналогии назначаете остальные кнопки на разные события.
PS. Используйте только библиотеку которую указал выше, т. к. с другими библиотеками для arduino могуль уходил в постоянную перезагрузку при старте, причем при подключении на любой pin.
 

Сотнег

★★★★★★★
15 Янв 2020
4,104
1,434
Ещё один недоделанный
Эффект Спирали

На наших 16х16 это выглядит совсем не впечатляюще...
А оригинал вот:
C-like:
// процедура dimAll использована готовая из эффекта Кометы
// если компилятор скетча жалуется на повторы, эти строчки нужно удалить
void dimAll(uint8_t value) {
  for (uint16_t i = 0; i < NUM_LEDS; i++) {
    leds[i].nscale8(value); //fadeToBlackBy
  }
}


// --------------------------- эффект спирали ----------------------
/*
* Aurora: https://github.com/pixelmatix/aurora
* https://github.com/pixelmatix/aurora/blob/sm3.0-64x64/PatternSpiro.h
* Copyright (c) 2014 Jason Coon
* Неполная адаптация SottNick
*/
    byte spirotheta1 = 0;
    byte spirotheta2 = 0;
    byte spirohueoffset = 0;

    const uint8_t spiroradiusx = WIDTH / 4;
    const uint8_t spiroradiusy = HEIGHT / 4;
 
    const uint8_t spirocenterX = WIDTH / 2;
    const uint8_t spirocenterY = HEIGHT / 2;
 
    const uint8_t spirominx = spirocenterX - spiroradiusx;
    const uint8_t spiromaxx = spirocenterX + spiroradiusx + 1;
    const uint8_t spirominy = spirocenterY - spiroradiusy;
    const uint8_t spiromaxy = spirocenterY + spiroradiusy + 1;

    uint8_t spirocount = 1;
    uint8_t spirooffset = 256 / spirocount;
    boolean spiroincrement = false;

    boolean spirohandledChange = false;

uint8_t mapsin8(uint8_t theta, uint8_t lowest = 0, uint8_t highest = 255) {
  uint8_t beatsin = sin8(theta);
  uint8_t rangewidth = highest - lowest;
  uint8_t scaledbeat = scale8(beatsin, rangewidth);
  uint8_t result = lowest + scaledbeat;
  return result;
}

uint8_t mapcos8(uint8_t theta, uint8_t lowest = 0, uint8_t highest = 255) {
  uint8_t beatcos = cos8(theta);
  uint8_t rangewidth = highest - lowest;
  uint8_t scaledbeat = scale8(beatcos, rangewidth);
  uint8_t result = lowest + scaledbeat;
  return result;
}

void spiroRoutine() {
      dimAll(250);

      boolean change = false;
   
      for (int i = 0; i < spirocount; i++) {
        uint8_t x = mapsin8(spirotheta1 + i * spirooffset, spirominx, spiromaxx);
        uint8_t y = mapcos8(spirotheta1 + i * spirooffset, spirominy, spiromaxy);

        uint8_t x2 = mapsin8(spirotheta2 + i * spirooffset, x - spiroradiusx, x + spiroradiusx);
        uint8_t y2 = mapcos8(spirotheta2 + i * spirooffset, y - spiroradiusy, y + spiroradiusy);

        CRGB color = ColorFromPalette( PartyColors_p, (spirohueoffset + i * spirooffset)     , 128U); // вообще-то палитра должна постоянно меняться, но до адаптации этого руки уже не дошли

if (x2<WIDTH && y2<HEIGHT) // добавил проверки. не знаю, почему эффект подвисает без них
        leds[getPixelNumber(x2, y2)] += color;
     
        if((x2 == spirocenterX && y2 == spirocenterY) ||
           (x2 == spirocenterX && y2 == spirocenterY)) change = true;
      }

      spirotheta2 += 2;

      EVERY_N_MILLIS(12) {
        spirotheta1 += 1;
      }

      EVERY_N_MILLIS(75) {
        if (change && !spirohandledChange) {
          spirohandledChange = true;
       
          if (spirocount >= WIDTH || spirocount == 1) spiroincrement = !spiroincrement;

          if (spiroincrement) {
            if(spirocount >= 4)
              spirocount *= 2;
            else
              spirocount += 1;
          }
          else {
            if(spirocount > 4)
              spirocount /= 2;
            else
              spirocount -= 1;
          }

          spirooffset = 256 / spirocount;
        }
     
        if(!change) spirohandledChange = false;
      }

      EVERY_N_MILLIS(33) {
        spirohueoffset += 1;
      }
}
Бегунок Скорость к эффекту не прикручен. Так что выставляйте почти максимальную, чтобы не тормозило (15-30 единиц от максимально возможной).
Бегунок Масштаб тоже ни на что не влияет.

Устанавливается вместо любого эффекта, который хотите.
Просто добавьте код из файла или из спойлера в effects.ino и подключите в effectTicker.ino
типа так:
// case EFF_SPARKLES: sparklesRoutine(); break; // отключили эффект Конфетти
case EFF_SPARKLES: spiroRoutine(); break;
 

Вложения

  • 3.5 KB Просмотры: 12
Изменено:

Veta-Kompozitor

✩✩✩✩✩✩✩
6 Ноя 2019
16
2
Собрал лампу, все работает. Прошивку выбрал от "vvip-68", понравилось то, что там прикручен MP3 DFPlayer и LED индикатор TM1637 . Хотелось иметь мини имитатор камина включив эффект пламени и звук костра (закинул в паку со звуковыми файлами, подменив родной). Просто так включить звук из приложения нельзя, только при прослушивании во время установки будильника. Но вот косяк, в приложении во вкладке будильник строчки выбора звукового файла исчезают через пол секунду после открытия и никак потом не появляются. Иногда не понятно почему они присутствуют, но потом опять их не найти. Понятно, что "vvip-68" наверно забросил свое детище, но может кто сталкивался с таким? И есть ли еще прошивки для лампы Гайвера со звуковыми эффектами?
 

Belokota

★✩✩✩✩✩✩
24 Дек 2019
98
29
@Сотнег, почему то при включении эффекта Спираль лампа мигает белым светом внизу и выключается. При компиляции ошибок нет. Прошивка от Gunner47.
 

Сотнег

★★★★★★★
15 Янв 2020
4,104
1,434
@Belokota, а строчки с русскими комментариями как выглядят?

Я поменял их под спойлером выше. Теперь одна строчка.
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,104
1,434
Прблема:
Прошивка gunner47
Запустил в другом месте, лампа не найдя wifi который она знает развернула точку доступа LedLamp
Подключился с телефона без проблем, НО не выводит страницу конфигурации чтобы выбрать сеть к которой подключиться!
Пробовал уже перепрошивать - не помогает!
Либо семикратное нажатие кнопки, либо перепрошивать с кабеля с обнулением памяти.
 

serg167

✩✩✩✩✩✩✩
10 Окт 2019
21
7
Привет.. собрал две лампы - одна "классика" на Wemos, вторая на Ардуино Нано по ссылке со страницы проекта..
хочу сделать лампу для родителей, люди уже в возрасте, живут далеко, и ВайФай не настроят.. собрав на Ардуинке - без ВайФая - только на кнопке - понял, что это им ( да и мне тоже) не справиться ( два клика и держать, три клика и держать) - сложно, загнал в такие скорости и шкалы, а назад не получается.. увидел выше ссылку на вариант с пультом - буду думать в этом направлении..
только вот что я заметил - на ардуинке, мой любимый режим Пламя, на макс. скорости подтормаживает, пламя такое - ленивое , на Вемосе более похоже.. снял на видео - правая - Ардуинка ( 1.4) , левая - Вемос. (1.5.5)
Вопрос - реально Ардуино тормознее Вемос? или дело в версии прошивки?
можно ли из прошивки Вемоса ( 1.5.5) убрать все про вай фай - и переделать на пульт ? Хотелось бы конечно на Ардуинке ( Вемосы кончились)..

 

Veta-Kompozitor

✩✩✩✩✩✩✩
6 Ноя 2019
16
2
@avramenkoal,
Подскажите, в прошивке vvip-68 не включаются мелодии. Точнее в приложении списки есть в полном объеме, а воспроизводится только "Птицы" и "Гроза". Делал уже многое. Начинают запускаться только когда загрузится все и в этот момент переставишь карту или откинуть и обратно включить питание с плеера. ).
В приложении во вкладке будильник, строчки выбора звукового файла исчезают через пол секунду после открытия и никак потом не появляются. Иногда не понятно почему они присутствуют, но потом опять их не найти. У вас само приложение стабильно работает?
Screenshot_2020-03-24-00-29-08-196_com.miui.videoplayer.jpg Screenshot_2020-03-24-00-31-42-356_com.miui.videoplayer.jpg [Screenshot_2020-03-24-00-29-53-066_com.miui.videoplayer.jpg Screenshot_2020-03-24-00-30-04-560_com.miui.videoplayer.jpg /SPOILER]
 

Вложения

YES IDI

★✩✩✩✩✩✩
11 Фев 2020
20
13
Сейчас планирую покупать готовый комплект запчастей с Али. И там в наборе идет плата NodeMCU. Стоит ли дополнительно отдельно заказывать плату Wemos D1 mini, чтобы эффекты не подтормаживали? На странице проекта сказано, что "NodeMCU или Wemos mini? Абсолютно не имеет значения, платы одинаковые. Отличаются по размеру и цене." Так как быть?
 

Сотнег

★★★★★★★
15 Янв 2020
4,104
1,434
@YES IDI, будет как у всех.
На медленных платах делают только те, кому это барахло девать больше некуда.

В комплекте могут подложить блок питания некачественный.
Это главный риск.
 
  • Лойс +1
Реакции: YES IDI

YES IDI

★✩✩✩✩✩✩
11 Фев 2020
20
13
@YES IDI, будет как у всех.
На медленных платах делают только те, кому это барахло девать больше некуда.

В комплекте могут подложить блок питания некачественный.
Это главный риск.
Понял, принял! Спасибо за разъяснения(y)
 

kDn

★★★★★✩✩
18 Ноя 2019
1,109
437
@Сотнег, и что, там реально эффект Sinusoid3 вставлен?
Глючит. Наверно удалю.
Его элементарно можно поправить, так чтобы не рассыпался со временем. Будет правда небольшой срыв картинки периодически, но не чаще одного раза в 30 секунд при максимальной скорости эффекта (относительно моей прошивки), при уменьшении скорости - еще реже.

* Брать тут: https://community.alexgyver.ru/thre...vka-firelamp_jeeui-gpl.2739/page-5#post-31904 , ничего особо не глючит, выглядит достаточно симпатично :), под другие прошивки адаптируйте самостоятельно.
 
Изменено:
  • Лойс +1
Реакции: Shaitan