ESP32 + MicroPython 简易 Web 服务器教程

一、前言

在物联网开发中,让设备直接通过浏览器访问是一个非常常见的需求。ESP32 自带 WiFi,非常适合用来实现一个简单的 Web 服务器 。本文将基于 MicroPython,手把手教你在 ESP32 上搭建一个最基础的 HTTP Web Server,并通过浏览器访问。

适合人群:

  • ESP32 / MicroPython 初学者
  • 想快速实现网页访问 ESP32 的开发者

二、开发环境准备

1. 硬件准备

  • ESP32 开发板(任意型号)
  • USB 数据线

2. 软件准备

  • 已刷好 MicroPython 固件 的 ESP32
  • Thonny / uPyCraft / VS Code + MicroPython 插件
  • 可用的 WiFi 网络

⚠️ 注意:ESP32 需要刷入 MicroPython 固件,否则无法运行本文代码。


三、实现原理说明

整体流程如下:

  1. ESP32 连接 WiFi
  2. 获取 ESP32 的 IP 地址
  3. 创建 Socket 监听 80 端口
  4. 接收浏览器 HTTP 请求
  5. 返回 HTML 页面

浏览器访问 ESP32 的 IP,即可看到网页内容。


四、完整示例代码

python 复制代码
import network
import usocket as socket
import urequests

# 设置 WiFi 凭据
SSID = "wifi名称"
PASSWORD = "wifi密码"

# 创建 WLAN 对象
wlan = network.WLAN(network.STA_IF)

# 激活 WLAN 接口
wlan.active(True)

# 连接到 WiFi 网络
wlan.connect(SSID, PASSWORD)

# 等待连接完成
while not wlan.isconnected():
    pass

# 打印连接信息
print("Connected to WiFi")
print("Network config:", wlan.ifconfig())

# 定义简单的 HTTP 响应
HTML = """
HTTP/1.0 200 OK
Content-Type: text/html

<!DOCTYPE html>
<html>
<head><title>MicroPython Web Server</title></head>
<body>
<h1>Hello from MicroPython!</h1>
<p>This is a simple web server running on ESP32 with MicroPython.</p>
</body>
</html>
"""

# 创建套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定 IP 地址和端口
s.bind(('0.0.0.0', 80))

# 监听连接
s.listen(5)

# 循环接受和处理请求
while True:
    conn, addr = s.accept()
    print('Got a connection from %s' % str(addr))
    request = conn.recv(1024)
    print('Content = %s' % str(request))

    # 发送 HTTP 响应
    conn.sendall(HTML)
    conn.close()

五、代码详解

1️⃣ 连接 WiFi

python 复制代码
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
  • STA_IF:表示工作在 Station 模式(连接路由器)
  • isconnected():判断是否成功联网

2️⃣ 获取 ESP32 IP 地址

python 复制代码
print(wlan.ifconfig())

输出格式:

复制代码
(ip, subnet, gateway, dns)

记住这个 IP,后面浏览器要用。


3️⃣ 创建 Socket 服务器

python 复制代码
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 80))
s.listen(5)

说明:

  • 0.0.0.0:监听所有网卡
  • 80:HTTP 默认端口
  • listen(5):最多同时处理 5 个连接

4️⃣ 处理 HTTP 请求

python 复制代码
conn, addr = s.accept()
request = conn.recv(1024)
conn.sendall(HTML)
conn.close()
  • accept():等待浏览器连接
  • recv():接收 HTTP 请求
  • sendall():返回 HTML 页面

六、浏览器访问测试

  1. 打开串口,查看 ESP32 的 IP 地址

  2. 在同一局域网下,浏览器输入:

    http://ESP32_IP

示例:

复制代码
http://192.168.31.250

如果看到网页内容,说明服务器运行成功 🎉

📌 原创不易,欢迎点赞 + 收藏 + 关注!

相关推荐
调试优选官4 天前
IoT物联网系统定制落地实践:从设备接入、协议网关、平台分层到业务应用,如何做技术选型、交付验收、责任边界与长期运维成本评估及迁移安排
物联网·iot·成本分析
华允物联-HUAIOT4 天前
工业路由器和DTU在联网方式上的区别
物联网
wuyk5554 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
码流子4 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
绿蕉4 天前
配电房的“AI听诊师”:可视化声纹局放智能巡检系统与通讯保障
物联网
chshang19924 天前
工业路由器是什么?浅谈5G工业网络中的IR602
网络·物联网·5g·智能路由器
做萤石二次开发的哈哈4 天前
海康商用音频主机接入萤石蓝海 AIoT:多路拾音、矩阵路由、分区广播、应急广播四类技能,IP 网络广播系统多端开发实战
物联网·音频矩阵·萤石开放平台·ip网络广播·蓝海aiot一站式工作台·aiot开发·公共广播
wuyk5554 天前
【Socket 进阶之路】第 9 章 Linux 网络服务量产稳定性优化|心跳保活、TIME_WAIT、SO_LINGER、内存池、断线重连、完整异常防护框架
linux·服务器·开发语言·网络·物联网
CServer_014 天前
开源!混合存储底座+湖仓一体的AI数据中台
物联网·制造
数字新视界5 天前
数据中心基础设施管理系统的智能监测与运维整合剖析
数据库·物联网·数据中心·数据中心基础设施管理·dcim管理系统