Pythonでマイコン
こんにちは、はじめまして。
この記事はPython Advent Calendar 2014 - Qiita 5日目の記事です。
ArduinoをPythonで動かすといった記事を書こうと考えていましたがやめて、
Pythonで動くマイクロコンピュータである「Micro Python」について書くことにしました。(机の中に眠っていた)
Micro Pythonとは?
Micoro Pythonはマイコン上で動作するように最適に実装されたプログラミング言語です。
ArduinoとかRasberry Piとは違い、完全にPythonだけでマイコンを動かすことができます!
Pycon JP 2014で、Micro Python で組み込み Pythonのセッションを聞いて、なんか楽しそうだなと思って試してみました。
Pyboard(28ユーロ!安い?)
というマイクロボードを使ってMicro Pythonを動かしていきます。
Pyboardには
- STM32F405RG マイクロコントローラ
- 1024KiB フラッシュ ROM と 192KiB RAM
- Micro USB コネクタ
- Micro SD カードスロット
- 4 LEDs (red, green, yellow and blue)
- 1 リセット、 1 ユーザスイッチ
- 3軸加速度センサ
- 各種入出力ピン等
等が搭載されています。
Windows、OS X、Linuxに対応しています。
Hello World(Lチカ)までの手順
さっそくお手元のPyboardを動かしていきます。
まず、pyboardをUSBケーブルPCに接続します。
次にMacの場合デスクトップに「PYBFLASH」というリムーバルディスクが表示されるので開きます。
中身に以下のようなファイルがあると思います。
- boot.py : Pyboardが接続された時に1番はじめに実行されるプログラム。Pyboardの様々な設定を記述するファイル。
- main.py : boot.pyの後に実行されるプログラム。メインのプログラムを記述するファイル。
- README.txt
- pybcdc.inf : Windowsのドライバ設定が記述されているファイル。
USBケーブルでpyboardと接続すると、boot.py -> main.pyの順で実行されます。
基本的にはこの中の「main.py」を編集していきます。
とりあえずマイコンのHello WorldであるLチカのプログラムを実行してみます。
main.pyに以下のスクリプトを記述します。
# main.py -- put your code here!
import pyb
pyb.LED(1).on()
pyb.LED(2).on()
pyb.LED(3).on()
pyb.LED(4).on()
書き終わったら取り外して、再度取り付けてみます。
4つのLEDがすべて光りました!
Micro Python REPL
Micro Pythonの面白い機能として、REPLが使えます。
REPLを使うことで、簡単にコマンドやコードのテストを行うことができます。
実際に試してみます。
Macの場合以下のコマンドを実行します。
screen /dev/tty.usbmodem*
すると見慣れたREPLの画面が立ち上がります。
Micro Python v1.3.3 on 2014-10-02; PYBv1.0 with STM32F405RG
Type "help()" for more information.
>>> print("hello pyboard!")
hello pyboard!
>>> pyb.LED(1).on()
>>> pyb.LED(2).on()
>>> 1 + 2
3
>>> 1 / 2
0.5
>>> 20 * 'py'
'pypypypypypypypypypypypypypypypypypypypy'
こんな感じでどんどん試していく事ができます。
普段はArduinoを使っていますが、Micro Pythonは開発も活発で、何より組み込み系の処理をPythonで書けるのが嬉しいです。