#RaspberryPi PICOで試してみました
素直にCircuitPythonを使えば良いのでは?
との疑問もありますが…
・将来的には割り込みやThreadingにも手を出したい
・でもいちいち外部接続デバイスのドライバを書くのは面倒くさい
良いとこ取りができるのではという期待が有ります。
CircuitPythonとMycroPythonの比較は本家の情報にあたるのが一番です.
https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/micropython-or-circuitpython
#1. 環境セットアップ -- Windows10です --
##(1) まずはThonnyをインストール
##(2) PICOにMicroPythonをインストール
PICOのBOOTSELスイッチを押した状態でUSBケーブルをPCに接続しThonnyからMicroPythonをインストール
(この辺りは豊富で詳しい情報があちこちに有りますのでそちらを参照して下さい)
オンボードLEDで起動が確認できました。
#2.Blinkaライブラリの導入
参照:本家
https://learn.adafruit.com/circuitpython-libraries-on-micropython-using-the-raspberry-pi-pico
参照:STEAM Tokyoさんによる日本語訳 Good Job!
https://steam-tokyo.com/rp-pico-micropython-cp-lib/
##(1) BlinkaおよびPlatformDetectをGitHubからダウンロード
各々最新リリースのSource Codeを持って来て.zipファイルを適当なディレトリに展開します
https://github.com/adafruit/Adafruit_Blinka/releases
https://github.com/adafruit/Adafruit_Python_PlatformDetect/releases
##(2) Thonnyのファイル転送機能を使って展開したsrcファイルをPICOへコピーします
コピー先はルートかlibディレクトリ(Thonny Files TABの Raspberry Pi Picoで右クリックするとメニューがでます)です。
今回はlibディレクトリにしました。
###1.ThonnyのFiles TABで Raspberry Pi Pico側のlibを右クリックしてFocus intoを選択
###2.同じくThis computer側でアップロードしたいファイルを選択して右クリックしUpload to /libでアップロード
###3.アップロードするのは
./Adafruit_Python_PlatformDetect-バージョン/adafruit_platformdetect 以下
./Adafruit_Blinka-バージョン/src 以下
しかし
Raspberry Pi Picoはフラッシュが2MBしかないので不要なファイルまでアップロードすると容量が不足します。
./Adafruit_Blinka-バージョン/src/adafruit_blinka/board/ 以下と
./Adafruit_Blinka-バージョン/src/adafruit_blinka/microcontroller/ 以下の不要なディレクトリとファイルは消去しました。
本家WEBには以下のように記載があります。ただしrp2040.pyは無くなっており代わりにrp2040ディレクトが出来ています。
#3.Adafruit CircuitPythonライブラリの導入
こちらからBundle Version pyをダウンロードして適当なディレクトリに展開します。
MicroPythonではmpyではなくてpyを使用する必要がああります
https://circuitpython.org/libraries
Thonnyを使って必要なライブラリをPICOのlibディレクトリにアップロードします。
ここでもフラッシュの容量に気を付けましょう
#4.AM2320ライブラリで確認
本家WEBにはBME280ライブラリの例が有りますが、物を持ってないのでたまたま手元にあったAM2320を使って動作確認を行いました。
##(1) 必要なAdafruit CircuitPythonライブラリをPICOにアップロード
adafruit_am2320.py
adafruit_bus_device/ ←ディレクトリごとアップロード
##(2) Exampleコードを実行
Adafruit CircuitPythonライブラリのexamplesにam2320_simpletest.pyが有ります。
ただしPICOではboard.I2C()が定義されていないようなのでbusioをimportしてbusio.I2C(board.GP1, board.GP0)としました。
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
import time
import board
import busio # use busio.I2C
import adafruit_am2320
# AM2320 pins from left t right
# 1: VDD
# 2: SDA
# 3: GND
# 4: SCL
# create the I2C shared bus
#i2c = board.I2C() # uses board.SCL and board.SDA
i2c = busio.I2C(board.GP1, board.GP0) # SCL, SDA
am = adafruit_am2320.AM2320(i2c)
while True:
print("Temperature: ", am.temperature)
print("Humidity: ", am.relative_humidity)
time.sleep(2)
#5.少し残念なこと
全てのAdafruit CircuitPythonライブラリが使える訳ではなさそうです。
現時点ではNeoPixelsはnot supportでした。