M5StackシリーズのATOM Liteを購入しました。今回は、MicroPythonをインストールして、インターネットにアクセスするとこまでやっていきます。
前回、RaspberryPi Picoを使って、RaspberryPi Zeroをソーラーパネルで駆動させる装置を作りましたが、その際、省電力ってメリット大きいと感じたので、この省電力であろうマイコンボードでWifi、Bluetoothを搭載、そして何よりMicroPythonが使える(これマスト)こいつを使ってみたくなりました。
■ MicroPythonのインストール
インストールは下記のサイトを参考にしました。
MicroPython的午睡(36) ThonnyでATOM Liteにインストール
https://jhalfmoon.com/dbc/2021/07/29/micropython的午睡36-thonnyでatom-liteにインストール/
スクショ付きで説明してくれているので、細かいことは上記サイトに任せて、要約だけ以下に書きます。
1. Thonnyのインストール
https://thonny.org
・最初はシンプルモードになっているので右上の「Switch to regular mode」をクリックして再起動
2. MicroPythonのダウンロード
https://micropython.org/download/esp32/
現時点で、最新である「v1.17 (2021-09-02) .bin」をダウンロードしました。
3. ATOM LiteをPC接続
・Windowsの認識が完了するのを待つ
4. MicroPythonのインストール
・Thonny起動
・「ツール」→「Option」→「インタプリタ」→インタプリタに「MicroPython(EPS32)」を選択
・ダイアログ右下の方「Install or update firmware」をクリック
・「Port」にそれらしきポートを選択、「Firmware」にダウンロードしたbinファイルを選択
・「インストール」で書き込み開始→100%になるまでワクワクして待つ
いやぁ簡単。とりあえずShellにhelp()と打って、Welcomeの表示を見てテンションを上げておきましょう。
■ MicroPythonでLチカ
ソース
import time import machine,neopixel pin = machine.Pin(27, machine.Pin.OUT) np = neopixel.NeoPixel(pin, 1) while True: np[0] = (0, 0, 0) np.write() time.sleep(1) np[0] = (0, 0, 255) #RGB np.write() time.sleep(1)
・保存→どこに保存するか聞かれるので「MicroPython device」を選択
・main.pyで保存(main.pyで保存すると起動時に自動実行される)
・実行→Lチカ
・Ctrl+Cで終了
Picoだと無限ループでも、ツールバーのStopを押したら止まりましたが、これだとCtrl+Cで止めるようです。
あとboot.pyも起動時に実行されるファイルで、main.pyはboot.pyの後に実行されるそうな。
neopixelというモジュールも初めて使いました。フルカラーLEDなので、1個でもいろいろ表現できますな。
ATOM Lite(M5Atom)でmicropythonを使ってLチカする
https://zenn.dev/nnabeyang/articles/d4ed88d1146530
11. NeoPixel の制御
https://micropython-docs-ja.readthedocs.io/ja/latest/esp8266/tutorial/neopixel.html
■ MicroPythonでWEBページにアクセス
ソース
def do_connect(): import network sta_if = network.WLAN(network.STA_IF) if not sta_if.isconnected(): print('connecting to network...') sta_if.active(True) sta_if.connect('', ' ') #要変更 while not sta_if.isconnected(): pass print('network config:', sta_if.ifconfig()) def http_get(url): import socket _, _, host, path = url.split('/', 3) addr = socket.getaddrinfo(host, 80)[0][-1] s = socket.socket() s.connect(addr) s.send(bytes('GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n' % (path, host), 'utf8')) while True: data = s.recv(100) if data: print(str(data, 'utf8'), end='') else: break s.close() do_connect() http_get('http://micropython.org/ks/test.html')
チュートリアルのコピペです。
このコードではSSL化されたサイト(https)は取得できません。
あと日本語を読み込むとデコードする時にUnicodeErrorになります。
MicroPythonチュートリアル 4.ネットワークの基礎
https://micropython-docs-ja.readthedocs.io/ja/latest/esp8266/tutorial/network_basics.html
これだけでもGET値でデータをサーバーに送ることは出来ますし、読み込んだテキストを元に処理できるので、サイトから操作することもできます。
SSL化したサイトの読み込みは今回できなかったので、前回作ったデータ確認ツールをhttpでもアクセスできるようにしときました。これで手軽にログも取れるようになって、かなり使い勝手の良いデバイスになりそうです。
データ/デバイス死活確認ツール
https://webapps.tiblab.net/device/alive-monitor/
1 Comment
Add a Comment