🔥 项目亮点:语音控制+物联网,低成本玩转智能硬件
你是否想过,只需一句话就能控制灯光?今天,我们用ESP32+MicroPython+逗脑IDE,打造一个语音控制灯项目,无需复杂编程,5分钟即可上手!
项目功能:
- 通过ESP32的麦克风(或外接麦克风模块)采集语音指令(如“开灯”“关灯”)。
- 使用MicroPython处理语音信号(简单关键词识别)。
- 通过WiFi连接物联网平台(如MQTT),实现远程控制或语音联动。
- 控制LED(或继电器模块)实现开关灯操作。
适用场景:
- 智能家居(语音控制灯光)
- 语音助手原型开发
- 物联网入门学习
🧰 硬件准备(成本不到50元!)
硬件 | 说明 |
---|---|
ESP32开发板 | 带WiFi和蓝牙,支持MicroPython |
MEMS麦克风模块 | 如INMP441(或ESP32自带麦克风) |
LED或继电器模块 | 控制灯光(或直接驱动LED) |
面包板+杜邦线 | 用于电路连接 |
📌 注意: 如果你的ESP32没有内置麦克风(如ESP32-WROOM),可以外接INMP441等低成本麦克风模块。
💻 软件准备:逗脑IDE+MicroPython
逗脑IDE是一款专为ESP32/MicroPython开发的在线IDE,支持代码编辑、一键上传、串口调试,无需配置环境,新手也能快速上手!
1. 下载逗脑IDE
👉 访问 www.itprojects.cn/ide,下载最新版。
2. 安装MicroPython固件
- 在逗脑IDE中,选择你的ESP32开发板型号(如ESP32-WROOM-32)。
- 点击“烧录固件”,选择MicroPython固件(IDE已内置最新版本)。
3. 连接ESP32到电脑
- 用USB线连接ESP32和电脑,确保串口驱动已安装(如
CH340
驱动)。 - 在逗脑IDE中选择正确的COM端口,点击“连接”。
🚀 项目实战:语音控制灯(代码+接线)
1. 硬件接线
ESP32引脚 | 外设 | 说明 |
---|---|---|
GPIO14 | 麦克风模块(CLK) | I2S时钟线 |
GPIO13 | 麦克风模块(DATA) | I2S数据线 |
GPIO12 | LED/继电器 | 控制灯光 |
3.3V & GND | 麦克风/LED | 供电 |
📌 如果使用ESP32内置麦克风,可直接调用
machine.I2S
读取音频数据(需配置I2S模式)。
2. MicroPython代码(语音关键词识别+控制LED)
在逗脑IDE中新建项目,粘贴以下代码:
import machine
import time
import network
import uos
# WiFi连接配置
SSID = "你的WiFi名称"
PASSWORD = "你的WiFi密码"
# 初始化LED(GPIO12)
led = machine.Pin(12, machine.Pin.OUT)
led.off() # 初始关闭
# 简单关键词识别(模拟语音识别)
def detect_keyword(audio_data):
# 这里简化处理:假设音频数据大于一定阈值触发"开灯"
# 实际项目可用FFT或神经网络优化
if max(audio_data) > 500: # 阈值可调
return "开灯"
else:
return "关灯"
# 模拟音频采集(实际项目需用I2S读取麦克风数据)
def get_audio_data():
# 这里返回随机数据模拟音频(实际项目替换为I2S读取)
import random
return [random.randint(0, 1000) for _ in range(100)]
# 主循环
def main():
# 连接WiFi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
print("正在连接WiFi...")
time.sleep(1)
print("WiFi已连接:", wlan.ifconfig())
# 主循环:采集音频+识别指令
while True:
audio_data = get_audio_data() # 获取音频数据
cmd = detect_keyword(audio_data) # 识别指令
print("识别指令:", cmd)
if cmd == "开灯":
led.on()
print("灯已打开")
elif cmd == "关灯":
led.off()
print("灯已关闭")
time.sleep(1) # 每秒检测一次
if __name__ == "__main__":
main()
⚠️ 注意:
- 这里为了简化,用随机数据模拟音频采集(实际项目需用
machine.I2S
读取麦克风数据)。- 真正的语音识别需要FFT(快速傅里叶变换)或AI模型(如TensorFlow Lite Micro),但本例用阈值法模拟关键词检测,适合入门。
🌐 进阶:接入物联网平台(MQTT)
想让手机远程控制灯?可以用MQTT协议(逗脑IDE已经集成了MQTT服务器和客户端)实现:
- 连接MQTT服务器,发布/订阅消息(如“light/on”控制LED)。
- 手机打开IT项目网,找到云服务,连接MQTT服务,发送指令控制灯。
示例代码(MQTT部分):
from umqtt.simple import MQTTClient
# MQTT配置
MQTT_BROKER = "broker.emqx.io"
MQTT_PORT = 1883
MQTT_TOPIC = "esp32/light"
client = MQTTClient("esp32_client", MQTT_BROKER, port=MQTT_PORT)
client.connect()
# 订阅指令
def mqtt_callback(topic, msg):
if msg == b"on":
led.on()
elif msg == b"off":
led.off()
client.set_callback(mqtt_callback)
client.subscribe(MQTT_TOPIC)
# 在主循环中检查MQTT消息
while True:
client.check_msg() # 检查新消息
time.sleep(0.1)
🎯 项目总结:小白也能玩转物联网!
- 硬件成本低:ESP32+麦克风模块只需50元。
- 开发超简单:逗脑IDE一键上传,无需配置环境。
- 可扩展性强:可接入WiFi、MQTT、AI语音识别(如Snowboy)。
“从接线到代码,整个过程不到1小时就完成了!现在我的台灯已经能听懂‘开灯’指令了,朋友都惊呆了!