Часы на ESP-12(NodeMCU) + MAX7219 + WEB интерфейс

Тема в разделе "Глядите, что я сделал", создана пользователем IvanUA, 28 авг 2017.

?

Вы повторили это проект?

  1. Нет (просто ознакомился)

    14 голосов
    10,7%
  2. Да, один раз (попробовал)

    58 голосов
    44,3%
  3. Да, не однократно

    61 голосов
    46,6%
Можно выбрать сразу несколько вариантов.
  1. Oleksandr54

    Oleksandr54 Нерд

    Нуб нубу. У меня все работает. Прошивку иногда приходилось закидывать по 8 раз на день. Попробуй "Статус OTA: " в веб морде, поставить сначала 1, потом сохрани а только потом закидывай ***.bin. С лева в низу, возле значка "пуск" должны появиться проценты загрузки ***.bin. Второй вариант прошивки у тебя скорей всего не работает по причине добавления в прошивку DS18B20 и в скетче попробуй определить D3 контакт к которому подключен датчик температуры, я например сделал вот так для ESP-12: #define D3 0 , где 0 это GPIO 0. Для первого варианта можно попробовать сделать так: #define D3 1 , где 1 это GPIO1 (см. рис.) И для первого варианта надо закоментировать строку saveConfig(), сделать вот так: // saveConfig().
     

    Вложения:

    Последнее редактирование: 28 окт 2017
  2. sibBIA

    sibBIA Нерд

    Спасибо всем за советы.
    Но все оказалось намного проще, но для меня как для нуба намного сложнее.
    Достаточно было уменьшить раздел флеш памяти.
    У меня по умолчанию было "Flash Size 1M (512K SPIFFS)"
    Изменил на "Flash Size 1M (64K SPIFFS) " и прошивка по воздуху заработала.
    Сколько времени потратил пока не подумал что может памяти не хватать.:D
     
  3. Oleksandr54

    Oleksandr54 Нерд

    С памятью не все так просто, в ESP-01 всего Flash Size 512K, по моему. А люди пишут что для обновления по воздуху рекомендуется FLASH не менее 8Mbit (1MByte). И не совсем понятно куда поместились данные из папки DATA которые занимают 80К ?
     
    Последнее редактирование: 28 окт 2017
  4. IvanUA

    IvanUA Гуру

    В последних прошивках, папки с данными уже нет. Все страницы находятся внутри скомпилированного скетча.
    Если будет время может еще и данные которые сохраняются через джейсон файл, привяжу жестко к совим ячейкам памяти...
     
  5. sibBIA

    sibBIA Нерд

    Можно привязать время работы бузера к дневной и ночной настройкам яркости.

    Код (C++):
    // Эту строку if (minute==0&&second==0&&secFr==0&&(hour>=7&&hour<=23)){
      //Заменить на
      if(minute==0&&second==0&&secFr==0&&(hour>=timeBrightnessD&&hour<=timeBrightnessN)){
    Я думаю вообще его отключить. Постоянно какие то тиканья, трески, шумы.
    Это у всех так?
     
  6. sibBIA

    sibBIA Нерд

    Было бы неплохо в настройках погоды предусмотреть возможность ввода названия городов,
    а то сейчас это возможно только в прошивке void convertCity().
    Не всегда можно предусмотреть все возможные варианты, да и от базы в void convertCity()
    можно избавится.
     
  7. IvanUA

    IvanUA Гуру

    Александр54 боролся с этим следующим образом
    Возможно и вам это поможет.
     
  8. IvanUA

    IvanUA Гуру

    Это просто очень трудно (по крайней мере для меня пока). Дело в том что так называемая база городов хранится на сервере - и она огромна.
    Мы же можем в данном случае оперировать только кодом города.
    А вот та база что вы назвали - это аккурат не база, а конвертер.
    Я всего лишь перевел на украинский язык названия некоторых городов.
    Вы можете менять этот список по своему усмотрению.
    Можно вообще удалить тот блок конвертации - тогда все выводимые города будут на английском языке.
    Так же можно удалить конвертер состояния погоды. Соответственно получите описание погоды на английском языке.

    ПС. Кстати - конвертер шрифтов прекрасно справляется и с русским языком, так что при желании может спокойно перевести все сообщения. А вот к примеру для языков отличных от русского, украинского, и английского (латиница), придется поковыряться со шрифтами и конвертером.
     
    Последнее редактирование: 29 окт 2017
  9. sibBIA

    sibBIA Нерд

    Я хотел сказать список городов а не база.:oops:
    Я это понимаю, именно по этому предлагаю названия города вводить вручную пользователю часов, на странице настройки погоды.
    Надеюсь каждый знает название города в котором он живет.:)
     
    IvanUA нравится это.
  10. sibBIA

    sibBIA Нерд

    noTone(buzzerPin)
    Пробовал, не помогает.
    Так же пробовал:
    pinMode(buzzerPin, INPUT);
    бедапечаль:)
     
  11. IvanUA

    IvanUA Гуру

    Попробуйте, будет хорошая фишка.
    Тогда надо бороться железячными способами. Ну то есть доработать схему базера чтобы он начинал вещать скажем от граничного какого то напряжения. Или еще каким извращенным способом)))
     
  12. Oleksandr54

    Oleksandr54 Нерд

    Полностью избавиться от помехи которая идет не из канала, а по воздуху тяжело. ESP+дисплей генерируют большую помеху в широком спектре частот. Вариант борьбы только комплексный: разделение питания часов и усилителя, вынос усилителя на некоторое расстояние, применение фильтров, ограничение начального усиления и.т.д. Самый простой способ уменьшить громкость так, чтобы на расстоянии был слышен только звук бипера.
     
    Последнее редактирование: 29 окт 2017
  13. sibBIA

    sibBIA Нерд

    Приветствую.
    Судя по тому как в теме тихо, только у меня постоянно возникают какие то проблемы. ;)
    На этот раз не выводятся Заглавные буквы Р .С. иТ .
    Попытался разобраться в конверторе символов, но мне там ничего не понятно. ;(
     
    Последнее редактирование: 30 окт 2017
  14. IvanUA

    IvanUA Гуру

    Такого не было. На ум приходит только возможная проблема с памятью. Конвертер один на все символы.
     
  15. sibBIA

    sibBIA Нерд

    Почему эти символы обрабатываются отдельно, может в кодировке они идут не последовательно с остальными?

    Код (C++):
    if(c==208){
        dualChar=1;
        return 0;
      } else if(c==209||c==210){
        dualChar=2;
        return 0;
      }
    Код (C++):
     0x05, 0x7f, 0x09, 0x09, 0x09, 0x06, 0x00, 0x00,  // 208 - 'Р'  x0d0
      0x05, 0x3e, 0x41, 0x41, 0x41, 0x22, 0x00, 0x00,  // 209 - 'C'  x0d1
      0x05, 0x03, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00,  // 210 - 'T'  x0d2
     
  16. IvanUA

    IvanUA Гуру

    В моем случае эти символы шли с дополнительным символом, по этому и была сделана такая проверка что бы этот символ не печатать. Вполне может быть что ваш компилятор работает немного иначе. Попробуйте в своем скетче, вот в том куске что вы вставили закомментировать(//) строки с return 0.
    Ну а вообще что бы самому разобраться что происходит, попробуйте в часть кода вставить вывод в СОМ порт и смотреть что и как конвертируется
    Код (C++):
    void printCharWithShift(unsigned char c, int shiftDelay) {
      Serial.print(c);
      c=convertUA(c);
      if(c<' ') return;
      c-=32;
      Serial.print(c);
      int w=showChar(c, fontUA);
      for(int i=0; i<w+1; i++){
        delay(shiftDelay);
        scrollLeft();
        refreshAll();
      }
    }
     
  17. sibBIA

    sibBIA Нерд

    Воспользовался Вашим советом
    Код (C++):
     //if(c==208){
      // dualChar=1;
      //  return 0;
      //} else if(c==209||c==210){
      //  dualChar=2;
       // return 0;
      //}
    Теперь Заглавные буквы Р, С, иТ выводятся нормально.
    Но это каким то странным образом влияет на weatherDescription.
    Вместо текста выводится кракозябры.
    Закомментировал вызов конвертера облачности //convertWeatherDes();
    Код (C++):
    weatherDescription.toLowerCase(); //convertWeatherDes();
    По моему должен был выводится текст на английском, однако все равно выводится кракозябры.
    Может действительно, памяти не хватает? ;(
     
  18. IvanUA

    IvanUA Гуру

    вы закомментировали целый блок, а я предлагал только // return 0;
     
  19. sibBIA

    sibBIA Нерд

    Сначало я так и сделал, потом попробовал закаментить весь блок.
    Разницы между первым и вторым вариантом не заметил.
     
  20. IvanUA

    IvanUA Гуру

    Ну тогда вариант только самому разобраться почему у вас крякозяблики.
    Выше я писал что нужно добавить в код Serial.print - и видя какие символы у вас приходят
    до конвертации и после, подбирать работу конвертера. В принципе ничего сложного, но надо будет немного повозиться.