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

ShONik

★✩✩✩✩✩✩
30 Ноя 2019
53
14
Я на палитру экрана монитора ориентировался.
Сейчас эффект сделан как во второй строчке. Изначально было, как в четвёртой.
То есть никакого белого цвета там по идее нет...
Посмотреть вложение 9598Посмотреть вложение 9600

на картинке красиво) не знаю, как показать
 

Вложения

  • Лойс +1
Реакции: Сотнег

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
@Kostefan, значит, дело в роутере.
Всякие 4G могут, наверное, блокировать общение устройств внутри сети.
Доступ только наружу в Интернет.
 

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
@ShONik, А регулировка яркости, разве, не позволяет привести цвета в какое-то приличное состояние?
По шлейфу видно, что его окончание слишком яркое (а ведь крайний цвет почти чёрный. чернее некуда).
matrixfact.jpg matrix1.jpg
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
@ShONik, Спасибо.
Значит, палитра бесполезна.
Нужно цвета вручную подбирать. Хотя бы первоначальный.

Если есть возможность - это параметр 0xAAFFBB в коде (всё, что после 0x - это код цвета).
Он там один на всю прошивку.

С кодировкой цветов тут помогут: https://colorscheme.ru/
colorseek.jpg


@ShONik, может, вы выберите, какой по счёту пиксель в вашем шлейфе должен стать первым?
При средней для всех эффектов яркости!
matrixfact.jpg
Шестой?
Лучше с конца считать. Шестой - он посередине.
Или оттенки совсем непохожие?
 
Изменено:

ShONik

★✩✩✩✩✩✩
30 Ноя 2019
53
14
@Сотнег,
с палитрой попробую что то выбрать.
Мне кажется изначально цвет, который был, его нужно немного осветлить и должно получится примерно, что то похожее на картинке (хотя я могу ошибаться)

т.е. мне в эффекте матрица - поиграться с этим параметром 0xAAFFBB ? заменив на другой?
 

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
т.е. мне в эффекте матрица - поиграться с этим параметром 0xAAFFBB ? заменив на другой?
Да.
Он в двух строчках повторяется. Нужно обе заменять.

Будет изменяться цвет только у первой пары точек в цепочке.
Остальные останутся прежними.
 

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
Здравствуйте, господа хорошие! Вопрос по работоспособности Вемоса. В общем проблема такая: Вемос прошивается и даже создает точку доступа и подключается к роутеру, однако на пины ничего не выдает. При попытке прошится с подключенной кнопкой к 4 пину не конектится с Arduino IDE. Да и кнопка (сенсорная) работает как то странно, или залипает, или не включается. Если снять с 4 пина управлляющий провод, то кнопка отрабатывает четко. Заливал скетч с мигающим светодиодом - не работает, при чем не работает ни на одном пине. На некоторых пинах светодиод постоянно горит в полнакала. На 0 пин, при нажатии ресет, выдает 1. Может кто сталкивался? как быть? новый вемос не успевает приехать до днюхи. Хотел подарок сделать.
 

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
@renby, в первую очередь проверять стабильность источника питания и параметры тока.
То есть взять для проверки другой нормальный какой-нибудь зарядник.

Вы провода то скрутили между собой? Хотя бы управляющий с землёй?

А вообще...
При попытке прошится с подключенной кнопкой к 4 пину не конектится с Arduino IDE.
Почему к 4му?!
 

avramenkoal

✩✩✩✩✩✩✩
8 Янв 2020
3
2
Подскажите, в прошивке vvip-68 не включаются мелодии. Точнее в приложении списки есть в полном объеме, а воспроизводится только "Птицы" и "Гроза". Делал уже многое. Начинают запускаться только когда загрузится все и в этот момент перевставишь карту или откинуть и обратно включить питание с плеера. Нашел небольшую описку в "a_main.ino" :
case 96: // Ответ демо-режима звука - сообщение по инициативе сервера
#if (USE_MP3 == 1)
str ="$18 MP:" + String(soundFolder) + '~' + String(soundFile+2) + ";"; // нет квадратных скобок
cmd96 = str;
#endif
break;
Это проблема с железом или исправление этого исправит все?
У меня плафон как у Malec
, только квадратный и думаю в сотый раз разбирать, перепрошивать, или не поможет? А пока сделал кнопочку на питание DFPl ).
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
Приветствую, господа хорошие, в этой ветке. А то сбежал в соседнюю а она специфическая... Спасибо @Сотнег, заметил мои страдания по поводу эффектов в той, и направил на пути истинный. :) Запощу здесь свои доработки эффектов, конечно, кому это интересно.

Огонь. Здесь очаг не двигается, а смещается только матрица оттенка по принципу бегущей дорожки. Главный очаг теперь находится по центру (спереди и сзади лампы, а не по бокам, как ранее). Искорки стали более сочными, приобрели оттенок и стали колыхаться в полете. Еще одна фича на будущее - желание сократить количество эффектов путем объединения похожих. Теперь при максимальной регулировке ползунка (колесика) Масштаб огонь становится белым.
C-like:
// ------------- огонь -----------------
uint8_t line[WIDTH];
uint8_t pcnt = 0U;
uint8_t shiftMask = 16U;                                // смещение +1 стэк
uint8_t shiftBase[HEIGHT];                              // массив дороожки горизонтального смещения пламени (hueMask)

//these values are substracetd from the generated values to give a shape to the animation
static const uint8_t valueMask[8][16] PROGMEM =
{
  {0  , 0  , 0  , 32 , 32 , 0  , 0  , 0  , 0  , 0  , 0  , 32 , 32 , 0  , 0  , 0  },
  {0  , 0  , 0  , 64 , 64 , 0  , 0  , 0  , 0  , 0  , 0  , 64 , 64 , 0  , 0  , 0  },
  {0  , 0  , 32 , 96 , 96 , 32 , 0  , 0  , 0  , 0  , 32 , 96 , 96 , 32 , 0  , 0  },
  {0  , 32 , 64 , 128, 128, 64 , 32 , 0  , 0  , 32 , 64 , 128, 128, 64 , 32 , 0  },
  {32 , 64 , 96 , 160, 160, 96 , 64 , 32 , 32 , 64 , 96 , 160, 160, 96 , 64 , 32 },
  {64 , 96 , 128, 192, 192, 128, 96 , 64 , 64 , 96 , 128, 192, 192, 128, 96 , 64 },
  {96 , 128, 160, 255, 255, 160, 128, 96 , 96 , 128, 160, 255, 255, 160, 128, 96 },
  {128, 160, 192, 255, 255, 192, 160, 128, 128, 160, 192, 255, 255, 192, 160, 128}
};

//these are the hues for the fire,
//should be between 0 (red) to about 25 (yellow)
static const uint8_t hueMask[8][16] PROGMEM =
{
  {25, 22, 11, 1 , 1 , 11, 19, 25, 25, 22, 11, 1 , 1 , 11, 19, 25 },
  {25, 19, 8 , 1 , 1 , 8 , 13, 19, 25, 19, 8 , 1 , 1 , 8 , 13, 19 },
  {19, 16, 8 , 1 , 1 , 8 , 13, 16, 19, 16, 8 , 1 , 1 , 8 , 13, 16 },
  {13, 13, 5 , 1 , 1 , 5 , 11, 13, 13, 13, 5 , 1 , 1 , 5 , 11, 13 },
  {11, 11, 5 , 1 , 1 , 5 , 11, 11, 11, 11, 5 , 1 , 1 , 5 , 11, 11 },
  {8 , 5 , 1 , 0 , 0 , 1 , 5 , 8 , 8 , 5 , 1 , 0 , 0 , 1 , 5 , 8  },
  {5 , 1 , 0 , 0 , 0 , 0 , 1 , 5 , 5 , 1 , 0 , 0 , 0 , 0 , 1 , 5  },
  {1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1  }
};

void fireRoutine(char *isColored)                            // C - цветной огонь, остальное - белый
{
  if (loadingFlag) {
    loadingFlag = false;
    //FastLED.clear();
    generateLine();
    //memset(matrixValue, 0, sizeof(matrixValue)); без очистки
  }
  if (pcnt >= 30) {
    shiftUp();
    generateLine();
    pcnt = 0;
  }
  drawFrame(pcnt, (strcmp(isColored, "C") == 0));
  pcnt += 25;  // делитель кадров: задает скорость подъема пламени 25/100 = 1/4
}

// Randomly generate the next line (matrix row)
void generateLine() {
  for (uint8_t x = 0U; x < WIDTH; x++) {
    line[x] = random(64, 255);
  }
}

void shiftUp() {
  for (uint8_t y = HEIGHT - 1U; y > 0U; y--) {
    for (uint8_t x = 0U; x < WIDTH; x++) {
      uint8_t newX = x;
      if (x > 15U) newX = x % 16U;
      if (y > 7U) continue;
      matrixValue[y][newX] = matrixValue[y - 1U][newX];
    }
  }

  for (uint8_t x = 0U; x < WIDTH; x++) {
    uint8_t newX = x;
    if (x > 15U) newX = x % 16U;
    matrixValue[0U][newX] = line[newX];
  }
}

// draw a frame, interpolating between 2 "key frames"
// @param pcnt percentage of interpolation

void drawFrame(uint8_t pcnt, bool isColored) {
  int32_t nextv;
  //uint8_t shiftMask = shiftBase;

  //first row interpolates with the "next" line
  shiftMask = constrain (shiftMask + random(0U, 2U) - random(0U, 2U), 15U, 17U);  // высчитываем плавную дорожку смещения всполохов для строки
  shiftBase[0] = shiftMask;
  for (uint8_t x = 0U; x < WIDTH; x++) {
    uint8_t newX = x % 16;
    CRGB color = CHSV(
                   modes[EFF_FIRE].Scale * 2.57 + pgm_read_byte(&hueMask[0][(x + shiftMask) % 16U]),     // H - смещение всполохов
                   (modes[EFF_FIRE].Scale < 100) ? 255U : 0U,                                            // S - когда колесо масштаба =100 - белый огонь (экономим на 1 эффекте)
                   (uint8_t)(((100.0 - pcnt) * matrixValue[0][newX] + pcnt * line[newX]) / 100.0)        // V
                 );
    //leds[getPixelNumber(newX, 0)] = color;                                         // на форуме пишут что это ошибка - вместо newX должно быть x, иначе
    leds[getPixelNumber(x, 0)] = color;                                              // на матрицах шире 16 столбцов нижний правый угол неработает
  }

  //each row interpolates with the one before it
  for (uint8_t y = HEIGHT - 1U; y > 0U; y--) {
    shiftMask = shiftBase[y];
    shiftBase[y] = shiftBase[y - 1];
    if (y > 8U) {
      for (uint8_t _x = 0U; _x < WIDTH; _x++) {                                              // стираем строчку с искрами (очень не оптимально)
        drawPixelXY(_x, y, 0U);
      }
    }
    for (uint8_t x = 0U; x < WIDTH; x++) {
      uint8_t newX = x % 16U;
      if (y < 8U) {
        nextv =
          (((100.0 - pcnt) * matrixValue[y][newX]
            + pcnt * matrixValue[y - 1][newX]) / 100.0)
          - pgm_read_byte(&valueMask[y][newX]);

        CRGB color = CHSV(
                       modes[EFF_FIRE].Scale * 2.57 + pgm_read_byte(&hueMask[y][(newX + shiftMask) % 16U ]),     // H - смещение всполохов
                       (modes[EFF_FIRE].Scale < 100) ? 255U : 0U,                                                // S - когда колесо масштаба =100 - белый огонь (экономим на 1 эффекте)
                       (uint8_t)max(0, nextv)                                                                    // V
                     );
        leds[getPixelNumber(x, y)] = color;
      }
      else if (y == 8U && SPARKLES) {
        if (random(0, 20) == 0 && getPixColorXY(x, y - 1U) != 0U) drawPixelXY(x, y, getPixColorXY(x, y - 2U));
        else drawPixelXY(x, y, 0U);
      }
      else if (SPARKLES) {
        // старая версия для яркости
        newX = (random(0, 4)) ? x : (x + WIDTH + random(0U, 2U) - random(0U, 2U)) % WIDTH ;   // сместилась?
        if (getPixColorXY(x, y - 1U) > 0U) drawPixelXY(newX, y, getPixColorXY(x, y - 1U));    // рисуем искорку на ноовой строчке
      }
    }
  }
}

Радуга диагональная. Теперь работает на нестандартных матрицах. Там, где высота больше, чем ширина.
C++:
// ------------- радуга диагональная -------------
void rainbowDiagonalRoutine(char *param)
{
  if (loadingFlag)
  {
    loadingFlag = false;
    FastLED.clear();
  }

  hue += 8;
  for (uint8_t i = 0U; i < WIDTH; i++)
  {
    for (uint8_t j = 0U; j < HEIGHT; j++)
    {
      float twirlFactor = 3.0F * (modes[EFF_RAINBOW_DIAG].Scale / 100.0F);      // на сколько оборотов будет закручена матрица, [0..3]
      CRGB thisColor = CHSV((uint8_t)(hue + ((float)WIDTH / HEIGHT * i + j * twirlFactor) * ((float)255 / maxDim)), 255, 255);
      drawPixelXY(i, j, thisColor);
    }
  }
}

Пейнтбол. Немного замедлил скорость движения комет. И прикрутил колесико "Масштаб" для регулировки скорости изменения цвета. Работает на нестандартных матрицах.
// ------------- пейнтбол -------------
const uint8_t paintWidth = WIDTH - BORDERTHICKNESS * 2;
const uint8_t paintHeight = HEIGHT - BORDERTHICKNESS * 2;

void lightBallsRoutine(char *param)
{
// 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
uint16_t i = beatsin16( 79, 0, 255); //91
uint16_t j = beatsin16( 67, 0, 255); //109
uint16_t k = beatsin16( 53, 0, 255); //73
uint16_t m = beatsin16( 97, 0, 255); //123

// The color of each point shifts over time, each at a different speed.
uint32_t ms = millis() / (modes[EFF_PAINTBALL].Scale / 4 + 1);
leds[getPixelNumber( highByte(i * paintWidth) + BORDERTHICKNESS, highByte(j * paintHeight) + BORDERTHICKNESS)] += CHSV( ms / 29, 200U, 255U);
leds[getPixelNumber( highByte(j * paintWidth) + BORDERTHICKNESS, highByte(k * paintHeight) + BORDERTHICKNESS)] += CHSV( ms / 41, 200U, 255U);
leds[getPixelNumber( highByte(k * paintWidth) + BORDERTHICKNESS, highByte(m * paintHeight) + BORDERTHICKNESS)] += CHSV( ms / 37, 200U, 255U);
leds[getPixelNumber( highByte(m * paintWidth) + BORDERTHICKNESS, highByte(i * paintHeight) + BORDERTHICKNESS)] += CHSV( ms / 53, 200U, 255U);
}
// 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 % (WIDTH * HEIGHT + 1);
}
 

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
@renby, в первую очередь проверять стабильность источника питания и параметры тока.
То есть взять для проверки другой нормальный какой-нибудь зарядник.

Вы провода то скрутили между собой? Хотя бы управляющий с землёй?

А вообще...Почему к 4му?!
БП работает с другой вемос на ура.
@renby, в первую очередь проверять стабильность источника питания и параметры тока.
То есть взять для проверки другой нормальный какой-нибудь зарядник.

Вы провода то скрутили между собой? Хотя бы управляющий с землёй?

А вообще...Почему к 4му?!
В прошивке 4 пин установлен. А вообще я ко всем пробывал, не работает. Блок питания с другим вемосом работает на ура. Вернее с двумя другими.
 
Изменено:

san100

★✩✩✩✩✩✩
17 Дек 2019
59
12
@Palpalych, привет. что-то не заработал огонь, ругается компилятор.
exit status 1
cannot convert 'bool' to 'char*' for argument '1' to 'void fireRoutine(char*)'@Palpalych,
 

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
Продолжая про питание...
Везде ли пропаяно нормально?

И если какая-то плата способна работать с блоком питания,
эте не означает, что он нормальный.
Ваша правда... Но если питать от юсб компа, то же самое... я думаю без нагрузки мощности и стабильности юсб должно хватать с лихвой.
Сдается мне, дело не в питании...
чуть позже попробую по питанию кондер припаять. Каюсь включал без него.
 

VeeL

✩✩✩✩✩✩✩
12 Янв 2020
14
0
Ваша правда... Но если питать от юсб компа, то же самое... я думаю без нагрузки мощности и стабильности юсб должно хватать с лихвой.
Сдается мне, дело не в питании...
чуть позже попробую по питанию кондер припаять. Каюсь включал без него.
У меня такое было когда спаялись выводы при припаивании пинов, смотрите внимательно на пайку!
 

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
У меня такое было когда спаялись выводы при припаивании пинов, смотрите внимательно на пайку!
Я не паял, на коннекторы все подключал. Но платку внимательно просмотрел. Ничего подозрительного не нашел.