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... - วิทยาศาสตร์และเทคโนโลยี
Погонял Вашу прошивку на старый функционал, с датчиками DHT22 и DS1820, вроде все работает как надо! Проверил IK приемник, тоже работает нормально, правда после исправления известной ошибки. Там надо поменять строчку lastIRValue = results.value; это заменил на lastIRValue = (uint32_t)results.value;
Проверил так же работу на платке ESP32-S2, без нареканий. Ну и конечно надо изменить ограничение по ножкам у датчиков вот тут constrain(value.toInt(), -1, 40);
я поставил вместо 16 значение 40. Спасибо большое за проделанную Вами работу! Если у кого то не будет собираться прошивка, пишите, выложу старенькие надежные библиотеки для датчиков.
И вопрос по размеру EEPROM , почему Вы поменяли 4096 на 1024, я не сильно копался в даташитах ESP32, там какие то ограничения ?
Пока тестировал IR порт случайно выловил "первородный" :-) косяк, с потерей данных при записи кода из HTML странички в память....
вот тут (поля данных кодов IR) irOn[id] = value.toInt(); irOff[id] = value.toInt(); надо поменять на value.toDouble();
Так как некоторые пульты дают длинный 32 битный код, а он при конвертации портится, если число больше чем 2147483647 (7FFFFFFF)
Ну и ножки контроллера ESP32 лучше брать те, которые только на вход работают.
Супер!
Ат команды, и многопоточность, в одном цикле посылаем команду, вторым потоком читаем ответы, если таймаут вышел, повторяем отправку иди ексепшион
Отлично, лайк, подписка!!
Для новичков очень поучительно и полезно, но сложно разобраться )) Есть ли такой код, но только для СМС без подключения к интернету и MQTT?
Отправка и прием СМС это самое сложное. Работает все не зависимо. В примере я постарался снабдить код максимальным количеством комментариев и разнести функционал по файлам. В самом видео подробно рассказал, поэтому такое длинное получилось. Пример как основа, это не законченный проект, используйте только нужную часть. Если разберетесь с основным принципом взаимодействия с модемом, с остальным проблем не будет. С другой стороны во втором скетче, для готового устройства, вообще GPRS и MQTT можно не использовать и все будет работать.
👍🏻
Очень интересно! У меня вопрос по исходному скетчу Морозова, вы его смогли конвертировать для ESP32 ?!
Я давно просил Алексея сделать версию для ESP32? но увы у него нет времени, а я не программист и при конвертировании версии 5.4 уперся в SPIFF память :-(
Могли бы вы помочь с этой проблемой ? Думаю многим не хватает GPIO на умном реле ESP_Relay5_4 для esp8266...
Скетч конвертирован под ESP32 на 95%.
Оставил как есть (т.к. не использовал) RTC memory, датчик освещенности, модуль часов, ИК-пульт. Это скорее всего работать не будет. Но оригинал оставлен в исходниках.
Я сравнил код с оригинальной, попробую что в нем работает на есп32, меня больше интересует будет ли Ваша запускаться без SIM800 ? У меня куча устройств на этой прошивке в "умном доме" ну и еще один проект очень нравится - ESPEasy, прошивки даже друг другом управляют по сетке :-)
Будет работать без Sim800, я в видео об этом говорю. В веб админке можно вообще исключить Sim800.
Не компилится ни для ESP32 ни ESP8266 :-( Правда версия arduino у меня 1.8.19 но библиотек не просит...
И обратил внимание, в примере видео 5 вкладок в проекте, а скачал по ссылке, там два головных файла Sim800_GSM_Contol и ESP32_GSMRelay5_31
и при загрузке проекта в IDE совсем другой комплект на компиляцию, такой же как у Морозова....
Так я вроде в комментариях все ссылки подписал. Что пример из видео (чему видео и посвящено), а что рабочее устройство (описано вкрадце в конце видео).
Платформа ESP32 2.0.6, на arduino 1.8.15 у меня работает.
Доброго времени! Не подскажите, каким приложением управляете?
Доброго времени!
Приложение "MQTT Dash".
В описании под видео есть ссылки на статьи как настраивать это приложение. Спасибо автору этих статей, все очень подробно расписал.
@@antonkozlenko6333 Благодарствую за информацию!🤝
День добрый, подскажите как такой код можно отладить? каким отладчикам вы пользуетесь?
Добрый день. Как показано в видео, это скетч для среды Arduino IDE. Я никаким отладчиком не пользуюсь. Вероятно другие среды имеют отладку, но они под другие МК (STM или еще что то). С этим я не работаю.
Скажите пожалуйста, вот эта манипуляция касается только 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 пробовал...
Под ESP8266 это не работает. Скачайте оригинал у автора по ссылке. Видео снято про SIM800 и ESP32
Понятно. А исключить вариант с повторной загрузкой не получился ? Типа если spiffs до этого была не отформатирована ,
чтобы это делала прошивка при первом запуске...