60

GSM PPP протокол для ESP32 под Arduino IDE

Общая информация:

Большинство GSM модулей могут работать с интернетом не только через AT команды, а и через PPP (Point-to-Point Protocol).  Стандартные GSM модемы для компьютеров работают именно по PPP. Когда вы поключаете модем к компьютеру, то он стандартными AT командами переходит в режим PPP и потом вешается на сетевой протокол через PPPOS (PPP over serial) и таким образом может использоваться как нормальное подключение к интернету (как WiFi или Ethernet). Но библиотеки для работы с PPP довольно большие и перенести их так просто на любой контроллер  типа Arduino, STM не получится. Поэтому на контроллерах обычно используют AT команды.


Для чего он мне понадобился:

Когда я захотел добавить возможность на ESP32 обновлять прошивку с сервера через GSM, то столкнулся с тем, что загрузить файлы больше десятков килобайт через AT команды просто не удается. Тогда я сделал закачку файла по кусочкам с проверкой целостности каждого пакета. Таким образом конечно можно закачивать прошивку, но очень медленно это происходит (на загрузку 700кБ у меня уходило от 40 минут до несколько часов) и очень часто происходи сбой работы AT команд, а если еще в этот момент будет кто-то звонить или придет SMS, то вобще все плохо.


Порывшись в интернете я нашел очень мало примеров реализаций PPP под контроллеры, вот ссылки:

для ESP32 под esp-idf:

https://github.com/espressif/esp-idf/tree/master/examples/pr...

и на базе стандартного примера https://github.com/loboris/ESP32-PPPOS-EXAMPLE

для STM32F4:

https://habr.com/ru/post/419037/


Получается, что в ESP32 есть готовые библиотеки для работы с PPP,  но все примеры под esp-idf. Конечно же я проверил эти примеры, но я привык в Arduino IDE работать.  Поэтому я просто взял эти исходники и адаптировал под Arduino IDE. Я использовал версию arduino-esp32 1.02. Не все функции с esp-idf работали так как надо в arduino, но все получилось. Я специально убрал автоматическую обработку и отправку AT команд для входа в PPP и сделал ручной ввод, чтоб потом можно было добавить свой стэк AT команд или прикрутить библиотеку TinyGSM


Ссылка на код  - https://github.com/levkovigor/pppos_client


Что еще можно сделать:

1) Для обновления прошивки нужно при скачивание файла (отрезав Header) записывать его в SPIFFS и по окончании скачивание делать обновление (в Arduino IDE есть такой пример)

2) Можно попробовать соединить WiFi точку доступа с PPPOS - получится что-то вроде WiFi GSM роутера.

Пишите ваши идеи

Arduino & Pi

1.5K постов20.9K подписчиков

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества