eap8266与arduino实现温湿度的数据互传的代码
时间: 2024-05-12 18:16:42 浏览: 95
借助arduino uno板,通过esp8266与LCD1602和Blynk服务器同步显示温湿度-附件资源
以下是一个简单的示例代码,可以实现ESP8266和Arduino之间的温度和湿度数据传输:
Arduino代码:
```Arduino
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <SoftwareSerial.h>
SoftwareSerial esp8266(10, 11);
float temperature;
float humidity;
#define DHTPIN 7
#define DHTTYPE DHT11
DHT_Unified dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
esp8266.begin(115200);
}
void loop() {
sensors_event_t event;
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
Serial.println("Error reading temperature!");
} else {
temperature = event.temperature;
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println("C");
}
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
Serial.println("Error reading humidity!");
} else {
humidity = event.relative_humidity;
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println("%");
}
esp8266.println(String(temperature) + "," + String(humidity));
delay(5000); // 发送间隔为5秒
}
```
ESP8266代码:
```Arduino
#include <SoftwareSerial.h>
SoftwareSerial esp8266(10, 11);
void setup() {
Serial.begin(9600);
esp8266.begin(115200);
pinMode(LED_BUILTIN, OUTPUT); // 控制LED灯的引脚
}
void loop() {
if (esp8266.available()) {
String tempString = esp8266.readStringUntil('\n');
tempString.trim(); // 去掉两端的空格
Serial.println(tempString);
int commaIndex = tempString.indexOf(",");
String temp = tempString.substring(0, commaIndex);
String humi = tempString.substring(commaIndex+1);
float temperature = temp.toFloat();
float humidity = humi.toFloat();
if (temperature >= 20 && temperature <= 28 && humidity >= 40 && humidity <= 60) {
digitalWrite(LED_BUILTIN, HIGH);
esp8266.println("LED_ON");
} else {
digitalWrite(LED_BUILTIN, LOW);
esp8266.println("LED_OFF");
}
}
}
```
在此示例中,Arduino使用DHT11传感器读取温度和湿度数据,并通过ESP8266 LED控制板将其发送到ESP8266。ESP8266解析这些数据,并相应地控制LED的状态。当温度在20-28℃之间,湿度在40-60%之间时,LED将亮起。
请注意,此示例代码仅供参考,实现数据传输的方式可能因设备和环境而异。
阅读全文