[Из песочницы] Плата BLE400 и разработка под nRF51822
Для разработки под микроконтроллер nRF51822 существует несколько комплектов от Nordic Semiconductor, все они достаточно дороги зато обеспечивают возможность удобной работы без возни с программаторами. При этом у китайских производителей можно обнаружить платы облегчающие отладку контроллеров за смешные деньги. Статья посвящена работе с клоном платы от Waveshare которая продаётся под названием BLE400.
Плата предназначена для использования совместно с модулями NRF51822, представляющие собой распаянный чип с антенной и парой кварцевых резонаторов. Стоимость комплекта из платы и модуля составляет около 20 долларов.
BLE400 содержит на борту USB порт и преобразователь USB-UART на базе чипа CP2102 с выведенными сигналами RX, TX, CTS и RTS. На уровне схемы она частично совместима с PCA10001, отладочной платой от Nordic, пара светодиодов и две кнопки подключены к тем же портам, любителям помигать светодиодом это немного упростит жизнь.
- Посадочное место под модуль NRF51822, ключей нет, вставить неправильно модуль можно, но тогда он закроет батарею и антенна будет наоборот
- Дублирует пины модуля NRF51822, удобно для макетирования
- Выведенный для удобства подключения интерфейс I2C, дублирует соответствующие сигналы с гребёнки SDA — P0.00 SCL — P0.01 SMBA — P0.02 и питание, можно использовать готовые модули от Waveshare
- Интерфейс SPI, выведены сигналы MISO — P0.23 MOSI — P0.24 SCK — P0.25 NSS — P0.30
- Питание, при подключении по USB можно воспользоваться питанием 5 вольт, от батарейки и программатора доступно будет только 3.3. Питание сделано на RT9193 с максимальным током 300mA, сам модуль потребляем максимум 2mA и готов отдать в нагрузку максимум 3 пина по 5 mA или 1 пин с током в 15mA. Итого 250 мА на периферию в запасе есть
- Mini-USB гнездо для подключения питания или связи с ПК. 5 вольт порта напрямую подключено к гребёнке питания
- Упрощенный SWD интерфейс для программирования. Выведено питание 3.3в, SWDIO и SWCLK
- Продублированный UART, он же подключен к CP2102 и доступен для мониторинга на ПК через виртуальный COM порт. RX — P0.05 TX — P0.06 CTS — P0.07 RTS — P0.12
- Батарейка типоразмера CR1225, пригодится для автономного тестирования
- Набор светодиодов, подключены к P0.18 P0.19 P0.20 P0.21 P0.22. Светятся при подаче логической единицы. Здесь же можно посмотреть активность сигналов RX, TX и SPD
- Две кнопки подключенные к портам P0.16 и P0.17. При нажатии даёт логический ноль
- Кнопка сброса. Сбрасывает CP2102 и NRF51822 занулением сигнала SWDIO
- Контролер виртуального COM порта на CP2102, DTR и DSR не распаяны
- Джамперы для отключения интерфейса UART от CP2102
- Джамперы для отключения светодиодов и кнопок
Изначально в модуль прошит код для работы с nRF Toolbox for BLE от Nordic Semiconductor, для проверки его работоспособности этого достаточно. Подключаем плату к ПК, устанавливаем драйвера для CP2102 и подключаемся к плате при помощи терминала. Я воспользовался PuTTY, параметры порта: скорость 38400 дата бит 8, Стоповый бит один, управление потоком программное.
Подключаемся, в терминале вбиваем английский символ Y или y, получаем в ответ команду Start… — контроллер работает.
Теперь он доступен в списке BLE совместимых устройств на телефоне с именем Nordic_UART. Установив приложение для Android можно поиграться с передачей символов через виртуальный Bluetooth терминал и протестировать эмуляцию UART.
Переходим к программированию. Нам всё-таки понадобится программатор, оригинал от Segger будет немножко дорог, но благодаря автолюбителям на рынке достаточно клонов J-link ARM v8, стоят они около 15 долларов и для наших целей их более чем достаточно. Будем считать что драйвера на программатор (например J-Link Software v4.52b +) уже установлены. Подключаемся к плате стандартным JTAG кабелем от программатора или четырьмя проводами, достаточно соединить VTref, GND, SWDIO и SWCLK.
Для проверки подключения запустим JLink.exe и получим информацию о установленном чипе
SEGGER J-Link Commander V4.74b ('?' for help) Compiled Aug 19 2013 23:26:57 DLL version V4.74b, compiled Aug 19 2013 23:26:44 Firmware: J-Link ARM V8 compiled Nov 28 2014 13:44:46 Hardware: V8.00 S/N: 20091135 Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull VTarget = 3.293V Info: Found SWD-DP with ID 0x0BB11477 Info: FPUnit: 4 code (BP) slots and 0 literal slots Info: Found Cortex-M0 r0p0, Little endian. Found 1 JTAG device, Total IRLen = 4: Cortex-M0 identified. JTAG speed: 100 kHz
Нам понадобится следующее ПО
- Keil MDK-ARM v4
- nRF51 SDK
- nRFgo Studio
Для получения Lite версии Keil MDK-ARM необходима регистрация, остальное доступно для скачивания так. nRFgo Studio версии 1.21.2 у меня так и не запустилась под Windows 10, но младшая версия 1.15.1 работает. Последняя версия SDK с поддержкой платы pca10001 это версия 6, скачиваем по ссылке. После установки SDK в папке куда установлена среда Keil появится каталог \ARM\Device\Nordic\nrf51822
содержащий все необходимые файлы. Примеры рассчитаны на использование Keil версии 4, файл проекта имеет расширение uvproj в отличии от Keil 5 где расширение uvprojx. Собственно Keil 4 мы используем чтобы не запутаться в файлах конфигурации и совместимости примеров.
Программировать плату можно не только через консоль J-Link Commander, но и через nRFgo Studio, через неё же мы можем очистить чип или залить SoftDevice для работы с Bluetooth. Делается это из меню nRF51 Programming. В чипе уже залито ядро BLE стека. Очистить его можно через пункт меню Erase all.
Следующая задача — помигать светодиодами, заботливо распаянными на плате. Как уже упоминалось ранее, светодиоды и кнопки совместимы с платой pca10001 от Nordic, значит используем пример оттуда, открываем в папке с Keil4 \ARM\Device\Nordic\nrf51822\Board\pca10001\blinky_example\arm\
файл проекта blinky.
Собираем проект нажав F7 и прошиваем через меню Flash→Download. У меня по умолчанию не прошивалось из-за выбранной по умолчанию скорости заливки JTAG равной 2000 kHz. Исправить можно из меню Option for target → Debug → Setting. После замены на 100 kHz всё успешно заработало. Светодиоды LED0 и LED1 успешно перемигиваются, микроконтроллер работает. Если загрузить всё же не получается можно попробовать прошить HEX из из папки
_build blinky_arm.hex
с использованием nRFgo Studio или из консоли программатора J-Link. Но сначала стоит убедить что в настройках Keil выбран программатор J-Link.Светодиоды это замечательно, но нам всё же нужен Bluetooth, пример для работы лежит в папке \ARM\Device\Nordic\nrf51822\Board\pca10001\s110\ble_app_beacon
. Это реализация iBeacon, для нас он интересен работой с программным BLE стеком от Nordic. Пример рассчитан на версию стека s110, самую простую по возможностям, но для демонстрации работоспособности этого вполне достаточно.
Изначально вместе с SDK идут заголовочные файлы для версии 7.0.0, но у меня эта версия ядра не стартовала. Теоретически работать должна любая версия стека, доступны для скачивания версии v6, v7, v8. С примерами из SDK седьмая и восьмая версия стека у меня не заработали, остановился на 6.2.1.
Скачиваем ядро, распаковываем в удобную для вас папку, например, Cores ARM\Device\Nordic\nrf51822\Cores\6.2.1
. Очищаем уже существующую папку \ARM\Device\Nordic\nrf51822\Include\s110
и копируем в неё заголовочные файлы из папки include распакованного ядра.
SoftDevice необходимо прошить, для этого воспользуемся nRFgo Studio, выбираем из меню Device Manager пункт nRF51 Programming и убеждаемся что программатор не отвалился. В закладке Program SoftDevice выбираем файл с ядром
. Если файл правильного формата внизу будет указанна занимаемая ёмкость, для этой версии SoftDevice равная 80 кб.
Жмём кнопку Program. Карта памяти устройства теперь имеет следующий вид:
Оперативной памяти стало меньше на 8 кб, а первые 80 килобайт постоянной памяти заняло ядро. Меняем Target на цель со стеком s110, выбираем из меню nrf51822_xxaa_s110 (256К)
Для сборки примера с мигающим светодиодом при установленном SoftCore необходимо ввести коррективы в карту памяти, делается это из меню Options for Target — Target. Базовый адрес меняется на CODE_R1_BASE = 0x00014000
, а свободная память стартует с адреса 0×20002000.
Собираем проект и заливаем его в контроллер, если ядро установилось корректно мы получим те же мигающие светодиоды. Пора заливать прошивку имитирующую iBeacon, открываем проект из папки \ARM\Device\Nordic\nrf51822\Board\pca10001\s110\ble_app_beacon
. Меняем карту памяти по аналогии с мигающим светодиодом, собираем и заливаем в устройство.
Если все прошло успешно LED0 будет светиться, это индикатор что пакеты рассылаются. Устанавливаем на устройство Android или iOS приложение умеющее видеть iBeacon, я скачал
Beacon Scanner. UUID устройства совпадает с константой APP_BEACON_UUID в исходном коде, значит это наш маячок.
В принципе этой информации достаточно для быстрого и весьма недорогого старта работы с BLE. В минусах это поддержка устаревшего Keil 4 и нестабильная работа программатора на частотах 100 kHz и выше. Если среда разработки выдает ошибку загрузки уменьшайте скорость доступа до 50 kHz или даже менее. Иногда программатор отваливается и вернуть его к жизни можно только запуском JLink.exe, возможно это связано с тем что он является клоном оригинала.
© Habrahabr.ru
RIVERSONG BP Nordic NRF51822 Сон / / Кровяное давление / Сидячие часы напоминания для телефонов Android
Описания: Умные часы RIVERSONG Shine BP, которые поддерживают Bluetooth 4. 0 с чипом Nordic NRF51822, имеют встроенное отслеживание активности, отфильтрованные уведомления и несколько часовых поясов. Уведомления смарт-браслета могут отображаться на часах одновременно, такие как уведомления о входящем звонке, Wechat, WhatsApp, Facebook, Twitter, Skype, Instagram, Gmail.
Основные особенности:
Идеальный трекер личного здоровья: сон / частота сердечных сокращений / монитор артериального давления / калорий, сидячее напоминание
Чип Nordic NRF51822: отличается низким потреблением, высокой производительностью, гибкостью и быстротой
Синхронизация данных: загрузите приложение с именем «H Band» для сохранения и синхронизации данных для достижения вашей здоровой цели
Поднимите или переверните руки, зажгите экран
Поддержка обновления прошивки
Функции:
Сна монитор
Монитор артериального давления
Монитор сердечного ритма
Сидячий напоминание
Монитор калорий
Язык поддержки: английский, упрощенный китайский
Совместимость с iOS 8. 0 и выше, Android 4.4 и выше
Бренд: РИВЕРСОНГ Версия Bluetooth: Bluetooth 4.0 Тип встроенного чипа: NRF51822 Рейтинг IP: IP65 Оперативная память: 256K ПЗУ: 32KB Водонепроницаемый: Да Тип оповещения: вибрация Вызов Bluetooth: напоминание о телефонной связи, отображение имени вызывающего абонента Группы сигнализации: 1 Трекер здоровья: шагомер,монитор сердечного ритма,сидячее напоминание,монитор сна,кровяное давление Сообщений: Сообщения напоминание Уведомление: Да Другая функция: Блютуз,будильник,календарь,калькулятор,водонепроницаемый Тип уведомления: Facebook,WhatsApp,Twitter,G-mail,Wechat,Skype,Instagram Экран: OLED Разрешение экрана: 64 x 48 Размер экрана: 0,66 дюйма Режим работы: сенсорный экран Емкость аккумулятора: 80 мАч Время зарядки: О 2hours Резервное время: 7 – 10 дней Тип батареи: полимерная батарея Люди: Мужской стол,Женский стол Материал ремешка: ТПУ Материал корпуса: ABS Форма циферблата: раунд Совместимость: Android 4.4 / iOS 8. 0 и выше системы Совместимые ОС: Android, IOS Язык: английский,упрощенный китайский Размер циферблата: 3,49 х 3,49 х 0,95 см Размер упаковки(Д x Ш x В): 9.00 x 9.00 x 6.20 см / 3.54 x 3.54 x 2.44 дюйма Вес упаковки: 0.1070 кг Размер Продукта (Д х Ш х В): 21.00 x 3.49 x 0.95 см / 8.27 x 1.37 x 0.37 дюймов Вес продукта: 0.0310 кг Размер ремешка: 21 x 1.8cm Содержание Пакетов: 1 х смарт-часы, 1 х зарядный кабель, 1 х руководство на английском языке
target-nordic-nrf51822/options.md на мастере · ARMmbed/target-nordic-nrf51822 · GitHub
В этом документе описываются параметры конфигурации yotta, которые можно использовать для настройки
процесс сборки при использовании nordic-nrf51822-gcc
и nordic-nrf51822-armcc
цели. Для получения дополнительной информации о конфигурации Yotta
раздел относится к документации yotta.
Установить целевой размер оперативной памяти
Устройства на базе nRF51 бывают двух видов: 16 КБ (например, mkit и micro:bit)
и 32 КБ (например, nrf51dk). Чтобы получить окончательный образ, процесс сборки должен быть
известно об объеме оперативной памяти, доступной в цели. Если вы используете один из
дочерние мишени nRF51 ( mkit-armcc
, mkit-gcc
, nrf51dk-gcc
, nrf51dk-armcc
, bbc-microbit-gcc
или bbc-microbit-armcc
) вам не нужно
беспокоиться об этом. Однако, если вы создаете цель, которая наследуется от
либо nordic-nrf51822-gcc
, либо nordic-nrf51822-armcc
вы должны выбрать
доступная целевая оперативная память. Если ваша целевая оперативная память составляет 16 КБ, включите следующее
строки JSON внутри раздела конфигурации вашего target.json
:
"чип": { "нрф51822": { «16к»: правда } }
В качестве альтернативы, если цель имеет 32 КБ доступной оперативной памяти, включите следующие строки:
"чип": { "нрф51822": { "32к": правда } }
Использование разных версий SoftDevice
SoftDevice — это предварительно скомпилированный двоичный файл от Nordic Semiconductor, реализует функциональность, используемую некоторыми модулями yotta. Более подробную информацию можно нашел здесь.
Можно использовать нордический-nrf51822-gcc
и нордический-nrf51822-armcc
предназначен для создания приложений с использованием Nordic SoftDevice, отличного от стандартного. К
для достижения этого в приложении просто добавьте файл config.json
в свой
модуль, содержащий следующую структуру JSON:
{ "нордический": { "softdevice": "<Ваше_SoftDevice>" } }
В настоящее время поддерживаются следующие программные устройства:
.- С110
- S130 (по умолчанию)
При сборке yotta прочитает этот файл конфигурации и определит YOTTA_CFG_NORDIC_SOFTDEVICE
. Это определение используется скрипта toolchain.cmake
для добавления дополнительных флагов компиляции (при необходимости)
и выбрать правильный скрипт компоновщика и двоичный файл SoftDevice. Если YOTTA_CFG_NORDIC_SOFTDEVICE
не определен, то приложение будет
созданный с помощью SoftDevice по умолчанию (S130). Наконец, попытка построить с помощью
неподдерживаемая версия SoftDevice приведет к ошибке и процессу сборки
прервется.
Изменение порога предупреждения кучи
При сборке приложения с использованием nordic-nrf51822-gcc
или nordic-nrf51822-armcc
, сводка использования памяти будет напечатана в конце
процесс сборки. Идея заключается в том, чтобы помочь вам понять ваши
использование памяти программой.
Если размер кучи падает ниже некоторого порога (по умолчанию 1024 байта)
затем рядом со сводкой памяти будет напечатано предупреждающее сообщение. Это
можно изменить пороговое значение, просто добавив config.json
файл
внутри модуля приложения, содержащего следующую структуру JSON:
"изображение": { "куча": { "предупреждающий_порог": 1024 } }
Создать образ FOTA
Когда вы запускаете yotta build
, вывод по умолчанию включает файл ELF, ваш
шестнадцатеричный файл приложения и «комбинированный» шестнадцатеричный файл, который включает код вашего приложения
и SoftDevice по вашему выбору. Если вы также хотите включить загрузчик
чтобы включить FOTA, добавьте следующие строки в свой config.json
:
"изображение": { "фота": правда }
После завершения процесса сборки образ с поддержкой FOTA можно найти в build/
.
Nordic nRF51 — Последняя документация PlatformIO
- Реестр:
https://registry.platformio.org/platforms/platformio/nordicnrf51
- Конфигурация:
платформа =
nordicnrf51
Серия Nordic nRF51 — это семейство очень гибких многопротокольных однокристальных (SoC) устройств для беспроводных приложений со сверхнизким энергопотреблением. Устройства серии nRF51 поддерживают ряд стеков протоколов, включая Bluetooth Smart (ранее называвшийся Bluetooth с низким энергопотреблением), ANT и проприетарные протоколы 2,4 ГГц, такие как Gazell.
Для получения более подробной информации посетите сайт поставщика.
Примеры перечислены в репозитории платформы разработки Nordic nRF51:
мигающий зефир
Arduino-мигание
Arduino-светодиод
зефир-бле-эддистоун
внутренние библиотеки arduino
зефир-водители-энтропия
Отладка — решение «в один клик» для отладки с нулевой конфигурацией.
Инструменты и датчики отладки
Поддерживаемые средства отладки перечислены в столбце «Отладка». Для более подробной информации информацию, пожалуйста, пролистайте таблицу по горизонтали. Вы можете переключаться между инструментами отладки и зондами отладки, используя Опция debug_tool в «platformio.ini» (файл конфигурации проекта).
Предупреждение
В зависимости от вашей системы вам потребуется установить драйверы средств отладки. Нажмите на совместимый инструмент отладки ниже, чтобы получить дальнейшие инструкции.
Встроенные средства отладки
Перечисленные ниже платыимеют встроенный датчик отладки и ГОТОВЫ к отладке! Вам не нужно использовать/покупать внешний отладочный зонд.
Имя | Блок управления микроконтроллером | Частота | Вспышка | ОЗУ |
---|---|---|---|---|
Би-би-си микро:бит | NRF51822 | 16 МГц | 256 КБ | 16КБ |
Каллиопа мини | NRF51822 | 16 МГц | 256 КБ | 16КБ |
Комплект маяков Nordic (PCA20006) | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
Северный ключ nRF51 (PCA10031) | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
Комплект для разработки Nordic nRF51X22 (PCA1000X) | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
RedBearLab BLE Nano 1. 5 | NRF51822 | 16 МГц | 256 КБ | 32 КБ |
RedBearLab nRF51822 | NRF51822 | 16 МГц | 256 КБ | 16КБ |
Seeed Tiny BLE | NRF51822 | 16 МГц | 256 КБ | 16КБ |
ВНГ ВБЛУНО51 | NRF51822 | 16 МГц | 128 КБ | 32 КБ |
Внешние средства отладки
Перечисленные ниже платысовместимы с отладкой, но ЗАВИСЯТ ОТ внешний отладочный зонд. Они НЕ ГОТОВЫ к отладке. Пожалуйста, нажмите на название доски для получения более подробной информации.
Имя | Блок управления микроконтроллером | Частота | Вспышка | ОЗУ |
---|---|---|---|---|
БлузДК | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
ОЩЧип | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
Китайско:Бит | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
Waveshare BLE400 | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
нг-маяк | NRF51822 | 16 МГц | 256 КБ | 32 КБ |
Вы можете переключаться между стабильными выпусками платформы разработки Nordic nRF51 и последней восходящей версии с использованием платформу в «platformio. ini» (файл конфигурации проекта), как описано ниже.
Стабильный
; Последняя стабильная версия, НЕ рекомендуется ; Закрепите версию, как показано ниже [env:latest_stable] платформа = nordicnrf51 доска = ... ; Конкретная версия [окружение: custom_stable] платформа = [email protected] доска = ...
Восходящий поток
[env:upstream_develop] платформа = https://github.com/platformio/platform-nordicnrf51.git доска = ...
Имя | Описание |
---|---|
фреймворк-arduinonordicnrf5 | Arduino Wiring Framework для плат Nordic Semiconductor на базе nRF5 |
каркас-зефир | Zephyr — масштабируемая, оптимизированная, безопасная ОСРВ нового поколения для различных аппаратных архитектур |
инструмент-cmake | CMake — это кроссплатформенное семейство инструментов с открытым исходным кодом, предназначенное для создания, тестирования и упаковки программного обеспечения. |
инструмент-DTC | Компилятор дерева устройств |
инструмент-gperf | GNU gperf — идеальный генератор хеш-функций |
инструмент-jlink | Пакет программного обеспечения и документации для отладочных датчиков SEGGER J-Link |
инструмент-ниндзя | Ниндзя — это небольшая система сборки с упором на скорость 9.0007 |
инструмент-nrfjprog | Средства командной строки nRFx |
инструмент-openocd | Открытый встроенный отладчик. Бесплатная и открытая встроенная отладка, внутрисистемное программирование и тестирование пограничного сканирования |
инструмент-sreccat | Набор мощных инструментов для работы с загрузочными файлами СППЗУ |
набор инструментов-gccarmnoneeabi | Набор инструментов GNU для процессоров Arm Cortex-M и Cortex-R |
Предупреждение
Пользователи Linux :
Установить правила «udev» 99-platformio-udev. rules
Пользователи Raspberry Pi, прочитайте эту статью Включите последовательный порт на Raspberry Pi.
Пользователи Windows:
Убедитесь, что у вас правильно установлен драйвер USB с платы. производитель
Имя | Описание |
---|---|
Ардуино | Платформа на основе Arduino Wiring позволяет писать кроссплатформенное программное обеспечение для управления устройствами, подключенными к широкому спектру плат Arduino, для создания всех видов творческого кода, интерактивных объектов, пространств или физических ощущений |
Зефир ОСРВ | Zephyr Project — это масштабируемая операционная система реального времени (RTOS), поддерживающая несколько аппаратных архитектур, оптимизированная для устройств с ограниченными ресурсами и созданная с учетом безопасности и защиты |
BBC
Имя | Отладка | Блок управления микроконтроллером | Частота | Вспышка | ОЗУ |
---|---|---|---|---|---|
Би-би-си микро:бит | Бортовой | NRF51822 | 16 МГц | 256 КБ | 16КБ |
БлузДК
Имя | Отладка | Блок управления микроконтроллером | Частота | Вспышка | ОЗУ |
---|---|---|---|---|---|
БлузДК | Внешний | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
Каллиопа
Имя | Отладка | Блок управления микроконтроллером | Частота | Вспышка | ОЗУ |
---|---|---|---|---|---|
Каллиопа мини | Бортовой | NRF51822 | 16 МГц | 256 КБ | 16КБ |
Северный
Имя | Отладка | Блок управления микроконтроллером | Частота | Вспышка | ОЗУ |
---|---|---|---|---|---|
Комплект маяков Nordic (PCA20006) | Бортовой | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
Северный ключ nRF51 (PCA10031) | Бортовой | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
Комплект для разработки Nordic nRF51X22 (PCA1000X) | Бортовой | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
ОЩЧип
Имя | Отладка | Блок управления микроконтроллером | Частота | Вспышка | ОЗУ |
---|---|---|---|---|---|
ОЩЧип | Внешний | NRF51822 | 32 МГц | 256 КБ | 32 КБ |
RedBearLab
Имя | Отладка | Блок управления микроконтроллером | Частота | Вспышка | ОЗУ |
---|---|---|---|---|---|
RedBearLab BLE Nano 1. |