SIM800+ESP32 без зависаний скетча. Одновременное использование MQTT, SMS и GSM звонков без библиотек

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ธ.ค. 2023
  • В видео описан вариант как устранить "подвисания" основного цикла при ожидании ответа на АТ команду от SIM800.
    Совместно используются SIM800 и ESP32 в плате LilyGo T-Call SIM800 .
    github.com/Xinyuan-LilyGO/Lil...
    В одном скетче, одновременно задействованы все возможности связи SIM800:
    Получение СМС сообщения, его обработка и отправка ответного СМС сообщения,
    обработка входящих звонков и
    связь с MQTT брокером по GPRS.
    Все эти возможности ESP32 осуществляет только через АТ команды, без сторонних библиотек и без ущерба для работоспособности всего устройства.
    Скетч примера описанный в видео:
    github.com/AntonKozlenko1969/...
    Скетч готового GSM / WiFi реле:
    github.com/AntonKozlenko1969/...
    Улучшения / обновления / bug fix:
    - 09.01.2024 от @user-nf2lm2zx4y
    - 21.03.2024 при попытке обновить среду ESP32 до последней версии 2.0.14 не корректно работает WiFi (не возможно подключиться к ESP32 как к точке доступа AP). Рабочая версия среды 2.0.8. Используйте эту версию при прошивке ESP32. !!!!!!!!!
    Проекты плат для сборки готовых устройств:
    oshwlab.com/gumoldova/sim800_...
    oshwlab.com/gumoldova/1ch_gsm...
    Управление реле основано на готовом фрэймворке (среде управления ) от Alex Morozov
    Ссылка на его ролик:
    • ESP Relay 5++
    Я лишь немного его доработал под используемый контроллер ESP32 и SIM800.
    Как настраивать доступ к MQTT серверу, и вообще что это такое, есть несколько очень хороших статей:
    dzen.ru/media/kotyara12/nastr...
    dzen.ru/a/Y7mFGVuhMh8HuwKL
    Цикл статей по SIM800 :
    codius.ru/articles/GSM_%D0%BC%...
    Видео толкнувшее меня в изучение MQTT по GSM:
    • Анатомия автозапуска 5...
    Библиотека TinyGSM от V. Shymanskyy
    github.com/vshymanskyy/TinyGS...
    Описание стандартов команд MQTT протокола
    disk.yandex.com/i/c5grD7SrGZos3w
    Блок питания 220в - 5в HLK-20M05
    aliexpress.ru/item/1005002830...
    Блок питания 50в - 5в LM2596HV 5в
    aliexpress.ru/item/1005002334...
    Мини блок питания 24в - 5в
    aliexpress.ru/item/3278525446...
    Диодный мост GBP310
    aliexpress.ru/item/1005004789...
    Реле 5в SRD-05V
    aliexpress.ru/item/4000119890...
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 27

  • @user-nf2lm2zx4y
    @user-nf2lm2zx4y 4 หลายเดือนก่อน

    Погонял Вашу прошивку на старый функционал, с датчиками DHT22 и DS1820, вроде все работает как надо! Проверил IK приемник, тоже работает нормально, правда после исправления известной ошибки. Там надо поменять строчку lastIRValue = results.value; это заменил на lastIRValue = (uint32_t)results.value;
    Проверил так же работу на платке ESP32-S2, без нареканий. Ну и конечно надо изменить ограничение по ножкам у датчиков вот тут constrain(value.toInt(), -1, 40);
    я поставил вместо 16 значение 40. Спасибо большое за проделанную Вами работу! Если у кого то не будет собираться прошивка, пишите, выложу старенькие надежные библиотеки для датчиков.
    И вопрос по размеру EEPROM , почему Вы поменяли 4096 на 1024, я не сильно копался в даташитах ESP32, там какие то ограничения ?

    • @user-nf2lm2zx4y
      @user-nf2lm2zx4y 4 หลายเดือนก่อน

      Пока тестировал IR порт случайно выловил "первородный" :-) косяк, с потерей данных при записи кода из HTML странички в память....
      вот тут (поля данных кодов IR) irOn[id] = value.toInt(); irOff[id] = value.toInt(); надо поменять на value.toDouble();
      Так как некоторые пульты дают длинный 32 битный код, а он при конвертации портится, если число больше чем 2147483647 (7FFFFFFF)
      Ну и ножки контроллера ESP32 лучше брать те, которые только на вход работают.

  • @user-cr9fr2mk9i
    @user-cr9fr2mk9i 5 หลายเดือนก่อน +1

    Супер!

  • @tree-service
    @tree-service 5 หลายเดือนก่อน +1

    Ат команды, и многопоточность, в одном цикле посылаем команду, вторым потоком читаем ответы, если таймаут вышел, повторяем отправку иди ексепшион

  • @juliec208
    @juliec208 5 หลายเดือนก่อน

    Отлично, лайк, подписка!!

  • @user-yr6ls9kv2j
    @user-yr6ls9kv2j 3 หลายเดือนก่อน

    Для новичков очень поучительно и полезно, но сложно разобраться )) Есть ли такой код, но только для СМС без подключения к интернету и MQTT?

    • @antonkozlenko6333
      @antonkozlenko6333  3 หลายเดือนก่อน

      Отправка и прием СМС это самое сложное. Работает все не зависимо. В примере я постарался снабдить код максимальным количеством комментариев и разнести функционал по файлам. В самом видео подробно рассказал, поэтому такое длинное получилось. Пример как основа, это не законченный проект, используйте только нужную часть. Если разберетесь с основным принципом взаимодействия с модемом, с остальным проблем не будет. С другой стороны во втором скетче, для готового устройства, вообще GPRS и MQTT можно не использовать и все будет работать.

  • @emilmv9089
    @emilmv9089 4 หลายเดือนก่อน

    👍🏻

  • @user-nf2lm2zx4y
    @user-nf2lm2zx4y 5 หลายเดือนก่อน

    Очень интересно! У меня вопрос по исходному скетчу Морозова, вы его смогли конвертировать для ESP32 ?!
    Я давно просил Алексея сделать версию для ESP32? но увы у него нет времени, а я не программист и при конвертировании версии 5.4 уперся в SPIFF память :-(
    Могли бы вы помочь с этой проблемой ? Думаю многим не хватает GPIO на умном реле ESP_Relay5_4 для esp8266...

    • @antonkozlenko6333
      @antonkozlenko6333  5 หลายเดือนก่อน

      Скетч конвертирован под ESP32 на 95%.
      Оставил как есть (т.к. не использовал) RTC memory, датчик освещенности, модуль часов, ИК-пульт. Это скорее всего работать не будет. Но оригинал оставлен в исходниках.

    • @user-nf2lm2zx4y
      @user-nf2lm2zx4y 5 หลายเดือนก่อน

      Я сравнил код с оригинальной, попробую что в нем работает на есп32, меня больше интересует будет ли Ваша запускаться без SIM800 ? У меня куча устройств на этой прошивке в "умном доме" ну и еще один проект очень нравится - ESPEasy, прошивки даже друг другом управляют по сетке :-)

    • @antonkozlenko6333
      @antonkozlenko6333  5 หลายเดือนก่อน

      Будет работать без Sim800, я в видео об этом говорю. В веб админке можно вообще исключить Sim800.

    • @user-nf2lm2zx4y
      @user-nf2lm2zx4y 5 หลายเดือนก่อน

      Не компилится ни для ESP32 ни ESP8266 :-( Правда версия arduino у меня 1.8.19 но библиотек не просит...
      И обратил внимание, в примере видео 5 вкладок в проекте, а скачал по ссылке, там два головных файла Sim800_GSM_Contol и ESP32_GSMRelay5_31
      и при загрузке проекта в IDE совсем другой комплект на компиляцию, такой же как у Морозова....

    • @antonkozlenko6333
      @antonkozlenko6333  5 หลายเดือนก่อน

      Так я вроде в комментариях все ссылки подписал. Что пример из видео (чему видео и посвящено), а что рабочее устройство (описано вкрадце в конце видео).
      Платформа ESP32 2.0.6, на arduino 1.8.15 у меня работает.

  • @emilmv9089
    @emilmv9089 4 หลายเดือนก่อน

    Доброго времени! Не подскажите, каким приложением управляете?

    • @antonkozlenko6333
      @antonkozlenko6333  4 หลายเดือนก่อน +1

      Доброго времени!
      Приложение "MQTT Dash".
      В описании под видео есть ссылки на статьи как настраивать это приложение. Спасибо автору этих статей, все очень подробно расписал.

    • @emilmv9089
      @emilmv9089 4 หลายเดือนก่อน

      @@antonkozlenko6333 Благодарствую за информацию!🤝

  • @Dima_Volkov81
    @Dima_Volkov81 5 หลายเดือนก่อน

    День добрый, подскажите как такой код можно отладить? каким отладчикам вы пользуетесь?

    • @antonkozlenko6333
      @antonkozlenko6333  5 หลายเดือนก่อน +1

      Добрый день. Как показано в видео, это скетч для среды Arduino IDE. Я никаким отладчиком не пользуюсь. Вероятно другие среды имеют отладку, но они под другие МК (STM или еще что то). С этим я не работаю.

  • @user-nf2lm2zx4y
    @user-nf2lm2zx4y 5 หลายเดือนก่อน

    Скажите пожалуйста, вот эта манипуляция касается только ESP8266 ?
    /* !!!! При первой загрузе скетча в ESP32 необходимо ОТФОРМАТИРОВАТЬ SPIFFS
    Для этого установить FORMAT_SPIFFS_IF_FAILED true !!!!
    Потом исправить в false и загрузить скетч повторно !!!!! */
    Почему я это спросил, не понял вот это место :
    #ifdef ESP8266
    if (! readRTCmemory()) {
    _log->println(F("RTC memory is empty!"));
    }
    if (! SPIFFS.begin()) {
    _log->println(F("Unable to mount SPIFFS!"));
    }
    #else
    if (! SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)) {
    _log->println(F("Unable to mount SPIFFS!"));
    }
    #endif
    как бы применяется переменная только для ESP8266 ?
    Для ESP32 скетч собрался и заработал, а для 8266 почему то не собирается...вроде бы и пакет 2.4.2 пробовал...

    • @antonkozlenko6333
      @antonkozlenko6333  5 หลายเดือนก่อน

      Под ESP8266 это не работает. Скачайте оригинал у автора по ссылке. Видео снято про SIM800 и ESP32

    • @user-nf2lm2zx4y
      @user-nf2lm2zx4y 5 หลายเดือนก่อน

      Понятно. А исключить вариант с повторной загрузкой не получился ? Типа если spiffs до этого была не отформатирована ,
      чтобы это делала прошивка при первом запуске...