1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SiPEEDのMaixduino入門編(インストールからLチカまで)

Posted at

#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を押すとファームウェアのインストールが始まります。

スクリーンショット 2021-05-30 13.45.41.png

#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を動かす準備が整いました。

スクリーンショット 2021-05-30 14.15.06.png

#3 まずはLEDを点滅させてみる(いわゆるLチカ)

まず、GPIOとMaixduinoのピンとの対応関係をソフトウェア的に設定してやる必要があるので、以下のサイトからconfig_maix_duino.pyをIDEに貼り付けて実行します。

コードは以下になります。

config_maix_duino.py
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)と設定します。)

led_blink.py
  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です。

image.png

#最後に
お疲れ様でした。ここまでは準備運動のようなものなので、次回以降、応用的なことをやってみたいと思います。(本来は、人工知能で威力を発揮するボードなのですが、基礎から積み重ねていきましょう。)

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?