top of page

XIAO ESP32C3とGrove LEDをMicroPythonでWebブラウザ制御してみました

更新日:2023年4月9日

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



閲覧数:47回

コメント


bottom of page