今回は、Raspberry Pi 4Bを使って、Raspberry Pi Picoに書き込みをおこなってみました。
基板を眺める
まずは基板を眺めてみましょう。下図は表面となります。
Raspberry Pi Picoに載っているチップのRP2040はRaspberry Pi UKによる設計で、しっかりRaspberry Piのトレードマークが刻印されています。白いボタンはファームウェアの書き込みを行うBOOTSELモードで起動する際に利用します。また、同じく右上にあるLEDはGP25につながっていてプログラムから制御が可能です。後ほど実際に点滅させてみます。
次に裏面です。こちらにはPIN配列のシルクが印刷されています。
ちなみにピンヘッダをはんだ付けすると、そのままブレッドボードに取り付けることができます。
MicroPythonを使う準備
それではプログラミングの準備に移っていきます。本記事で紹介するのは、Raspberry Pi 4Bを使ってRaspberry Pi Picoにプログラムを書き込む手順です。
Raspberry Pi Picoでは、C/C++かMicroPythonを使ってプログラミングすることができます。MicroPythonを使用する場合、はじめにファームウェアの書き換えが必要です。
ファームウェアの書き込みを行う時は、Raspberry Pi Picoの基板上のボタンを押したまま電源を入れます。これにより、ファームウェアの書き込みを行うBOOTSELモードで起動します。
起動すると、Raspberry Pi OS側にマスストレージとしてマウントされます。ファイルマネージャーで開くと下図のように2つのファイルが見えるので、「INDEX.HTM」の方をダブルクリックして開きましょう。
ブラウザで開いたページは、Raspberry Pi Picoのスタートガイドです。ページを少しスクロールしたところにある、真ん中のタブを選択します。
するとインストール手順が表示されるので、「Download UF2 file」と書かれた緑色のボタンをクリックしてファームウェアをダウンロードします。
ダウンロードフォルダに .uf2 という拡張子のファイルが保存されるため、こちらをRaspberry Pi Picoのマスストレージにドラッグ&ドロップします。
これでファームウェアの書き込みは完了です。Raspberry Pi Picoが自動的にリブートされるためマスストレージの取り外しに関する警告がでますが、無視して大丈夫です。
プログラムを動かしてみる
Raspberry Pi OS から Raspberry Pi Pico に書き込みを行ってみます。開発環境にはいくつかの選択肢がありますが、ここではRaspberry Pi OSにあらかじめインストールされているThonny IDEを利用します。
私の環境ではThonny IDEのバージョンが古かったため、Raspberry Pi Picoを認識させるためにバージョンの更新を行う必要がありました。ターミナルで以下のコマンドを実行します。
sudo apt update sudo apt upgrade thonny
更新を終えてThonny IDEを立ち上げたら、右下に表示されているインタープリタをクリックします。
表示される項目の中から「MicroPython (Raspberry Pi Pico)」を選択しましょう。
エディターに以下のコードを記述します。こちらはRaspberry Pi Picoの基板にあらかじめ載っているLEDを点滅させるコードです。
import machine import utime led = machine.Pin(25, machine.Pin.OUT) while True: led.value(1) utime.sleep(5) led.value(0 utime.sleep(5)
コードを書き終えたら、メニューのRunボタンをクリックします。
保存先を聞かれるので「Raspberry Pi Pico」を選択します。
ファイル名を入力してOKボタンをクリックすれば、Raspberry Pi Picoへのプログラムの書き込みと実行が行われます。
Raspberry Pi PicoのLEDを光らせる
プログラムの実行後、基板上のLEDが5秒ごとに点滅すればうまく動作しています。プログラムを停止するには、Ctrl + Cを入力するか、Thonny IDEのメニューにあるStopボタンを押します。
ちなみに以下のようなコードで、同じく基板に搭載されている温度センサーから値を取得することも可能です。
import machine import utime sensor_temp = machine.ADC(4) conversion_factor = 3.3 / (65535) while True: reading = sensor_temp.read_u16() * conversion_factor temperature = 27 - (reading - 0.706)/0.001721 print(temperature) utime.sleep(2)
Raspberry Pi Pico を使ってみた所感
発表された当初の想像では micro:bit のようなものが出たのかな、と想像していましたが、どちらかといえばArduinoのようなマイコンに近いデバイスとなっています。
そして、やはりRaspberry Pi から Raspberry Pi Picoに書き込むのは面白いですね。まだ登場したばかりで日本語の資料はほぼありませんが、MicroPythonと電子工作で遊んでみたい方にはちょうど良いかもしれません。
Raspberry Pi Pico用のHATもすでに発売されており、いくつか仕入れてみたので次回以降紹介していきたいと思います。
電子工作に興味のある方、この機会にはじめてみてはいかがでしょうか!