基于arduino uno的编写一个获取温湿度数据并通过http协议上传数据的代码
时间: 2023-06-01 17:02:05 浏览: 160
本回答由AI语言模型自动生成,仅供参考。
以下是基于arduino uno的获取温湿度数据并通过http协议上传数据的代码:
```c++
#include <DHT.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#define DHTPIN 2 // DHT11连接到Arduino的2号引脚
#define DHTTYPE DHT11 // DHT11型号
#define WIFI_SSID "your_wifi_ssid" // Wi-Fi网络名称
#define WIFI_PASSWORD "your_wifi_password" // Wi-Fi网络密码
#define SERVER_URL "http://your_server_address/upload_data.php" // 服务器地址
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read data from DHT sensor");
delay(2000);
return;
}
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print("%, Temperature: ");
Serial.print(temperature);
Serial.println("C");
HTTPClient http;
http.begin(SERVER_URL);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
String data = "humidity=" + String(humidity) + "&temperature=" + String(temperature);
int httpCode = http.POST(data);
if (httpCode == HTTP_CODE_OK) {
String response = http.getString();
Serial.println("Server response: " + response);
} else {
Serial.println("Failed to upload data to server");
}
http.end();
delay(2000);
}
```
该代码使用了DHT库来读取DHT11传感器的数据,并使用ESP8266WiFi和ESP8266HTTPClient库连接Wi-Fi网络和向服务器上传数据。在setup()函数中,连接到Wi-Fi网络,并在loop()函数中获取温湿度数据并上传到服务器。上传数据使用的是HTTP POST方法,数据格式为"humidity=x&temperature=y"。如果上传成功,服务器将返回HTTP 200 OK响应。如果上传失败,将在串口监视器中输出相应的消息。
阅读全文