流程:
dht11读取温湿度 -> 调用api 上传数据
传感器介绍
DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度±5%RH, 温度±2℃,量程湿度5~95%RH, 温度-20~+60℃ 。 几块钱即可买。
pin | 名称 | 注释 |
1 | VDD | 供电 3-5.5VDC |
2 | DATA | 串行数据,单总线 |
3 | NC | 空脚 |
4 | GND | 接地,电源负极 |
编码前先从Arduino IDE库管理器安装DHT SENSOR LIBRARY 这个库。
接线方式
代码:
#include <DHT.h>
#include <DHT_U.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <string>
const char* ssid = "805";
const char* password = "xx";
#define DHTPIN 4 //设置获取数据的引脚
//对应DHT的版本,选择一个取消注释
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);//创建一个DHT对象
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
dht.begin(); //初始化DHT传感器
}
void loop() {
delay(2000); //暂停2秒,读取数据官方说明需要250毫秒
float h = dht.readHumidity(); //读取湿度
float t = dht.readTemperature(); //读取摄氏度
float f = dht.readTemperature(true); //读取华氏度
if (isnan(h) || isnan(t) || isnan(f)) { //如果读取错误
Serial.println("读取传感器失败"); //读取失败提示
return;
}
float hif = dht.computeHeatIndex(f, h); //计算华氏度的热指数
float hic = dht.computeHeatIndex(t, h, false); //计算摄氏度的热指数
//wifi状态是好的
if(WiFi.status() == WL_CONNECTED){
HTTPClient http;
http.begin("http://9.139.105.66/index.php?t="+String(t) + "&s="+String(h));
int httpCode = http.GET();
if (httpCode > 0) {
Serial.println(httpCode);
String payload = http.getString();
Serial.println(payload);
}
else {
Serial.println("Error on HTTP request");
}
http.end();
}
Serial.print ("湿度: ");
Serial.print (h);
Serial.print ("% | ");
Serial.print ("摄氏度: ");
Serial.print (t);
Serial.print ("*C |华氏度:");
Serial.print (f);
Serial.print ("*F ");
Serial.print (" |摄氏热指数: ");
Serial.print (hic);
Serial.print ("*C |华氏热指数");
Serial.print (hif);
Serial.println ("*F");
}