LoginSignup
6
2

More than 1 year has passed since last update.

MycroPythonでCircuitPythonのライブラリを使う

Posted at

RaspberryPi PICOで試してみました

素直にCircuitPythonを使えば良いのでは?
との疑問もありますが…
・将来的には割り込みやThreadingにも手を出したい
・でもいちいち外部接続デバイスのドライバを書くのは面倒くさい
良いとこ取りができるのではという期待が有ります。
CircuitPythonとMycroPythonの比較は本家の情報にあたるのが一番です.
https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/micropython-or-circuitpython

1. 環境セットアップ -- Windows10です --

(1) まずはThonnyをインストール

image.png

(2) PICOにMicroPythonをインストール

PICOのBOOTSELスイッチを押した状態でUSBケーブルをPCに接続しThonnyからMicroPythonをインストール
(この辺りは豊富で詳しい情報があちこちに有りますのでそちらを参照して下さい)
image.png
オンボードLEDで起動が確認できました。
image.png

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で右クリックするとメニューがでます)です。
image.png
今回は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ディレクトが出来ています。
image.png

3.Adafruit CircuitPythonライブラリの導入

こちらからBundle Version pyをダウンロードして適当なディレクトリに展開します。
MicroPythonではmpyではなくてpyを使用する必要がああります
https://circuitpython.org/libraries
Thonnyを使って必要なライブラリをPICOのlibディレクトリにアップロードします。
ここでもフラッシュの容量に気を付けましょう

4.AM2320ライブラリで確認

本家WEBにはBME280ライブラリの例が有りますが、物を持ってないのでたまたま手元にあったAM2320を使って動作確認を行いました。
image.png

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

Thonnyから実行させるとこんな感じです
image.png

5.少し残念なこと

全てのAdafruit CircuitPythonライブラリが使える訳ではなさそうです。
現時点ではNeoPixelsはnot supportでした。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2