Разработка прошивки LoRaWAN на языке C для маломощных IoT-устройств

Прошивка LoRaWAN является связующим звеном между микроконтроллером, радиочипом LoRa, датчиками и облачной платформой. Надёжная программа должна обеспечивать стабильное подключение к сети, низкое энергопотребление, безопасность ключей и возможность удалённого обслуживания устройства.

Компания Shenzhen Jinshengchang Technology Co., Ltd. разрабатывает на языке C специализированные прошивки для GPS-ошейников, тревожных бейджей, трекеров активов, электронных замков и промышленных датчиков LoRaWAN.

Почему для LoRaWAN используется язык C?

Язык C обеспечивает прямой доступ к периферии микроконтроллера, небольшой размер программы, предсказуемое использование памяти и точное управление режимами сна. Он подходит для STM32, ESP32, Nordic, NXP и других встраиваемых платформ.

Типовая архитектура включает:

  • аппаратный уровень HAL;
  • драйвер радиочипа SX1262, SX1276 или LR11xx;
  • стек протокола LoRaWAN;
  • уровень обработки датчиков и прикладной логики;
  • загрузчик и модуль обновления;
  • производственный тестовый режим.

Стек управляет OTAA/ABP, ADR, счётчиками кадров, классами A/B/C, приёмными окнами, восходящими и нисходящими сообщениями, а также региональными параметрами.

Оптимизация энергопотребления

Для автономного устройства необходимо использовать прерывания RTC, глубокий сон MCU, отключение GNSS и датчиков, пробуждение по движению и динамическое изменение периода передачи.

Например, GPS-ошейник может редко определять координаты, пока животное не движется, и автоматически перейти к ускоренному отслеживанию при движении, выходе из геозоны или возникновении тревоги.

Следует ограничивать подтверждённые сообщения и повторные передачи, поскольку они увеличивают расход энергии и загрузку LoRaWAN-сети.

Частотные планы и безопасность

Прошивка может быть адаптирована для CN470, EU868, IN865, RU864, US915, AU915, KR920 и AS923. Для каждого региона необходимо отдельно настраивать каналы, мощность, скорость передачи, duty cycle и ограничения времени передачи.

Для защиты устройства используются безопасное хранение DevEUI, JoinEUI и AppKey, сохранение счётчика кадров, проверка команд сервера, отключение отладочного интерфейса и, при необходимости, secure boot или защищённый аппаратный элемент.

Тестирование и серийное производство

Перед выпуском устройство проверяется на регистрацию в сети, передачу данных, потерю шлюза, слабый сигнал, перезапуск, работу watchdog, энергопотребление и совместимость с сетевым сервером.

Jinshengchang может выполнить разработку аппаратной части, прошивки, протокола связи, производственного тестового инструмента, API, мобильного приложения и интеграцию с платформой lora8. Это позволяет заказчику получить целостное OEM/ODM-решение LoRaWAN — от прототипа до массового производства.