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

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

?

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

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

    9 голосов
    11,8%
  2. Да, один раз (попробовал)

    24 голосов
    31,6%
  3. Да, не однократно

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

    D_rain Нерд

    Ой, могу. Написал же, что жуткий хак. :)
    Тк для нормальной, штатной разборки массива у нас не хватает памяти, приходится выкручиваться.
    PS. Не разберётесь, пишите в личку.
     
  2. obuhanoe

    obuhanoe Гик

    Добрый день.
    Решил добавить в свой проект (основанный на проекте Ивана) памятные даты, но хранить хочу их в EEPROM, а также редактировать и добавлять через Web-интерфейс.
    Массив как у Ивана, занимает 20 байт памяти.
    byte memory_dates[10][2];
    Вот только как я должен его записывать в память и потом его считывать ума не приложу.
    Подскажите правильное направление.

    Так как тип данных byte - 1 байт, значит по 1 байту сохранить. Всего нужно 20 байт для такого массива, ну и считывать соответственно по одному байту в массив.
    Верно мыслю?
     
    Последнее редактирование: 7 окт 2018
  3. urg2000

    urg2000 Нерд

    Здравствуйте. Хотел попробовать последнюю прошивку от Ивана, он написал обновить json до последних версии. Можно уточнить это программа или библиотека? Подскажите где скачать, google мне не помог :(
     
  4. D_rain

    D_rain Нерд

    так в менеджере библиотек. счетч -> подключить библиотеку -> управлять библиотеками
     
    megavit66 и urg2000 нравится это.
  5. urg2000

    urg2000 Нерд

    :D нашел.
    Может кто подскажет что с датчиком DTH22 может включится с 10 загрузки потом работает и после перезагрузки опять не работает?
     
    megavit66 нравится это.
  6. buba911

    buba911 Нерд

    Измените программу так:
    Код (C++):
    void sensorsDht() {   //5
      if ((err = dht22.read2(pinDHT22, &tempDht22, &humiDht22, NULL)) != SimpleDHTErrSuccess) {
        Serial.print("Read DHT22 failed, err=");
        Serial.println(err);
        return;
      } else if(printCom) {
        humiDht22 = (int) humiDht22;
        printTime();
        Serial.println("Temperature DHT22: " + String(tempDht22) + " *C,  Humidity: " + String(humiDht22) + " %");
      }
    }
    И посмотрите что прийдёт за ошибка в сериале. Скорее всего датчик приказал долго жить.
     
    Последнее редактирование: 8 окт 2018
  7. Belyj

    Belyj Нерд

    Здравствуйте! Повторил сей проект и решил отписаться... Пришел сюда от Марселя, его проект мне очень нравился, но там проблема с температурой с ds18b20 врёт на 3-5 градусов, что очень много. Автор не хочет это исправлять, и исходников нет чтоб подправить. Вот и пршел сюда. Почитал немного, залил всё это дело, но температура вообще не отображалась. Начал ковырять код, и вот что наковырял:в скетче три варианта назначеных пинов. Вот такие дела :). Переделал всё как мне надо, кое-что подправил. Всё работает, не так стабильно, как у Марселя, но зато тут можно что-то подредактировать, что-то подправить. Спасибо большое автору за старания и труд.
    Кто знает можно ли изменить минимальную яркость матрицы? Я понимаю, что драйвер поддерживает только 16 градаций. Но всё же может можно как-то сместить диапазон. В скетче есть строчка #define CMD_INTENSITY 10
    Это яркость поумолчанию? Буду признателен за подсказки.
     

    Вложения:

    • scrr.png
      scrr.png
      Размер файла:
      360,4 КБ
      Просмотров:
      35
  8. IvanUA

    IvanUA Гик

    Пишу уже после разборов полетов.... Скетч автора D_rain я таки добил, но... лично у меня возникли очень большие проблемы с памятью... Зная приколы ЕСП8266 - может это только у меня так, я в последующую итерацию скетча таки добавлю возможность выбрать и попробовать метод предложенный ув. D_rain.
    В последней версии скетча эти памятные даты как раз таки хранятся в энергонезависимой памяти и редактируются через веб. Или я вас не совсем правильно понял или поясните что не так.
    Отвечаю по поводу последней версии №6... У меня с ней были очень большие проблемы, по этому таки откатился на 5-ю - НЕ бета версию. Кстати, на сайте разработчика, большими буквами не рекомендуется использовать 6-ю бета версию... только для тестов....
    Честно говоря, я не проводил множественных тестов с этим датчиком. Был датчик, подключил первую попавшуюся библиотеку. Он у меня где то с месяц отработал без нареканий. Так что если что, совет один, подбирайте под свой датчик библиотеку, и будет вам счастье.
    Имеет право. Нравится - бери, не нравится - ни кто никому, ничего не должен.... Это нормально в данной ситуации.
    Эээээ, можно поподробнее, или память подводит, или давно это было. Ну не помню я....
    ЕСП8266+АрдуиноИДЕ - для меня сейчас это антоним к слову "стабильность"... увы...
    Тут аккурат железячный драйвер поддерживает 16 градаций... Хотите что то изменить - меняйте не программно, а уже в схемотехнике.
    Если скетч компилится - проверьте к тем ли пинам подключаете матрицу. И вообще проверьте железо ( ЕСП и матрицу).

    ПС. Прошу прощения что отвечаю не всегда быстро, но увы сейчас нет возможности иметь много свободного времени и нормальный инет... но это временно))))
     
    Valerchik нравится это.
  9. ИгорьК

    ИгорьК Давно здесь

    В связи с этим я не выкладываю версию часов, которая работает одновременно с apixu, народным мониторингом и MQTT. Как только добавляешь брокер, часы бессистемно, раз или два в час перегружаются. На работу это не влияет, но кошки внутри скребут.
     
  10. IvanUA

    IvanUA Гик

    )))))) Понял о чем речь))))))))
    Ну если вы смогли посчитать количество, то думаю для вас не было большой проблемой найти актуальный вариант)))))
     
  11. IvanUA

    IvanUA Гик

    ОХ Игорь... Как эти часы мня "радуют". А вернее их железо... Но, надо понимать, что даром, не всегда яблочко, на блюдце с золотой каёмочкой...
    Но мы ведь с вами не собирались делать коммерческий проект - так сказать стабильный для зарабатывания прибыли?! Правильно, любые проблемы и нахождение путей их решения - это опыт.... а он дорого стоит)))))
     
  12. D_rain

    D_rain Нерд

    Я, тут, тоже, экспериментирую, помаленьку. Делаю один запрос и потом разбираю, по Вашему совету, и вроде живёт. В общем надо посмотреть.
     
  13. IvanUA

    IvanUA Гик

    ОК. Будет какойто вариант, без проблем давайте добавим его в наш скетч...
     
  14. IvanUA

    IvanUA Гик

    Я выбираю NodeMCU 1.0
     
    Valerchik нравится это.
  15. SergeiL

    SergeiL Гуру

    Из библиотек использую только эти:
    Код (C++):
    #include <ESP8266WiFi.h>
    #include <WiFiUdp.h>
    #include <ArduinoOTA.h>

    #include <EEPROM.h>
    #include <Ticker.h>
    #include <PubSubClient.h>
    #include <Wire.h>
    Работает все стабильно, первый глюк заметил сегодня, и то он связан не с часами, а с некорректным временем на NTP сервере.
    В Ардуино ИДЕ и указанных библиотеках все корректно и надежно!!!
    Баги нужно искать в коде.
     
    Valerchik нравится это.
  16. SergeiL

    SergeiL Гуру

    Добавлю про надежность, у меня на ESP8266 с ноября 2016 работают в 9-и верхних светильниках (люстры).
    Было замечено одно зависание, на одном светильнике, после выключения электричества.
    Контролируются рестарты, переподключения по Wi-Fi, MQTT.
    Ни одного рестарта, есть, конечно, переподключения по Wi-Fi, MQTT.
    При этом, контролируются полупериоды сети. Четыре раза нет полупериода сети (опять вертикальные счетчики) - выключили свет механическим выключателем. Устройство даже успевает сообщить свой статус в момент отключения сети 220В.
     
    Последнее редактирование: 9 окт 2018
  17. Belyj

    Belyj Нерд

    Конечно, это был не упрёк, а констатация факта.
    Скрин приложен. В первом посте на картинке gpio 0 по факту в скетче gpio 5 и тут же в коментарии gpio 10 :) Итого 3 варианта. Gpio 5 по мне не самый удачный вариант, там при старте должен быть высокий уровень.
    И вопрос по поводу уменьшения яркости всё ещё в силе, светофильтр стоит.
     
  18. ИгорьК

    ИгорьК Давно здесь

    Многое же зависит не только от библиотек, но и кода, что грузит модуль.
    Часы, особенно в задумке Ивана, очень затратны по нагрузке, а выключатель - ни о чем.

    Причем речь не о кривизне кода, а именно о загрузке процессора и памяти, когда начинают лезть косяки SDK.
     
    IvanUA нравится это.
  19. SergeiL

    SergeiL Гуру

    Согласен!
    Тут очень многое зависит от того как построен код, как отдается управление, блокируются ли надолго другие процессы. ESP, в принципе, быстрая-же.
    Тут поддался общему увлечению матрицами, купил себе матрицу 4*(8*8) с MAX7219, пока правда не знаю для чего :), но прикольно повозиться.
    Посмотрел примеры, и увидел, что чаще всего, например сдвиг строки делают в одном цикле.
    Соответственно, за все время смещения строки по экрану, управление отдается только через delay();
    Будет время, попробую написать вывод на дисплей через таймер.
    У меня на семи-сегментных в loop() только реконнекты.
     
  20. Belyj

    Belyj Нерд

    А кто сказал что код кривой? Идеально прямого кода вообще практически не бывает :) Оно и заметно, что часики переодически подвисают, явно что-то переваривают. Хочу потихоньку под себя переделать, отключить ненужные библиотеки убрать ненужные функции. И может быть часикам станет полегче.