no-image

Pythonで動くTrinket M0で遊んでみる(1)Lチカまで

Pythonでプログラミングできる小さなマイコン「Trinket M0」の使い方を紹介します。今回はLチカまでです。

Trinket

Trinket M0とは?

Trinket M0は、Adafruit製の小型Arduino互換ボードです。
とても小型でUSB経由でプログラムを書き込んで動かすことができます。

通常のArduinoボードはArduino IDEという専用の環境を使ってC言語で開発しますが、Tinket M0は、従来のArduino IDEでのプログラミングとは別に Python を使ったプログラミングにも対応しています。

よく使われるArduino UNOと比べるとIOが少ないのでGPIOをたくさん使うようなモノには使いにくい反面、ARM Cortex M0+ ベースなので省電力で高速動作でき、RAMやROMの容量も大きいので複雑なソフトウエアも動作させられそうです。

なにより国内でも 2018/11/03現在 ¥1447 (税込) という価格で買えるので、お手軽ですね。

今回のゴール

マイコンボードのHello WorldといえばLチカ!
今回は、Pythonを使ってLチカするところまでやってみます。

  1. Trinket M0 をアップデートする
  2. PythonでLチカするサンプルを書き込んでみる
  3. コードを見てみる

用意するもの

通常新しいボードのLチカを試そうとするとLEDや抵抗などの電子部品が必要だったりするのですが、Trinket M0には、オンボードで2つのLEDが搭載されているので不要です。

  • Trinket M0
  • USB通信ケーブル(USB AーUSB Micro B)
  • インターネットに接続できるPCとブラウザ、テキストエディタ

これだけでいけます!

筆者は古めのMacbook AirとChrome、Sublime Textを利用しています。

1. Trinket M0 をアップデートする

Trinket M0をUSBケーブルでPCに繋いでみましょう。
すると、下記のようなアイコンがデスクトップに現れるはずです。(Macの場合)

icon

CIRCUITPYという名前のディスクがマウントされた場合、Adafruit M0ではPythonで書かれたプログラムが動作しています。

買ったばかりのボードに書き込まれているファームウエアは古いので、最新の環境を利用するためにアップデートしましょう。

ここで、Trinket M0の「リセットスイッチ」を素早く2度(ダブルクリックみyたいに)押してください。

resetswitch

すると、デスクトップにマウントされたCIRCUITPYが一度消えて、今度はTRINKETBOOTがマウントされます。

icon2

これで、アップデートの準備OK。

続けて、下記サイトから最新のファームウエア(CircuitPython)をダウンロードしましょう。

CircuitPythonダウンロードサイト

最新版のファームウエアのバイナリは、様々なボード向けにリリースされています。
たくさんファイルがありますが、adafruit-circuitpython-trinket_m0-で始まるファイルが Trinket M0用です。こちらをダウンロードしましょう。

今回は、adafruit-circuitpython-trinket_m0-3.1.1.uf2 をダウンロードしました。

ダウンロードが終わったら、ダウンロードしたバイナリファイルをTRINKETBOOTにドラッグ&ドロップします。

Trinket M0の中央にあるカラーLEDが点滅したあとにTRINKETBOOTが消えてCIRCUITPYがマウントされたらアップデート完了です。

2. PythonでLチカするサンプルを書き込んでみる

さっそく、TrinketにLチカ(LEDを周期的に点灯したり消灯したりを繰り返す)プログラムを書き込んでみます。

下記コードをテキストエディタにコピーして、main.pyというファイル名で保存してください。

続けて、main.pyを、マウントされているCIRCUITPYにドラッグ&ドロップします。
上書きするか?確認されるので、上書きしてください。

これで、Trinket M0に先ほどのmain.pyが書き込まれました。
↓のようにUSBコネクタの隣の赤いLEDが点滅したら成功です!

Lチカ

3. コードを見てみる

どうして動いたのか!?を、それなりに理解するためコードを見てみましょう!(私もわからないので!)

3.1. モジュールのインポート

最初の部分でモジュールをインポートしています。

boardとかの意味、なんとなく予想つくけどリファレンスないの!?と探してみると、こちらにありました。

今回使ったのは、下記コアモジュールでした。

  • board ボードの物理ピンの定義
  • digitalio 基本的なデジタルIO機能
  • time 時間やタイミング関連の機能

3.2. GPIOの設定

次のコードでは、ボードのGPIOピンboard.D13(LEDが接続されている)を出力に設定しています。

Arduinoだと下記のようなコードになる部分ですね。

3.3. LEDの点滅・消灯

次のパート、while True:の永久ループの中で、GPIOboard.D13の電圧を 0.5秒おきに 3.3V→0V→3.3V→0V… と繰り返し設定して、そこに接続されたLEDを点滅させています。

Arduinoだと下記のようなコードになる部分です。

Arduinoのdelay()はミリ秒、time.sleep()は秒で指定するから間違えないようにしないと..

まとめ

今回は、Trinket M0を使ってLチカするコードをコピペで動かしてみました。
….コピペなので、簡単でしたが、今回初めてだったこともあって、リファレンスを探すのに少し時間がかかりました。

最後に今回記事を書くにあたって参考にさせていただいたURLを付けておきますので、ご興味のある方は是非 Trinket M0で遊んでみてください。(Adafruitの回し者じゃないよw)

最後まで、読んでいただきありがとうございました!

次回は、Trinket M0 に付いてるカラーLEDを光らせてみたいと思います!

参考URL

下記情報を参考にさせていただきました!貴重な情報公開ありがとうございます。