SPRESENSE用”CircuitPython”のビルド環境を作ろう!(CircuitPythonビルド編)
いよいよ SPRESENSE向け "CircuitPython" のビルドを行います!このシリーズの完結編になります。ここでは、CircuitPython のイメージをビルドし、SPRESENSEに書き込み、PythonコードによるSPRESENSE のLチカまで行います。

【STEP1】 MicroPython のビルド
最初に”CircuitPython”のベースとなっているクロスプラットフォーム向け "MicroPython" のビルドを行います。環境の設定を失敗していなければ何事もなく終わるはずです。
【STEP2】 CircuitPython のビルド
次にいよいよ SPRESENSE用の CircuitPython のビルドを行います。ここが少しハマるポイントですね。SPRESENSE用のコードはなんと、cxd56 ディレクトリ配下にあります。(grep すればすぐに見つけられますが)
SPRESENSEのプロセッサの名前は cxd5602 なので cxd56 ディレクトリにあるみたいです。これは普通分からないですよねぇ。
【STEP3】ブートローダのダウンロード(必要なひとのみ)
新たに購入した人や久しぶりにSPRESENSEを引っ張り出してきた人は、ブートローダーの更新を行う必要があります。すでに、Arduino Library や SDK で最新のブートローダーの書き込みを行っている人は必要ありません。
現在の最新のブートローダー V1.5.1 は次のURLにありますので、そこから "spresense-binaries-v1.5.1.zip" がダウンロードできます。(バージョンによってURLは異なります)
.png)
https://developer.sony.com/file/download/download-spresense-firmware-v1-5-001
ここでは仮に "C:\Users\Default\Downloads"にダウンロードしたと仮定します。
書き込みを行うために、ダウンロードしたブートローダのZIPファイルを "circuitpython/spresense-exported-sdk/firmware" に展開します。
【STEP4】SPRESENSEへイメージの書込み
ここで、PCに接続したUSBケーブルをSPRESENSEをメインボード側に挿します。

この時、COMの何番にSPRESENSEが接続されているか確認してください。ここでは、仮に"COM7"に接続されたとします。次のコマンドで、必要な人はブートローダーの書き込みと、CircuitPython イメージの書き込みが行えます。
Linuxですので、"COMxx"という名称ではハードウェアにアクセスできません。"/dev/ttySxx" と読み替えます。今回は "COM7" ですので "/dev/ttyS7" になります。これで CircuitPython の書き込みが完了しました。
【STEP5】PythonコードをSPRESENSEで動かす
USBケーブルを今度は拡張ボード側に挿しましょう。

すると、PCに新しく "CIRCUITPY:" というドライブが見えます。
.png)
そのドライブの中に code.py というものがありますので、次のようにコードを編集し保存します。
すると、あら不思議!コードを保存したとたんにLEDが光りだします。これはお手軽ですね!
ぜひ試してみてください!😉
(^^)/~



【STEP1】 MicroPython のビルド
最初に”CircuitPython”のベースとなっているクロスプラットフォーム向け "MicroPython" のビルドを行います。環境の設定を失敗していなければ何事もなく終わるはずです。
$ cd circuitpython
$ make -C mpy-cross
【STEP2】 CircuitPython のビルド
次にいよいよ SPRESENSE用の CircuitPython のビルドを行います。ここが少しハマるポイントですね。SPRESENSE用のコードはなんと、cxd56 ディレクトリ配下にあります。(grep すればすぐに見つけられますが)
... @circuitpython directory から ...
$ cd ports/cxd56
$ make BOARD=spresense
SPRESENSEのプロセッサの名前は cxd5602 なので cxd56 ディレクトリにあるみたいです。これは普通分からないですよねぇ。
【STEP3】ブートローダのダウンロード(必要なひとのみ)
新たに購入した人や久しぶりにSPRESENSEを引っ張り出してきた人は、ブートローダーの更新を行う必要があります。すでに、Arduino Library や SDK で最新のブートローダーの書き込みを行っている人は必要ありません。
現在の最新のブートローダー V1.5.1 は次のURLにありますので、そこから "spresense-binaries-v1.5.1.zip" がダウンロードできます。(バージョンによってURLは異なります)
.png)
https://developer.sony.com/file/download/download-spresense-firmware-v1-5-001
ここでは仮に "C:\Users\Default\Downloads"にダウンロードしたと仮定します。
書き込みを行うために、ダウンロードしたブートローダのZIPファイルを "circuitpython/spresense-exported-sdk/firmware" に展開します。
... @circuitpython/ports/cxd56 directory から ...
$ cd spresense-exported-sdk
$ mkdir firmware
$ cd firmware
$ cp /mnt/c/Users/Default/Downloads/spresense-binaries-v1.5.1.zip .
$ sudo apt install unzip
$ unzip spresense-binaries-v1.5.1.zip
$ cd ../..
【STEP4】SPRESENSEへイメージの書込み
ここで、PCに接続したUSBケーブルをSPRESENSEをメインボード側に挿します。
この時、COMの何番にSPRESENSEが接続されているか確認してください。ここでは、仮に"COM7"に接続されたとします。次のコマンドで、必要な人はブートローダーの書き込みと、CircuitPython イメージの書き込みが行えます。
... @circuitpython directory にて ...
SPRESENSEが「COM7」に接続されている前提
$ make BOARD=spresense SERIAL=/dev/ttyS7 flash-bootloader (必要な人のみ)
$ make BOARD=spresense SERIAL=/dev/ttyS7 flash
Linuxですので、"COMxx"という名称ではハードウェアにアクセスできません。"/dev/ttySxx" と読み替えます。今回は "COM7" ですので "/dev/ttyS7" になります。これで CircuitPython の書き込みが完了しました。
【STEP5】PythonコードをSPRESENSEで動かす
USBケーブルを今度は拡張ボード側に挿しましょう。

すると、PCに新しく "CIRCUITPY:" というドライブが見えます。
.png)
そのドライブの中に code.py というものがありますので、次のようにコードを編集し保存します。
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.LED0)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = True
time.sleep(0.5)
led.value = False
time.sleep(0.5)
すると、あら不思議!コードを保存したとたんにLEDが光りだします。これはお手軽ですね!
おっ、SPRESENSE で CircuitPython 動いた!Lチカ成功!
— よしのたろう (@Taro_Yoshino) May 7, 2020
CircuitPython on Spresense is working!! Blinking the LED0 is successful.
思ったよりも簡単だったな。拡張ボード必須というのがイマイチだけど。LTE-M拡張ボードで試してみたいな。#Spresense #CircuitPython #Adafruit pic.twitter.com/VKQcTOsqcU
ぜひ試してみてください!😉
(^^)/~

SONY SPRESENSE メインボード CXD5602PWBMAIN1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware

SONY SPRESENSE 拡張ボード CXD5602PWBEXT1
- 出版社/メーカー: スプレッセンス(Spresense)
- メディア: Tools & Hardware
この記事へのコメント
SPRESENSEが「COM7」に接続されている前提
$ make BOARD=spresense SERIAL=/dev/ttyS7 flash-bootloader (必要な人のみ)
$ make BOARD=spresense SERIAL=/dev/ttyS7 flash
の部分ですが
user@host:~/circuitpython$ make BOARD=spresense SERIAL=/dev/ttyS3 flash
make: *** ターゲット 'flash' を make するルールがありません. 中止.
でした。
user@host:~/circuitpython/ports/cxd56$ make BOARD=spresense SERIAL=/dev/ttyS3 flash
で成功しました。