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

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

?

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

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

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

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

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

    om1212 Нерд

    Разобрался в чём дело. Некоторым переменным был присвоен тип данных "byte", а он не может принимать отрицательных значений. Присвоил им тип данных "int" и всё заработало.[​IMG]
    [​IMG][​IMG]
    Для тех кто хочет отобразить отрицательные температуры принимаемые по mqtt, нужно изменить тип данных переменных t3, t4, tMqtt3, tMqtt4, tMqtt5 на "int".


    [​IMG]
     
    Последнее редактирование: 18 сен 2018
    Valerchik, megavit66, Юра 80 и ещё 1-му нравится это.
  2. RealArty

    RealArty Нерд

     
  3. anatolyj

    anatolyj Нерд

    На плату esp 12e через arduino IDE залил LED_clock_weath_v10.08.2018. Подключил Max7219, датчик температуры и влажности si7021 подключил питание и +85 градусов. Подключил кнопку на 16 пин, резистор на 10 ком. часы заработали. Но si7021 не видит, на экран выводит 0 градусов, влажность 0%. В чем может быт проблема. Сам датчик подключал к ардуино работает.
     
  4. Delta7777

    Delta7777 Нуб

    Добрый день. Я извиняюсь, может плохо читал форум. Что значит мигающая точка справа . Прошивка ESP-12 ver: 01.05.2018.
     
  5. anatolyj

    anatolyj Нерд

    Погода не ообновилась
     
  6. RealArty

    RealArty Нерд

    Извиняюсь за жо.... Автор не сомненно молодец , ценю и уважаю. Я просто стремлюсь к блочности архитектуры кода, то есть к ее универсальности, когда можно без напряга вставлять и удалять целые блоки кода без серьезной переделки логики основного кода . Я не все слизываю, а только беру куски или идеи, не волнуйтесь так. Изобретать постоянно один и тот же велосипед по крайней мере глупо. Пока я не могу выкладывать что либо, так как считаю что у меня нет ещё реально нормальной законченной своей идеи, такой как у автора, а копипастить все на прополую и побыстрее выдавать сырые проекты с кучей ошибок и не стыковок из срощенных чужих кусков кода за свое детище желания нет, да и смысла тоже. На просторах инета и так этого валом, реально хорошие идеи на вес золота. У всех конечно разные понятия, у меня такие.
     
    Последнее редактирование: 18 сен 2018
  7. RealArty

    RealArty Нерд

    В детском саду что ли, слабо не слабо. Пишу не спешно, не волнуйтесь и поделюсь обязательно, только я сутками в жк-матрас не собираюсь смотреть с полной пепельницей акурков на столе и начатым дошераком, много других увлечений есть помимо этого, я разносторонний. Да ещё говорят надо на работу ходить и не хорошим делом занимать - трудом вроде называется, слух прошел что за это ещё и деньги платят, во как оно бывает.:)
     
    Последнее редактирование: 19 сен 2018
    Юра 80 нравится это.
  8. BenVVG

    BenVVG Нуб

    День добрый! Давно пользуюсь этими часиками, в Вашем исполнении.
    Появилась у меня задача..
    Хотел бы "научить" часы дружить с внешними датчиками, к примеру с уличным.(DHT22, BME280 - в идеале), espшек есть штук 5 разных, датчики есть, есть пара малинок 2го поколения, есть пара NRF24L01.
    Паять умею. Писать и сочинять код - не мое, в упор не понимаю.
    В связи с этим вопрос - будет ли реализация внешних датчиков когда либо?)
    И еще, видел RGB матрицу, можно ли ее прикрутить к часам, сделав их к примеру двухярусными( высоты матрицы по идее хватит, там 64 на 32 пикселя, размерами 256 мм * 128 мм. Можно сделать грубо говоря два по 64*16.
    Но это так, мысли вслух. Основной вопрос он первый - есть ли готовое решение с беспроводными датчиками, либо как это можно изобрести, в какую сторону смотреть.
    ПС
    Просьба чукчу не пинать, чукче нравится электроника, но чукча код писать не умеет((
     
  9. yri26

    yri26 Нуб

    Та же проблема, часы работают когда неделю когда месяц, и потом теряет точку доступа к роутеру, да пытаются переподкючится, но уже по 192.168.4.1 и так бесконечно. Помогает перезагрузка питанием. Назначил часам постоянный IP а также прошивал разными прошивками, результат ноль.
     
  10. buba911

    buba911 Гик

    всё уже украдено до нас предусмотренно, и работает через MQTT. Просили не пинать ;) , поэтому курите матчасть. Даже на этом форуме по MQTT полно инфы (знания С++ не нужны) просто Ctrl+C -> CtrL+V :p
     
  11. SergeiL

    SergeiL Гуру

    Считайте количество неудачных попыток подключения, при достижении заданного числа делайте
    Код (C++):
    ESP.reset();
    У меня стоит после 15, но на своих устройствах, со своим кодом, замечал увеличение кол-ва рестартов, только при полном отсутствии доступа в интернет через Wi-Fi или самого Wi-Fi.
    А так ESP с MQTT и NTP очень надежно работают. У меня последний раз электричество более года назад выключали, ESP выключатели и свои часы после этого не рестартовали.
     
  12. om1212

    om1212 Нерд

    Смотрите в сторону Domoticz http://forum.amperka.ru/threads/Умный-дом-domoticz.12911/ и ему подобных систем. Там любую информацию можно вывести на экран часов по mqtt.
    Да и вообще сможете реализовать ЛЮБЫЕ сценарии управления ЛЮБЫМИ подключенными исполнительными устройствами и выводить информацию на ваши устройства отображения (например, смартфон). Лишь бы было желание.
    Малинки, ESPшек и часов вполне хватит для начала.
    Порог вхождения небольшой. Если вОзитесь с малинкой и прошиваете ESPшки, освоите. Нужно только желание и время...
     
    Последнее редактирование: 20 сен 2018
  13. Deniskyn

    Deniskyn Гик

    Не однократно пробовали, трабла не в этом. Склоняюсь к тому как и говорил Иван что проблемы с обновами библиотек....
     
    Valerchik и Юра 80 нравится это.
  14. mrcotek

    mrcotek Нерд

    как решить эти проблемы? просто у меня при включении часов, все время пишет 85 градусов, хотя ни одного датчика не подключено.
     
  15. urg2000

    urg2000 Нерд

    у меня тоже на ESP-01 и виснит намертво
     
  16. buba911

    buba911 Гик

    Так отключите их все в вебморде, либо подтяните к плюсу через резистор 10 к вход кнопки опроса температуры.
     
  17. yri26

    yri26 Нуб

    Подскажите пожалуйста, в какое место скейтча вставить строку " ESP.reset(); " для перезагрузки?
     
  18. mrcotek

    mrcotek Нерд

    как это вообще сделать? Вот раньше все нормально работало. Глючить стало из-за новой прошивки
     
  19. Paly4

    Paly4 Нерд

    бинарником от автора
     
  20. SergeiL

    SergeiL Гуру

    Честно говоря мне сложно советовать, у меня свои часы, ESP.reset(); стоит на всякий случай, ресетов не видел.
    Думаю Иван, смог бы более правильно подсказать. Код его, я только поверхностно посмотрел.
    В коде Ивана есть функция wifiConnect(). Для решения именно Вашей задачи (часы перестают коннектиться к точке доступа, поднимают свою) я бы мог порекомендовать добавить простейший счетчик количества неудачных попыток подключения, и после достижения предельного количества - перезапуск ESP.

    Код примерно такой:
    Это добавить в начало файла:
    Код (C++):
    #define NUM_WIFI_ERR_CONN 15
    Это замена функции wifiConnect()
    Код (C++):

    void wifiConnect()
    {
    //-----------------------------------------------
      static uint8_t WiFi_ERR_Connect_numb = NUM_WIFI_ERR_CONN;
    //-----------------------------------------------

      if(printCom) {
        printTime();
        Serial.print("Connecting WiFi (ssid="+String(ssid.c_str())+"  pass="+String(password.c_str())+") ");
      }
      printStringWithShift("WiFi", 15);
      WiFi.disconnect();
      WiFi.mode(WIFI_STA);
      for(int i = 1; i < 6; i++){
        WiFi.begin(ssid.c_str(), password.c_str());
        delay (5000);
        if(WiFi.status() == WL_CONNECTED){
          WIFI_connected = true;
    //-----------------------------------------------
          WiFi_ERR_Connect_numb== NUM_WIFI_ERR_CONN;
    //-----------------------------------------------
          if(printCom) Serial.print(" IP adress : ");
          if(printCom) Serial.println(WiFi.localIP());
          String aaa = WiFi.localIP().toString();
          clr();
          printStringWithShift((tYour + " IP: ").c_str(), 15);
          printStringWithShift(aaa.c_str(), 25);
          timeUpdateNTP();
          return;
        }
    //-----------------------------------------------
        else if(!(WiFi_ERR_Connect_numb--))
        {
          Serial.println("Reset ESP8266 ...");
          ESP.reset();
        }
    //-----------------------------------------------

        if(printCom) Serial.print(".");
        int j = 0;
        while(j < 500){
          if(j % 10 == 0) showAnimWifi(i);
          j++;
          delay(1);
        }
        //clr();
        //refreshAll();
      }
      if(printCom) Serial.println(" Not connected!!!");
      WiFi.disconnect();
      WiFi.mode(WIFI_AP);
      WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
      WiFi.softAP(ssidAP.c_str(), passwordAP.c_str());
      if(printCom) {
        printTime();
        Serial.println("Start AP mode!!!");
        Serial.print("          Wifi AP IP : ");
        Serial.println(WiFi.softAPIP());
      }
      updateTime();
      printStringWithShift(tPoint.c_str(), 35);
    }
    Изменения между строками, выделенными комментариями: //-----------------

    Имейте в виду, что это решение сбросит часы, пока вы долго сидите в WEB интерфейсе и меняете настройки. Можно количество попыток увеличить, если будет недостаточно времени.