Часы на esp8266 и max7219 + android управление

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

?

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

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

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

    111 голосов
    41,9%
  3. Да, не однократно

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

    viktor6 Нерд

    проипався 2 дня так и не удалось добиться нормальной работы без перегрузок каждой минуты.
    Жаль прийдется загарбникам платити за wifi-iot.com
     
  2. S_Sergey_G

    S_Sergey_G Нерд

    Должно работать. Я пробовал эту версию в работе. Вы bin загружали? И какая ECP? У меня Wemos D1 mini pro так вела себя.
     
  3. viktor6

    viktor6 Нерд

    У меня nodemcu. Пробовал bin и Arduino ide одинаково ведет себя. Каждую минуту перегружается и не сохраняет настройки.

    https://www.youtube.com/shorts/aCspe5vOaOA
     
    Последнее редактирование: 25 дек 2022
  4. S_Sergey_G

    S_Sergey_G Нерд

    Попробуйте версию 1.44, если всё также будет, замените ESP.
    Я не заметил в видео сопротивление между D0 и землёй. Оно подключено?
     
    Последнее редактирование: 26 дек 2022
    viktor6 нравится это.
  5. viktor6

    viktor6 Нерд

    Нет сопротивления, Поставил заработало. Еще вопрос по настройкам, как заставить дату отображаться в определенный промежуток? Датчик DS18b20 потдержитается и на каком пине?
    Можете схемой подключения поделиться чтобы понять что к какому пину подключается
     
    Последнее редактирование: 26 дек 2022
  6. S_Sergey_G

    S_Sergey_G Нерд

    Изучите настройки на веб интерфейсе, и почитайте первую страницу. Дату выберите в настройках и укажите время. Датчик DS18b20 поддерживается.
     

    Вложения:

    • 2kx4g481l4.jpg
      2kx4g481l4.jpg
      Размер файла:
      53,9 КБ
      Просмотров:
      149
    viktor6 нравится это.
  7. viktor6

    viktor6 Нерд

    Может не правильно выразился, но мне нужно чтобы дата выводилась строго в определеное время, например строго через минуту. сейчас она выводится через 1,50 минуту и пятьдесят секунд .
    не нашол информации можно ли управлять яркостью матрицы через mqtt?
     
    Последнее редактирование: 26 дек 2022
  8. S_Sergey_G

    S_Sergey_G Нерд

    В настройках поставьте "время" отображать 1 мин. и "дату" сколько Вам нужно, например 10 сек и тогда дата будет отображаться каждую минуту после часов
     
  9. viktor6

    viktor6 Нерд

    Не помогло дата отображается не понятно как
    Opera Снимок_2022-12-27_134832_192.168.0.5.png
     
  10. S_Sergey_G

    S_Sergey_G Нерд

    Остальное не нужное отключите, оставьте время и дату. В остальных поставьте прочерк вместо время.
     
  11. viktor6

    viktor6 Нерд

    отключил

     
  12. IvanUA

    IvanUA Гуру

    С датой в виде бегущей строки, все немного печально. Вы не можете знать точно сколько времени будет бежать строка.

    Если дату выводить статичиски, к примеру 2 секунды, то время нужно выводить 58 секунд. Тогда ваш цикл время/дата - будет 1 минута.
    Хотя если честно, то я не понимаю зачем такие сложности?
    ПС. Сделайте двухстрочную версию, тогда часы будут всегда доступны, и не важно сколько времени будет бежать строка)))
     
    viktor6 нравится это.
  13. S_Sergey_G

    S_Sergey_G Нерд

    Здравствуйте Иван.
    При отсутствии данных с народмон на экране "мусор" показывает. Есть ли возможность в это время отображать, что то типа "нет данных" или определённые знаки?
     

    Вложения:

  14. viktor6

    viktor6 Нерд

    Сделайте пожалуйста управление яркостью через MQTT очень нужно
     
    Последнее редактирование: 28 дек 2022
  15. IvanUA

    IvanUA Гуру

    Скорее всего данные есть, только они не правильно распознаны. Что в этот момент в ком порт прилетает?
    Я пока не помогу. Проблема со временем. Но поверьте там все просто. Подписываетесть на какой нить топик и когда туда к примеру прилетает "-" то яркость уменьшаете, когда "+" то увеличиваете... Ну или сразу числом указываете уровень яркости. (Функция получения топиков уже есть в коде. осталось только определить условие/действие)
     
  16. viktor6

    viktor6 Нерд

    Я правильно понимаю что сам скетчь править не нужно?
    Ну на будущее обновления добавьте яркость через MQTT
     
    Последнее редактирование: 29 дек 2022
  17. IvanUA

    IvanUA Гуру

    Да. Скетч уже умеет подключаться к серверу и делать запросы. Просто добавляете свою хотелку с топиком для управления подсветкой ну и меняете ярскость.
     
  18. viktor6

    viktor6 Нерд

    Можно пример у меня не чего не получилось :(
     
  19. S_Sergey_G

    S_Sergey_G Нерд

    Часы далеко от компьютера, пока не могу проверить сериал порт. Но думаю связано с тем, что у меня 3 модуля на дисплее. На других часах где 4 модуля при отсутствии данных показывает +0.0 или не обновленные старые данные. Но всё равно если автономный датчик перестаёт работать надо как то отобразить это на экране.
    И ещё вопрос: почему не работает код на Wemos D1 mini pro, постоянные перезагрузки, через одну две мин., не сохранение настроек после перезагрузки? Этот же код на "большой" ESP работает хорошо. Может в Arduino IDE нужны какие то особые настройки?
     
  20. IvanUA

    IvanUA Гуру

    За основу берем вот этот кусок кода
    Код (C++):
    //======================================================================================
    void callback(char* topic,byte* payload,unsigned int length){ // получаем знаковое число с десятичной плавающей запятой
      if(!senss.mqttOn) return;
      String Text;
      for(int i=0;i<length;i++) Text+=((char)payload[i]);
      if((String(topic)==mqtts.mqtt_sub_inform)&&(sgpCo2Livel<sgps.sgpCo2LivelAlarm||sgpTvocLivel<sgps.sgpTvocLivelAlarm)){
        for(byte i=0;i<leds.NUM_MAX0;i++){
          Text+="   ";
        }
        bip();
        bip();
        bip();
        bip();
        if(senss.printCom){
          printTime();
          Serial.print(F("MQTT Incoming Message: "));
          Serial.println(Text);
        }
        clr(leds.NUM_VER_X);
        refreshAll();
        printStringWithShift(Text.c_str(),30);
        return;
      }
      for(byte i=0;i<8;i++){
        if(String(topic)==mqtts.mqtt_sub[i]){
          tMqtt[i]=Text.substring(0,length+1).toFloat();
          if(senss.printCom){
            printTime();
            Serial.println("MQTT "+String(i+1)+" Incoming: " + String(tMqtt[i]));
          }
          counterMqtt[i]=millis();
          counterMqttTimeout[i]=false;
          sensorses();
        }
      }
    }
    Ну или дополняете или отдельно что то типа
    Код (C++):
    //======================================================================================
    Проверяете есть топик управления подсветкой
    if(String(topic)=="топик управления подсветкой")
    Если есть такой топик то проверяете что пришло в ответе
    Создаем переменную в которой сохраними полученный ответ
    String Text;
    Дальше все символы запишем в эту переменную
    for(int i=0; i<length; i++){
      Text+=((char)payload[i]);
    }
    Ну и в самом отете проверяем на то, какие символы пришли....
    Тоесть если хотите сразу указывать яркость, то по длине циферок (в цикле) получаете число
    int яркость = Text.substring(0,length+1).toInt();
    .....
     к примеру это число валидно от 0 до 15, тогда его можно указать как яркость экрана
    sendCmdAll(CMD_INTENSITY, яркость);
     
     
    viktor6 нравится это.