Raspberry Pi, безусловно, революционизировал использование одноплатных компьютеров (SBC), сделав мощные, но доступные платформы для разработки доступными для любителей, образователей и инженеров. Некоторые могут утверждать, что Arduino сыграл не меньшую роль, но, реалистично говоря, он работает на гораздо более низком уровне, предназначен для проектов на базе микроконтроллеров, а не для полноценных вычислений.
Вот где вступает в игру Raspberry Pi Pico 2 W. Он находится где-то между этими двумя мирами — микроконтроллер с серьезной мощностью, встроенной беспроводной связью и достаточным количеством периферийных устройств, чтобы сделать инженера счастливым как устрица. Он не будет запускать полноценную ОС Linux, как Pi 5, но с двухъядерными процессорами Cortex-M33 и RISC-V, Bluetooth 5.2 и значительно большим объемом оперативной памяти и флэш-памяти, чем у типичного Arduino, он предлагает уровень гибкости, который делает его привлекательным выбором для встроенных систем, приложений IoT и не только.
В этой статье мы рассмотрим, как начать работу с Raspberry Pi Pico 2 W и пройдемся по примеру, демонстрирующему новые возможности встроенного Bluetooth.
Чтобы начать, мы будем использовать MicroPython на Raspberry Pi Pico 2 W. Вам нужно будет скачать загрузчик UF2 с веб-сайта Micropython в первую очередь. Теперь, удерживая кнопку BOOTSEL на устройстве Raspberry Pi Pico 2 W, подключите его к компьютеру (через порт/кабель MicroUSB). Это превратит ваше устройство в устройство хранения данных (точно так же, как флеш-накопитель или карта MicroSD отображается на вашем компьютере). Теперь скопируйте файл UF2 на устройство «хранения» Raspberry Pi Pico 2 W, отсоедините USB-кабель и снова подключите его. Используя ваше любимое программное обеспечение для работы с последовательным портом, такое как PuTTY или TeraTerm, подключитесь к COM-порту, который отображается для вашего устройства, и вы должны увидеть приглашение интерпретатора MicroPython:
В Начало работы с MicroPython и Raspberry Pi Pico, мы использовали Thonny IDE в качестве редактора для написания кода и загрузки устройства Raspberry Pi Pico 2 W. С появлением ИИ, встроенного в редакторы кода и множества расширений, я решил основать свою среду на VSCode вместо Thonny. Самое важное, что нужно сделать сначала (помимо установки VSCode), это установить официальное расширение для Raspberry Pi Pico (опубликованное Raspberry Pi).
После установки расширения вы увидите маленький значок платы Raspberry Pi Pico в левой части окна VSCode (там же, где и остальные расширения). Кликните на него, а затем перейдите к "Новый проект на MicroPython" в разделе "Общие". Дайте вашему проекту имя и путь, затем нажмите "Создать".
Откроется новый редактор всего с несколькими файлами и оболочкой MicroPython. Один из этих файлов — это пример файла Python для мигания светодиодом. Откройте этот blink.py. На этом этапе вы захотите убедиться, что ваше устройство Raspberry Pi Pico 2 W подключено. В самом низу вашего редактора VSCode вы увидите маленькую кнопку воспроизведения.
Это запустит blink.py непосредственно на устройстве (предварительно загрузив его на устройство). На этом этапе вы должны увидеть сообщение в консоли и мигание вашего светодиода:
Кнопка «Запуск» превращается в кнопку «Стоп», которая останавливает выполнение кода. После того как вы убедитесь, что светодиод мигает, мы готовы перейти к более сложному примеру.
Теперь, когда мы подтвердили, что наш Raspberry Pi Pico 2 W работает с MicroPython, давайте исследуем одну из его самых захватывающих новых функций — Bluetooth 5.2. Этот пример превращает ваше устройство Pico в сканер близости Bluetooth, способный обнаруживать близлежащие устройства Bluetooth (такие как смартфоны) и определять их силу сигнала (RSSI). Скрипт, bluetooth_scan.py, работает в двух режимах: Режим обнаружения, который сканирует все близлежащие устройства и выводит их MAC-адреса, и Режим отслеживания, где Pico непрерывно мониторит определенное устройство, включая светодиод, когда оно находится в близком диапазоне. Этот режим отслеживания полезен для обнаружения конкретных устройств Bluetooth поблизости в реальном времени, хотя некоторые, например устройства Apple, рандомизируют свои MAC-адреса в целях конфиденциальности.
Для достижения этой цели мы используем Bluetooth API MicroPython, а именно bluetooth.BLE(), для инициализации Bluetooth интерфейса Pico. Скрипт прослушивает пакеты рекламы Bluetooth Low Energy (BLE) с использованием gap_scan(), который повторно сканирует в течение заданного времени и обрабатывает результаты через обработчик событий (bt_irq). Этот подход, основанный на событиях, позволяет Pico мгновенно реагировать, когда обнаруживается новое устройство (подумайте о «прерываниях» в более низкоуровневых подходах). Устройства фильтруются на основе их RSSI (индикатора силы принимаемого сигнала), что помогает оценить близость. Ближайшие устройства обычно имеют более сильные сигналы (высокие значения RSSI, что означает менее отрицательные значения в децибелах), а более далекие устройства имеют более слабые сигналы (т.е. более отрицательное значение в децибелах). Режим отслеживания сравнивает обнаруженные MAC-адреса с заранее определенной целью и включает встроенный светодиод, когда находит совпадение. Параметры сканирования тщательно подбираются для баланса между мгновенной реакцией и эффективностью использования ЦПУ, предотвращая перегрузку Pico при непрерывном мониторинге сигналов Bluetooth.
Чтобы запустить скрипт, просто откройте bluetooth_scan.py и нажмите кнопку Запуск (как мы видели на примере с миганием выше), чтобы получить MAC-адреса близлежащих устройств.
Затем обновите скрипт с конкретным MAC-адресом и переключитесь в режим отслеживания, чтобы обнаруживать перемещение этого устройства в пределах диапазона. Это можно найти в основной функции внизу скрипта:
# Для отслеживания конкретного устройства (замените на обнаруженный MAC-адрес)
# scanner = BLEScanner(mode="track", target_mac="aa:bb:cc:dd:ee:ff")
Параметры сканирования были оптимизированы для обеспечения быстрого обнаружения без блокировки других операций, что делает это отличным введением в сканирование Bluetooth и обработку событий на Raspberry Pi Pico 2 W.
Raspberry Pi Pico 2 W является захватывающим дополнением к миру встроенной разработки, находя идеальный баланс между гибкостью микроконтроллера и мощностью встроенной беспроводной связи. С помощью MicroPython мы увидели, насколько легко начать работу, от мигания светодиода до использования встроенного модуля Bluetooth 5.2 для обнаружения близости в реальном времени. Реализованный сканер близости Bluetooth вводит в основные понятия, такие как сканирование BLE, программирование, управляемое событиями, и анализ силы сигнала, демонстрируя, сколько можно достичь с таким минимальным объемом кода.
Хотя это был лишь базовый пример, Pico 2 W открывает совершенно новый спектр возможностей для приложений IoT, реального времени отслеживания и беспроводной автоматизации. Независимо от того, являетесь ли вы любителем, экспериментирующим с периферийными устройствами BLE, или инженером, разрабатывающим системы встраиваемых систем следующего поколения, это маленькое устройство доказывает, что является мощным инструментом в миниатюрном корпусе. И это только начало — еще предстоит исследовать Wi-Fi, оптимизацию энергопотребления и более продвинутые взаимодействия с BLE. Raspberry Pi Pico 2 W мал, но он обладает серьезной мощностью.
Чтобы просмотреть репозиторий со всем кодом для начала работы, посетите https://gitlab.com/embedded-designs/micropython-bluetooth-example.