{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# MaixPy\n", "SipeedのMAIXは、RISC-V64 AIモジュール搭載の非常にユニークなCPUです。\n", "開発用ボードには、以下のラインナップがあります。\n", "\n", "- GO: MAIX、カメラ、液晶、アレイマイク、ステレオカメラ、ケースの全部入りキット\n", "- Bit Kit: MAIX、カメラ、液晶のキット\n", "- Dock: MAIX with WiFi、カメラ、液晶のキット\n", "\n", "この中でも、Bit KitはWiFiが付いていないので、技適の問題もないので国内でもすぐに\n", "利用できます。\n", "\n", "Bit Kitは、$20.9(+送料$14.0)ととてもお得です。\n", "- https://www.seeedstudio.com/Sipeed-MAix-BiT-for-RISC-V-AI-IoT-1-p-2873.html\n", "\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ボードの回路図情報\n", "販売されて日が浅いため、中国語以外の情報が少なく、以下のサイトにある回路図から\n", "読み取るしかありません。\n", "- http://dl.sipeed.com/MAIX/HDK/\n", "\n", "## MAIXのmicropytho(MaixPy)を動かしてみよう\n", "### バイナリファイルのダウンロード\n", "MaixPyの最新版は、以下のサイトからダウンロードできます。\n", "- https://github.com/sipeed/MaixPy/releases\n", "\n", "現在の最新版は、v0.3.0です。以下のURLからmaixpy_v0.3.0_full.binをダウンロードしてください。\n", "- http://dl.sipeed.com/MAIX/MaixPy/release/maixpy_v0.3.0/\n", "\n", "### ドキュメント\n", "MaixPyのドキュメントは以下のサイトにあります。\n", "- https://maixpy.sipeed.com/en/\n", "\n", "### K-Flashのダウンロード先\n", "バイナリファイルの書き込みには、k-Flashを使用します。\n", "\n", "Windowsユーザは、以下のファイルからF-Flashをダウンロードしてください。\n", "- https://kendryte.com/downloads/\n", "\n", "K-Flashを起動し、DeviceにMAiX BitのCOMポートを指定し、\n", "Firmwareにダウンロードしたバイナリファイル(maixpy_v0.3.0_full.bin)を指定して\n", "Flashボタンを押してください。\n", "\n", "\n", "\n", "LinuxとMac OSXユーザは、python3にpyserialをインストールし、\n", "gitコマンドでflash.pyをクローンします。\n", "\n", "```bash\n", "$ pip install pyserial\n", "$ git clone https://github.com/sipeed/kflash.py kflash\n", "```\n", "\n", "私の環境では、MAiX Bitのデバイスは、/dev/cu.wchusbserial1420\n", "なので、以下のようにしてmaixpy_v0.3.0_full.binを書き込みます。\n", "\n", "```bash\n", "$ python kflash.py -p /dev/cu.wchusbserial1420 -b 2000000 -B dan maixpy_v0.3.0_full.bin\n", "```\n", "\n", "### 動作確認\n", "Windowsユーザは、teraterm、Linux, MacOSXのユーザならpicocom等の通信ソフトでアクセスします。\n", "\n", "以下のようにMAiXPyの絵文字がでれば書き込みは成功です。\n", "\n", "```bash\n", "$ picocom -b 115200 /dev/cu.wchusbserial1420 \n", "picocom v2.2\n", "\n", "途中省略\n", "\n", " __ __ _____ __ __ _____ __ __\n", "| \\/ | /\\ |_ _| \\ \\ / / | __ \\ \\ \\ / /\n", "| \\ / | / \\ | | \\ V / | |__) | \\ \\_/ /\n", "| |\\/| | / /\\ \\ | | > < | ___/ \\ /\n", "| | | | / ____ \\ _| |_ / . \\ | | | |\n", "|_| |_| /_/ \\_\\ |_____| /_/ \\_\\ |_| |_|\n", "\n", "Official Site : https://www.sipeed.com\n", "Wiki : https://maixpy.sipeed.com\n", "\n", "MicroPython v0.3.0 on 2019-04-19; Sipeed_M1 with kendryte-k210\n", "Type \"help()\" for more information.\n", ">>> \n", "```\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## プログラミング環境\n", "micropythonのプログラミングには、mu-editorが便利です。\n", "MaixPyの他、exp32やmicro:bitもサポートしています。\n", "\n", "### mu-editorのダウンロード\n", "mu-editorは、以下のサイトからダウンロードできます。\n", "お使いのOSに合わせてダウンロードしてください。\n", "\n", "- https://codewith.mu/en/download\n", "\n", "### Lチカに挑戦\n", "定番のLチカをmu-editorを使って試してみましょう。\n", "\n", "MAiXのFlashにプログラムを保存することも可能ですが、\n", "転送ボタンの動作が不安定なので、MAiX BitにSDカードを\n", "挿入して、そちらにプログラムを保存することにします。\n", "\n", "mu-editorから「新規」ボタンを押して、以下のソースを入力「実行」ボタンを押下します。\n", "\n", "```python\n", "import utime\n", "from Maix import GPIO\n", "from board import Board_Info\n", "from fpioa_manager import *\n", "\n", "board_info = Board_Info()\n", "\n", "fm.register(board_info.LED_R, fm.fpioa.GPIO1)\n", "\n", "led_r = GPIO(GPIO.GPIO1, GPIO.OUT)\n", "\n", "for i in range(20):\n", " led_r.value(not led_r.value())\n", " utime.sleep_ms(1000)\n", "\n", "fm.unregister(board_info.LED_R, fm.fpioa.GPIO1)\n", "```\n", "\n", "\n", "\n", "\n", "MAiX Bitに搭載されたRBG LEDの赤が点滅すれば成功です。\n", "\n", "\n", "\n", "\n", "### ファイルの転送\n", "SDカードにスクリプト(blink.py)を転送し、それを実行するこもできます。\n", "\n", "mu-editorの「ファイル」ボタンを押し、転送したファイルを\"Files on your device:\"に\n", "ドラッグしてください。\n", "\n", "ファイルが転送されたら、再度「ファイル」ボタンを押し、編集画面に戻り、\n", "次に「REPL」(インタラクティブモード)を押し、\">>>\"のプロンプトが表示されたら、\n", "以下のコマンドを入力してください。\n", "\n", "もし、スクリプトが動かない場合には、一連の処理を関数で定義し、importの後に関数を呼び出すようにすると、\n", "上手く動きます。\n", "\n", "```python\n", "os.chdir('/sd/')\n", "import blink\n", "```\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 顔認識の例題\n", "Lチカが上手く動いたら、カメラとLCDをBitに接続して、顔認識のスクリプトを\n", "実行してみましょう。\n", "\n", "\n", "\n", "以下のスクリプトを入力し、「実行」ボタンを押してください。\n", "\n", "顔が認識されるその範囲がREPLのコンソールに表示され、LCDには水色の矩形で\n", "表示されます。\n", "\n", "```python\n", "import sensor\n", "import image\n", "import lcd\n", "\n", "def face_detect():\n", " lcd.init()\n", " sensor.reset()\n", " sensor.set_pixformat(sensor.RGB565)\n", " sensor.set_framesize(sensor.QVGA)\n", " sensor.run(1)\n", " face_cascade = image.HaarCascade(\"frontalface\", stages=100)\n", " while True:\n", " img=sensor.snapshot()\n", " objects = img.find_features(face_cascade, threshold=1.00, scale=1.1)\n", " for r in objects:\n", " img.draw_rectangle(r,color=(0,255,255))\n", " print(r)\n", " lcd.display(img)\n", "\n", "face_detect()\n", "```\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sipeed Maix BiTのピン配置\n", "Sipeedのサイト内容では、ピン配置がよく分かりません。\n", "\n", "- https://maixpy.sipeed.com/en/hardware/bit.html\n", "\n", "以下に、Bitの回路図とboardinfoからBitの各ピンに割り当てられた機能を整理しました。\n", "\n", "\n", "\n", "\n", "## MaixPyの環境を準備する\n", "MaixPyをソースからコンパイルするには、大文字・小文字を区別するファイルシステムが必要なため、\n", "dockerのUbuntu環境でMaixPyの開発を構築しました。\n", "\n", "以下の手順でイメージ(約2GB)をダウンロードし、作業ディレクトリから起動してください。\n", "maixpyのbashが起動します。\n", "\n", "```bash\n", "$ docker run -v `pwd`:/home/maix/workspace -i --name maixpyenv -t takepwave/maixpyenv\n", "```\n", "\n", "再度maixpyenvで作業をするには、docker execコマンドを使用します。 起動時に指定したmaixpyenvと名前で実行プロセスを指定します。\n", "\n", "```bash\n", "$ docker exec --user maix -it maixpyenv /bin/bash\n", "```\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }