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

borisborovoy

✩✩✩✩✩✩✩
10 Апр 2020
5
1
borisborovoy а на кой оно подключение к инету? При первом подключении к сети лампы, да и вообще после прошивки, комп нахер не нужен. со смарта с проги подкл. (сначала подкл к лампе! т.е WIFI в смарте подкл к лампе, потом вылезут настройки подключения, а там выбиранте свой роутер и пароль доступа сохранить, перегрузить...) и в путь! Да читать все таки надо как чего делать...
Так в том то и дело, что я ввожу данные своего роутера, сохраняю, потом перехожу к приложению GyverLamp, а там написано ОТКЛЮЧЕНО и телефон автоматически подключается к домашней сети не подключаясь к лампе
 

MadGrizly

✩✩✩✩✩✩✩
22 Фев 2020
15
8
потом перехожу к приложению GyverLamp, а там написано ОТКЛЮЧЕНО и телефон автоматически подключается к домашней сети не подключаясь к лампе
Определите к какому IP роутер подключил лампу и вбейте этот адрес в приложении.
 

borisborovoy

✩✩✩✩✩✩✩
10 Апр 2020
5
1
Монитор порта выдаёт : IP 192.168.100. 6
Порт 8888
Пишу все в приложении и никакой реакции. Пытаюсь подключиться к сети AutoConnect пишет :Вы не находитесь в зоне действия сети
 

Nescafe

✩✩✩✩✩✩✩
5 Июл 2019
6
6
Как избавиться от просадки напряжения? Сделал большую лампу, 1071 диод. Питается от 12-амперного БП. Питание на ленту с двух концов. Когда включаю режим "цвет", выбираю например белый, даже на 20% яркости в середине лампы он оранжевый. Ограничения по току в прошивке нет...

Что можно сделать, кроме как подвести еще питание к центру лампы?
 

GolubGrisha

✩✩✩✩✩✩✩
14 Мар 2020
5
1
Ограничения по току в прошивке нет...
Что можно сделать, кроме как подвести еще питание к центру лампы?
Так впишите ограничение, ибо по скромным подсчётам ~0,06*1071=64,26 Ампер в пике, Карл. Плюс замерьте напряжение на разном удалении от концов запитки и делайте выводы.
ЗЫ 64,26*0,2=12,852 А как раз потолок вашего бп:LOL:
 

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
Посмотрел, как на наших лампах смотрится классический
Эффект Игра Жизнь
(клеточный автомат Джона Конуэя)
GameOfLife2.gif
Так себе смотрится.
Не стал выдумывать, по какому принципу должен происходить перезапуск.
В данной реализации - при любом изменении Масштаба или Скорости или Яркости даже.

C-like:
// ============= ЭФФЕКТ Игра Жизнь - клеточный автомат Джона Конуэя ===============
// https://github.com/pixelmatix/aurora/blob/master/PatternLife.h
// Адаптация (c) SottNick
#define LIFE_DENSITY    (50U)
class lifeCell {
public:
  byte alive : 1;
  byte prev : 1;
  byte hue: 6;
  byte brightness;
};
lifeCell lifeWorld[WIDTH][HEIGHT];

int lifeNeighbours(int x, int y) {
  return (lifeWorld[(x + 1) % WIDTH][y].prev) +
         (lifeWorld[x][(y + 1) % HEIGHT].prev) +
         (lifeWorld[(x + WIDTH - 1) % WIDTH][y].prev) +
         (lifeWorld[x][(y + HEIGHT - 1) % HEIGHT].prev) +
         (lifeWorld[(x + 1) % WIDTH][(y + 1) % HEIGHT].prev) +
         (lifeWorld[(x + WIDTH - 1) % WIDTH][(y + 1) % HEIGHT].prev) +
         (lifeWorld[(x + WIDTH - 1) % WIDTH][(y + HEIGHT - 1) % HEIGHT].prev) +
         (lifeWorld[(x + 1) % WIDTH][(y + HEIGHT - 1) % HEIGHT].prev);
    }

void lifeRoutine() {
  if (loadingFlag)
    {
    loadingFlag = false;
    FastLED.clear();
    if (modes[currentMode].Scale > 100) modes[currentMode].Scale = 100; // чтобы не было проблем при прошивке без очистки памяти
    curPalette = palette_arr[(int)((float)modes[currentMode].Scale/100 * ((sizeof(palette_arr)/sizeof(TProgmemRGBPalette16 *))-1U))];

    //случайное заполнение мира при первом запуске (при любом изменении настроек режима)
        for (int i = 0; i < WIDTH; i++) {
            for (int j = 0; j < HEIGHT; j++) {
                if (random8(100) < LIFE_DENSITY) {
                    lifeWorld[i][j].alive = 1;
                    lifeWorld[i][j].brightness = 255;
                }
                else {
                    lifeWorld[i][j].alive = 0;
                    lifeWorld[i][j].brightness = 0;
                }
                lifeWorld[i][j].prev = lifeWorld[i][j].alive;
                lifeWorld[i][j].hue = 0;
            }
        }
     }
 
  // Display current generation
  for (int i = 0; i < WIDTH; i++)
    for (int j = 0; j < HEIGHT; j++)
      drawPixelXY(i, j, ColorFromPalette(*curPalette, lifeWorld[i][j].hue * 4, lifeWorld[i][j].brightness));


  // Birth and death cycle
  for (int x = 0; x < WIDTH; x++) {
      for (int y = 0; y < HEIGHT; y++) {
          // Default is for cell to stay the same
          if (lifeWorld[x][y].brightness > 0 && lifeWorld[x][y].prev == 0)
            lifeWorld[x][y].brightness = 0; //*= 0.9; постепенное угасание мёртвых нахер не нужно
          int count = lifeNeighbours(x, y);
          if (count == 3 && lifeWorld[x][y].prev == 0) {
              // A new cell is born
              lifeWorld[x][y].alive = 1;
              lifeWorld[x][y].hue += 2;
              lifeWorld[x][y].brightness = 255;
          } else if ((count < 2 || count > 3) && lifeWorld[x][y].prev == 1) {
              // Cell dies
              lifeWorld[x][y].alive = 0;
              lifeWorld[x][y].brightness = 0; // а этой стоочки вообще не было. она тоже нужна для постепенного затухания умерших клеток
          }
      }
  }

  // Copy next generation into place
  for (int x = 0; x < WIDTH; x++) {
      for (int y = 0; y < HEIGHT; y++) {
          lifeWorld[x][y].prev = lifeWorld[x][y].alive;
      }
  }
}
 
  • Лойс +1
Реакции: Belokota

vad14

✩✩✩✩✩✩✩
7 Апр 2020
10
5
@vad14 скомпилированного по ссылке в онлайн-редакторе.
спасибо. перевел приложение на польский язык, только обратный отсчет остался в "минутах-секундах".
Буду разбираться дальше, хочу прикрутить безусловную кнопочку которая будет управлять выходом на транзистор с нагрузкой.
 

boboshka

✩✩✩✩✩✩✩
12 Апр 2020
2
1
доброго времени суток! помогите решить проблему: при подключенном проводе DIN к пину D4 плата не прошивается, как только его отсоединяю проблемы нет; все подключаю, подключаю питание загорается один светодиод и все Wi-Fi тоже не видит, как только снова отключаю DIN, все видит не отключая питания подключаю DIN работает матрица, приложение все ок, но через некоторое время отваливается Wi-Fi. плата NodMcu v3, матрица 16х16, блок питания 5В 3А и 4А.
 

borisborovoy

✩✩✩✩✩✩✩
10 Апр 2020
5
1
Vados2020, tsabak, MadGrizly спасибо большое за помощь. Всё подкключилось и работает.
 
  • Лойс +1
Реакции: Vados2020

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
Новый (для нашей лампы он новый)
Эффект Огонь 2018 beta2
Особенно интересно работает управление яркостью.
Натурально высота пламени регулируется.

Думаю, что код нужно понять и оптимизировать.
И оттенок не тот, и бегунок Масштаб ничего не регулирует...
C-like:
// ============= ЭФФЕКТ ОГОНЬ 2018 ===============
// https://gist.github.com/StefanPetrick/1ba4584e534ba99ca259c1103754e4c5
// https://gist.github.com/StefanPetrick/819e873492f344ebebac5bcd2fdd8aa8
// Адаптация от (c) SottNick

// parameters and buffer for the noise array
#define NUM_LAYERS 2 // менять бесполезно, так как в коде чётко использовано 2 слоя
uint32_t fire18x[NUM_LAYERS];
uint32_t fire18y[NUM_LAYERS];
uint32_t fire18z[NUM_LAYERS];
uint32_t fire18scale_x[NUM_LAYERS];
uint32_t fire18scale_y[NUM_LAYERS];

uint8_t fire18noise[NUM_LAYERS][WIDTH][HEIGHT];
uint8_t fire18noise2[NUM_LAYERS][WIDTH][HEIGHT];

uint8_t fire18heat[NUM_LEDS];
// this finds the right index within a serpentine matrix

void Fire2018_2() {
  const uint8_t CentreY =  HEIGHT / 2 + (HEIGHT % 2);
  const uint8_t CentreX =  WIDTH / 2  + (WIDTH % 2) ;

  // some changing values
  uint16_t ctrl1 = inoise16(11 * millis(), 0, 0);
  uint16_t ctrl2 = inoise16(13 * millis(), 100000, 100000);
  uint16_t  ctrl = ((ctrl1 + ctrl2) / 2);

  // parameters for the heatmap
  uint16_t speed = 25;
  fire18x[0] = 3 * ctrl * speed;
  fire18y[0] = 20 * millis() * speed;
  fire18z[0] = 5 * millis() * speed ;
  fire18scale_x[0] = ctrl1 / 2;
  fire18scale_y[0] = ctrl2 / 2;

  //calculate the noise data
  uint8_t layer = 0;

  for (uint8_t i = 0; i < WIDTH; i++) {
    uint32_t ioffset = fire18scale_x[layer] * (i - CentreX);
    for (uint8_t j = 0; j < HEIGHT; j++) {
      uint32_t joffset = fire18scale_y[layer] * (j - CentreY);
      uint16_t data = ((inoise16(fire18x[layer] + ioffset, fire18y[layer] + joffset, fire18z[layer])) + 1);
      fire18noise[layer][i][j] = data >> 8;
    }
  }

  // parameters for te brightness mask
  speed = 20;
  fire18x[1] = 3 * ctrl * speed;
  fire18y[1] = 20 * millis() * speed;
  fire18z[1] = 5 * millis() * speed ;
  fire18scale_x[1] = ctrl1 / 2;
  fire18scale_y[1] = ctrl2 / 2;

  //calculate the noise data
  layer = 1;
  for (uint8_t i = 0; i < WIDTH; i++) {
    uint32_t ioffset = fire18scale_x[layer] * (i - CentreX);
    for (uint8_t j = 0; j < HEIGHT; j++) {
      uint32_t joffset = fire18scale_y[layer] * (j - CentreY);
      uint16_t data = ((inoise16(fire18x[layer] + ioffset, fire18y[layer] + joffset, fire18z[layer])) + 1);
      fire18noise[layer][i][j] = data >> 8;
    }
  }

  // draw lowest line - seed the fire
  for (uint8_t x = 0; x < WIDTH; x++) {
    fire18heat[getPixelNumber(x, HEIGHT - 1)] =  fire18noise[0][WIDTH - 1 - x][CentreY - 1]; // хз, почему взято с середины. вожможно, нужно просто с 7 строки вне зависимости от высоты матрицы
  }


  //copy everything one line up
  for (uint8_t y = 0; y < HEIGHT - 1; y++) {
    for (uint8_t x = 0; x < WIDTH; x++) {
      fire18heat[getPixelNumber(x, y)] = fire18heat[getPixelNumber(x, y + 1)];
    }
  }

  //dim
  for (uint8_t y = 0; y < HEIGHT - 1; y++) {
    for (uint8_t x = 0; x < WIDTH; x++) {
      uint8_t dim = fire18noise[0][x][y];
      // high value = high flames
      dim = dim / 1.7;
      dim = 255 - dim;
      fire18heat[getPixelNumber(x, y)] = scale8(fire18heat[getPixelNumber(x, y)] , dim);
    }
  }

  for (uint8_t y = 0; y < HEIGHT; y++) {
    for (uint8_t x = 0; x < WIDTH; x++) {
      // map the colors based on heatmap
      //leds[getPixelNumber(x, HEIGHT - 1 - y)] = CRGB( fire18heat[getPixelNumber(x, y)], 1 , 0);
      leds[getPixelNumber(x, HEIGHT - 1 - y)] = CRGB( fire18heat[getPixelNumber(x, y)], fire18heat[getPixelNumber(x, y)] * 0.153, 0);// так оттенок лучше

      //пытался понять, как регулировать оттенок пламени...
      //  if (modes[currentMode].Scale > 50)
      //    leds[getPixelNumber(x, HEIGHT - 1 - y)] = CRGB( fire18heat[getPixelNumber(x, y)], fire18heat[getPixelNumber(x, y)] * (modes[currentMode].Scale % 50)  * 0.051, 0);
      //  else
      //    leds[getPixelNumber(x, HEIGHT - 1 - y)] = CRGB( fire18heat[getPixelNumber(x, y)], 1 , fire18heat[getPixelNumber(x, y)] * modes[currentMode].Scale * 0.051);
      //примерно понял
 
      // dim the result based on 2nd noise layer
      leds[getPixelNumber(x, HEIGHT - 1 - y)].nscale8(fire18noise[1][x][y]);
    }
  }

}

PS: Наш "Ламповый Огонь" лучше.


Ещё немного исправил.
Нашёл ещё пару упоминаний размера матрицы не через объявленные константы.
Исправил оттенок у пламени.

Эффект уже неплох.
Можно брать.
 
Изменено:

Den1c

✩✩✩✩✩✩✩
17 Апр 2020
3
0
Подскажите, пожалуйста, с чем это может быть связано? Какие варианты есть решения данной проблемы?

Подключил светодиодную матрицу (16 на 16) горит то 6, то 5 светодиодов из 256! (светит ярко, белым цветом, иногда один горит зеленым остальные пять белым). Плату прошил, вроде как подключилась к приложению, но на режимы, яркость и другие настройки никак не реагирует.

Она вроде прошивается, но какие-то ошибки выскакивают, может это как-то связано. Или мне просто матрица нерабочая пришла? :(
 

Вложения

alex2902

✩✩✩✩✩✩✩
17 Апр 2020
1
0
Здравствуйте. не как не могу обновить по воздуху, ввожу пароль который указан в AP_PASS но постоянно требует пароль . в чем может быть причина?
 

Сотнег

★★★★★★★
15 Янв 2020
4,346
1,492
Подключил светодиодную матрицу (16 на 16) горит то 6, то 5 светодиодов из 256! (светит ярко, белым цветом, иногда один горит зеленым остальные пять белым). Плату прошил, вроде как подключилась к приложению, но на режимы, яркость и другие настройки никак не реагирует.

Она вроде прошивается, но какие-то ошибки выскакивают, может это как-то связано.
Провод от платы до матрицы не доведён. Или обрыв или не туда припаян.
Ошибок при прошивке нет.