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, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
неработающий
Эффект Стая
Должно быть как-то так:
flock.jpg
Но у меня не компилируется. Нужна помощь.
@kDn , @Palpalych ?

Во вложении flocks.h - сам эффект + ещё две "батарейки" к нему.
batareyki.jpg
 

Вложения

  • 2.7 KB Просмотры: 4
  • 10.2 KB Просмотры: 3
  • 4 KB Просмотры: 3
  • Лойс +1
Реакции: kDn

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@Сотнег, стаю только завтра погляжу, сейчас уже семья вернулась, рабочее место занято уроками :)
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
Люди!!! А куда делось приложение Gylamp из App store!!!?????
Ещё такое есть:
 

Vitaliy

★✩✩✩✩✩✩
13 Мар 2019
6
17
Вот мой вариант лампы. Верхушку и подставку распечатал на 3d принтере (artillery sidewinder x1) и скрепил верх и низ резьбовой шпилькой м3. Установил в параллель 4 банки 18650 с макс. током разряда 10А (меньше- зависает на мощных эффектах), лампа прекрасно работает от 3.6v-4.2v. 3d модель подставки надо бы немного усовершенствовать... но я лампу делал для дома, поэтому пока не занимался этим. Если кому надо могу поделиться :)
 

Вложения

rug1f

✩✩✩✩✩✩✩
9 Апр 2020
1
0
Добрый день!
Проблема такая, последняя прошивка от Гайвера, собрано на базе Wemos. Когда плата подключена к ПК по USB (питание при этом тоже подключено 5В 5А) всё работает прекрасно и WiFi и по кнопке. Но стоит только отключить USB кнопка начинает жить "своей жизнью" произвольно мигать, залипать (светодиод светится продолжительное время) и никакого воздействия на лампу не оказывает, через приложение все прекрасно управляется. Стоит подключить USB и кнопка снова начинает вести себя адекватно.
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
Ещё пара
на этот раз какие-то стрёмные
Эффекты Нарастающий Дрифт
Пришлось сделать, чтобы посмотреть, вообще о чём они. Но для истории сохраню.
Первый что-то типа квадратных кругов, вращающихся по квадратной матрицы с одинаковой скоростью на разных радиусах.
C-like:
// ============= ЭФФЕКТ НАРАСТАЮЩИЙ ДРИФТ ===============
// Incremental Drift
// https://github.com/pixelmatix/aurora/blob/master/PatternIncrementalDrift.h
// Адаптация от (c) SottNick
//const MINLENGTH = min(WIDTH, HEIGHT); // хз, не будет ли глючить при разных размерах матриц

void IncrementalDriftRoutine() {
  if (modes[currentMode].Scale > 100) modes[currentMode].Scale = 100; // чтобы не было проблем при прошивке без очистки памяти
  // используем массив для изменения палитры, описанный в эффекте Спирали, чтобы не занимать память
  const TProgmemRGBPalette16 *curPalette = palette_arr[(int)((float)modes[currentMode].Scale/100 * ((sizeof(palette_arr)/sizeof(TProgmemRGBPalette16 *))-1U))];

      //blurScreen(20); // @Palpalych советует делать размытие
      //dimAll(beatsin8(2U, 230, 250)); // это я распотрошил функцию beatsin8 до исходного кода, чтобы вставить в неё регулятор скорости и сделать эффект быстрее
      uint8_t beat = (GET_MILLIS() * (accum88( 2U ) << 8) * 28 * modes[currentMode].Speed) >> 24; // вместо 28 в оригинале было 280, а умножения на .Speed не было
      dimAll(230 + scale8(sin8(beat), 20)); // 20 - это (250 - 230) - максимум функции beatsin8 минус её минимум

      for (int i = 2; i <= WIDTH / 2; i++) // возможно, стоит здесь использовать const MINLENGTH
      {
        // это я распотрошил функции beatcos8 и beatsin8 до исходного кода, чтобы вставить в них регулятор скорости и сделать эффект быстрее
        // оригинальная скорость эффекта - на значении бегунка Скорость = 10
        //uint8_t x = beatcos8((e_centerX + 1 - i) * 2, e_centerX - i, e_centerX + i); // используем константы центра матрицы из эффекта Кометы
        beat = (GET_MILLIS() * (accum88((e_centerX + 1 - i) * 2) << 8) * 28 * modes[currentMode].Speed) >> 24; // вместо 28 в оригинале было 280, а умножения на .Speed не было
        uint8_t x = e_centerX - i + scale8(cos8(beat), i << 1); // i<<1 = i+i - это (e_centerX + i) - (e_centerX - i)
        //uint8_t y = beatsin8((e_centerY + 1 - i) * 2, e_centerY - i, e_centerY + i); // используем константы центра матрицы из эффекта Кометы
        beat = (GET_MILLIS() * (accum88((e_centerY + 1 - i) * 2) << 8) * 28 * modes[currentMode].Speed) >> 24; // вместо 28 в оригинале было 280, а умножения на .Speed не было
        uint8_t y = e_centerY - i + scale8(sin8(beat), i << 1); // i<<1 = i+i - это (e_centerY + i) - (e_centerY - i)

        drawPixelXY(x, y, ColorFromPalette(*curPalette, (i - 2) * (240 / (WIDTH / 2)))); // используем массив палитр из других эффектов выше
      }
}

C-like:
// ============= ЭФФЕКТ НАРАСТАЮЩИЙ ДРИФТ 2 ===============
// Incremental Drift Rose
// https://github.com/pixelmatix/aurora/blob/master/PatternIncrementalDrift2.h
// Адаптация от (c) SottNick
void IncrementalDriftRoutine2() {
  if (modes[currentMode].Scale > 100) modes[currentMode].Scale = 100; // чтобы не было проблем при прошивке без очистки памяти
  // используем массив для изменения палитры, описанный в эффекте Спирали, чтобы не занимать память
  const TProgmemRGBPalette16 *curPalette = palette_arr[(int)((float)modes[currentMode].Scale/100 * ((sizeof(palette_arr)/sizeof(TProgmemRGBPalette16 *))-1U))];

      //blurScreen(20); // @Palpalych посоветовал делать размытие
      //dimAll(beatsin8(2U, 170, 250); // это я распотрошил функцию beatsin8 до исходного кода, чтобы вставить в неё регулятор скорости и сделать эффект быстрее
      uint8_t beat = (GET_MILLIS() * (accum88( 2U ) << 8) * 28 * modes[currentMode].Speed) >> 24; // вместо 28 в оригинале было 280, а умножения на .Speed не было
      dimAll(170 + scale8(sin8(beat), 80)); // 80 - это (250 - 170) - максимум функции beatsin8 минус её минимум

      for (uint8_t i = 0; i <= WIDTH; i++)
      {
        uint8_t x = 0;
        uint8_t y = 0;

        // снова распотрошил функции beatcos8 и beatsin8 до исходного кода, чтобы вставить в них регулятор скорости и сделать эффект быстрее
        // оригинальная скорость эффекта - на значении бегунка Скорость = 10
        if (i < e_centerX) {
          //x = beatcos8((i + 1) * 2, i, WIDTH - i);
          //y = beatsin8((i + 1) * 2, i, HEIGHT - i);
          beat = (GET_MILLIS() * (accum88((i + 1) * 2) << 8) * 28 * modes[currentMode].Speed) >> 24; // вместо 28 в оригинале было 280, а умножения на .Speed не было
          x = i + scale8(cos8(beat), WIDTH - (i << 1) ); // i<<1 = i+i
          y = i + scale8(sin8(beat), HEIGHT - (i << 1) ); // i<<1 = i+i
          drawPixelXY(x, y, ColorFromPalette(*curPalette, i * 14));
        }
        else
        {
          //x = beatsin8((WIDTH - i) * 2, WIDTH - i, i + 1);
          beat = (GET_MILLIS() * (accum88((WIDTH - i) * 2) << 8) * 28 * modes[currentMode].Speed) >> 24; // вместо 28 в оригинале было 280, а умножения на .Speed не было
          x = WIDTH - i + scale8(sin8(beat), (i << 1) + 1 - WIDTH);
          //y = beatcos8((HEIGHT - i) * 2, HEIGHT - i, i + 1);
          beat = (GET_MILLIS() * (accum88((HEIGHT - i) * 2) << 8) * 28 * modes[currentMode].Speed) >> 24; // вместо 28 в оригинале было 280, а умножения на .Speed не было
          y = HEIGHT - i + scale8(cos8(beat),( i << 1) + 1 - HEIGHT);
          drawPixelXY(x, y, ColorFromPalette(*curPalette, (31 - i) * 14));
        }
      }
}

Массив с палитрами, если раньше не был добавлен с другими эффектами:
C-like:
    // массив с палитрами для выбора бугунком Масштаб
    const TProgmemRGBPalette16 *palette_arr[] = {&PartyColors_p, &OceanColors_p, &LavaColors_p, &HeatColors_p, &WaterfallColors_p, &CloudColors_p, &ForestColors_p, &RainbowColors_p, &RainbowStripeColors_p};
 
Изменено:
  • Лойс +1
Реакции: Belokota

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@Сотнег, стаю я поглядел, прикрутил палитры и скорость, но пока еще не коммитил.
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
@kDn, Везёт.
А можно попросить на видео снять?
Похоже, мне не светит. Я не знаю, почему не компилируется.
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
Нашёл видео некоторых эффектов наконец-то (автор называет названия голосом).
Теперь можно выбирать, за что браться...

Хотя, если бы я поглядел это убожество, я бы никогда не взялся за эффект Призмата...

И я, похоже, где-то сильно накосячил с "Incremental Drift Rose".
На видео он совсем другой.
:giggle:
 
Изменено:

MaxPAx

✩✩✩✩✩✩✩
20 Янв 2020
8
0
Приветствую форумчане. Никак не могу домучать лампу своими силами.
Шил шил и нашил...
Была проблема двойности библиотек.
2020-04-09_18-13-29.png
Пришлось удалить все папки по пути C:\Program Files (x86)\Arduino\libraries и вставить содержимое из Desktop\GyverLamp-master\libraries (без txt документа).
После загрузки последней версии гайвера Программа выдала 100% завершение.
2020-04-09_21-04-56.png
Полоса светодиодов потухла.Теперь постоянно горит лампочка на МК и БП.
При отключении юсб и нажатии на сенсор ничего не происходит.
В сети WiFi лампу вижу как AutoConnectAP. Подключаюсь по пароль 12345678. Все удачно.
Выбираю к какому роутеру подключаться (пароль принял).
Screenshot_20200409-204002.jpg
Подключил и заново и попробовал (как и гайвер) Мониторинг порта. Выдало несуразницу...
2020-04-09_20-51-40.png
При подключении в приложении гайвера, связи нет...
Screenshot_20200409-204736_2.jpg
Но при нажатии на сенсор ничего не происходит. Выкл/Вкл маргнет один раз одна полоса диодов и все....
Куда рыть?
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
Стая похожа, ну с поправкой на размер матрицы.
Стая после твоих доработок скомпилировалась!
Без хищника - Огонь :love:. Добавлю в свою сборку вместе с Призматой.

С хищником - было отстой.
У него круг обзора в размер матрицы, поэтому он гоняет без поворотов от края до края,
разогнав всю стаю по границам матрицы.
Такое помогает:
predator.neighbordist = 8.0; // было 16.0 и хищник гонял по одной линии всегда
 
Изменено:
  • Лойс +1
Реакции: Belokota

sergeym11

★★✩✩✩✩✩
23 Янв 2020
90
51
@Сотнег, подскажите где изменяется размер буфера, а то часть эффектов не передается из списков. Прошивка на основе Вашей от котейки, но с добавлением эффектов из 53в1.
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
@sergeym11, я @Koteyka 🐱 уже советовал избавиться от буфера. Возможно, не один раз:

Это код для процедуры в parsing.ino
 
Изменено:

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
С хищником - было отстой.
У него круг обзора в размер матрицы, поэтому он гоняет без поворотов от края до края,
разогнав всю стаю по границам матрицы.
Такое помогает:
predator.neighbordist = 8.0; // было 16.0 и хищник гонял по одной линии всегда
Можете еще здесь поиграться со значением:
C++:
        if (predatorPresent) {
          // flee from predator
          boid->repelForce(predator.location, 8);
        }
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
Нашёл видео некоторых эффектов наконец-то (автор называет названия голосом).
Ещё один из этого видео странноватый.
Эффект Волны
Он какой-то тормозной. Уже при задержке в 50 мс между кадрами выглядит дёрганым.
Устанавливается как покадровый эффект, у которых регулятор скорости используется в условиях файла effectTicker.ino.
C-like:
// добавлено изменение текущей палитры (используется во многих эффектах ниже для бегунка Масштаб)
const TProgmemRGBPalette16 *palette_arr[] = {&PartyColors_p, &OceanColors_p, &LavaColors_p, &HeatColors_p, &WaterfallColors_p, &CloudColors_p, &ForestColors_p, &RainbowColors_p, &RainbowStripeColors_p};
const TProgmemRGBPalette16 *curPalette = palette_arr[0];

// ============= ЭФФЕКТ ВОЛНЫ ===============
// https://github.com/pixelmatix/aurora/blob/master/PatternWave.h
// Адаптация от (c) SottNick

    byte waveThetaUpdate = 0;
    byte waveThetaUpdateFrequency = 0;
    byte waveTheta = 0;

    byte hueUpdate = 0;
    byte hueUpdateFrequency = 0;
//    byte hue = 0; будем использовать сдвиг от эффектов Радуга

    byte waveRotation = 0;
    uint8_t waveScale = 256 / WIDTH;
    uint8_t waveCount = 1;

void WaveRoutine() {
    if (loadingFlag)
    {
      loadingFlag = false;
      if (modes[currentMode].Scale > 100) modes[currentMode].Scale = 100; // чтобы не было проблем при прошивке без очистки памяти
      curPalette = palette_arr[(int)((float)((modes[currentMode].Scale-1)%25)/25 * ((sizeof(palette_arr)/sizeof(TProgmemRGBPalette16 *))-1U))];
   
      //waveRotation = random(0, 4);// теперь вместо этого регулятор Масштаб
      waveRotation = (modes[currentMode].Scale - 1) / 25U;
      //waveCount = random(1, 3);// теперь вместо этого чётное/нечётное у регулятора Скорость
      waveCount = modes[currentMode].Speed % 2;
      //waveThetaUpdateFrequency = random(1, 2);
      //hueUpdateFrequency = random(1, 6);    
    }

        dimAll(254);

        int n = 0;

        switch (waveRotation) {
            case 0:
                for (int x = 0; x < WIDTH; x++) {
                    n = quadwave8(x * 2 + waveTheta) / waveScale;
                    drawPixelXY(x, n, ColorFromPalette(*curPalette, hue + x));
                    if (waveCount != 1)
                        drawPixelXY(x, HEIGHT - 1 - n, ColorFromPalette(*curPalette, hue + x));
                }
                break;

            case 1:
                for (int y = 0; y < HEIGHT; y++) {
                    n = quadwave8(y * 2 + waveTheta) / waveScale;
                    drawPixelXY(n, y, ColorFromPalette(*curPalette, hue + y));
                    if (waveCount != 1)
                        drawPixelXY(WIDTH - 1 - n, y, ColorFromPalette(*curPalette, hue + y));
                }
                break;

            case 2:
                for (int x = 0; x < WIDTH; x++) {
                    n = quadwave8(x * 2 - waveTheta) / waveScale;
                    drawPixelXY(x, n, ColorFromPalette(*curPalette, hue + x));
                    if (waveCount != 1)
                        drawPixelXY(x, HEIGHT - 1 - n, ColorFromPalette(*curPalette, hue + x));
                }
                break;

            case 3:
                for (int y = 0; y < HEIGHT; y++) {
                    n = quadwave8(y * 2 - waveTheta) / waveScale;
                    drawPixelXY(n, y, ColorFromPalette(*curPalette, hue + y));
                    if (waveCount != 1)
                        drawPixelXY(WIDTH - 1 - n, y, ColorFromPalette(*curPalette, hue + y));
                }
                break;
        }


        if (waveThetaUpdate >= waveThetaUpdateFrequency) {
            waveThetaUpdate = 0;
            waveTheta++;
        }
        else {
            waveThetaUpdate++;
        }

        if (hueUpdate >= hueUpdateFrequency) {
            hueUpdate = 0;
            hue++;
        }
        else {
            hueUpdate++;
        }
      
        blurScreen(20); // @Palpalych советует делать размытие. вот в этом эффекте его явно не хватает...
}

Регулятор Масштаб определяет направление волн и их палитру.
Регулятор Скорости - чётные значения = 2 волны за раз, нечётные = одна волна за раз.
 
  • Лойс +1
Реакции: menooooo и Belokota

Belokota

★✩✩✩✩✩✩
24 Дек 2019
101
32
@Сотнег, что то я не совсем понял как эффект "Стая" в прошивку всунуть. И работает ли он вообще(написано, что не работает)? Два дополнительных файла просто в прошивку положить? Поясните пожалуйста.
 

borisborovoy

✩✩✩✩✩✩✩
10 Апр 2020
5
1
Здравствуйте. При первом подключении к сети лампы в менеджере WIFI пишется сообщение: подключено без интернета. Подскажите пожалуйста, как можно решить эту проблему
 

Vados2020

★✩✩✩✩✩✩
30 Янв 2020
70
21
@borisborovoy, Если Вы уже дошли уже до этого момента- то Вы и так уже много сделали! Прочитайте еще раз внимательно логику управления лампой и у Вас все получится! Успехов.
 

tsabak

✩✩✩✩✩✩✩
2 Сен 2018
81
8
borisborovoy а на кой оно подключение к инету? При первом подключении к сети лампы, да и вообще после прошивки, комп нахер не нужен. со смарта с проги подкл. (сначала подкл к лампе! т.е WIFI в смарте подкл к лампе, потом вылезут настройки подключения, а там выбиранте свой роутер и пароль доступа сохранить, перегрузить...) и в путь! Да читать все таки надо как чего делать...
 
Изменено:
  • Лойс +1
Реакции: borisborovoy