Raspberry Pi Picoを使ってみた。


Raspberry Pi Pico

Raspberry Pi Pico(以下Pico)が手元に届いたので、火入れついでにLチカまでやって見たので、その時の作業手順のメモです。
使用したのはPicoとMacです。

Picoは小さくて、MacのSHIFTキーを一回り大きくしたくらいの大きさです。
基盤上にLED1つと温度センサーが載っています。
通信手段はUSBだけです。

PicoとMacの接続に使ったのは以下のケーブルです。10cmだとちょっと短いかも知れません。
自分は、ケーブルの先にPicoがぶらぶらするのが嫌なのでこの長さにしましたが。
アイネックス USB Type-Cホストケーブル C - Micro-Bリバーシブル 両端L型 10cm U20CU-LN01T

Picoの開発環境はMicroPythonのインタプリタかC/C++になるようで、開発環境に合わせてそれ用のファームを焼くようです。

microPython用のファームを焼く

まずPicoとMacをUSB接続するとマスストレージとして認識しRPI-RP2というフォルダがデスクトップ上に表示されます。

RPI-RP2フォルダを開くとINDEX.HTMというファイルがあるのでブラウザで開きます。

ブラウザで開くと下のようなPicoのサイトへ飛びます。

開いたサイトを下に進むと3つのタブが表示されるので、赤枠の「Getting started with MicroPython」を選択します。

タブを選択するとファームのダウンロードサイトへのリンクやファームウェアのダウンロードボタンがあるので、クリックしてファームをダウンロードします。

今回は、ダウンロードサイトに行き、latestのファームをダウンロードしてきました。
※ちなみにダウンロードボタンを押下したところ、latestの1つ前のバージョンのファームがダウンロードされました。

ダウンロードサイトにファームがダウンロードされました。

ダウンロードされたファームをRPI-RP2にコピーします。

コピーが終わると以下のメッセージが表示されますが、問題ありません。

MicroPythonのファームを焼くとシリアルで接続されるため、マスストレージとして認識されなくなります。
(USBを抜き差ししてもフォルダが表示されなくなるとちょっと焦ります。)
もし、他のファームを焼くためにファームウェアを焼きたいときは、本体のボタンを押下しながらUSB接続するとマスストレージとして認識されます。

MicroPythonでLチカをしてみる。

PicoとMacを接続してターミナルを起動します。
ターミナル上でPicoの接続状況を確認します。

% ls /dev/tty.usbmodm*
/dev/tty.usbmodem0000000000001

接続先が確認できたらscreenを起動します。

% screen /dev/tty.usbmodem0000000000001 115200

screenが起動したら、Lチカのプログラムを打ち込みます。

>>> 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)
...     
...     
... 

打ち込み終わるとPicoのLEDがチカチカ光ります。

Visual Studio Code

Visual Studio Codeには、Raspberry Pi Pico用の拡張機能があるようです。
こちらを使えば、ターミナルからの操作ではなく、Visual Studio CodeのコンソールからmicroPythonが使えるようです。

コンソールの画面はこんな感じです。

温度計測

Picoには温度センサーが載っているので、温度センサーの値をMicroPythonで取得してきます。
サンプルは、公式ドキュメントに出ていました。
https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-python-sdk.pdf


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)

上記のサンプルを実行すると2秒ごとに温度センサーの値を温度に変換して表示します。
VSCodeだと以下のような形になります。
サンプルを打ち込んでステータスバーのところになる[Run]をクリックするとスクリプトが実行されます。