« PyPortalにCircuitPythonをインストールする | トップページ | Adafruit-Feather-M4-ExpressにCircuitPythonをインストールする »

2020年5月24日 (日)

GRAND-CENTRAL-M4-EXPRESSにCircuitPythonをインストールする

2020/5/24

GRAND CENTRAL M4 EXPRESS CircuitPython Install

GRAND CENTRAL M4 EXPRESS CircuitPython Installl

概要

以下のADAFRUIT-GRAND-CENTRAL-M4-EXPRESSにCircuitPythonをインストールする方法について記載する。
以降、ADAFRUIT-GRAND-CENTRAL-M4-EXPRESSをGCM4とする。
(以下、ホストPCとしてはubuntuを想定している)

ADAFRUIT GRAND CENTRAL M4 EXPRESS

事前準備

(1)picocomのインストール

sudo apt-get install picocom

bootloader mode

GCM4にfirmwareを書き込めるモードを「bootloader mode」といい、このモードでは、USBストレージとしてGCM4BOOTが現れる。 GCM4に事前に、どんなプログラムが書かれていたかで、やり方が異なる。 arduinoのプログラムかCircuitPythonのプログラムが書き込まれている場合、resetをdouble-clickのように2度押すと このモードに入りUSBストレージとしてGCM4BOOTが現れる。その他の場合、resetを1度押すと、このモードに入る。

bootloader update

以下の手順でbootloaderをアップデートする:

# download wget https://github.com/adafruit/uf2-samdx1/releases/download/v3.10.0/update-bootloader-grandcentral_m4-v3.10.0.uf2 # GCM4をホストPCにUSB接続して、リセットを2度押して、bootloader-modeに入る。 # このモードに入ると、GCM4BOOTのディレクトリが現れる。 # ファイルをドラッグ&ドロップするか、以下のコマンドを実行してファイルをコピーする cp update-bootloader-grandcentral_m4-v3.10.0.uf2 /media/USER_NAME/GCM4BOOT/ # ファームウェアの書き込みが実行されて、完了後、GCM4BOOTが現れるまで待つ

「USER_NAME」は実際の環境に合わせること。

CircuitPythonの書き込み

以下の手順でCircuitPythonを書き込む:

wget https://downloads.circuitpython.org/bin/grandcentral_m4_express/en_US/adafruit-circuitpython-grandcentral_m4_express-en_US-5.3.0.uf2 # ファイルをドラッグ&ドロップするか、以下のコマンドを実行してファイルをコピーする cp adafruit-circuitpython-grandcentral_m4_express-en_US-5.3.0.uf2 /media/USER_NAME/GCM4BOOT/ # ファームウェアの書き込みが実行されて、完了後、CIRCUITPYが現れるまで待つ

「USER_NAME」は実際の環境に合わせること。

REPL

次にpicocomを使ってREPLに入る。

以下、通信(REPL)例:

$ picocom /dev/ttyACM0 -b115200 Adafruit CircuitPython 5.3.0 on 2020-04-29; Adafruit Grand Central M4 Express with samd51p20 >>> import os >>> os.uname() (sysname='samd51', nodename='samd51', release='5.3.0', version='5.3.0 on 2020-04-29', machine='Adafruit Grand Central M4 Express with samd51p20') >>> >>> import gc >>> gc.collect() >>> gc.mem_free() 222976 >>> >>> >>> >>> help('modules') __main__ busio microcontroller storage _os collections micropython struct _pixelbuf digitalio neopixel_write supervisor _time displayio network sys analogio errno os terminalio array fontio ps2io time audiobusio framebufferio pulseio touchio audiocore frequencyio random ulab audioio gamepad re usb_hid audiomixer gc rgbmatrix usb_midi audiomp3 i2cslave rotaryio wiznet bitbangio io rtc board json samd builtins math socket Plus any modules on the filesystem >>> >>>

mpy library install

以下の手順でmpyライブラリをインストールする:

wget https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/download/20200522/adafruit-circuitpython-bundle-5.x-mpy-20200522.zip unzip adafruit-circuitpython-bundle-5.x-mpy-20200522.zip cd adafruit-circuitpython-bundle-5.x-mpy-20200522 # ドラッグ&ドロップか、以下を実行して、libの内容をCIRCUITPY/libにコピーする cp -r lib /media/USER_NAME/CIRCUITCPY/lib # 実際に使用するライブラリだけが必要になるが、容量に余裕があるので、全部コピーする # 将来、容量が不足した不要なライブラリを削除すること

「USER_NAME」は実際の環境に合わせること。

サンプル・プログラム

CGM4_SD_tempe_log.py

import time import board import digitalio import microcontroller # make sdcard effective import adafruit_sdcard import busio import storage spi = busio.SPI(board.SD_SCK, board.SD_MOSI, board.SD_MISO) cs = digitalio.DigitalInOut(board.SD_CS) sdcard = adafruit_sdcard.SDCard(spi, cs) vfs = storage.VfsFat(sdcard) storage.mount(vfs, "/sd") led = digitalio.DigitalInOut(board.D13) led.switch_to_output() try: with open("/sd/temperature.txt", "a") as fp: while True: temp = microcontroller.cpu.temperature fp.write('{0:f}\n'.format(temp)) print('{0:f}'.format(temp)) fp.flush() led.value = not led.value time.sleep(1) except OSError as e: delay = 0.5 if e.args[0] == 28: delay = 0.25 while True: led.value = not led.value time.sleep(delay)

REPLで「import GCM4_SD_tempe_log」で実行すると、ボード上のSDにCPU温度のログを残す。無限ループになっているので、Control-Cで止める必要がある。

Performance Test

performanceCircuitPython.py

# Peformace Test for 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: 445404

参照URL

Adafruit Grand Central M4 Express PINOUTS
Adafruit Grand Central M4 Express Overview

Build CircuitPython
Adding Frozen Modules

Adafruit CircuitPython API Reference(v5.x)

CircuitPython Essentials
Example Code

以上

|

« PyPortalにCircuitPythonをインストールする | トップページ | Adafruit-Feather-M4-ExpressにCircuitPythonをインストールする »

linux」カテゴリの記事

CircuitPython」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« PyPortalにCircuitPythonをインストールする | トップページ | Adafruit-Feather-M4-ExpressにCircuitPythonをインストールする »