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

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

?

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

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

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

    39 голосов
    37,5%
  3. Да, не однократно

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

    SergeiL Гуру

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

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

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

    IvanUA Гуру

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

    Юра 80 Нерд

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

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

    IvanUA Гуру

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

    buba911 Нерд

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

    Вопрос ко всем остальным, почему не получается уменьшить показания температуры?
    Я уже этот вопрос задавал в #2149.
    Заранее спасибо.
     
  7. 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 нравится это.
  8. SergeiL

    SergeiL Гуру

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

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

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

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

    buba911 Нерд

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

    buba911 Нерд

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

    IvanUA Гуру

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

    Deniskyn Гик

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

    Заметил еще какой глючек, иногда (закономерности не выявил) не хочет подключатся к открытым сетям...
     
    Юра 80 нравится это.
  13. 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 нравится это.
  14. mex79

    mex79 Нерд

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

    buba911 Нерд

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

    mex79 Нерд

    buba911 спокойнее, я лишь высказал своё предположение основанное на недавнем опыте, не стоит так пылить.
     
  17. 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;
    Можете как то откоментить, или буду сам разбираться)))
     
  18. D_rain

    D_rain Нерд

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

    obuhanoe Гик

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

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

    urg2000 Нерд

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