#1 SIPEED Maixduinoについて
IoTを手軽に実現できるものとして、SIPEEDのMaxduinoを使った実験をしてみたいと思います。まずは、ファームウェアのインストールからはじめて、Lチカ(LEDの点滅)までやっています。。Maixduino自体は秋葉原などに行けば、四千円程度で入手可能な小型コンピュータであり、カメラと小型ディスプレイも付属しているので、IoTを用いた様々なプロトタイプ実験が可能です。Pythonをやって目に見える形でプログラミングの楽しさを知りたい方にはおすすめです。なお、以下の実践はすべて自己責任でお願いします。
#1 Maixduinoへのファームウェアインストール
まずは、SIPEEDのGithubからファームウェアの書き込みソフトKflashをダウンロードします。私の場合はMac環境なので、kflash_gui_v1.6.5_2_macOS.dmgをダウンロードしてインストールします。
次に、Maixduinoにインストールするファームウェアをダウンロードします。SIPEEDのファームウェアページにこれまでのファームウェアのリリース一覧があるので、ここでは一番新しいバージョンをダウンロードします。
その後、以下の画像のようにKflashを設定し、Downloadを押すとファームウェアのインストールが始まります。
#2 MaixPy(IDE)のインストールとアクセス
Arduino上で走らせるPythonプログラムを開発するための統合開発環境をインストールします。MaixPyとよばれるソフトウェアをここから入手します。
MaixPyをインストール、起動し、Maixduino上でMaixpyを起動してみます。Tools ー> Open Terminal ー> New Terminal を選択し、Connect to serial port でOK、usebserialのsipeed0を選択してOK、その後はOKを押していくと以下のシリアルターミナルが表示されます。もし、MAIXPYと表示されていなければ、更新マークをクリックしてみると接続されるはずです。以下の画面が表示されれば、無事、PCとMaixduiのボードが接続され、ボード上でPythonを動かす準備が整いました。
#3 まずはLEDを点滅させてみる(いわゆるLチカ)
まず、GPIOとMaixduinoのピンとの対応関係をソフトウェア的に設定してやる必要があるので、以下のサイトからconfig_maix_duino.pyをIDEに貼り付けて実行します。
コードは以下になります。
import json
config = {
"type": "duino",
"board_info": {
'BOOT_KEY': 16,
'LED_R': 13,
'LED_G': 12,
'LED_B': 14,
'WIFI_TX': 6,
'WIFI_RX': 7,
'WIFI_EN': 8,
'MIC0_WS': 19,
'MIC0_DATA': 20,
'MIC0_BCK': 18,
'I2S_WS': 33,
'I2S_DA': 34,
'I2S_BCK': 35,
'ESP32_CS': 25,
'ESP32_RST': 8,
'ESP32_RDY': 9,
'ESP32_MOSI': 28,
'ESP32_MISO': 26,
'ESP32_SCLK': 27,
'PIN0':4,
'PIN1':5,
'PIN2':21,
'PIN3':22,
'PIN4':23,
'PIN5':24,
'PIN6':32,
'PIN7':15,
'PIN8':14,
'PIN9':13,
'PIN10':12,
'PIN11':11,
'PIN12':10,
'PIN13':3,
}
}
cfg = json.dumps(config)
print(cfg)
try:
with open('/flash/config.json', 'rb') as f:
tmp = json.loads(f.read())
print(tmp)
if tmp["type"] != config["type"]:
raise Exception('config.json no exist')
except Exception as e:
with open('/flash/config.json', "w") as f:
f.write(cfg)
import machine
machine.reset()
Maixduinoのデータシートからピンのアサインメントを確認しておきます。以下のpngの画像を参照すれば、Maixduinoとの対応関係がよくわかると思います。
その上で、まずはMaixduinoとのコミュニケーションができて、PIN設定ができているか、IDEのターミナルから以下を実行してみます。
> from board import board_info
> board_info.PIN0
さて、いよいよLチカをさせるためのコードを書きます。 fm.register(<K210のIOの番号>,fm.fpioa.GPIO0)でデジタル出力をするピンを指定します。ここでは、Maixduinoのデジタル入力PINの1番、K210のIO番号では5番を設定することにします。(fm.register(5,fm.fpioa.GPIO0)と設定します。)
import utime
from Maix import GPIO
from fpioa_manager import fm
fm.register(5,fm.fpioa.GPIO0)
led_r=GPIO(GPIO.GPIO0,GPIO.OUT)
while True:
led_r.value(0)
utime.sleep_ms(100)
led_r.value(1)
utime.sleep_ms(100)
これをMaixPy上で実行して、こんな風になればOKです。
#最後に
お疲れ様でした。ここまでは準備運動のようなものなので、次回以降、応用的なことをやってみたいと思います。(本来は、人工知能で威力を発揮するボードなのですが、基礎から積み重ねていきましょう。)