ESP32 MicroPython Web Server –网页显示传感器数据
[复制链接]
目录
- 概述:ESP32 MicroPython Web Server
- 材料清单
- 什么是Web服务器?
- 电路图和连接
- MicroPython代码/程序
- boot.py代码
- main.py代码
- 在ESP32 MicroPython Web Server上监控传感器数据
- 视频教程和指南
概述:ESP32 MicroPython Web Server
在本文中,我们将学习基于ESP32 MicroPython的Web服务器。我们将DS18B20防水温度传感器与ESP32连接并读取温度。然后,我们将创建一个Web服务器,并将DS18B20温度数据发送到Web服务器。使用IP地址,我们将监视网页上的Sensor数据。您可以在本地网络上访问Sensor数据。但是在开始之前,我强烈建议您按照以下教程来提高MicroPython的技能。我已经解释了如何安装MicroPython和使用uPyCraft IDE。同样,我也说明了如何使用MicroPython Code将 DS18B20温度传感器与ESP32 连接。
- 使用PyCraft IDE在ESP32上使用MicroPython入门
- 使用MicroPython将DS18B20温度传感器与ESP32连接
材料清单
以下是制作ESP32 MicroPython Web Server Project所需的组件。所有组件均可从Amazon轻松购买。
- ESP32开发板
- 温度感应器
- 4.7K电阻器
- 杜邦线
- 面包板
什么是Web服务器?
一个Web服务器是服务器软件专门用于运行软件,能够满足客户端请求的对万维网。Web服务器可能包含一个或多个网站。Web服务器通过HTTP和其他一些相关协议处理传入的网络请求。Web服务器的主要功能是存储,处理和交付网页给客户端。客户端和服务器之间的通信使用超文本传输协议(HTTP)进行。交付的页面是最常见的HTML文档,除了文本内容外,还可能包括图像,样式表和脚本。用户代理(通常是Web浏览器或Web爬网程序)通过使用HTTP 发出对特定资源的请求来启动通信,并且服务器以该资源的内容或错误消息(如果无法执行此操作)为响应。您可以查看以下教程,以了解有关ESP32 Web Server的更多信息:Web Server上的ESP32 Weather Station
电路图和连接
这是使用MicroPython代码将DS18B20温度传感器与ESP32接口的电路图。数字输出引脚连接到ESP32 GPIO22引脚。甲4.7K电阻被用作上拉电阻与被连接的数字输出管脚VCC和销之间。如果您想了解有关DS18B20温度传感器的更多信息,可以阅读以下文章:DS18B20温度传感器与ESP32的接口。
如果使用的是MakePython ESP32 Board,可以进行以下连接,如下面的连接图所示。
MicroPython代码/程序
现在让我们检查ESP32 MicroPython代码用于创建Web服务器。该代码包含两个部分。
- boot.py
- main.py
boot.py在设备启动后运行,并立即设置多个配置选项,例如您的网络凭据,导入库。同样,main.py在boot.py之后立即执行。这是我们处理网络服务器的主要脚本。
boot.py代码
创建于uPyCraft IDE一个新的文件并将其保存为boot.py。然后复制以下代码并将其上传到ESP32开发板。
try:
import usocket as socket
except:
import socket
from time import sleep
from machine import Pin
import onewire, ds18x20
import network
import esp
esp.osdebug(None)
import gc
gc.collect()
ds_pin = Pin(22)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
ssid = 'Alexahome'
password = 'loranthus'
station = network.WLAN(network.STA_IF)
station.active(True)
station.connect(ssid, password)
while station.isconnected() == False:
pass
print('Connection successful')
print(station.ifconfig())
main.py代码
创建于uPyCraft IDE另一个文件并将其保存为main.py。然后复制以下代码并将其上传到ESP32开发板。
def read_ds_sensor():
roms = ds_sensor.scan()
print('Found DS devices: ', roms)
print('Temperatures: ')
ds_sensor.convert_temp()
for rom in roms:
temp = ds_sensor.read_temp(rom)
if isinstance(temp, float):
msg = round(temp, 2)
print(temp, end=' ')
print('Valid temperature')
return msg
return b'0.0'
def web_page():
temp = read_ds_sensor()
html = """<!DOCTYPE HTML><html><head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
<style> html { font-family: Arial; display: inline-block; margin: 0px auto; text-align: center; }
h2 { font-size: 3.0rem; } p { font-size: 3.0rem; } .units { font-size: 1.2rem; }
.ds-labels{ font-size: 1.5rem; vertical-align:middle; padding-bottom: 15px; }
</style></head><body><h2>ESP32 DS18B20 WebServer</h2>
<p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Temperature</span>
<span id="temperature">""" + str(temp) + """</span>
<sup class="units">°C</sup>
</p>
<p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Temperature</span>
<span id="temperature">""" + str(round(temp * (9/5) + 32.0, 2)) + """</span>
<sup class="units">°F</sup>
</p></body></html>"""
return html
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)
while True:
try:
if gc.mem_free() < 102000:
gc.collect()
conn, addr = s.accept()
conn.settimeout(3.0)
print('Got a connection from %s' % str(addr))
request = conn.recv(1024)
conn.settimeout(None)
request = str(request)
print('Content = %s' % request)
response = web_page()
conn.send('HTTP/1.1 200 OK\n')
conn.send('Content-Type: text/html\n')
conn.send('Connection: close\n\n')
conn.sendall(response)
conn.close()
except OSError as e:
conn.close()
print('Connection closed')
在ESP32 MicroPython Web Server上监控传感器数据
上载两个代码后,按 ESP32板上的Reset按钮。ESP32现在将尝试使用网络凭证连接到网络。连接后,它将在Shell窗口中显示IP地址。
您可以复制IP地址并转到任何Web浏览器并将其粘贴到此处。您将在网页上看到DS18B20传感器数据。
翻译自:https://how2electronics.com/esp32-micropython-web-server/
|