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

Датчики и элементы управления с модулем Bluetooth RN487x от Microchip

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

Если вы разрабатываете небольшое периферийное устройство с низким энергопотреблением, велика вероятность того, что вы рассматриваете Bluetooth как свой уровень связи.

По мере развития стандарта количество устройств, подключенных к Bluetooth, растет. Были представлены аппаратные модули, которые обеспечивают полную SoC (систему на кристалле) практически для любой периферийной конструкции. Хороший тому пример - Nordic nrf52840. Ядро системы - 32-битный процессор и многопротокольный радиомодуль Bluetooth. Это ядро ​​окружено всеми интерфейсами, которые могут вам понадобиться; GPIO, ШИМ, USB, SPI, I 2 S и многие другие.

Обратной стороной этой мощной SoC и других систем является сложность. Для создания и интеграции необходимого встроенного программного обеспечения для этих SoC требуется значительная кривая обучения и время разработки.

Однако для некоторых из наиболее распространенных типов периферийных устройств есть более простые альтернативы. Если ваше периферийное устройство - это в первую очередь удаленный датчик или пульт дистанционного управления с ограниченным количеством каналов (аналоговых и цифровых), вы, вероятно, сможете достичь своих целей с помощью модуля RN487x производства Microchip.

Это семейство из двух модулей Bluetooth обеспечивает несколько одновременных двунаправленных цифровых и аналоговых каналов. Модуль адаптирован к конкретным проектам, просто сохраняя небольшую часть конфигурации в модуле NVRAM. Несмотря на простоту, модуль по-прежнему соответствует стандарту BLE (Bluetooth с низким энергопотреблением), поэтому он совместим с новейшими клиентами Bluetooth, такими как современные смартфоны.

В этой серии мы продемонстрируем использование модуля RN487x. Мы создадим функциональное периферийное устройство с подключением по Bluetooth для каждой из четырех задач; цифровой датчик, цифровое управление, аналоговый датчик и аналоговое управление. Каждый пример включает номинальную схему и конфигурацию, необходимую для RN487x. Также предоставляется простой сценарий приложения для проверки периферийных устройств. Пункты интерфейса в сценарии приложения хорошо документированы; максимальное использование этих периферийных устройств в качестве подсистем в более крупных проектах.

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

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

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

Мы создадим три системных элемента. Для периферийного устройства мы должны создать оборудование, которое обеспечивает сигнал нашего датчика; преобразователь в этом примере. Он генерирует переменное аналоговое напряжение. Для пользователя мы создадим приложение для представления данных; скрипт Python в этом примере.

Сценарий должен использовать GATT API для передачи информации на периферийное устройство и обратно. Нам также потребуется создать некоторую конфигурацию в модуле RN487x. Эта конфигурация будет управлять потоком данных между приложением и оборудованием.

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

В семействе RN487x есть два модуля; RN4870 и RN4871. Они различаются количеством и типом выводов, предназначенных для ввода / вывода. Вы можете найти эти ограничения в таблице данных и руководстве пользователя, но они несколько разбросаны. Ниже представлена ​​реорганизация бюджета выводов для двух микросхем. Такое расположение должно облегчить определение того, какой чип вам нужен для периферийного устройства.

На модулях c доступны три типа контактов ввода / вывода:

Тип Описание
АЦП Аналоговый вход:уровень входного сигнала преобразуется в числовой диапазон.
ШИМ Аналоговый вывод:пара чисел преобразуется в прямоугольную форму. Числа управляют частотой и скважностью прямоугольной волны.
DIO Цифровой вход или выход:для цифрового входа высокий или низкий уровень сигнала представляет 1 или 0 соответственно. И наоборот для цифрового выхода.

И вот бюджеты контактов для двух модулей:

RN4870

Изображение из таблицы данных RN487x

Название / возможности пина P1_0 P1_1 P1_2 P1_3 P2_2 P2_3 P2_4 P2_5
АЦП x x x x
ШИМ x x
DIO x x x x x

RN4871

Изображение из таблицы данных RN487x

Название / возможности пина P1_2 P1_3
АЦП x
ШИМ
DIO x x

Эти таблицы должны прояснить, что если вам не нужен ШИМ, и вам нужно управлять только одним или двумя сигналами, используйте 4871. Это сэкономит ресурсы. Если вам нужен ШИМ или вы хотите управлять более чем двумя сигналами, тогда вам понадобится 4870. Для нашего аналогового датчика у нас есть только один аналоговый вход, поэтому 4871 будет достаточно. Мы бы подключили сигнал к выводу P1_2 модуля.

Уровень профиля GATT (общий атрибут) стека протоколов BLE

Мы почти готовы реализовать несколько реальных примеров. Но для того, чтобы написать пользовательское приложение, нам нужно более точное понимание API, который мы будем использовать, когда будем разговаривать с периферийным устройством.

Все устройства Bluetooth с низким энергопотреблением используют профиль общих атрибутов (GATT) для обмена структурированными данными. В этой модели периферийное устройство организовано как сервер с простой базой данных. База данных, в свою очередь, содержит ряд переменных, которые представляют полезные данные. Такие приложения, как наш скрипт Python, организованы как клиенты, которые используют GATT API для выполнения запросов к базе данных на основе имени. API можно использовать для чтения значений из базы данных и записи значений в базу данных.

В качестве предварительного просмотра представлены два полезных вызова методов API GATT в Python:

 gatt_rq.connect () gatt_rq.write_by_handle (vh_light, str (bytearray ([8])) 

Первый используется для подключения к периферийному устройству. Второй записывает некоторые значения в базу данных; эти значения сразу же выражаются как цифровые выходы на периферии. Первый аргумент метода write - это дескриптор, специфичный для цифрового выхода или выходов, которыми мы хотим управлять. Осталось всего несколько строк, необходимых для функционально полного примера.

Этот API предоставляется как часть служб Bluetooth в iOS, Android, Windows и Linux. Примеры в этой статье написаны на Python и будут работать во многих распространенных дистрибутивах Linux.

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

Параметр vh_handle в приведенном выше методе сценария приводит нас к последнему элементу в этом шаблоне проектирования. Параметр является ссылкой в ​​программном обеспечении для конкретного сигнала физического уровня на периферии. Но как завершается этот путь к данным? В NVRAM RN487x есть две конфигурации, которые это делают; определение характеристик и привязка булавками.

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

После того, как мы введем эти команды, энергонезависимая конфигурация в RN487x будет выглядеть примерно так:

Обратите внимание, что все значения данных существуют в двухуровневой иерархии «услуг» и «характеристик». Эта организация больше, чем нам нужно, но она становится полезной для сложных систем, где несколько датчиков и элементов управления будут существовать в рамках логически отдельных служб.

<час />

На этом завершается первая часть нашей серии из трех частей, посвященной модулю RN487x. В частях 2 и 3 будет использоваться один и тот же шаблон проектирования для создания цифрового входа, цифрового элемента управления, аналогового датчика и аналогового элемента управления.

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

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

Использование консольного подключения для настройки RN487x

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

Запустите эмулятор терминала на своей рабочей станции. Одним из наиболее подходящих и широко доступных эмуляторов является утилита miniterm, включенная в большинство сред Python. В оболочке рабочей станции это можно запустить так:

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

В этом примере показано имя порта (/ dev / ttyUSB0), подходящее для системы Linux. Форма имени порта будет отличаться для других операционных систем. Скорость передачи по умолчанию для модуля составляет 115200 бод, и нет особых причин для ее изменения.

Модуль RN487x по умолчанию находится в режиме DATA. Нам нужен КОМАНДНЫЙ режим. Этот режим активируется путем ввода трех знаков доллара (‘$$$’) в приложении эмулятора терминала. Вы не увидите символы в окне терминала, но результатом должна быть командная строка, возвращаемая RN4871:

 CMD> 

Попробуйте нажать клавишу «d», а затем клавишу «Enter». В результате вы должны увидеть что-то вроде этого:

 CMD> BTA =D88039F80080 Имя =RN_BLE Подключено =нет Authen =2 Возможности =0000 Услуги =00 CMD> 

Это минимальное описание состояния модуля. Обратите внимание, что интерпретатор команд не отображает набранный вами символ («d»). Вы должны включить «эхо», чтобы исправить это. Сделайте это, нажав клавишу «+», а затем клавишу «Enter». Устройство должно ответить так:

 CMD> ECHO ON CMD> 

Теперь вы подошли к моменту, когда вы можете выполнить различные задачи настройки, описанные в остальной части этого проекта. Например, создание службы выполняется простым вводом полной команды «PS» в одной строке с последующим нажатием клавиши «Enter». Пример:

 CMD> PS, 59c88760536411e7b114b2f933d5fe66 АОК 

Каждая из конфигураций проекта также требует, чтобы многострочный сценарий был зафиксирован в модуле NVRAM. Этот тип многострочной команды требует более подробного объяснения. Вы начинаете ввод скрипта с команды «WW», за которой следует «ввод». Затем введите каждую строку сценария. Каждая строка сценария, включая последнюю строку, также заканчивается клавишей «Enter».

Наконец, вы фиксируете скрипт, нажимая клавишу «esc». Пример:

 CMD> WW @CONN | O, 08,72 ХОРОШО CMD> 

Стандартная инициализация модуля

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

Перед каждым примером в этом проекте необходимо выполнить следующие шаги:

Используйте предыдущий раздел приложения для доступа к командной оболочке модуля. Затем используйте следующую последовательность команд для выполнения необходимой инициализации:

 CMD> WC ХОРОШО CMD> SR, 0040 ХОРОШО CMD> PZ ХОРОШО CMD> SW, 0A, 00 ХОРОШО CMD> R, 1 Перезагрузка 

Для запуска примеров сценариев Python требуется установка Linux

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

Системе, запускающей эти сценарии, конечно же, потребуется оборудование, поддерживающее Bluetooth Low Energy (BLE). BLE был представлен в версии 4, поэтому, если ваше оборудование Bluetooth указывает версию ниже этой, он, вероятно, не будет работать для этих примеров.

Если вы хотите приобрести USB-адаптер для рабочей станции, чтобы попробовать эти примеры, я предлагаю любой адаптер, в котором используется Qualcomm CSR8510. Один экземпляр доступен для покупки здесь.

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

Эта установка была проверена для Debian 10. Она должна быть применима для дистрибутивов на основе Debian, таких как Ubuntu. В этих примерах есть два компонента, к которым осуществляется прямой доступ, которые не установлены по умолчанию в Debian 10;

Установка «pip» для «gattlib» создает библиотеку ELF. Для этого процесса также требуются некоторые инструменты и библиотеки.

Собирая все это вместе, у системного диспетчера пакетов должен быть запрошен список пакетов, за которым следует запрос одного модуля к «pip». Здесь представлен сценарий для выполнения этих действий. Если вы решите запустить скрипт, вам нужно будет дать ему разрешение на выполнение после загрузки.

Ссылки

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

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


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

  1. Синергия сотового Интернета вещей и Bluetooth LE
  2. Проектирование с помощью сети Bluetooth:чип или модуль?
  3. Contrinex:интеллектуальные датчики с поддержкой облачных вычислений и световые завесы безопасности с интерфейсо…
  4. ADLINK:развертывание ИИ из периферии в облако с помощью решений Edge AI и платформы NVIDIA EGX
  5. Аналоговые датчики без аналоговых входов на Raspberry Pi
  6. Считывание аналоговых датчиков с помощью Raspberry Pi и Zabbix Supervisor
  7. Что мне делать с данными ?!
  8. Использование данных Интернета вещей от края до облака и обратно
  9. Цифровизация и промышленность продуктов питания и напитков
  10. Edge и IoT:выводы из IoT World 2019