micropythonを始めよう(ESP8266編)
この記事は Python Advent Calender 10日目の記事です。
micropythonは以前のAdvent Calender*1やPycon JP*2でも紹介されていましたが、改めて紹介したいと思います。
・micropythonとは
もともとPythonをマイコンで動かそうとKickstarterで始まった移植プロジェクトです。その結果としてソースはgithubに、ターゲットとしてPyboardという商品が発売されています。
PyboardにはSTM32という32bitのARMマイコンが使われています。Pyboardは日本では発売されていませんが、秋月電子で販売されている同じ系統のSTM32のマイコンボードで動かすことが可能です。
micropython用に2つ購入済みですが、現時点でまだやっていません。
STM32マイコンでmicropythonを動かす方法はInterfaceの10月号で記載されています。
micropythnに自作モジュールを組み込む方法も載っていて大変有用です。
micropythonは基本的にPython3と互換ですが、モジュールやライブラリは同じではありません。ドキュメントを参照して動かしていくことになります。
Overview — MicroPython 1.8.6 documentation
・ESP8266
そんなmicropythonですが今年の初め頃からKickstarterでさらにESP8266への移植が始まりました。プロジェクトは成功しソースはgithubで公開されています。
ESP8266はwifiチップを搭載した32bitマイコンです。日本で使用できるのは技適を取得したESP-WROOM-002という型番になります。
micropython on ESP8266は自分でコンパイル環境を構築しビルドして動かす状況が続いていましたが、今年の夏頃から公式ページからダウンロード可能になりましたの。
これをESP8266に書き込むことで簡単にmicropythonを実行することが可能になりました。
しかしながらmicropython on ESP8266は技適の問題があります。スイッチサイエンスさんが言及されているようにmicropythonのファームウェアを書き込むことは認証に影響を及ぼす可能性があります。*3
これから試される場合は自己責任でお願い致します。
・Let's Try
まずはESP8266(ESP-WROOM-002)と必要なものを入手します。
USBシリアル変換モジュール、3v3の3端子レギュレータ、10KΩの抵抗、ブレッドボード、ジャンパ線等を用意します。
ブレットボードにESP-WROOM-002を挿せるようにするためにはんだ付けを行います。フラックスを塗った後テープでESP-WROOM-002を仮止めして専用のピッチ変換基盤にはんだ付けをします。
はんだ付けができたら配線をします以下のように接続すればOKです。
- 3v3 → 3v3
- EN → 10K抵抗で3v3
- IO15 → 10K抵抗でGND
- IO2 → 10K抵抗で3v3
- IO0 → 10K抵抗で3v3
- RST → 10K抵抗で3v3
- TXD → RXD
- RXD → TXD
- GND → GND
配線が出来たらArudino IDEのシリアルモニタで開いてみましょう。
ATという文字を送信しOKが帰ってくれば配線は合っています。
配線が正しければESP8266用のmicropythonのファームウェアを書き込みましょう。
micropythonのダウンロードページに行き最新のファームウェアをダウンロードします。
ダウンロードしたら書き込みツールで書き込みます。windowsならFlash Download Tools 、macやLinuxならesptoolで書き込みます。
自分はwindowsで書き込みました。
書き込みが完了したらシリアルモニタを開くと対話形式でmicropythonを実行できます。
定番のLチカです。
http://docs.micropython.org/en/latest/esp8266/esp8266/quickref.html#pins-and-gpio
machineモジュールを使用します。
>>>import machine
>>>pin = machine.Pin(14, machine.Pin.OUT)
>>>pin.high()
>>>pin.low()
ESP8266はwifiにつながるのでsocketモジュールを使用してHTTP通信が可能です。
http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_tcp.html
このようにslackにメッセージを飛ばすことも可能です。
・micropythonしません?
今までマイコン動かすのはC言語やArudinoならC++ライクなスケッチが主でした。
普段Pythonをお使いの皆様でしたら違和感なくmicropythonに入っていけるのではないでしょうか。
PythonのみでIoTシステムを作れる日もそう遠くないかもしれません。
来年はmicropython Advent Calenderをぜひやりたいですね。