XIAO ESP32C3とGROVE Temperature SensorをMicroPythonで動かして、Wifi経由でWebブラウザに温度表示してみました。
まず、MicroPythonのファームウェアをセットアップします。
当ブログでは下記の記事に記載しています。
次に、開発環境の設定していない場合は設定します。
当ブログでは下記の記事に記載しています。
XIAO RP2040ですが、GROVE Temperature SensorをMicroPythonで動かした内容は下記に記載しています。
一通り操作確認が終わったところで、LEDを接続してプログラムを書いていきます。
なお、今回温度センサーはD0(GPIO 2)に接続しています。
今回作成したプログラムは下記の通りとなります。
SSIDとkey は各御家庭のものを入力してください。
HTMLはあまりさわったことのない人間なので、装飾はシンプルにしています。 また、rp2040の指示だと通らなかったため、ADCの指示を変更しています。
import network
import socket
import machine
import utime
import cmath
# 温度
temp = machine.ADC(machine.Pin(2))
B = 4275
R0 = 100000
def temperature():
a = temp.read_u16()
R = 1023.0/a-1.0
R = R0*R
value= int(273.15-1.0/(abs(cmath.log(R/R0))/B+1/298.15))
return value
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
#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()
show = str(temperature())
print("temperature = " + show)
response = """<html>
<center>
<h1>
<span>temperature: </span>
<span>"""+show+"""</span>
<span>℃</span>
</h1>
</center>
<html>"""
cl.send(response)
cl.close()
shellに書かれたアドレスをwebブラウザに打ち込んで表示させると、下記のように温度の値がブラウザに表示されます。
PC
スマホ
参考にしたサイト
ESP8266用 MicroPythonチュートリアル 4.1. WiFi の設定
ESP8266用 MicroPythonチュートリアル 5.3. シンプルなHTTPサーバー
ESP32 用クイックリファレンス
Random Nerd Tutorials MicroPython: ESP32/ESP8266 with DHT11/DHT22 Web Server (Weather Station)
HaLake Magazine ESP32 MicroPython webサーバ~Lチカ
砂町技研 ESP32 で MicroPython その2 WiFiのアクセスポイントにしてスマホのブラウザで制御
ESP32 CON MICROPYTHON - CONTROL DE LEDS POR WIFI (YOUTUBE)
MicroPythonについてまとめられているサイト
Raspberry Pi PicoWについてのサイト
Irohabook HTMLで温度°を表す記号
html 1
html 2
Comments