Arduino简单实例之九_温湿度传感器模块

1)       说明:

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。

2)       硬件:

DTH11温湿度传感器电子积木模块,Arduinouno,杜邦线

3)       连接:

VCC接 Arduino 3.3V或5V
GND接 Arduino GND
OUT接 Digital 2


4)       代码

#include <dht11.h>

dht11 DHT11;
#define PIN_DHT11 2

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  DHT11.read(PIN_DHT11);
  Serial.print("Humidity (%): ");
  Serial.println((float)DHT11.humidity, 2);
  Serial.print("Temperature (oC): ");
  Serial.println((float)DHT11.temperature, 2);
  delay(500);
}

代码中用到了dht11库,需要下载Dht11.zip 包,解压后,放入/usr/share/arduino/libraries/目录下。

(请注意:因各厂商硬件不同,引脚位置可能有差异,具体请见硬件说明书)

好的,这是一个关于Arduino Uno和ESP-01S模块的项目,主要用于接收DHT11湿度传感器的数据并将其通过ESP-01S模块上传到阿里云服务器上。以下是具体的步骤: 1. 将DHT11湿度传感器连接到Arduino Uno上,可以参考以下连接方式: DHT11 VCC - Arduino 5V DHT11 GND - Arduino GND DHT11 DATA - Arduino Digital Pin 2 2. 下载并安装ESP8266库,这里我们使用的是ESP8266WiFi库和ESP8266HTTPClient库。打开Arduino IDE,选择菜单栏:Sketch -> Include Library -> Manage Libraries,搜索并安装这两个库。 3. 连接ESP-01S模块Arduino Uno上,可以参考以下连接方式: ESP-01S VCC - Arduino 3.3V ESP-01S GND - Arduino GND ESP-01S RX - Arduino Digital Pin 3 ESP-01S TX - Arduino Digital Pin 4 4. 在阿里云上创建一个IoT实例并添加一个设备,记录下设备的三元组(ProductKey、DeviceName、DeviceSecret)。 5. 在阿里云上创建一个Topic,用于接收设备上传的数据。 6. 编写Arduino代码,实现从DHT11传感器读取数据并将其上传到阿里云服务器上,可以参考以下代码: ``` #include <DHT.h> #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #include <PubSubClient.h> #define DHTPIN 2 #define DHTTYPE DHT11 const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; const char* serverName = "your_SERVER_NAME"; const char* productKey = "your_PRODUCT_KEY"; const char* deviceName = "your_DEVICE_NAME"; const char* deviceSecret = "your_DEVICE_SECRET"; const char* mqttServer = productKey ".iot-as-mqtt.cn-shanghai.aliyuncs.com"; int mqttPort = 1883; const char* mqttClientId = "clientId"; const char* mqttUsername = deviceName "&" productKey; const char* mqttPassword = "your_MQTT_PASSWORD"; const char* mqttTopic = "/sys/" productKey "/" deviceName "/thing/event/property/post"; DHT dht(DHTPIN, DHTTYPE); WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); void setup() { Serial.begin(9600); dht.begin(); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); mqttClient.setServer(mqttServer, mqttPort); } void loop() { float temp = dht.readTemperature(); float humidity = dht.readHumidity(); if (isnan(temp) || isnan(humidity)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Temperature: "); Serial.print(temp); Serial.print("C, Humidity: "); Serial.print(humidity); Serial.println("%"); if (WiFi.status() == WL_CONNECTED) { HTTPClient http; String serverPath = serverName + "/temperature=" + String(temp) + "&humidity=" + String(humidity); http.begin(serverPath.c_str()); int httpCode = http.GET(); if (httpCode > 0) { String payload = http.getString(); Serial.println(payload); } else { Serial.println("Error on HTTP request"); } http.end(); } if (!mqttClient.connected()) { String clientId = mqttClientId; clientId += String(random(0xffff), HEX); Serial.print("Connecting to MQTT server "); Serial.print(mqttServer); Serial.println("..."); if (mqttClient.connect(clientId.c_str(), mqttUsername, mqttPassword)) { Serial.println("Connected to MQTT server"); } else { Serial.print("Failed to connect to MQTT server, rc="); Serial.println(mqttClient.state()); delay(2000); return; } } String payload = "{\"id\":\"1\",\"params\":{\"Temperature\":" + String(temp) + ",\"Humidity\":" + String(humidity) + "},\"method\":\"thing.event.property.post\"}"; mqttClient.publish(mqttTopic, payload.c_str()); Serial.println("Published message"); delay(5000); } ``` 在代码中,我们使用了MQTT协议将传感器数据上传到阿里云服务器上。需要注意的是,MQTT连接需要使用三元组中的DeviceName、ProductKey和DeviceSecret,以及阿里云IoT账号的AccessKey和SecretKey生成MQTT密码,可以在阿里云控制台中找到。 7. 将代码上传到Arduino Uno板子上。 到这里,你已经完成了将湿度传感器数据发送到阿里云服务器的过程。如果你在阿里云IoT控制台中创建了一个Topic,则可以在控制台中查看设备上传的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值