MicroPythonで使うWio Terminal - MicroPython (ArduPy) を使う準備

MicroPythonで使うWio Terminal - 目次


MicroPythonの良いところ

MicroPythonはインタプリタなので、マイコンにファームウェアを書き込んでしまえば、あとはテキストエディタだけがあればプログラムを書いて実行できます。開発環境をインストールする手間がないのでちょっと使ってみるような場合に便利で、手軽に試してみることができます。

ちょうど 8bitパソコン(ホビーパソコン)の BASICのような感じで使うことができます。ソースコードをテキストファイルに書いて実行することもできるし、対話モード (REPL) で一行ずつ入力して実行することもできる。ちょっと関数の動作を確かめてみるために1行だけ書いて実行してみることもできる。

最近のマイコンは1,000円以下で買えるような安価なものでも、32bitで 100MHz以上の速度で動作してとても高速なので、インタプリタでも速度が遅くて困ることは少なくなりました。

ESP32や Raspberry Pi Picoでも MicroPythonが使えるので、一度覚えるとほかのマイコンでも同じように利用できるのも良い。


MicroPython のインストール

seeed studioの ArduPy Get Startedにガイドがあるので、これを見ながら作業しました。Wio Terminalは、PCにUSBで接続するとUSBメモリとして認識するので、ファームウェアをドラッグ&ドロップするだけの簡単な作業です。


STEP.1 ブートローダーに入る

  • USBケーブルで Wio TerminalをPCに接続する
  • Wio Terminalを「ちょんちょん」と素早く2回リセットしてブートローダに入る
  • Wio Terminalが「Arduino」という名前のUSBメモリとして認識される


STEP.2 ArduPy UF2 ファームウェアをダウンロードする

  • ArduPy Get Started STEP.2 Download ArduPy UF2 Firmwareの For Wio Terminalのリンクからファームウェアをダウンロードする


STEP.3 ArduPy ファームウェアを Wio Terminalに書き込む

  • Wio Terminalが「Arduino」という名前のドライブとして認識されているので、ダウンロードしたファームウェアをドラッグ&ドロップして書き込む(コピーする)
  • 自動的にWio Terminalがリセットされ、MicroPythonが走り出す
  • Wio TerminalのUSBドライブの名前が「ARDUPY」に変わる


STEP.4 簡単なプログラムを動かしてみる(Lチカ)

from machine import Pin, Map
import time
 
LED = Pin(Map.LED_BUILTIN, Pin.OUT)
 
while True:
    LED.on()
    time.sleep(1)
    LED.off()
    time.sleep(1)

動作テストでLEDを点滅させるだけの簡単なプログラムを動かしてみます。

上のコードを好きなテキストエディタで入力(コピペ)して Wio TerminalのUSBドライブに main.py というファイル名で保存します。


すると、Wio TerminalのUSBコネクタ右側にある青色LEDが点滅します。

動作確認OKです。これで Wio Terminalで MicroPythonを使う準備は完了です。


便利に使う

ファイル名

main.py というファイル名にしておくとファイルが更新(保存)されたときに、自動的にプログラムを実行してくれるので IDEを使わない場合に便利です。

boot.py というファイル名にしておけば、Wio Terminalの電源を入れた時に自動的にプログラムが実行されます。


対話モード (REPL)

Wio Terminalの comポートにターミナルで接続すると、対話モード (REPL) で MicroPythonを使うこともできます。


Thonny

Python IDEの Thonnyを使うと、Wio Terminalにファイルを転送したり、プログラムを実行したり停止させたり、REPLで使ったりできて便利です。


設定では、インタプリタ(MicroPython (generic))と Portだけ指定しておけばうまく動いています。

Visual Studio Codeもエディタとして便利に使えるのですが、自分の環境では Wio Terminal用の拡張がうまく動かなくてデバッグはできませんでした。


wio Terminalで使えるモジュールの調べ方

>>> help("modules")
__init_           gc                os                uhashlib
__main__          hashlib           random            uheapq
arduino           heapq             select            uio
ardupy            io                sys               ujson
array             json              time              uselect
binascii          machine           ubinascii         uzlib
builtins          math              ucollections      zlib
collections       micropython       uctypes
Plus any modules on the filesystem

help("modules") でimportできるモジュール一覧


>>> import io
>>> help(io)
object <module 'uio'> is of type module
  __name__ -- uio
  open -- <function>
  FileIO -- <class 'FileIO'>
  StringIO -- <class 'StringIO'>
  BytesIO -- <class 'BytesIO'>


>>> help(io.FileIO)
object <class 'FileIO'> is of type type
  read -- <function>
  readinto -- <function>
  readline -- <function>
  readlines -- <function>
  write -- <function>
  flush -- <function>
  close -- <function>
  seek -- <function>
  tell -- <function>
  __del__ -- <function>
  __enter__ -- <function>
  __exit__ -- <function>

help(io.FileIO) とすればFileIO内をさらに表示できる


>>> from machine import LCD
>>> lcd = LCD()
>>> dir(lcd)
['__enter__', '__exit__', 'color', 'color16to8', 'color565', 'datum', 'deinit'
, 'drawCentreString', 'drawChar', 'drawCircle', 'drawCircleHelper', 'drawEllipse'
, 'drawFastHLine', 'drawFastVLine', 'drawFloat', 'drawLine', 'drawNumber', 'drawPixel'
, 'drawRect', 'drawRightString', 'drawRoundRect', 'drawString', 'drawTriangle'
, 'fillCircle', 'fillCircleHelper', 'fillEllipse', 'fillRect', 'fillRoundRect'
, 'fillScreen', 'fillTriangle', 'fontHeight', 'getCursorX', 'getCursorY', 'getPivotX'
, 'getPivotY', 'getRotation', 'getTextDatum', 'height', 'invertDisplay', 'pushImage'
, 'setCursor', 'setPivot', 'setRotation', 'setTextColor', 'setTextDatum', 'setTextFont'
, 'setTextPadding', 'setTextSize', 'setTextWrap', 'textWidth', 'width']

dir(lcd)のようにすれば、help()では出て来ない変数(lcd.heightとか lcd.width)も出てくる。


役立つ資料


ArduPy-aip

ArduPy Get Startedに、Arduinoのライブラリを MicroPythonで使えるようにしたり、プログラムのデバッグに使ったりする aipをインストールするように書いてあるのですが、自分の環境では Windows 10でも、Ubuntuでもうまく動きませんでした。


MicroPython本家のファームウェア

MicroPython本家のダウンロードページにも、Wio Terminal用の MicroPythonがあって、頻繁に更新されているので ArduPyよりも新しいのですが、2022年6月時点ではサポートしている内蔵ハードウェアが少なくて ArduPyのほうが便利に使えました。


CircuitPython もあるよ

MicroPythonの使い方を調べていたら、Wio Terminal用の CircuitPythonがあるのを見つけました。CircuitPythonのダウンロードページで入手できます。

CircuitPythonは ArduPyよりも使える内臓ハードウェアが多くておすすめです。


MicroPythonで使うWio Terminal - 目次

このブログの人気の投稿

windowsで「インターネット接続の共有」の設定

月刊 I/O 記事リスト 1976~1989

X68000実機のROMを保存