M5Stack ATOM LiteのMicroPythonテスト

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/

Updated: 2022年6月19日 — 10:55

コメントを残す

メールアドレスが公開されることはありません。