Raspberry Piは、議論の余地があるかもしれませんが、シングルボードコンピュータ(SBC)の使用方法を革命的に変え、趣味人、教育者、そしてエンジニアにまで手頃な価格の強力な開発プラットフォームを提供しました。Arduinoも同じくらい重要な役割を果たしたと主張する人もいるかもしれませんが、現実的には、Arduinoははるかに低レベルで動作し、マイクロコントローラーベースのプロジェクト向けに構築されており、完全なコンピューティングには向いていません。
Raspberry Pi Pico 2 Wが登場するのはここです。このデバイスは、これら二つの世界の間に位置しています—真剣なパワーを持つマイクロコントローラーで、内蔵のワイヤレス接続性と、エンジニアを喜ばせるのに十分な周辺機器を備えています。Pi 5のように完全なLinux OSを実行することはできませんが、デュアルコアCortex-M33およびRISC-Vプロセッサ、Bluetooth 5.2、そして典型的なArduinoよりもかなり多くのRAMとフラッシュストレージを備えており、組み込みシステム、IoTアプリケーション、その先においても、魅力的な選択肢となる柔軟性を提供します。
この記事では、Raspberry Pi Pico 2 Wの使い始め方と、新しいオンボードBluetooth機能を紹介する例を通して見ていきます。
始めるために、Raspberry Pi Pico 2 WでMicroPythonを使用します。まず、MicropythonのウェブサイトからUF2ブートローダーをダウンロードしてください。次に、Raspberry Pi Pico 2 WデバイスのBOOTSELボタンを押しながら、それをコンピューターに接続します(MicroUSBポート/ケーブルを介して)。これにより、デバイスがストレージデバイス(フラッシュドライブやMicroSDカードがコンピューターに表示されるのと同じように)になります。次に、UF2ファイルをRaspberry Pi Pico 2 Wの「ストレージ」デバイスにコピーし、USBケーブルを抜いて、再度接続します。お気に入りのシリアルターミナルデバイス(PuTTYやTeraTermなど)を使用して、デバイスに表示されるCOMポートに接続すると、MicroPythonシェルインタープリターが表示されるはずです:
MicroPythonとRaspberry Pi Picoの始め方では、Thonny IDEをエディタとして使用してコードを書き、Raspberry Pi Pico 2 Wデバイスにロードしました。AIがコードエディタや拡張機能に組み込まれるようになったことを受け、私はThonnyよりもVSCodeを基本とする環境に切り替えることにしました。最も重要な最初のステップ(VSCodeのインストールを除く)は、公式のRaspberry Pi Pico拡張機能(Raspberry Piによって公開された)をインストールすることです。
拡張機能がインストールされると、VSCodeウィンドウの左側に小さなRaspberry Pi Picoボードのアイコンが表示されます(他の拡張機能がある場所と同じです)。それをクリックし、「General」の下にある「New MicroPython Project」に移動します。プロジェクトに名前とパスを付けて、「Create」を押します。
新しいエディタが開き、いくつかのファイルとMicroPythonシェルが表示されます。そのファイルの一つには、LEDを点滅させるPythonファイルの例があります。そのblink.pyを開きます。この時点で、Raspberry Pi Pico 2 Wデバイスが接続されていることを確認してください。VSCodeエディタの一番下に、小さな再生ボタンが表示されます。
これにより、blink.pyがデバイス上で直接実行されます(まずデバイスにロードされます)。この時点で、print文とLEDの点滅が見られるはずです。
実行ボタンは停止ボタンに変わり、コードの実行を停止します。LEDが点滅することを確認したら、もっと高度な例に移る準備ができました。
これで、Raspberry Pi Pico 2 WがMicroPythonで動作していることを確認したので、その最もエキサイティングな新機能の1つであるBluetooth 5.2を探ってみましょう。この例は、PicoデバイスをBluetooth近接スキャナーに変え、近くのBluetoothデバイス(スマートフォンなど)を検出し、その信号強度(RSSI)を判定します。スクリプトbluetooth_scan.pyは、近くのすべてのデバイスをスキャンしてMACアドレスを表示するDiscovery Modeと、Picoが特定のデバイスを継続的に監視し、近距離にあるときにLEDを点灯させるTrack Modeの2つのモードで動作します。この追跡モードは、リアルタイムで特定のBluetoothデバイスを近くで検出するのに役立ちますが、プライバシー上の理由からAppleデバイスなどの一部はMACアドレスをランダム化します。
これを実現するために、MicroPythonのBluetooth API、具体的にはbluetooth.BLE()を使用して、PicoのBluetoothインターフェースを初期化します。このスクリプトは、gap_scan()を使用してBluetooth Low Energy (BLE) 広告パケットをリッスンします。これは、指定された期間にわたって繰り返しスキャンを行い、イベントハンドラ(bt_irq)を通じて結果を処理します。このイベント駆動型のアプローチにより、新しいデバイスが検出されたときにPicoが即座に反応できます(よりベアメタルなアプローチでの「割り込み」を考えてみてください)。デバイスは、そのRSSI(受信信号強度指標)に基づいてフィルタリングされます。これは、近接性を推定するのに役立ちます。近いデバイスは通常、より強い信号(より高いRSSI値、つまりより少ない負のdb値に相当)を持ち、遠いデバイスはより弱い信号(つまり、より負のdb値)を持ちます。トラックモードは、検出されたMACアドレスを事前に定義されたターゲットと比較し、一致が見つかったときにオンボードLEDを点灯させます。スキャンパラメータは、リアルタイムの応答性とCPU効率のバランスを慎重に選択され、PicoがBluetooth信号を連続的に監視しながら圧倒されることがないようにします。
スクリプトを実行するには、bluetooth_scan.pyを開いて実行ボタンをクリックするだけです(上記の点滅例で見たように)、これにより近くのデバイスのMACアドレスを取得できます。
次に、特定のMACアドレスをスクリプトに更新し、そのデバイスが範囲内に移動すると検出するためにトラックモードに切り替えます。これはスクリプトの下部にあるメイン関数で見つけることができます:
# 特定のデバイスを追跡する(発見されたMACアドレスに置き換える)
# scanner = BLEScanner(mode="track", target_mac="aa:bb:cc:dd:ee:ff")
スキャンパラメータは、他の操作をブロックせずに反応的な検出を保証するように最適化されており、これはRaspberry Pi Pico 2 W上でのBluetoothスキャンとイベント処理の素晴らしい導入となります。
Raspberry Pi Pico 2 Wは、組み込み開発の世界にとってエキサイティングな追加であり、マイクロコントローラーの柔軟性と内蔵ワイヤレス接続の力の完璧なバランスを実現しています。MicroPythonを使用して、LEDの点滅からオンボード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を訪問してください。