XIAO ESP32C3とGrove LEDをMicroPythonでWebブラウザ制御してみました。
まず、MicroPythonのファームウェアをセットアップします。
当ブログでは下記の記事に記載しています。
次に、開発環境の設定していない場合は設定します。
当ブログでは下記の記事に記載しています。
通常のLEDの点滅については、当ブログでは下記の記事に記載しています。
XIAO ESP32C3をGroveシールドにマウントしてGrove LEDをMicroPythonで点滅させてみました
一通り操作確認が終わったところで、LEDを接続してプログラムを書いていきます。
なお、LEDは前回と同じD0(GPIO 2)接続しています。
今回作成したプログラムは下記の通りとなります。
SSIDとkey は各御家庭のものを入力してください。
また、HTMLはあまりさわったことのない人間なので、装飾はシンプルにしています。 import network
import socket
from machine import Pin
led= Pin(2,Pin.OUT)
SSID = 'Wifiの名称'
key = 'Password'
#4.1. WiFi の設定
sta_if = network.WLAN(network.STA_IF)
print('connecting to network...')
sta_if.active(True)
sta_if.connect(SSID,key)
sta_if.isconnected()
while not sta_if.isconnected():
pass
# htmi
def home_page():
html = """<html>
<title>LED ON/OFF</title>
<center>
<h>LED ON/OFF</h1>
<p><a href="/ON"><input type="button" value="ON"></a>
<a href="/OFF"><input type="button" value="OFF"></a></p>
</center>
<html>"""
return html
#5.3. シンプルなHTTPサーバー
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)
print('listening on', sta_if.ifconfig()[0])
while True:
cl, addr = s.accept()
request = cl.recv(1024)
request = str(request)
if request.find("/ON") ==6:
led.value(1)
if request.find("/OFF") ==6:
led.value(0) response = home_page()
cl.send(response)
cl.close()
shellに書かれたアドレスをwebブラウザに打ち込んで表示させると、下記のようにONとOFFがブラウザに表示され、ボタンからLEDをON/OFFできます。
※スマホ表示の場合予想以上に表示が小さいので、後々修正するかもしれませんが…
PC
スマホ
参考にしたサイト
ESP8266用 MicroPythonチュートリアル 4.1. WiFi の設定
ESP8266用 MicroPythonチュートリアル 5.3. シンプルなHTTPサーバー
ESP32 用クイックリファレンス
HaLake Magazine ESP32 MicroPython webサーバ~Lチカ
砂町技研 ESP32 で MicroPython その2 WiFiのアクセスポイントにしてスマホのブラウザで制御
ESP32 CON MICROPYTHON - CONTROL DE LEDS POR WIFI (YOUTUBE)
MicroPythonについてまとめられているサイト
Raspberry Pi PicoWについてのサイト
html 1
html 2
コメント