Аналоги реле Phoenix Contact, Finder, Omron, ABB, Schneider
РадиоЛоцман - Все об электронике

Изучаем Bluetooth-модули RN487x для применения в своих периферийных проектах с низким энергопотреблением. Часть 1 - Общие сведения

Microchip RN4870 RN4871

Aaron Hanson

allaboutcircuits.com

Изучаем Bluetooth Low Energy модули семейства RN487x и как их конфигурировать для своих беспроводных периферийных устройств

Технология правильного хранения аккумуляторов и батареек по рекомендациям FANSO и EVE Energy

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

По мере развития стандарта, устройства, подключаемые по Bluetooth, получили широкое распространение. Многими производителями выпускаются аппаратные модули, которые представляют собой завершенные системамы-на-красталле (СнК) для любой периферийной конструкции или устройства. СнК NRF52840 от компании Nordic хороший тому пример. Системное ядро этой СнК, состоящее из 32-разрядного процессора ARM Cortex-M4F и мультипротокольной подсистемы Bluetooth, окружено различными интерфейсами, которые могут понадобиться в вашем устройстве: порты ввода/вывода, ШИМ, USB, SPI, I2S и многое другое.

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

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

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

В серии статей мы продемонстрируем примеры использования модуля RN487x. Мы создадим функциональное периферийное устройство с каналом связи по Bluetooth для каждой из четырех задач:

  • цифровой датчик,
  • цифровое исполнительное устройство,
  • аналоговый датчик,
  • аналоговое исполнительное устройство.

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

Обзор проекта

Давайте посмотрим на графическое представление проекта примера аналогового датчика с ключевыми интерфейсами, отмеченных красным цветом (Рисунок 1).

Графическое представление системы Linux, взаимодействующей с периферийным Bluetooth устройством.
Рисунок 1. Графическое представление системы Linux, взаимодействующей с периферийным
Bluetooth устройством.

На Рисунке 1 представлены три системных элемента, которые мы создадим в процессе изучения. Для периферийного устройства мы должны создать аппаратную часть, которая обеспечивает сигнал с датчика – в этом примере преобразователь (Transducer). Он генерирует аналоговый сигнал: меняющееся напряжение. Для пользователя необходимо создать приложение для представления данных: в этом примере скрипт Python.

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

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

Семейство RN487x представлено двумя модулями: RN4870 (Рисунок 2) и RN4871 (Рисунок 3). Они отличаются количеством и типом портов ввода/вывода. Вы можете найти эти отличия и ограничения в соответствующих технических документах [1] и руководствах пользователя [2], но они несколько разбросаны. Ниже приведены сводные таблицы по портам ввода/вывода двух модулей, которые упростят выбор модуля для вашего проекта или периферийного устройства.

В Bluetooth модулях RN487x доступны три типа портов ввода/вывода (Таблица 1). Функционал портов ввода/вывода для каждого из модулей приведены в Таблицах 2 и 3.

Таблица 1. Типы портов ввода/вывода, доступные в Bluetooth модулях RN487x.
 Тип Описание
ADC Аналоговый вход: уровень входного сигнала преобразуется в числовой диапазон (аналого-цифровое
преобразование, АЦП). 
PWM Аналоговый выход: пара числовых значений преобразуется в последовательность импульсов
прямоугольной формы (PWM, ШИМ-сигнал). Числовые значения задают частоту и скважность
импульсов.
DIO Цифровой вход или выход: для цифрового входа высокий или низкий уровни сигнала
интерпретируются как 1 или 0, соответственно. Для цифрового выхода: установка значения 1 или 0
приводит к установке высокого или низкого уровня сигнала на выходе. 
 
Bluetooth модуль Microchip RN4870
Рисунок 2. Bluetooth модуль Microchip RN4870.
   
Таблица 2. Порты ввода/вывода Bluetooth модуля RN4870.
Порт / Функционал 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
 
Bluetooth модуль Microchip RN4871.
Рисунок 3. Bluetooth модуль Microchip RN4871.
   
Таблица 3. Порты ввода/вывода Bluetooth модуля RN4871.
Порт / Функционал P1_2 P1_3
ADC x  
PWM    
DIO x x

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

Уровень профиля GATT стека протокола BLE

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

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

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

gatt_rq.connect()

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

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

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

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

В приведенном выше примере методов скрипта (запросов) параметр vh_handle подводит нас к последнему элементу в этом шаблоне проекта. Этот параметр является ссылкой в программном обеспечении для конкретного сигнала физического уровня на периферийном устройстве. Но как этот путь данных будет завершен? Есть две части конфигурации в энергонезависимой памяти NVRAM модуля RN487x, которые будут выполнять это: определение характеристик (characteristic definition) и резервирование выводов (pin binding).

  • Определение характеристик:
    Команды, которые выделяют пространство для значений в базе данных и дают каждому значению уникальный идентификатор для ссылки клиентским приложениям.
     
  • Резервирование выводов:
    Сценарии (скрипты), которые преобразуют физические сигналы в значения базы данных и наоборот.

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

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

Структура конфигурации в энергонезависимой памяти модуля RN487x.
Рисунок 4. Структура конфигурации в энергонезависимой памяти модуля RN487x.

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

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

Ссылки:

  1. Техническая документация RN487x (англ.)
  2. Руководство пользователя RN487x (англ.)
  3. GATT API в ОС Windows
  4. GATT API в ОС iOS
  5. GATT API в Python

Продолжение

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Sensors and Controls with the RN487x Bluetooth Module from Microchip. Part 1 - Design Overview

19 предложений от 12 поставщиков
Модуль: Bluetooth Low Energy; GPIO,PWM,UART; SMD; 12x22мм; 1÷13мА
ЧипСити
Россия
RN4870U-V/RM118
Microchip
32 ₽
AiPCBA
Весь мир
RN4870U-V/RM118
Microchip
33 ₽
ChipWorker
Весь мир
RN4870U-V/RM118
Microchip
34 ₽
Utmel
Весь мир
RN4870-I/RM128
Microchip
от 650 ₽
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя