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.4K постов20.7K подписчиков

Добавить пост

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

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

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

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

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

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

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

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

Вы с хабром или форумом по электронике не перепутали?
У меня вот например на главную вылезло, и у многих тоже, и мне кажется, что большинству посетителей это интересно, т.к. много технической специфики и непонятно нетехнарю - нафига это всё.

А вообще в lwip, который и обеспечивает ip стек в esp-idf - должен быть ppp, который скорее всего не включен по дефолту.

раскрыть ветку (2)
5
Автор поста оценил этот комментарий

Пост опубликован в сообществе Arduino & Pi. Так что всё нормально. Не всё же сборкой метеостанций и морганием светодиодом обсуждать.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку