banner
Дом / Блог / Использование Raspberry Pi Pico W для снижения уровня Bluetooth
Блог

Использование Raspberry Pi Pico W для снижения уровня Bluetooth

Jun 16, 2023Jun 16, 2023

Фред Иди | 31 августа 2023 г.

С появлением версии 1.5.1 Raspberry Pi Pico SDK теперь поддерживает Bluetooth Classic и Bluetooth Low Energy (BLE) на платформе разработки Raspberry Pi Pico W. Как и ожидалось, после объявления о поддержке Bluetooth стал доступен ряд примеров Pico Bluetooth, основанных на порте BTstack от BlueKitchen. Пример кода, перенесенного на Raspberry Pi Pico SDK, сохраняет исходный формат языка BTstack C. Однако большинство примеров Pico Bluetooth на базе BTstack, которые можно найти в открытом доступе, были реализованы на MicroPython или Arduino. При этом целью данного обсуждения будет создание рабочего примера Pico Bluetooth Low-Energy на языке C, разработанного под Ubuntu 22.04 LTS с использованием кода Visual Studio и новейшей цепочки инструментов Raspberry Pi Pico SDK. Вы можете получить исходный код примера проекта на сайте загрузки EDTP Electronics.

Для тех из вас, кто, возможно, не знаком с Raspberry Pi Pico W, PicoW — это базовая аппаратная реализация BLE, состоящая из микроконтроллера, контролирующего передачу и прием радиотрафика Bluetooth через радиомодуль Bluetooth. Микроконтроллер управляется стеком Bluetooth; включение стека Bluetooth позволяет оборудованию PicoW брать на себя роль клиента или сервера в приложении Bluetooth. Таким образом, PicoW можно запрограммировать для работы в качестве устройства удаленного сбора данных, обслуживающего датчики, или устройства хранения и пересылки данных, которое собирает данные датчиков с удаленных устройств и передает собранные данные в центральный пункт обработки. Аппаратное обеспечение PicoW также способно работать в автономном режиме, обрабатывая входящую информацию Bluetooth и действуя соответствующим образом через свой банк контактов GPIO и встроенные периферийные устройства.

Начнем процесс разработки прошивки с установки версии 1.5.1 Raspberry Pi Pico SDK. Инструкции по установке Raspberry Pi Pico SDK и набора инструментов GNU для Linux можно найти на веб-сайте Raspberry Pi. Следующий шаг включает установку Visual Studio Code. Для Ubuntu 22.04 LTS мы хотим загрузить и установить версию Visual Studio Code для Debian. Установку кода Visual Studio можно выполнить с помощью встроенного установщика приложений Debian Ubuntu 22.04 LTS.

После установки Visual Studio Code требует некоторой настройки. Для поддержки процесса компиляции мы должны установить расширения кода Visual Studio CMake Tools, которые также устанавливают расширение CMake, и Serial Monitor. Для успешной компиляции CMake должен знать, где установлен Raspberry Pi Pico SDK. Абсолютное расположение Raspberry Pi Pico SDK определяется параметром Cmake:Environment PICO_SDK_PATH, который мы вручную вводим в настройках расширения CMake Tools. Мы используем Raspberry Pi Pico SDK и связанную с ним цепочку инструментов под Linux. Итак, мы также должны ввести Unix Makefiles в поле настроек CMake Tools Cmake:Generator. Вот и все. Код Visual Studio готов к использованию.

SDK Raspberry Pi Pico использует Python и PyCryptodomex для создания двоичного образа базы данных служб и характеристик Bluetooth, который должен быть включен в исходный код нашего приложения Bluetooth. Python устанавливается вместе с пакетом Ubuntu 22.04 LTS. Мы должны вручную установить PyCryptodomex. Установка PyCryptodomex выполняется с использованием стандартного процесса установки Ubuntu sudo apt. Подробные инструкции по установке PyCryptodomex можно найти на веб-странице документации PyCryptodomex. С добавлением PyCryptodomex в нашу набор инструментов Raspberry Pi Pico SDK мы готовы начать кодирование нашего приложения Raspberry Pi Pico W BLE.

Наше BLE-приложение будет основано на примере nordic_spp_le_counter из Raspberry Pi Pico SDK. Пример nordic_spp_le_counter — это похожая версия Nordic NUS (Nordic UART Service). Nordic NUS позволяет устройствам BLE взаимодействовать с использованием Bluetooth, как если бы UART присутствовал на обеих сторонах канала связи. Пример nordic_spp_le_counter Raspberry Pi Pico SDK на самом деле является копией одноименного примера BTstack. Вы не найдете полный блок исходного кода примера nordic_spp_le_counter в дереве каталогов Raspberry Pi Pico SDK. Итак, мы будем использовать исходный код примера BTstack nordic_spp_le_counter в качестве шаблона для нашей сборки прошивки.