100 个 IoT 小项目,给 ESP32 入门补上实操

学 IoT 最容易卡在两处:手里有 ESP32,却不知道下一个小项目做什么;网上能找到零散代码,却找不到接线、程序和运行结果放在一起的例子。

这个仓库把这条练习路线铺得比较完整:100 个带 README 的小项目,覆盖 ESP32 、 ESP8266 、 Raspberry Pi Pico/Pico W,以及 MicroPython 。每个项目通常都有 main.py、说明文档和电路图,部分项目还提供 Wokwi 模拟。

它适合当成一份"今天做什么"的练习清单。不要把它看成一套已经封装好的 IoT 产品。

仓库的项目顺序大致沿着这条线展开:

  • • GPIO 、按钮、 LED 、蜂鸣器;

  • • ADC 和电位器,再到 PWM 调光、舵机和步进电机;

  • • DHT11 、 PIR 、红外、超声波、气体、土壤湿度等传感器;

  • • OLED 、 LCD 、七段数码管和 LED 矩阵;

  • • Wi-Fi 、 Web Server 、 WebSocket 、蓝牙和 ESP-NOW;

  • • Blynk 、 MQTT 、 Node-RED 、 ThingSpeak 等联网项目;

  • • 数据记录、 Matplotlib 实时图表,以及 Wokwi 模拟测试。

这份清单的优点不在于每个项目都复杂,而在于它把"读一个值"和"做出一个能看的东西"连了起来。

例如,DHT11 项目不是只在串口打印温湿度。 ESP32 连接局域网后,在 80 端口启动一个简单 Web Server,浏览器打开开发板 IP,就能看到温度和湿度页面,页面每 3 秒刷新一次。

对应的最小代码思路很直白:传感器接 GPIO4,连接 Wi-Fi,读取 DHT11,再把数据嵌进 HTML 。

复制代码
import machine
import network
import time
import socket
import dht

sensor = dht.DHT11(machine.Pin(4))

SSID = "your_network_name"
PASSWORD = "your_network_password"

wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(SSID, PASSWORD)
while not wifi.isconnected():
    time.sleep(1)

addr = socket.getaddrinfo("0.0.0.0", 80)[0][-1]
server = socket.socket()
server.bind(addr)
server.listen(1)

while True:
    sensor.measure()
    temp = sensor.temperature()
    hum = sensor.humidity()
    client, addr = server.accept()
    client.recv(1024)
    response = f"<h1>{temp} °C / {hum} %</h1>"
    client.send("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n")
    client.send(response)
    client.close()

这段示例省略了完整页面和异常处理,完整版本在仓库对应目录里。它能帮助初学者看明白一件事:Web 仪表盘并不神秘,本质上是开发板读取数据,再把数据放进 HTTP 响应。

常见模块都有可照着接的版本

PIR 项目把"检测到动作后亮灯"这类数字输入做成了完整例子;超声波项目则用 HC-SR04 测距离,再按距离范围控制 LED 指示。两者都带有电路图,适合在 GPIO 读写之后继续练习。

做这些项目时,建议把每个目录拆成三层看:

    1. README.md:先确认开发板、模块、引脚和运行方式;
    1. Circuit_Diagram:按图接线,先不要急着改代码;
    1. Main Files:找到 main.py,再看是否需要额外的驱动文件,例如 LCD 、 OLED 或 MQTT 库。

仓库里也有一些更接近"系统"的例子,例如 ESP32 热点、网页控制继电器、 MQTT 控制 NeoPixel 、 ESP-NOW 双节点通信和带图表的环境监测。它们把单个传感器练习推进到"设备之间传数据"这一步。

最省事的上手路线

如果手边有 ESP32 和 DHT11,可以按下面的顺序走:

    1. 给 ESP32 刷入 MicroPython 固件;
    1. 用 Thonny 或其他串口工具连接开发板;
    1. 先跑一个 LED 或按钮项目,确认 GPIO 没问题;
    1. 按 DHT11 项目的接线图连接 3.3V 、 GND 和 GPIO4;
    1. 把 main.py 上传到开发板;
    1. 只修改 Wi-Fi 名称和密码;
    1. 从串口输出里找到 ESP32 的局域网 IP,在同一网络的浏览器打开它。

如果暂时没有硬件,可以优先挑 README 标注了 Wokwi 的项目。模拟器适合先理解程序结构和引脚关系,但它不能替代真实传感器的供电、噪声、接触不良和电平检查。

这个仓库能帮你做到什么

它能帮你建立一套可重复的练习路径:从一个数字输入开始,到模拟量、 PWM 、显示屏、局域网服务和云平台连接。对于刚接触 MicroPython 的人,最有用的是每个项目都比较小,改一个引脚或换一个传感器,通常就能看见变化。

它还适合拿来做二次练习。比如把 DHT11 的网页显示改成 JSON,把 PIR 的 LED 提示改成 MQTT 消息,把超声波距离换成网页上的进度条。仓库的代码不负责替你完成这些改造,但它提供了足够多的起点。

有几件事要先说清楚

第一,这些示例不是生产级 IoT 系统。很多 Web Server 直接监听局域网端口,示例里也可能把 Wi-Fi 配置写在代码中。真实使用时要把密码移出代码,避免把开发板直接暴露到公网,并给控制继电器、电机等负载增加明确的权限和保护措施。

第二,仓库根目录没有统一的 LICENSE 。项目目录里能看到 MIT License,但不能据此推断所有未来新增内容都自动使用同一授权。要复用某个项目时,先查看对应目录的许可证文件。

第三,传感器的读数需要校准。 DHT11 精度有限,MQ 系列气体模块的模拟值也不能直接当成专业仪器读数。气体、门锁、继电器和电机项目更适合学习接线与控制逻辑,不应直接承担安全报警或高功率设备的唯一控制职责。

如果你手里已经有一块 ESP32,这个仓库的价值很实际:每天从一个能运行的小例子开始,先把输入、输出、网络和显示分别做一遍,再考虑自己的项目。比起一次性找一套"大而全"的教程,这种目录式练习更容易真正留下代码和接线经验。

项目地址:

https://github.com/kritishmohapatra/100\\_Days\\_100\\_IoT\\_Projects

MicroPython ESP32 固件:

https://micropython.org/download/esp32/

相关推荐
硅基造物主1 小时前
STM32 从 0 到 1 做智能家居(八):PWM 控制风扇、加热片与 SG90 窗帘
stm32·嵌入式硬件·智能家居·hal库·pwm
输出输入1 小时前
学习前端主流书单推荐
前端
anyup1 小时前
uView Pro X 1.0.0 发布:全面支持 uni-app x 蒸汽模式,80+ 组件
前端·uni-app·ai编程
2401_873479401 小时前
源IP告警太多用什么工具分层?ASN与风险评分操作指南
网络·网络协议·tcp/ip
apollo_qwe1 小时前
大模型 API 接通了,AI 聊天页面为什么还是不好用?
前端·vue.js·人工智能
简单电磁炮1 小时前
关于adc采集
stm32·单片机
见闻小天地1 小时前
新手入门:印刷包装设备的伺服和PLC运动控制方案各管什么?七步选型讲清楚
运维·网络·数据库·人工智能
爱勇宝1 小时前
你可能成不了技术大佬,然后呢?
前端·后端·程序员
father_12272 小时前
Greenplum 集群故障恢复与主备同步机制实战
linux·网络·greenplum