Как запрограммировать nodeMCU через OTA с помощью GPRS?

Я использую NodeMCU в одном из своих проектов. Установка находится в удаленном месте. В этом месте нет Wi-Fi, поэтому я использую GPRS (GSM SIM800V) для сбора данных датчиков на свой сервер. Прямо сейчас мне нужно обновить мою новую прошивку до этого NodeMCU.

Возможна ли OTA через GPRS (GSM SIM800V)?

, 👍1

Обсуждение

https://arduino-esp8266.readthedocs.io/en/latest/ota_updates/readme.html#http-сервер, @Juraj


1 ответ


1

Да, это возможно, но с вашей стороны потребуется определенная работа.

Недавно мне пришлось внедрить обновления OTA для ESP32 по каналу RS-485, и на самом деле это довольно просто. Трудная часть (для вас) — это коммуникационное соединение.

Выполнение обновления (при условии, что флэш-память уже разбита на разделы и правильно настроена для обновлений OTA) — это случай «запуска» обновления, передачи диспетчеру обновлений данных флэш-памяти, а затем «завершения» обновления:

  1. Update.begin(size) — запускает процесс обновления. На этом этапе вам необходимо указать ожидаемый размер флэш-данных.
  2. Update.write(*data, length) — передать блок флэш-данных программе обновления для записи. Альтернативой является чтение непосредственно из класса Stream, который попытается прочитать количество байтов, указанное в параметре size, для begin.< /li>
  3. Update.end() — это завершит все это и переключит загрузчик на загрузку с новой флэш-памяти. Если он работал нормально, он вернет true, в противном случае он вернет false.

Предполагая, что вышеописанное сработало, вы не можете сбросить плату с помощью ESP.restart()

Для дополнительной безопасности вы также можете передать хеш MD5 данных в Update.setMD5(md5), и программа обновления проверит, соответствуют ли загруженные данные этому хешу MD5.

Конечно, все это необходимо реализовать в вашей программе, работающей на целевом устройстве, до того, как вы попытаетесь выполнить какие-либо обновления OTA. И, конечно же, вам нужно организовать фактический канал обновления, чтобы в первую очередь доставлять команды и данные к цели.

Итак:

  1. Реализовать метод получения данных для цели
  2. Реализовать код программы обновления
  3. Перейдите к устройству и обновите прошивку.
  4. С этого момента вы сможете использовать обновления OTA через выбранный вами механизм.
,