esp8266采集温度上报
时间: 2023-11-21 12:58:03 浏览: 41
ESP8266是一款低成本、高性能的Wi-Fi芯片,它可以作为一个微控制器来使用,也可以作为一个Wi-Fi模块来使用。下面是ESP8266采集温度并上报的步骤:
1.连接DHT11传感器到ESP8266开发板上,确保连接正确。
2.在Arduino IDE中安装ESP8266的开发环境,并将开发板设置为ESP8266开发板。
3.编写代码,包括引入DHT库、定义DHT11传感器引脚、定义Wi-Fi网络信息、连接Wi-Fi网络、连接MQTT服务器、读取DHT11传感器数据、将数据发布到MQTT服务器等步骤。代码如下:
```c
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
// 定义DHT11传感器引脚
#define DHTPIN 2
// 定义DHT11传感器类型
#define DHTTYPE DHT11
// 定义Wi-Fi网络信息
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
// 定义MQTT服务器信息
const char* mqtt_server = "your_MQTT_SERVER";
const char* mqtt_username = "your_MQTT_USERNAME";
const char* mqtt_password = "your_MQTT_PASSWORD";
const char* mqtt_topic = "your_MQTT_TOPIC";
// 创建DHT对象
DHT dht(DHTPIN, DHTTYPE);
// 创建Wi-Fi客户端对象
WiFiClient espClient;
// 创建MQTT客户端对象
PubSubClient client(espClient);
void setup() {
// 初始化串口
Serial.begin(9600);
// 初始化DHT传感器
dht.begin();
// 连接Wi-Fi网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// 连接MQTT服务器
client.setServer(mqtt_server, 1883);
while (!client.connected()) {
Serial.println("Connecting to MQTT server...");
if (client.connect("ESP8266Client", mqtt_username, mqtt_password)) {
Serial.println("Connected to MQTT server");
} else {
Serial.print("Failed with state ");
Serial.print(client.state());
delay(2000);
}
}
}
void loop() {
// 读取DHT11传感器数据
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// 将数据发布到MQTT服务器
char temperature_str[10];
char humidity_str[10];
dtostrf(temperature, 4, 2, temperature_str);
dtostrf(humidity, 4, 2, humidity_str);
client.publish(mqtt_topic, temperature_str);
client.publish(mqtt_topic, humidity_str);
// 延时5秒
delay(5000);
}
```
4.将代码上传到ESP8266开发板上,并打开串口监视器,可以看到ESP8266连接Wi-Fi网络和MQTT服务器,并且每隔5秒钟就会读取DHT11传感器数据并将数据发布到MQTT服务器。