Превратите Arduino в быстрый и простой анализатор пакетов LoRa.
Грег Террелл
https://www.instructables.com/Turn-an-Arduino-Into-a-Quick-Easy-LoRa-Packet-Snif/
Введение.
Обо мне: Привет... Меня зовут Грег Террелл. Я основатель и генеральный директор LooUQ, компании, занимающейся технологиями Интернета вещей, расположенной в Мичигане. Нам часто приходится изобретать что-то новое для тестирования нашей продукции; когда мы создаем тестовый стенд, который, как нам кажется, не подходит...
Если вы какое-то время работаете с системами связи, вы поймете, что взгляд со стороны действительно поможет в отладке. Именно об этом и рассказывает этот проект: превращение Arduino в анализатор пакетов LoRa-сети. С помощью этого устройства вы сможете отслеживать трафик между двумя или более узлами LoRa-сети, что поможет вам устранять неполадки в разрабатываемых вами приложениях, взаимодействующих по сети LoRa.
Например: при разработке нашего продукта LoRa Gateway мы хотели упростить изучение влияния различных типов изменений, направленных на оптимизацию производительности. Мы могли бы использовать традиционные инструменты «программирования», такие как точки останова или отладочные/выводные операторы, но эти методы имеют побочные эффекты и изменяют систему, которую они корректируют. Используя «сетевой зонд» или «анализатор пакетов», как показано здесь, вы можете отслеживать обмен данными между устройствами, не изменяя программное обеспечение, осуществляющее этот обмен. Подход с использованием анализатора пакетов применяется уже много лет, а этот проект — просто недорогой способ дополнить ваш набор инструментов, используя компоненты, которые у вас, возможно, уже есть.
Для тестирования системы я использую Raspberry PI 3 с программным обеспечением шлюза и Adafruit Feather M0 с радиомодулем LoRa RFM95 (900 МГц для Северной Америки) в качестве конечного сенсорного устройства. По мере внесения изменений в программное обеспечение шлюза или устройства, анализатор пакетов LoRa позволяет мне отслеживать время (с помощью функции millis()) и содержимое пакетов LoRa, передаваемых по сети.
В качестве основы для своего анализатора пакетов я использую плату Adafruit Feather M0 с радиомодулем RFM95 LoRa. Я выбрал это устройство для проекта, потому что все необходимое находится на одной печатной плате. Однако этот проект можно собрать и с другими платами разработки Arduino/Arduino-подобными платами. В файле INO мы включили настройки GPIO для других плат (спасибо Adafruit); это включает Feather M0 со встроенным радиомодулем LoRa, Feather 32u4 со встроенным радиомодулем LoRa, Arduino с платой расширения Adafruit или Feather 32u4, Feather M0 или Teensy 3.x с использованием LoRa Feather Wing.
При покупке нового устройства LoRa убедитесь, что вы выбрали правильный частотный диапазон; выберите частоту, подходящую для вашего географического региона и соответствующую частоте ваших существующих устройств, которые вы хотите контролировать.
Для сборки этого проекта вам понадобятся два фрагмента кода из интернета, оба являются открытыми и бесплатными.
Компания AirSpayce разработала библиотеку пакетной радиосвязи RadioHead для встроенных микропроцессоров , которая поддерживает радиомодуль RF95 (от HopeRF). Это отличная библиотека, поддерживающая платы типа Arduino, упомянутые в шаге 1. Она является открытым исходным кодом и распространяется под лицензией GPL версии 2. Скорее всего, вы уже используете библиотеку Radio Head в своем проекте, но если у вас ее еще нет, загрузите библиотеку с веб-сайта Radio Head.
После загрузки поместите все содержимое библиотеки Radio Head (RH) (zip-архив) в папку, расположенную ниже папки библиотек вашей среды разработки Arduino IDE.
Вы можете скачать скетч сниффера с сайта LooUQ на GitHub. Ссылка на репозиторий:
https://github.com/LooUQ/Arduino-LoRa-Sniffer
После загрузки и копирования в папку эскиза вам потребуется проверить и/или обновить некоторые настройки эскиза в соответствии со своими потребностями (примерно в строке 18).
/* Здесь укажите желаемый формат вывода */
OutputMode mode = delimited;
#define DELIMETER_CHAR '~'
/* конец определения формата вывода */
// Измените на 434.0 или другую частоту, она должна совпадать с частотой приемника!
#define RF95_FREQ 915.0
Создайте свою сеть...
Запустите скетч анализатора трафика и приступайте к сбору данных.
Для сохранения на диск можно использовать любое терминальное приложение, кроме Arduino IDE Serial Monitor. К сожалению, Arduino IDE Serial Monitor в настоящее время не поддерживает сохранение потока данных с последовательного порта. Внутри компании мы используем и рекомендуем Tera Term; Tera Term обладает множеством функций, включая автоматическое определение последовательного порта и запись на диск.
Ограниченный вид (выше)
Подробный обзор (ниже)
Если вы используете формат с разделителями, вы можете просмотреть трассировку сети в автономном режиме с помощью Microsoft Excel, Apache OpenOffice или Google Sheets.
Надеюсь, это поможет кому-нибудь быстрее отладить проблему.
Грег @ LooUQ