ATOM Lite 本体についているボタンを押したら,Line に通知が飛ぶプログラムを MicroPython で作ってみました.
ATOM Lite とは M5Stack 社が開発した小型マイコンモジュールです.ESP32 という Wi-Fi 機能を持ったマイコンを搭載しています.
ATOM Lite ESP32 IoT Development Kit | m5stack-store
firmware のインストール
以下のサイトに記載の手順をもとに,MicroPython の v1.12.0 をインストールしました.
MicroPython - Python for microcontrollers
はじめ ESP32 に対応したファームウェアを使用したのですが,そちらでは ATOM Lite のボタンなどを制御するためのモジュール (atom) が使えませんでした.
Line Notify のトークン発行
Line に通知を飛ばすためには,Line Notify というサービスを使います.Line Notify のサービスからアクセストークンを取得する必要があります.
MicroPython のプログラム
プログラム (notify.py) は以下のとおりです.Wi-Fi 接続あたりの処理がいい加減ですが,Wi-Fi 接続が失敗しなければ,これでちゃんと動作すると思います.
essid, password, line_notify_token にはそれぞれの環境に合わせた値を設定してください.
from atom import Lite from network import WLAN, STA_IF from time import sleep import requests essid = 'Wi-Fi接続のESSID' password = 'Wi-Fi接続のパスワード' line_notify_api = 'https://notify-api.line.me/api/notify' line_notify_token = '発行されたトークン' notification_message = '送りたいメッセージ' def line_notify( _ ): try: # Wi-Fi に接続 wlan = WLAN( STA_IF ) wlan.active( True ) if not wlan.isconnected(): wlan.connect(essid, password) while not wlan.isconnected(): sleep(1) # Line への結果通知 headers = { 'Authorization' : 'Bearer {}'.format( line_notify_token ), 'Content-Type' : 'application/x-www-form-urlencoded' } data = 'message="{}"'.format( notification_message ) response = requests.post( line_notify_api, headers = headers, data = data ) print(response.status_code) # Wi-Fi 切断 wlan.disconnect() except Exception as e: print(e) atom_lite = Lite() atom_lite.set_button_callback( line_notify )
ATOM Line へのプログラム送信と実行
作ったプログラム (notify.py) は ampy を使って,ATOM Lite に送り,実行します.
$ ampy -p シリアルポート put notify.py $ ampy -p シリアルポート run nofify.py
シリアルポートの部分には,ATOM Lite が接続しているシリアルポートのデバイス名を指定してください.Windows であれば COM3 や COM4, MacOS であれば /dev/tty.usbserial-XXXXXXXXXX といったデバイス名になっていると思います.
ampy でプログラムを送り込んだら,ATOM Lite のボタンを押してみてください.Line に通知が行くはずです.