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

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

?

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

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

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

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

    47 голосов
    54,7%
Можно выбрать сразу несколько вариантов.
  1. IvanUA

    IvanUA Гуру

    Предусмотрено. Всё как и всё через веб.

    По поводу сравнения прошивки Марселя и этой... Господа, я этот скетч выкладывал для вашего развития. Дабы вы сами могли что то менять, добавлять - изучать в конце концов.
    Можно было бы конечно поступить как Марсель и сгенерить вам бинарник - и у всех бы скорее всего, все работало бы.... Но скажу сразу - это не наш путь! Копипастеры на не друзья)))))

    По поводу не стабильности скетча. Хотите стабильности - откажитесь от библиотек. Ну или после каждого обновления надо проверять не появились ли новые глюки....

    По поводу поправить немного скетч, ну так сказать выявленные недостатки.
    1. Как показала практика работы этих часов без интернета - очень надоедает постоянно вылезающее сообщение о попытки подключения к WiFi. Думаю надо будет сделать это сообщение только при первом старте часов, а в последующие попытки делать так сказать не заметную проверку доступности сети. Ну и поднимать точку доступа будем тоже только один раз при первом старте (или после ресета). Она то фактически нужна только для первичной настройки часов.
    2. Считаю что стоит таки реализовать функцию ресета (как писали здесь выше) после определенного количества попыток.
    3. По поводу строки запроса для "новых" ключей. Ну тут все просто. Надо в вебе просто добавить возможность выбирать тип запроса, типа - "для новых ключей", или "для старых ключей". Коду это фактически не повредит, там делов то на копейку))) а думаю что реально может пригодиться...
    4. Ну и еще так по мелочи, кое что удалось натестить до поправы.

    ПС. Я просто в шоке от интернета у немцев. Казалось бы самые пупы европы, а нормального интернета найти очень тяжело. При чем что мобильного что стационарного. В этом плане Польша - это просто форвард этой услуги что по стоимости что по качеству.
    ППС. Пишу сейчас с АДСЛ интернета - и на том говорю спасибо, бо до этого на LTE - была просто опа что по цене, что по качеству. Может это конечно мне так повезло((((((((
     
    Valerchik, om1212, Юра 80 и ещё 1-му нравится это.
  2. SergeiL

    SergeiL Гуру

    На картинке DS18b20 :)
    И так, гравировку, дороже подделывать, чем стоимость DS-ки.
     
  3. SergeiL

    SergeiL Гуру

    Чему???:)
     
  4. ИгорьК

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

    upload_2018-10-2_21-18-20.png
    Иван! Только чтобы узнать это, надо делать твои часы!
     
  5. IvanUA

    IvanUA Гуру

    Или посмотреть первое сообщение )))
     
  6. Юра 80

    Юра 80 Нерд

    Если идеи принимаете - то еще одна есть, по поводу города-api-погоды.
    Вводить id города, api, и - название города на нужном пользователю языке.
    Сейчас - если я введу только id города - получу название на английской. Моего города в вашем списке переводов нет, т.е. нужно удалять какой-нибудь, скажем, донецк-луганск и вместо него писать свой - на всех языках. На выходе получаю погоду в своем городе и его надпись на нужном мне языке.
    Но - можно сделать так, чтобы пользователь вводил название города сам - на нужном языке. В этом случае уйдут страницы переводов названий городов с языка на язык. Ну и тем, кто живет не в городе, а рядом - можно будет написать название своего населенного пункта, не имеющего id. Т.е. получать погоду на Минск, к примеру, а отображать как "деревня Тарасово".
    ИМХО функционал от этого немного вырастет.

    И еще - если погода не получена - отображаются нули с пустым населенным пунктом. Если в случае отсутствия получения погоды выводить ТОЛЬКО часы - будет симпатишней.
     
  7. IvanUA

    IvanUA Гуру

    Можно конечно сделать, но скажу сразу, скушает много памяти. Не буду расписывать почему, но поверьте оно того не стоит. Лучше таки поправить в скетче или вообще не отображать название города. С не отображать название города - Денис кажись говорил об этом. То думаю что сделаю.
    Ну в принципе согласен. Сейчас если нет прогноза очень долго, то выводится надпись что прогноза нет более *- часов... Можно убрать эту надпись, а оставить только мигающие точки.
     
    Valerchik и Юра 80 нравится это.
  8. buba911

    buba911 Нерд

    Странный вы человек, я здесь,что хвастаюсь что-ли?

    Вопрос ко всем остальным, почему не получается уменьшить показания температуры?
    Я уже этот вопрос задавал в #2149.
    Заранее спасибо.
     
  9. IvanUA

    IvanUA Гуру

    Очень конечно странно что так происходит..... Как вариант могу предложить следующий костыль
    Код (C++):
    void sensors() {
        sensorsDs18b20();
        sensorsSi7021();
        sensorsBmp();
        sensorsBme();
        sensorsDht();
        tempDht22=tempDht22-3.0;
        t1 = (sensorDom==0?0:sensorDom==1?(int)tempDs18b20:sensorDom==2?(int)celsiusSi7021:sensorDom==3?(int)tempBmp:sensorDom==4?(int)tempBme:sensorDom==5?(int)tempDht22:sensorDom==6?tMqtt3:0);
        t2 = (sensorDom==0?0:sensorDom==1?((int)(tempDs18b20*(tempDs18b20<0?-10:10))%10):sensorDom==2?((int)(celsiusSi7021*(celsiusSi7021<0?-10:10))%10):sensorDom==3?((int)(tempBmp*(tempBmp<0?-10:10))%10):sensorDom==4?((int)(tempBme*(tempBme<0?-10:10))%10):sensorDom==5?((int)(tempDht22*(tempDht22<0?-10:10))%10):sensorDom==6?tMqtt4:0);
        t3 = (sensorUl==0?0:sensorUl==1?(int)tempDs18b20:sensorUl==2?(int)celsiusSi7021:sensorUl==3?(int)tempBmp:sensorUl==4?(int)tempBme:sensorUl==5?(int)tempDht22:sensorUl==6?tMqtt3:0);
        t4 = (sensorUl==0?0:sensorUl==1?((int)(tempDs18b20*(tempDs18b20<0?-10:10))%10):sensorUl==2?((int)(celsiusSi7021*(celsiusSi7021<0?-10:10))%10):sensorUl==3?((int)(tempBmp*(tempBmp<0?-10:10))%10):sensorUl==4?((int)(tempBme*(tempBme<0?-10:10))%10):sensorUl==5?((int)(tempDht22*(tempDht22<0?-10:10))%10):sensorUl==6?tMqtt4:0);
     
     
    Valerchik и buba911 нравится это.
  10. SergeiL

    SergeiL Гуру

    Так а Вы попробовали взять пример (например: Simple ) идущий вместе с библиотекой DallasTemperature
    Подключить DS18B20 к Вашей ESP
    ВЫ.png

    Схема простейшая, в коде нужно только назначить пин данных (DATA).
    VDD на 3.3В

    И посмотреть, что приходит в монитор порта.

    У меня эти DS18B20 много где стоят, никогда ни каких проблем не было.
     
  11. buba911

    buba911 Нерд

    А вы думаете я так не делал? Если подкючаешь пины 1-3 к питанию(пробовал 5 В и 3,3 В) то всё в порядке, а как только подключаешь сопротивление 4,7 к между 2-3 ногами этот сенсор открывается как транзистор и между 1-3 становиться КЗ. А сам сенсор греется так , что не дотронешся. И так все 5 штук, что заказал.
     
  12. buba911

    buba911 Нерд

    Спасибо, но не помогло:(
    upload_2018-10-3_11-0-48.png
     
  13. IvanUA

    IvanUA Гуру

    Тестирую срабатывание функции
    Код (C++):
    ESP.reset();
    Через раз - намертво виснет ЕСПха
    И все.
    А если нормально то
    Как думаете, что это может быть?
     
    Последнее редактирование: 3 окт 2018
  14. Deniskyn

    Deniskyn Гик

    Да, я давно предлагал убрать название города. Каждый как бы знает в каком он городе, находит его ИД и вперед.

    Заметил еще какой глючек, иногда (закономерности не выявил) не хочет подключатся к открытым сетям...
     
    Юра 80 нравится это.
  15. SergeiL

    SergeiL Гуру

    В инете пишут, что бывает для некоторых плат.
    Попробовал для тех, которые есть у меня, нашел одну нестабильную.

    Поменял на ней ESP.reset(); на ESP.restart();

    После прошивки обесточил для полного проброса, снова подключил питание
    и уже полчаса "рестартует" без багов.

    Код (C++):
    #include <ESP8266WiFi.h>

    void setup() {

      Serial.begin(115200); // For debugging output

      delay(3000);
    }

    void wifiConnect()
    {
      static uint8_t   WiFi_ERR_Connect_numb=5;
      Serial.println("");
      Serial.print("Counter= ");
      Serial.print(WiFi_ERR_Connect_numb);
      Serial.println("");

    //-----------------------------------------------
        if(!(WiFi_ERR_Connect_numb--))
        {
          Serial.println("Reset ESP8266 ...");
          ESP.restart();
        }
    //-----------------------------------------------

    }

    void loop() {

      delay(3000);
      wifiConnect();
    }

     
    Код (Text):


    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3

    Counter= 2

    Counter= 1

    Counter= 0
    Reset ESP8266 ...

    ets Jan  8 2013,rst cause:2, boot mode:(3,1)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    vbb28d4a3
    ~ld

    Counter= 5

    Counter= 4

    Counter= 3


     
     
    Последнее редактирование: 3 окт 2018
    kolkapetkinsyn нравится это.
  16. mex79

    mex79 Нерд

    Я тут как последний поц впоролся и получил такой же результат, по факту получилось что перепутал местами 1 и 3 контакт так как датчик запаивался на длинном кабеле, по итогу поменял местами и оно даже заработало нормально хотя все шансы спалить были.
     
  17. buba911

    buba911 Нерд

    mex79, Вы читали моё сообщение Часы на ESP-01(NodeMCU) + MAX7219 + WEB интерфейс
    Datasheet я уже наизусть выучил и до 3-х считать пока могу. Но ничего я местами не менял. Кто хочет попробовать ,адрес в личку , вышлю вам "Фомы" неверующие.
     
    Последнее редактирование: 4 окт 2018
  18. mex79

    mex79 Нерд

    buba911 спокойнее, я лишь высказал своё предположение основанное на недавнем опыте, не стоит так пылить.
     
  19. IvanUA

    IvanUA Гуру

    Что то я быстро не соображу что здесь происходит
    Код (C++):
      line1.remove(0, line1.indexOf("list") + 6);
      line1.remove(line1.indexOf("city")-2,line1.length()-line1.indexOf("city")+2);
     
      line2.remove(0, line2.indexOf("list") + 6);
      line2.remove(line2.indexOf("city")-2,line2.length()-line2.indexOf("city")+2);
      String line = "";
      line2.remove(0, line1.length());line2.remove(line2.length()-1,1);
      line = line2;
    Можете как то откоментить, или буду сам разбираться)))
     
  20. D_rain

    D_rain Нерд

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