Trinket M0を制御したい!(タッチでLチカ、REPLからLチカ)
概要
Trinket M0は、Adafruit社の小型Arduino互換マイコンボードである。
PCに接続すると、入力デバイス(HID)として認識され、またTrinketの持つストレージはPC側の外付けドライブとして認識されます。
目標
- Trinket M0の開発環境を整える
- Trinket M0単品でLチカを行う
- PCからの操作で、Trinket M0上のLEDをチカチカさせる
※Lチカとは、Ledランプを点灯・消灯させることです。
材料
- PC(Windows10をベースにします)
- Tinker M0 (約1,400円)
- USBケーブル(A-MicroB) データ通信と電源供給ができるモノ
1.環境構築
1-1.PC上の準備
1-1.PC上の準備
以下のソフトウェアをインストールします
- Mu Editor
https://codewith.mu/
メモ:
Mu Editorは、Pythonコードエディタとシリアル通信の機能を持ちます。
通常、テキストを編集しファイルへ書き出す際、書き込みバッファの影響により、ファイルの更新タイミングが変わる場合がありますが、
Mu Editorでのファイルの書き込みは、その時点で必ずファイルの出力が保証されるとのことです。
1-2.Tinket M0をPCと接続する
環境構築は以上で完了です。
Trinket M0をPCに接続すると、PC上に以下のドライブが見えます。・・・①
※初期状態では、boot.pyは存在しません。
メモ:
Trinket M0の起動時は、以下の順番でコードが実行されます。
1. boot.py
2. code.py or main.py
コードは、code.pyに記述する方が良いようです。
2.Tinket M0のアップデート
購入時点では、Tinket M0に搭載されているCircuitPythonのバージョンが古いため、Updateを行います。
2-1.ファイルをダウンロード
以下から最新のCircuitPythonをダウンロードします。
https://circuitpython.org/board/trinket_m0/
adafruit-circuitpython-trinket_m0-ja-7.0.0.uf2 ・・・②
(この時点では、CircuitPython 7.0.0でした(2021/10/14時点))
2-2.TRINKETBOOTフォルダを開く
PCにTinket M0が接続されている状態で、リセットボタンを二回押します。
押下後、PCから見えるフォルダは、以下の状態になります。・・・③
2-3.CircuitPythonのアップデート
②のファイルを、③のTRINKETBOOTドライブにコピーします。
コピーが完了後、自動的に再起動され、①のウィンドウが表示されます。
2-4.libのアップデート
CircuitPython本体のlibフォルダ配下のライブラリバージョンが一致しない場合、
TrinketM0は、code.py実行時にバージョン差異エラーが発生します。
以下から対象のライブラリをダウンロードします。
https://circuitpython.org/libraries
今回は、「Bundle for Version 7.x」をダウンロードし、PC上で展開します。・・・④
必要となるファイル(更新するファイル)は以下となります。
CIRCUITPYドライブ
\lib
\adafruit_hid
\adafruit_dotstar.mpy
\adafruit_pixelbuf.mpy
\neopixel.mpy
\adafruit_hid\__init__.mpy
\adafruit_hid\keyboard.mpy
\adafruit_hid\keyboard_layout_us.mpy
\adafruit_hid\keycode.mpy
\adafruit_hid\mouse.mpy
④で展開したファイル群から、上記と一致するファイルを探し、CIRCUITPYドライブのファイルにコピー・上書きします。
以上で、プログラムが実行できる状況になります。
メモ:
mpyとは、MicroPythonにてpyファイルをプリコンパイルした状態のファイルである。
mpyファイルは、コード上からimportすることが可能。
実行環境のバージョンと一致するものを利用する必要がある。
http://docs.micropython.org/en/v1.12/reference/mpyfiles.html
メモ:
Trinket M0の初期サンプルファイルは以下からダウンロードできます。
https://learn.adafruit.com/adafruit-trinket-m0-circuitpython-arduino/downloads
「Default CircuitPython files included v2」
libフォルダ配下のmpyバージョン差異に注意が必要。
3.Lチカ実験
3-1.「タッチでLチカ」
TrinketM0の3番ピンを触ると、赤色LEDが点灯するコードとなります。
import board
from digitalio import DigitalInOut, Direction, Pull
from analogio import AnalogOut, AnalogIn
import touchio
# Built in red LED
led = DigitalInOut(board.D13)
led.direction = Direction.OUTPUT
# Capacitive touch on D3
touch = touchio.TouchIn(board.D3)
while True:
# use D3 as capacitive touch to turn on internal LED
if touch.value:
print("D3 touched!")
led.value = touch.value
3番ピンを触ると、左上の赤色LEDが点灯します。
また、Mu Editorのシリアルボタンを押下し、REPLの表示を見ると、D3 touched!が出力されている事が分かります。
3-2.「REPLからLチカ」
PC上のREPL上(コンソール)から文字を入力し、赤色LEDの制御を行います。
Trinket M0上、REPLからの入力は、supervisorを用いることでバイト取得が可能です。
import board
from digitalio import DigitalInOut, Direction, Pull
import supervisor
# Built in red LED
led = DigitalInOut(board.D13)
led.direction = Direction.OUTPUT
red_led = False
while True:
if supervisor.runtime.serial_bytes_available:
value = input()
if value == "on":
red_led = True
elif value == "off":
red_led = False
led.value = red_led
2-1.code.pyを実行中に、REPLから「on」と文字を入力しエンターを押下する。
まとめ
以上、Trinket M0上でのLチカと、PC上のコンソール(REPL)からのLチカを実施した。
実機を手に入れて、二日程度でここまで実施することが出来た。
このデバイスは小型かつ軽量であり、開発する上でのPCとの接続や動作確認の煩わしさが無く、開発環境も整っている。
全体的なバランスが良く、大変興味深い製品である。
次回は、Trinket M0を使って、もう少し複雑な事にチャレンジしてみたいと考える。
参考
- Tinket M0製品/チュートリアル (https://learn.adafruit.com/adafruit-trinket-m0-circuitpython-arduino)
- Mu Editor (https://codewith.mu/)
- CircuitPython Trinket M0用(https://circuitpython.org/board/trinket_m0/)
- CircuitPython Libraries (https://circuitpython.org/libraries)
Author And Source
この問題について(Trinket M0を制御したい!(タッチでLチカ、REPLからLチカ)), 我々は、より多くの情報をここで見つけました https://qiita.com/akrian/items/a5e079a016564789ba69著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .