Pi Pico はRaspberry Pi財団が独自設計して開発販売しているマイクロコントローラ(マイコン)です。OSは乗りませんし、素のままではWi-FiもBluetoothも使えません。
が、複数のPWM入出力チャンネルやアナログが使えて、1個550円(ヘッダーはんだ付け済なら990円)(SWITCHSCIENCE)という低価格が魅力です。
ラズパイとの親和性も高いですし、C/C++以外にPython(MicroPython、CircuitPython)も使えます。
ラズパイ4Bを母艦にして、ちょっと触ってみましょう。
Pico仕様
MCU(マイコン) | RP2040 |
CPUコア | デュアルコア Arm Cortex-M0+プロセッサ、デフォルトはcore0、ライブラリを使えばcore1も動作
最大動作周波数 133MHz |
RAM | 256KB SRAM |
Flashメモリー | 2MB Quad-SPI |
インターフェース・センサー | USB 1.1 microB ×1 (電源供給、データ通信(ホスト)、プログラム書込み(デバイス)) GPIOピン ×26(デジタル専用 ×23、アナログ/デジタル ×3) PIO ×8(SDカードやVGAなどのI/Fをエミュレート可能) 温度センサー ×1、LED ×1、 3ピンARMシリアル ワイヤ デバッグ(SWD)ポート ×1 |
通信機能 | SPI ×2、I2C ×2、UART ×2、12bit ADC ×3 PWMチャンネル ×16(A/Bチャンネル ×8、Bは入力対応) |
アナログ | ADC 12bit 500ksps ×3 |
タイマー | タイマー ×1(アラーム ×4, Real Time Counter ×1) |
I/O電圧 | 3.3V |
電源 | 1.8V~5.5V |
サイズ・重さ | 21×51.3×3.9mm 約3g |
動作環境条件 | -20℃~+85℃(+70℃以下を推奨) |
供給期間 | 2031年1月まで供給予定 |
四隅のホールで使う小ねじはM2です。
透明ABS丸パイプ 4 1614(外径4mm)がスペーサーとして使えます。好きな長さに切り刻んで使いましょう。
ラズパイ4Bを使ってPicoにセットアップ準備
PicoのBOOTSELボタンを押しながら、データ転送可能なMicroUSBケーブルで接続します。
注:
ラズパイZeroでは実行できませんでした。これをやると常にZeroがハードリセットされてしまいます(管理人の環境固有の問題?)。
BOOTSELボタンを押しながらUSBポートに接続するのは結構手間がかかります。こういう場合、100均でも手に入るスイッチ付きUSBコネクタがあればとっても便利です。事前にOFF状態で接続しておいて、左手指でBOOTSELを押しながら右手指でONでOK。
Picoはリムーバブルメディア(ストレージデバイス)として認識されます。
中身(RPI-RP2)はこんな感じ。
PicoにMicroPythonをセットアップ
Raspberry Pi Documentation-MicroPythonのページを開いてセットアップ用のUF2ファイルをダウンロードしておきます。
PicoとPico W用の2つのファイルが用意されています。間違わないようにしましょう。
このUF2ファイルをリムーバブルメディアとして認識されているPicoにドラッグ・ドロップします。UF2はマイクロコントローラなどで使われる実行形式のファイルなのでドロップした時点で実行されます。
即、接続が解除され、PicoはリセットされてMicroPythonが使用可能になります。
ラズパイ4Bからこれを使うには、プレインストールされているThonny Python IDE を利用してみます。
Thonnyが開いたら、右下のPythonボタンをクリック
PicoのMicroPythonに接続します(CircuitPythonも表示されていますが、この時点ではセットアップされていないので機能しません)。
利用可能になりました。
MicroPythonを使ってみる
Picoには内部温度センサーが搭載されています。
これを使ってセンサーからPicoのCPU付近の温度を取得してみましょう。
ThonnyからコードをPicoのMicroPythonに投げて、実行結果をThonnyで取得するという段取りになります。
こんなコード
1 2 3 4 5 6 7 8 9 10 11 12 |
import machine import utime sensor_temp = machine.ADC(4) conversion_factor = 3.3 / (65535) while True: reading = sensor_temp.read_u16() * conversion_factor # The temperature sensor measures the Vbe voltage of a biased bipolar diode, connected to the fifth ADC channel # Typically, Vbe = 0.706V at 27 degrees C, with a slope of -1.721mV (0.001721) per degree. temperature = 27 - (reading - 0.706)/0.001721 print(temperature) utime.sleep(1) |
直接ベタ書きして実行してみます。こんな感じ。
temp.pyというファイルにして、それを読み込んで実行してみます。
注:コードを保存する場合は、Shellではなく、その上のパネルに記述するか、ファイルにしてエクスプローラにコピーします。
こんな感じ。
ところで、このコードをThonnyで実行する場合、PicoをBOOTSELで接続する必要はありません。BOOTSELが必要だったのはMicroPythonのUF2ファイル(実行ファイル)をドラッグ・ドロップでセットアップする時だけです。
単にPicoをUSBポートに挿せば、デバイスとして認識されています(名前はありませんが….)。
挿入前と後
このまま、Thonnyを起動してtemp.pyを実行すれば、上記のようにPico側で実行されて結果も返されます。
また、temp.pyはラズパイ側にありますが、Pico側で実行する場合はmain.pyという名前でPicoに保存することになるそうで、この状態でPicoを単体で起動するとmain.pyが自動で実行され、Tera Termなどでシリアル接続すれば結果をモニターできるそうです……。
*LEDをチッカチッカさせる場合
1 2 3 4 5 6 7 8 |
import machine import utime led = machine.Pin(25, machine.Pin.OUT) while True: led.value(1) utime.sleep(1) led.value(0) utime.sleep(1) |
Flashメモリー のリセット
Raspberry Pi Pico-Technical Specificationのページを開いてリセット用のUF2ファイルをダウンロード
これをPicoにドラッグ・ドロップするだけです。こういう場合はPicoはBOOTSELボタンを押しながら接続します。
Picoはリセットされ再起動します。(多少長めに)そのままにしておくと、再度リムーバブルディスクで接続するよう促してきます。
このまま開いてThonnyを起動すると、PicoではMicroPythonのファームウェアもクリーンになっているので再インストールするか聞いてきます。
インストールしておきます。
PC でThonny を使う場合
Thonny の公式ページにアクセス
Windows、Mac、Linux に対応しています。
Windows版
Leave a Reply