Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Интернет вещей

Освоение модулей Bluetooth RN487x от Microchip для низкопотребляющих периферий

Узнайте, как конфигурировать семейство модулей Bluetooth RN487x от Microchip для ваших низкопотребляющих периферийных проектов.

Если вы строите компактное, энергоэффективное устройство, Bluetooth почти всегда является выбором связи номер один. За годы стандарт зрел, и сегодня широкий спектр готовых модулей предоставляет полную system-on-chip (SoC), удовлетворяющую потребности многих периферий. Популярный пример — Nordic nRF52840, объединяющий 32-битный процессор, мультипротокольную Bluetooth-радио и полный комплект I/O интерфейсов вроде GPIO, PWM, USB, SPI и I²S.

Пока мощные, эти SoC могут быть устрашающими: кривая обучения и время разработки, необходимые для интеграции встроенного ПО, значительны. Для многих распространенных сценариев — удаленного 감сирования или управления с лишь горстью аналоговых или цифровых каналов — более простое, сфокусированное решение часто предпочтительнее.

Встречайте семейство RN487x от Microchip. Два модуля в этом семействе — RN4870 и RN4871 — предлагают множественные одновременные двунаправленные цифровые и аналоговые каналы, сохраняя дизайн-футпринт и усилие по прошивке минимальными. Каждый модуль хранит компактную конфигурацию в своей невиолатильной RAM, позволяя вам адаптировать функциональность периферии к вашим точным требованиям. Важно, модули остаются полностью совместимыми со стандартом Bluetooth Low Energy (BLE), обеспечивая бесшовное парирование со современными смартфонами и другими BLE-клиентами.

В этой трехчастной серии мы пройдемся через создание полностью функционального Bluetooth-включенного периферийного устройства для четырех типичных задач: цифровой сенсор, цифровое управление, аналоговый сенсор и аналоговое управление. Каждый пример включает референс-схему, точные шаги конфигурации RN487x и простой Python-скрипт, демонстрирующий, как взаимодействовать с периферией с Linux-хоста. Скрипты тщательно документированы, так что вы можете легко встраивать периферию как подсистемы в более крупные дизайны.

Обзор дизайна

Ниже графическая иллюстрация примера «аналоговый сенсор», выделяющая ключевые интерфейсы красным.

 

Освоение модулей Bluetooth RN487x от Microchip для низкопотребляющих периферий

Представление Linux-системы, коммуницирующей с периферией

 

Мы построим три ключевых компонента для этого примера:

Выбор компонентов

Семейство RN487x предлагает две вариации: RN4870 и RN4871. Они отличаются в основном количеством пинов и доступными типами I/O. Ниже реорганизованная таблица pin-бюджета, чтобы помочь решить, какой чип лучше подходит для вашего проекта.

Существует три категории I/O пинов на модулях:

Тип Описание
ADC Аналоговый вход: конвертирует напряжение в числовое значение.
PWM Аналоговый выход: генерирует прямоугольную волну, частота и коэффициент заполнения которой заданы двумя числами.
DIO Цифровой вход или выход: высокий или низкий уровень представляет логику 1 или 0.

 

RN4870

Освоение модулей Bluetooth RN487x от Microchip для низкопотребляющих периферий

Изображение из даташита RN487x

 

Pin Name/Capability P1_0 P1_1 P1_2 P1_3 P2_2 P2_3 P2_4 P2_5
ADC x x x x
PWM x x
DIO x x x x x

 

RN4871

Освоение модулей Bluetooth RN487x от Microchip для низкопотребляющих периферий

Изображение из даташита RN487x

 

Pin Name/Capability P1_2 P1_3
ADC x
PWM
DIO x x

 

Эти таблицы проясняют: если вашему дизайну нужен только один аналоговый вход и нет PWM выходов, RN4871 — самый легкий выбор. Для проектов, требующих множественные сигналы или PWM, RN4870 — подходящий выбор. В примере аналогового сенсора мы используем RN4871 и подключаем сенсор к пину P1_2.

GATT (Generic Attribute) профиль BLE протокольного стека

Перед написанием хост-приложения важно понять GATT API, которое будет медиацией коммуникации между хостом и периферией.

Все BLE-устройства экспонируют GATT базу данных, которую периферия (сервер) заполняет. Хост (клиент) использует GATT вызовы для чтения или записи значений, идентифицируемых дескрипторами или именами. Типичные Python GATT операции выглядят так:

gatt_rq.connect() # Запись значения в дескриптор характеристики
gatt_rq.write_by_handle(vh_light, str(bytearray([8])))

Первый вызов устанавливает соединение; второй записывает данные, которые немедленно отражаются на выходах периферии. GATT API поддерживается iOS, Android, Windows и Linux. Наши примеры используют Python на Linux для широкой совместимости.

Конфигурация модуля

Для моста физического сигнала к GATT базе данных вы должны запрограммировать NVRAM RN487x двумя ключевыми конфигурационными блоками:

RN487x использует легкий командный язык для конфигурации. Обратитесь к приложению для деталей установки консольного соединения и выдачи конфигурационных команд. После программирования NVRAM модуля может выглядеть так:

 

Освоение модулей Bluetooth RN487x от Microchip для низкопотребляющих периферий

 

Все конфигурационные значения находятся в двух-уровневой иерархии сервисов и характеристик — полезно при масштабировании к многосенсорным или многоконтрольным дизайнам.


 

Это завершает часть первую нашей трехчастной серии туториалов RN487x. Части 2 и 3 покроют реализации цифрового входа, цифрового управления, аналогового сенсора и аналогового управления. Часть 4 обсудит продвинутые темы, применимые ко всем примерам.

Ниже приложение, описывающее, как конфигурировать модули перед погружением в детальные проекты.

Использование консольного соединения для конфигурации RN487x

Подайте питание на модуль и установите последовательную связь с рабочей станцией. Каждый демо-циркуит включает 3-пиновый «prog» джампер, экспонирующий RX, TX и GND. Если нужна помощь, отличное руководство доступно здесь.

Запустите терминальный эмулятор. Утилита miniterm (в комплекте со многими Python-дистрибутивами) — хороший выбор. В оболочке запустите так:

python -m serial.tools.miniterm --eol LF /dev/ttyUSB0 115200

Дефолтный бодрейт 115200 подходит для RN487x.

Переключитесь из DATA в COMMAND режим, введя три знака доллара ("$$$") — вы не увидите символов, но промпт изменится на:

CMD>

Попробуйте нажать d затем Enter; модуль отобразит свой статус:

CMD> BTA=D88039F80080 Name=RN_BLE Connected=no Authen=2 Features=0000 Services=00 CMD>

Включите эхо, если хотите видеть нажатую клавишу: нажмите + и Enter:

CMD> ECHO ON CMD>

Создание нового GATT сервиса так же просто, как выдача одной команды PS, например:

CMD> PS,59c88760536411e7b114b2f933d5fe66 AOK

Проектные конфигурации также требуют многострочных скриптов. Начните скрипт с WW, введите каждую строку и завершите Esc для коммита:

CMD> ww
@CONN |O,08,72
AOK
CMD>

Общая инициализация модуля

При повторном использовании модуля RN487x между проектами предыдущая конфигурация может мешать новым использованиям. Выполните следующие шаги очистки перед каждым примером:

Выполните последовательность команд ниже:

CMD> WC AOK
CMD> SR,0040 AOK
CMD> PZ AOK
CMD> SW,0A,00 AOK
CMD> R,1 Rebooting

Настройка Linux для запуска примеров Python-скриптов

Аппаратное обеспечение

Убедитесь, что ваша хост-система имеет BLE-железо (Bluetooth 4.0 или новее). Если нужен USB-адаптер, рекомендуем основанный на Qualcomm CSR8510, доступный здесь.

 

Программное обеспечение

Примерные скрипты тестировались на Debian 10 и должны работать на других Debian-базированных дистрибутивах вроде Ubuntu. Два Python-пакета требуются, которые не установлены по дефолту:

Установка gattlib строит ELF-библиотеку, так что вам понадобятся инструменты сборки и библиотеки. Хелпер-скрипт, устанавливающий все зависимости, доступен здесь. После скачивания сделайте скрипт исполняемым и запустите его.

Ссылки

Оставайтесь в курсе следующих частей этой серии, где мы построим полные примеры цифрового входа и цифрового управления.

Перейдите к проектам 1 и 2: построение цифрового входа и цифрового управления.

Интернет вещей

  1. Синергия Cellular IoT и Bluetooth LE: подход к связности нового поколения
  2. Bluetooth Mesh: выбор между модулем и дискретным чипом
  3. Contrinex 2020: облачные сенсоры и Bluetooth light curtains для безопасности
  4. ADLINK развертывает AI от края до облака с платформой NVIDIA EGX: Ускоренные решения краевых вычислений
  5. Чтение аналоговых датчиков на Raspberry Pi без встроенного АЦП
  6. Чтение аналоговых датчиков с Raspberry Pi и Zabbix: пошаговое руководство
  7. Использование данных в Интернете надежности: стратегии эффективного управления
  8. От Edge к Cloud: мастерство IoT data pipelines
  9. Цифровизация в пищевой промышленности: повышение безопасности, прослеживаемости и эффективности
  10. Инсайты по Edge Computing и стратегии ИоТ с IoT World 2019