Arduino с RN4870/1

RN4870/1 — это небольшой BLE-модуль от Microchip, шириной всего 12 мм. В отличие от распространённых модулей для любителей, таких как HM-10, AT-09 и BT05, RN4870/1 предлагает расширенные возможности, позволяющие создавать пользовательские сервисы и характеристики, обеспечивая настоящую функциональность BLE. Несмотря на доступность, он остаётся недостаточно используемым в сообществе любителей электроники.

Модуль RN4870

Характеристики RN4870/1

  • Полностью квалифицированный модуль Bluetooth 5.0 Low Energy

  • Сертифицирован FCC, IC, CE, KCC, NCC и SRRC

  • Встроенный стек Bluetooth 5.0 Low Energy

  • Интерфейс ASCII-команд через UART

  • Скриптовый движок для автономной работы

  • Сервис Beacon Private для маячковых сервисов

  • UART Transparent Service для последовательных данных

  • Удалённая конфигурация по воздуху (OTA)

Модуль использует ASCII-команды вместо AT-стиля и включает встроенный язык сценариев, позволяющий автономную работу без отдельного микроконтроллера в некоторых приложениях.

Спецификация RN4870

Полные возможности BLE 5.0

  • Безопасное шифрование AES128

  • GAP, GATT, SM, L2CAP и интегрированные публичные профили

  • Пользователь может создать до пяти публичных и четырёх частных сервисов

  • Программно настраиваемая роль: периферийное или центральное устройство, клиент или сервер

  • Аутентификация через клавиатурный ввод/вывод

RN4870/1 доступен в различных конфигурациях: с экранированием или без, с различными вариантами антенн и разными уровнями доступности выводов.

Начало работы

Создание платы расширения

Маленький SMD-формат RN4870/1 представляет сложности для любителей. Базовая плата расширения может быть изготовлена при аккуратной пайке. Автор установил свой модуль вверх ногами, чтобы сохранить доступ к контактам для будущих модификаций.

Плата расширения RN4870 — вид 1

Плата расширения RN4870 — вид 2

Перемычка, соединяющая пин 18/P2_0 с GND, включает режим программирования при запуске для обновления прошивки.

Альтернативные варианты плат расширения:

  • MikroElektronika RN4870/1 Click board — готовое решение

  • Разработки Jon Raymond — платы от сообщества

  • Gerber-файлы David Ashmore — доступны для скачивания с 2-пиновым I2C-интерфейсом, 2-пиновым I/O-интерфейсом и 8-пиновым SIP-интерфейсом

Выводы и базовая схема

Основные выводы:

  • Pin 3: GND

  • Pin 4: VBAT (вход 3.3 В)

  • Pin 23: UART_TX

  • Pin 22: UART_RX

  • Pin 30: Светодиодный индикатор (рекомендуется)

Предупреждение

Модуль работает на 3.3 В. Никогда не подавайте на него питание 5 В.

Распиновка RN4870

Базовая схема подключения

Тестирование начальной функциональности

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

  1. Подайте питание 3.3 В и GND на модуль

  2. Используйте приложение BLE-сканер (например, BLE Scanner от Bluepixel Technologies) на Android

  3. Найдите маячок RN4870 в результатах сканирования

  4. Подключитесь к устройству

  5. Прочитайте имя устройства в характеристике Generic Access (0x1800)

При подключении светодиод меняет режим на два быстрых мигания в секунду.

Экраны BLE Scanner

Общение с RN4870/1

Настройка последовательной связи

Необходим USB-UART адаптер на 3.3 В. Модуль использует:

  • Скорость по умолчанию: 115200 бод

  • Все команды требуют символа возврата каретки (CR) (\r)

  • Два режима работы: режим данных (по умолчанию) и режим команд

USB-UART адаптер

Подключение USB-адаптера к RN4870

USB-адаптер — вид 2

Вход в режим команд

RN4870/1 входит в режим команд с помощью команды $$$. Важно, что эта команда работает только без символов конца строки. После входа модуль отвечает CMD>.

Для возврата в режим данных используйте ---\r (три символа тире плюс CR).

Вход в режим команд

Ответ CMD>

Базовые команды

Команда «D» — Информация об устройстве

Возвращает:

  • MAC-адрес устройства

  • Случайный адрес (если применимо)

  • Имя устройства

  • MAC-адрес подключённого устройства

  • Метод аутентификации

  • Функции устройства

  • Серверные сервисы

  • Фиксированный PIN-код (если настроен)

Вывод команды D

Информация об устройстве

Подключение модулей

Команда «V» — Версия прошивки

Возвращает текущую версию прошивки (пример показывает v1.18.3).

Версия прошивки

Команда «GNR» — Получить имя подключённого устройства

Требует активного соединения. Возвращает имя текущего подключённого BLE-устройства.

При отключении модуль выводит сообщение %DISCONNECT%.

Подключение устройства

Информация о подключении

Отключение устройства

Первая связь

Предварительные требования

  • Прошивка 1.30 или новее (поставляется с сервисами и характеристиками по умолчанию)

  • Arduino IDE с правильно выбранным COM-портом

  • Приложение BLE Scanner на Android-устройстве

Процесс подключения

  1. Откройте монитор последовательного порта в Arduino IDE

  2. Запустите приложение BLE Scanner и начните сканирование

  3. Выберите RN4870 из результатов сканирования

  4. Нажмите CONNECT

  5. Выберите «Custom Service» после подключения

  6. Наблюдайте сообщение о подключении в мониторе последовательного порта

Первое подключение — сканирование

Первое подключение — установка соединения

Обмен данными

Приём данных:

  • Пользовательская характеристика: 49535343-8841-43F4-A8D4-ECBE34729BB3

  • Нажмите кнопку записи, введите текст (например, «hello»), нажмите OK

  • Модуль получает данные и отображает их в мониторе последовательного порта

Характеристика записи

Приём данных в мониторе

Данные в мониторе

Отправка данных:

  • Характеристика приёма: 49535343-1E4D-4BD9-BA61-23C647249616

  • Включите уведомления через кнопку приложения

  • Введите данные в мониторе последовательного порта (например, «hello to you»)

  • Данные появляются в значении характеристики

Отправка данных

Уведомления

Иконка уведомлений

Полученные данные в приложении

Notify vs. Indicate

Существуют два метода уведомления с различными характеристиками:

Notify (Уведомление):

  • Не требуется подтверждение

  • Более быстрая передача

  • Менее надёжно

  • Позволяет непрерывный поток данных

  • «Вот данные, берите пока можете»

Indicate (Указание):

  • Требуется подтверждение после каждой передачи

  • Медленнее, но надёжнее

  • Модуль ждёт подтверждения перед отправкой следующего пакета

  • «Вот данные, вы их получили?»

Соединение двух модулей RN4870

RN4870/1 включает встроенный прозрачный UART-слой для простой связи между модулями. Эта функция повторяет функциональность HC-10, хотя эти модули предлагают более экономичную альтернативу, если нужна только последовательная передача.

Настройка подключения (прошивка 1.30)

Настройка модуля:

  1. Войдите в режим команд на основном модуле: $$$ (без EOL)

  2. Включите UART transparent service: SS,C0

  3. Начните сканирование: F

  4. Запишите MAC-адрес целевого модуля из результатов сканирования

  5. Подключитесь: C,0,[MAC_ADDRESS] (0=публичный адрес, 1=частный адрес)

Подключение модулей — шаг 1

Подключение модулей — шаг 2

Подключение модулей — шаг 3

Подключение модулей — сканирование

Установление соединения:

Оба модуля получают сообщения о подключении на последовательных терминалах. После подключения модули могут обмениваться данными в обоих направлениях.

Подключение установлено

Обмен данными между модулями

Двунаправленная связь

Пример

Для подключения к модулю с MAC-адресом D88039F914F5:

C,0,D88039F914F5

Успешное подключение приводит к подтверждению на обоих устройствах, обеспечивая прозрачную последовательную связь.

Обновление прошивки

Требования

  • Модуль RN4870/1

  • USB-UART адаптер (3.3 В)

  • Программа isUpdate.exe от Microchip

  • Файлы прошивки (4 файла)

  • Номер COM-порта

Вход в режим программирования

Пин P2_0 (нижний центральный пин) должен быть подтянут к земле во время загрузки для входа в режим программирования.

Расположение пина P2_0

Способы на плате расширения:

  • Перемычка, соединяющая P2_0 с GND

  • Проводное соединение P2_0 с GND (менее надёжно, несёт риски)

Подключение P2_0 — способ 1

Подключение P2_0 — способ 2

Процесс обновления прошивки

  1. Скачайте isUpdate.exe и файлы прошивки со страницы документации Microchip RN4870

  2. Закройте все открытые приложения монитора последовательного порта

  3. Отключите питание RN4870

  4. Подключите P2_0 к GND

  5. Подайте питание (светодиод может не загореться, несмотря на документацию)

  6. Откройте isUpdate.exe со следующими настройками:

    • COM-порт (например, COM 7)

    • Скорость: 115200

    • Тип памяти: Flash/Embedded Flash

    • Адрес: 0000

  7. Нажмите «Connect»

  8. При успехе появится сообщение «Port connect» и активируются кнопки

  9. Выберите все 4 файла прошивки

  10. Нажмите «Update»

  11. Дождитесь сообщения «End of Write Memory»

Настройки isUpdate

Интерфейс isUpdate

Выбор файлов прошивки

Процесс обновления

Запись прошивки

Завершение обновления

Проверка после обновления

  1. Закройте isUpdate или нажмите Disconnect

  2. Отключите питание RN4870

  3. Удалите провод программирования

  4. Перезапустите модуль (светодиод должен загореться)

  5. Откройте монитор последовательного порта

  6. Войдите в режим команд: $$$ (без EOL)

  7. Проверьте прошивку: V (с CR EOL)

Проверка версии прошивки

Версия прошивки подтверждена

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

Дополнительные ресурсы

  • Обзор продукта Microchip RN4870: официальная страница с даташитами, руководствами и прошивкой

  • Технические детали: сайт Microchip Developer с полной документацией

  • Форум Microchip: поддержка сообщества по вопросам RN4870/1

  • Даташит: полные технические спецификации и конфигурации выводов

Примечание

Оригинальная статья: Arduino with RN4870/1 (Martyn Currey)