Гид по технологиям

Bluetooth на Raspberry Pi Pico W: чтение данных с датчика

7 min read IoT Обновлено 18 Apr 2026
Bluetooth на Raspberry Pi Pico W — чтение данных датчика
Bluetooth на Raspberry Pi Pico W — чтение данных датчика

Raspberry Pi Pico W с логотипом Bluetooth

Raspberry Pi Pico W, популярная плата для IoT‑проектов от Raspberry Pi Foundation, получила широкое распространение после запуска в 2022 году. С выходом C SDK версии 1.5.1 и обновлённой сборки MicroPython стало значительно проще активировать Bluetooth на платах Pico W и WH.

Плата позволяет читать и передавать данные по Bluetooth, что открывает множество практических проектов для Интернета вещей. Большинство шагов сводятся к обновлению прошивки и загрузке пары модулей MicroPython — далее показано, как считать данные с датчика и передавать их по BLE.

Что такое Pico W/WH и как он работает с Bluetooth

Raspberry Pi Pico W — микроконтроллерная плата, унаследовавшая форм‑фактор оригинальной Pico, но с добавлением радиочипа для Wi‑Fi и Bluetooth. Плата сохраняет привычный распаечный вывод с двумя 20‑контактными заголовками GPIO.

Wi‑Fi чип и дорожки антенны на Raspberry Pi Pico W

На Pico W установлен радиочип Infineon CYW43439, который поддерживает 802.11n Wi‑Fi и Bluetooth 5.2. Для работы BLE потребуется актуальная версия MicroPython или код на C/C++ с поддержкой стека Bluetooth.

Подготовка окружения разработчика

Если вы предпочитаете писать на C/C++, потребуется Pico C/C++ SDK — набор библиотек и инструментов для сборки приложений под Pico. Основные компоненты окружения:

  • ARM GCC Compiler для кросс‑компиляции под RP2040.
  • CMake для генерации файлов сборки.
  • Build Tools for Visual Studio 2019, если используете Windows и Visual Studio.
  • Python 3.9+ для инструментов SDK и утилит.
  • Git для контроля версий.
  • Visual Studio Code как удобный редактор (опционально).

Если вы предпочитаете быструю разработку и примеры, используйте MicroPython — ниже приведён рабочий путь с Thonny.

Установка MicroPython и прошивки UF2

Есть два простых способа попасть в режим загрузчика (bootloader) на Pico W:

  • В MicroPython REPL выполнить команду machine.bootloader().
  • Удерживать кнопку BOOTSEL при подключении платы по USB.

В режиме загрузчика Pico W смонтируется как USB‑накопитель. Скопируйте в него UF2‑файл с новой прошивкой MicroPython, скачанный со страницы загрузки MicroPython.

Проводник показывает подключённый Raspberry Pi Pico

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

Прошивка через Thonny

  1. Подключите Pico, удерживая BOOTSEL при подключении, чтобы включить режим загрузчика.
  2. Запустите Thonny.

Скриншот интерфейса Thonny

  1. В меню Thonny перейдите в Tools > Options.

Раздел Tools в Thonny

  1. Во вкладке Interpreter выберите MicroPython (Raspberry Pi Pico). Установите порт на Try to detect automatically и нажмите ссылку для установки прошивки. Thonny предложит актуальную версию MicroPython для вашей платы и выполнит прошивку.

Вкладка Interpreter в Thonny

После установки закройте окна установки и нажмите OK.

Сохранение необходимых модулей для Bluetooth

Для работы BLE в MicroPython на Pico W нужны два вспомогательных скрипта — они упрощают рекламирование (advertising) и реализацию периферийного устройства BLE.

  1. Откройте наш репозиторий на GitHub и скачайте файл ble_advertising.py — он собирает полезную полезную нагрузку и формирует пакеты рекламы для BLE.

Страница репозитория MUO на GitHub

  1. В Thonny создайте новый файл, вставьте содержимое и сохраните на Raspberry Pi Pico как ble_advertising.py (File > Save as > Raspberry Pi Pico).

  2. Аналогично сохраните ble_simple_peripheral.py — он реализует базовое периферийное поведение и отправку данных.

Репозиторий MUO для поддержки Bluetooth на Raspberry Pi Pico W

После этого у вас на плате будут два модуля, необходимые для демо‑передачи данных по BLE.

Чтение и отправка данных по Bluetooth LE с Pico W

Создайте файл main.py и вставьте следующий код. Он читает встроенный датчик температуры и отправляет значение через BLE, если есть подключённый центральный узел.

from machine import Pin, ADC
import bluetooth
from ble_simple_peripheral import BLESimplePeripheral
import time

# Создаём объект BLE
ble = bluetooth.BLE()

# Создаём экземпляр периферии с переданным BLE
sp = BLESimplePeripheral(ble)
adc = ADC(4)

while True:
    if sp.is_connected():  # Проверяем, установлено ли BLE соединение
        # Считываем значение внутреннего температурного датчика
        temperature = adc.read_u16() * 3.3 / (65535 * 0.8)

        # Передаём значение температуры по BLE
        temperature_data = str(temperature).encode()
        sp.send(temperature_data)
    time.sleep(1)

Сохраните как main.py на Pico W и запустите скрипт в Thonny. В Shell вы должны увидеть сообщение о запуске рекламы, например «Starting Advertising». Устройство будет передавать показания каждую секунду при подключении центрального устройства.

Настройка Android‑приложения для приёма данных

Скриншот приложения Serial Bluetooth Terminal в Play Market

На Android‑смартфоне установите приложение Serial Bluetooth Terminal из Google Play.

  • Откройте приложение и переключитесь на вкладку Devices.

Вкладка Devices в Serial Bluetooth Terminal

  • Вкладка Bluetooth LE → нажмите SCAN.

Вкладка BLE в Serial Bluetooth Terminal

После сканирования вы увидите устройство с именем mpy‑uart. Подключитесь к нему.

Список BLE‑устройств в приложении

В терминале приложения появится статус «Connected», а в поток будут приходить значения температуры каждую секунду.

Терминал приложения принимает данные датчика

Можно также использовать модуль ble_simple_central.py на второй плате Pico W, чтобы организовать центральную роль и принимать данные с периферии.

Улучшения и варианты применения

  • Используйте внешний датчик (DS18B20, DHT22, BME280) вместо внутреннего ADC для получения реалистичных показаний окружающей среды.
  • Передавайте сериализованные данные в форматах CSV или JSON, если центральная точка принимает структурированные данные.
  • Добавьте механизм сохранения на флеш (LittleFS) при потере связи, чтобы синхронизировать буфер после восстановления соединения.

Альтернативные подходы

  • Использовать C/C++ SDK и реализовать BLE‑функционал в нативном коде для более высокой производительности и контроля над стеком.
  • Применять внешний BLE‑модуль (например, на основе nRF52) через UART или SPI, если требуется отдельный радиомодуль с сертификатами.
  • Задействовать Bluetooth Classic через отдельный модуль для совместимости со старым оборудованием, где BLE не поддерживается.

Когда это может не сработать

  • Недостаточная версия MicroPython или устаревшая прошивка — обновите UF2.
  • Неправильно сохранённые имена файлов модулей (ble_advertising.py и ble_simple_peripheral.py обязателен). Убедитесь в точном совпадении имён.
  • Конфликты с другими библиотеками, изменяющими интерфейс bluetooth в MicroPython.
  • Аппаратные неисправности радиочипа Infineon CYW43439 или повреждение антенны.

Чеклисты по ролям

Чеклист для изготовителя (Maker):

  • Убедиться, что Pico W — версия W или WH.
  • Подготовить кабель USB и компьютер.
  • Перешить UF2 через Thonny или вручную.
  • Сохранить на плате ble_advertising.py, ble_simple_peripheral.py, main.py.
  • Подключиться к смартфону и проверить приём.

Чеклист для разработчика:

  • Настроить окружение: Python 3.9+, Thonny, Git.
  • Проверить версии зависимостей и документацию MicroPython по BLE.
  • Написать интеграционные тесты для приёма/отправки пакетов.

Чеклист для тестировщика:

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

Критерии приёмки

  • Pico W запускает main.py и начинает рекламировать BLE.
  • Приложение на Android видит устройство mpy‑uart в списке BLE.
  • После подключения в терминал каждую секунду приходят значения температуры в ожидаемом диапазоне.
  • При разрыве соединения плата не входит в неограниченный ошибочный цикл и восстанавливает рекламу.

Устранение неполадок — пошаговый план реакции

  1. Нет устройства в списке BLE на смартфоне:

    • Перепрошьйте UF2, проверьте, что Thonny показывает плату как MicroPython.
    • Перезагрузите смартфон и Pico.
    • Проверьте, не занята ли антенна металлическим корпусом или помехами.
  2. Соединение устанавливается, но данные не приходят:

    • Убедитесь, что main.py действительно запущен и sp.send() вызывается.
    • Вставьте отладочный вывод в код (print) и смотрите Thonny Shell.
  3. Частые разрывы связи:

    • Уменьшите частоту отправки (увеличьте интервал в time.sleep).
    • Проверьте наличие источников радиопомех рядом.
  4. Плата не определяется как USB‑накопитель в режиме bootloader:

    • Попробуйте другой USB‑порт или кабель данных.
    • Удерживайте BOOTSEL при подключении и попробуйте снова.

Мини‑методология: как подойти к проекту с BLE на Pico W

  1. Определите требуемую роль устройства: периферия или центральное устройство.
  2. Выберите стэк: MicroPython для быстрого прототипа или C/C++ для производительности.
  3. Прошейте плату, загрузите вспомогательные модули, убедитесь в корректности имён файлов.
  4. Разработайте и протестируйте передачу небольших пакетов, затем масштабируйте.
  5. Добавьте обработку ошибок и сохранение данных при потере связи.

Безопасность и конфиденциальность

  • BLE по умолчанию не шифрует рекламные пакеты. Не передавайте чувствительные данные в открытом виде.
  • При необходимости используйте шифрование приложения (например, симметричное шифрование на уровне данных) и проверку подлинности соединения.
  • На Android‑стороне не давайте приложению лишних разрешений и отключайте автопереключение на доверенные устройства.

1‑строчный глоссарий

  • BLE — Bluetooth Low Energy, энергосберегающий профиль Bluetooth.
  • UF2 — формат прошивки для устройств, который записывается в виде файла на USB‑накопитель.
  • Peripheral — роль BLE‑устройства, которое рекламирует свои сервисы.
  • Central — роль BLE‑устройства, которое сканирует и подключается к периферии.

Короткое резюме

Bluetooth на Raspberry Pi Pico W предоставляет быстрый путь для передачи телеметрии с микроконтроллера на смартфон или другое устройство. С обновлённой прошивкой MicroPython и двумя вспомогательными модулями вы получаете рабочую платформу для прототипирования IoT‑решений.

Важно: если нужна высокая производительность или специфичные профили BLE, рассматривайте нативную реализацию на C/C++ или внешний радиомодуль.

Примечание

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро