RPi Pico で circuitpython を使う
RPi Pico で circuitpython を使う。
アイキャッチ画像は、関係ないけど、PicoのリセットスイッチをPimoroniで購入して半田付けした図。
circuitpython 用 BOOT LOADER の取得
DOWNLOAD .UF2 NOW
をクリックして、ダウンロード。
2021/05/04 時点では、 6.2.0
以下のuf2 ファイル(USB Flashing Format Data)がとれる。
adafruit-circuitpython-raspberry_pi_pico-en_US-6.2.0.uf2
BOOT LOADER を RPi Pico に install
Pico を Macにつないで、BOOTSEL ボタンを押しながら、RPi Pico をリセット。
自動的にVolume Mount されるので、 .uf2 ファイルをコピー
初期のVolume名は、
RPI-RP2
circuitpython のVolume名は、CIRCUITPY
Built-in modules
- _bleio
- _pixelbuf
- analogio
- audiobusio
- audiocore
- audiomp3
- audiopwmio
- binascii
- bitbangio
- bitmaptools
- bitops
- board
- busio
- countio
- digitalio
- displayio
- errno
- framebufferio
- gamepad
- json
- math
- microcontroller
- msgpack
- neopixel_write
- nvm
- os
- pulseio
- pwmio
- random
- re
- rgbmatrix
- rotaryio
- rp2pio
- rtc
- sdcardio
- sharpdisplay
- storage
- struct
- supervisor
- terminalio
- time
- touchio
- ulab
- usb_hid
- usb_midi
- vectorio
- watchdog
example
circuitpythonのいいところは、adafruitさんがその豊富なマイコン用の周辺機器のドライバを用意してくれてるところ。
さっそく、adafruitの CircuitPython Libraries
をdownload する。
2021/05/04時点では、これが最新
adafruit-circuitpython-bundle-6.x-mpy-20210430.zip
ampy で確認
ampy で中身を確認する。
$ ampy -p /dev/tty.usbmodem14123301 ls
/.Trashes
/.fseventsd
/.metadata_never_index
/boot_out.txt
/code.py
/lib
MicroPythonとは、ttyの名前、ファイル構成も違う。
screen で対話モード実行
python を実行するとよくあるように、serial console経由でPicoを対話モードで制御する。
REPL(read-eval-print-loop) というらしい。
screen の起動
screen command で試す。
$ screen /dev/tty.usbmodem14123301 115200
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 6.2.0 on 2021-04-05; Raspberry Pi Pico with rp2040
>>> print("ok")
ok
Lチカ
続けて、LEDのON/OFF
>>> from board import *
>>> import digitalio
>>> import time
>>>
>>> led = digitalio.DigitalInOut(GP25)
>>> led.direction = digitalio.Direction.OUTPUT
>>>
>>> led.value = True
(LED点灯)
>>> led.value = False
(LED消灯)
screen の終了
screen を終了したいときには、以下のcommand
CTRL+a + k
ampy でrun
sample code
test.py
import digitalio
from board import *
import time
led = digitalio.DigitalInOut(GP25)
led.direction = digitalio.Direction.OUTPUT
while True:
print("on")
led.value = True
time.sleep(0.5)
print("off")
led.value = False
time.sleep(1.0)
実行
$ ampy -p /dev/tty.usbmodem14123301 run test.py
on
off
on
off
on
off
on
printした値が表示されるので、debugに便利。