前段时间买了一个超便宜的Wemos D1 Mini开发板,浅浅做一个座位传感器吧。
步骤 1:准备硬件
- ESP8266开发板(如NodeMCU或Wemos D1 Mini)
- 红外传感器模块(如GP2Y0A21YK0F)
- USB线

步骤 2:安装软件和库
下载并安装Arduino IDE(https://www.arduino.cc/en/software)。
在Arduino IDE中,打开 文件
-> 首选项
,在”附加开发板管理器URL”中添加:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
进入 工具
-> 开发板
-> 开发板管理器
,安装 “esp8266 by ESP8266 Community”。
在 库
-> 管理库
中,安装以下库:
步骤 3:编写代码
将以下代码复制到Arduino IDE中,并根据实际情况修改以下变量:
ssid
:你的Wi-Fi网络名称
password
:Wi-Fi网络密码
mqttServer
:你的MQTT服务器地址
client_ID
:你的MQTT客户端ID
mqttUserName
和 mqttPassword
:MQTT服务器的用户名和密码(如果需要)
cpp
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
const char* mqttServer = "YOUR_MQTT_SERVER_IP";
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
const char* client_ID = "YOUR_CLIENT_ID";
const char* mqttUserName = "YOUR_MQTT_USERNAME";
const char* mqttPassword = "YOUR_MQTT_PASSWORD";
char dataTemplate[] = "{\"座位状态\": %.2f}";
char attrData[] = "{\"deviceName\": \"座位传感器\"}";
char postData[50];
char topic[] = "v1/devices/me/telemetry";
char attrTopic[] = "v1/devices/me/attributes";
#define IRpin D7
float state;
void reconnect() {
while (!mqttClient.connected()) {
if (mqttClient.connect(client_ID, mqttUserName, mqttPassword)) {
mqttClient.subscribe(attrTopic, 0);
mqttClient.publish(attrTopic, attrData, strlen(attrData));
break;
}
delay(1000);
}
}
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {}
mqttClient.setServer(mqttServer, 1883);
reconnect();
}
void loop() {
if (!mqttClient.connected()) {
reconnect();
}
mqttClient.loop();
long now = millis();
if (now - lastMsg > 1000) {
state = digitalRead(IRpin);
snprintf(postData, 50, dataTemplate, state);
mqttClient.publish(topic, postData, strlen(postData));
lastMsg = now;
}
}
|
步骤 4:连接红外传感器
连接红外传感器的输出引脚到ESP8266的D7(GPIO13)引脚。
步骤 5:上传代码
- 使用USB线连接ESP8266到电脑。
- 在Arduino IDE中选择正确的开发板型号和端口。
- 点击
上传
按钮将代码上传到ESP8266。
步骤 6:测试与监控
- 通过串行监视器(
工具
-> 串口监视器
)查看连接和数据发布状态。
- 将物体靠近或远离红外传感器,观察座位状态数据是否正确发送到MQTT服务器。
步骤 7:配置MQTT服务器
确保你的MQTT服务器已配置好订阅 "v1/devices/me/telemetry"
主题以接收数据,并设置相应的设备属性和响应主题。
现在你已经创建了一个简单的座位状态监测系统,可以通过MQTT协议将数据发送到云端进行进一步处理和分析。