PicoでとりあえずMicroPythonを動かしてみる

Raspberry Pi Picoが届いたので、とりあえずMicroPythonをインストールして動かしてみました。

こんなリール型パッケージです。何かの都合か、それとも演出でしょうか。

MicroUSBコネクタの左側に小さなLED、その下にBOOTSELボタンがあります。

MicroPythonのファームウェアをダウンロードしてきます。
Getting Startedのページへ行き・・・

Getting Started with MicroPythonのタブを選択します。

Download UF2ファイルのリンクをクリックして、拡張子uf2のファイルを保存します。

MicroUSBケーブルを用意し、「BOOTSELボタンを押しながら」PicoをPCに接続します。

USBメモリとして認識されます。

ダウンロードしたUF2ファイルを、Picoのドライブにドラッグ&ドロップします。

するとファイルがコピーされた後、Picoは自動で再起動され、ドライブは見えなくなります。これでインストール完了です。

推奨のIDEはThonnyです。以前M5StickCで使う記事を書いたことがあります。
起動後、メニューのRun→Select Interpreter…でインタープリタをMicroPython(Raspberry Pi Pico)にしておきます。

あるいは、TeraTermなどのターミナルソフトで接続することができます。シリアルポートの設定は115200bps/8bitです。

現状では、ペーストモードなどのときに時々ハングアップするようなので、どちらかといえばThonnyの利用をお勧めします。

MicroPythonのPicoへの移植は、MicroPythonの開発者であるD.P.Georgeさんが自ら行われたようです。

rp2: Add new port to Raspberry Pi's RP2040 microcontroller by dpgeorge · Pull Request #6791 · micropython/micropython
The RP2040 is a new microcontroller from Raspberry Pi. See for more information.This PR adds support for this class of M...

内蔵のモジュールです。Pico関連の機能はrp2モジュールに入っています。

>>> help('modules')
__main__          framebuf          uasyncio/__init__ uio
_boot             gc                uasyncio/core     uos
_onewire          machine           uasyncio/event    urandom
_rp2              math              uasyncio/funcs    uselect
_thread           micropython       uasyncio/lock     ustruct
_uasyncio         onewire           uasyncio/stream   usys
builtins          rp2               ubinascii         utime
ds18x20           uarray            ucollections
Plus any modules on the filesystem
>>>
>>> help(rp2)
object  is of type module
  Flash -- 
  PIOASMEmit -- 
  const -- 
  asm_pio -- 
  PIOASMError -- 
  _pio_funcs -- {'in_': None, 'y_dec': 4, 'pin': 6, 'iffull': 64, 'gpio': 0, 'not_osre': 7, 'clear': 64, 'rel':  at 0x200069d0>, 'wrap': None, 'x_not_y': 5, 'word': None, 'out': None, 'push': None, 'noblock': 1, 'pull': None, 'wrap_target': None, 'x_dec': 2, 'mov': None, 'irq': None, 'set': None, 'y': 2, 'x': 1, 'null': 3, 'pc': 5, 'invert':  at 0x200066e0>, 'pins': 0, 'not_x': 1, 'not_y': 3, 'ifempty': 64, 'isr': 6, 'pindirs': 4, 'exec': 8, 'label': None, 'status': 5, 'nop': None, 'osr': 7, 'block': 33, 'reverse':  at 0x200066f0>, 'jmp': None, 'wait': None}
  __name__ -- rp2
  StateMachine -- 
  asm_pio_encode -- 
  PIO -- 
>>>

とりあえずLチカしてみます。使用するGPIOは25番です。

Pico Python SDKのマニュアルの3.8に、PWMを使ってLEDを光らせる例があります。

Thonnyを使う場合は、上のスクリプトをコピーしてThonnyのウインドウのスクリプトエリアに貼り付け、実行ボタン(緑のボタン)をクリックすると実行できます。(ファイルとしてPicoに転送するので、実行前にスクリプトをファイルを保存する必要があります。)

TeraTermを使う場合は、上のスクリプトをコピーし、TeraTermのウインドウでCtrl-Eを入力してからペーストして、Ctrl-Dで抜けると実行されます。

こんな感じで動きます。

コメント