Wio-TerminalにCircuitPythonをインストールする
2020/7/6
Wio Terminal CircuitPython Install
Wio Terminal CircuitPython Install
概要
以下のWio-TerminalにCircuitPythonをインストールする方法について記載する。 (最近、α版ではあるがCircuitPythonに対応したのでインストールしてみる) (ホストPCとしてはubuntuを想定している)
事前準備
(1)picocomのインストール
sudo apt-get install picocom
bootloader mode
Wio-Terminalにfirmwareを書き込めるモードを「bootloader mode」といい、このモードでは、USBストレージとしてarduinoディレクトリが現れる。 Resetボタンを2度素早く押すことにより、このモードに入る。
CircuitPythonの書き込み
以下の手順でCircuitPythonを書き込む:
wget https://downloads.circuitpython.org/bin/seeeduino_wio_terminal/en_US/adafruit-circuitpython-seeeduino_wio_terminal-en_US-6.0.0-alpha.1.uf2
# ファイルをドラッグ&ドロップするか、以下のコマンドを実行してファイルをコピーする
cp adafruit-circuitpython-seeeduino_wio_terminal-en_US-6.0.0-alpha.1.uf2 /media/USER_NAME/Arduino/
# ファームウェアの書き込みが実行されて、完了後、CIRCUITPYが現れるまで待つ
「USER_NAME」は実際の環境に合わせること。
動作確認(REPL)
以上、CircuitPythonのインストールが終わったので、picocomを使いWio-Terminalとシリアルで通信する。(REPL)
以下、通信(REPL)例:
$ picocom /dev/ttyACM0 -b115200
Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 6.0.0-alpha.1 on 2020-07-03; Seeeduino Wio Terminal with samd51p19
>>> import os
>>> os.uname()
(sysname='samd51', nodename='samd51', release='6.0.0', version='6.0.0-alpha.1 on 2020-07-03', machine='Seeeduino Wio Terminal with samd51p19')
>>> import gc
>>> gc.collect()
>>> gc.mem_free()
157856
>>> help('modules')
__main__ busio math sdcardio
_os collections microcontroller socket
_pixelbuf countio micropython storage
_time digitalio neopixel_write struct
analogio displayio network supervisor
array errno os sys
audiobusio fontio ps2io terminalio
audiocore framebufferio pulseio time
audioio frequencyio random touchio
audiomixer gamepad re ulab
audiomp3 gc rgbmatrix usb_hid
bitbangio i2cperipheral rotaryio usb_midi
board io rtc vectorio
builtins json samd wiznet
Plus any modules on the filesystem
>>>
benchmark
benchmark.py
import time
import board
from digitalio import DigitalInOut, Direction, Pull
import storage
import sys
#circuit python benchmark
print("\n---- CircuitPython Benchmark ----")
print("Verison: " + str(sys.implementation[1][0]) + "-" + str(sys.implementation[1][1])+"-"+str(sys.implementation[1][2]))
circuitpythonversion = str(sys.implementation[1][0]) + "-" + str(sys.implementation[1][1])+"-"+str(sys.implementation[1][2])
#GPIO
led = DigitalInOut(board.D13)
led.direction = Direction.OUTPUT
start = time.monotonic()
for i in range(0,100000):
led.value = True
led.value = False
print("GPIO on/off benchmark: ", time.monotonic()-start)
out = 0
start = time.monotonic()
for i in range(0,100000):
out= out+i+i
print("Integer sum: ", time.monotonic()-start)
out = 0
start = time.monotonic()
for i in range(0,100000):
out= out + i*i
print("Integer multi: ", time.monotonic()-start)
out=0.1
start = time.monotonic()
for i in range(0,100000):
out=out+i+0.1
print("Float sum: ", time.monotonic()-start)
out=0.1
start = time.monotonic()
for i in range(0,100000):
out=i*0.1*out
print("Float multi: ", time.monotonic()-start)
out=0.1
start = time.monotonic()
for i in range(0,100000):
out=i/0.1 + out
print("Float divide multi: ", time.monotonic()-start)
出力結果
picocom /dev/ttyACM0 -b115200
>>> import benchmark
---- CircuitPython Benchmark ----
Verison: 6-0-0
GPIO on/of>>> import test
---- CircuitPython Benchmark ----
Verison: 6-0-0
GPIO on/off benchmark: 2.65405
Integer sum: 3.53296
Integer multi: 4.71899
Float sum: 1.97998
Float multi: 2.0022
Float divide multi: 2.03687
>>>
f benchmark: 2.65405
Integer sum: 3.53296
Integer multi: 4.71899
Float sum: 1.97998
Float multi: 2.0022
Float divide multi: 2.03687
>>>
Performance Test
performanceCircuitPython.py
# Peformace Test CircuitPython
from time import monotonic_ns
def performanceTest():
endTime = monotonic_ns() + 10000000000 # 10 sec
count = 0
while monotonic_ns() < endTime:
count += 1
print("Count: ", count)
performanceTest()
出力結果(例):
Count: 370819
参照URL
Introducing the CircuitPython on Wio Terminal
Build CircuitPython
Adding Frozen Modules
Adafruit CircuitPython API Reference(v5.x)
CircuitPython Essentials
Example Code
以上