基于Arduino UNO的温湿度传感器使用方法(Arduino系列十六)

目录

1、所需材料

2、模块简介

2.1 Arduino UNO

2.2 温湿度模块 (DHT11)

3、接口接线

4、使用的附加库+代码示例

4.1 使用DHT11

4.2代码示例

5、总结


1、所需材料

Arduino  UNO 开发板 +温湿度传感器+公对母杜邦线三根

2、模块简介

2.1 Arduino UNO

Arduino Uno 是一款基于 微控制器 MTATmega328P的开发板。它有14个数字输入/输出引脚(这些引脚中有6个引脚可以作为PWM输出引脚),6个模拟输入引脚,16 MHz石英晶振,USB接口,电源接口,支持在线串行编程以及复位按键。用户只需要将开发板与电脑通过USB接口连接就可以使用。

2.2 温湿度模块 (DHT11)

DHT11是一种常见的低成本温湿度传感器,可测量温度范围为0℃至50℃,相对湿度范围为20-90%。

 

3、接口接线

Arduino UNOOLED显示模块
5VVCC
GNDGND
pin2DATA

4、使用的附加库+代码示例

4.1 使用DHT11

4.2代码示例

#include <DHT11.h>
DHT11 dht11(2);

void setup() {

    Serial.begin(9600);
}

void loop() {
    int temperature = 0;
    int humidity = 0;
    int result = dht11.readTemperatureHumidity(temperature, humidity);
    if (result == 0) {
        Serial.print("当前温度: ");
        Serial.print(temperature);
        Serial.print(" °C\t当前湿度:");
        Serial.print(humidity);
        Serial.println("%");
    } else {
        Serial.println(DHT11::getErrorString(temperature));
    }
      delay(1000);
}

5、总结

改模块的使用需要调用DHT11库,运行时候要用该库对输出结果进行转换,才能显示实际温湿度。

要基于Arduino Uno开发板使用DHT11传感器采集温湿度数据并通过ESP8266-01S WiFi模块上传到阿里云,你需要遵循以下步骤: 1. **硬件准备**: - Arduino Uno开发板 - DHT11温度湿度传感器 - ESP8266-01S WiFi模块 - 电线、面包板和连接线 2. **软件库安装**: - 在Arduino IDE中,你需要安装`DHT`库(用于DHT11通信)和`PubSubClient`库(用于WiFi和HTTP通信)。你可以从官方网站下载或通过IDE的Sketch -> Include Library -> Manage Libraries...功能安装。 3. **编写主程序**: ```cpp #include <DHT.h> #include <ESP8266WiFi.h> #include < PubSubClient.h> // 传感器的连接信息 const int dhtPin = D4; // DHT11的数据引脚 const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; // 阿里云物联网平台的设备标识和API密钥 const char* deviceName = "your_device_name"; const char* aliyunTopic = "iot_topic"; // 云端主题 const char* aliyunHost = "物联管理控制台URL"; // 例如"http://yunmqtt.cn-shanghai.aliyuncs.com" DHT dht(dhtPin); WiFiClient client; PubSubClient esp(client, WiFi.localIP()); void setup() { Serial.begin(9600); // 初始化串口通信 delay(10); // 等待串口稳定 if (WiFi.mode(WIFI_STA) != WL_CONNECTED) { Serial.println("Connecting to WiFi..."); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("Connected to WiFi"); } // 设置阿里云设备和主题 mqtt_setServer(aliyunHost, 1883); mqtt_setCallback(callbackFunction); } void loop() { if (!esp.connected()) { reconnect(); } else { dht.begin(); // 启动DHT11 float temperature, humidity; if (dht.readTemperature(&temperature) && dht.readHumidity(&humidity)) { String data = "temp=" + String(temperature) + "," + "humidity=" + String(humidity); publishToCloud(data); } dht.end(); // 关闭DHT11 delay(10 * 1000); // 每隔10秒读取一次数据 } } // MQTT回调函数 void callbackFunction(char* topic, byte* payload, unsigned int length) { Serial.println(topic); Serial.print("Payload received: "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } // 连接并重试机制 void reconnect() { while (!esp.connect(deviceName)) { delay(5000); Serial.println("Attempting MQTT connection..."); } subscribeToCloud(); } // 发布数据到云端 void publishToCloud(String data) { static char msgBuffer[256]; strcpy(msgBuffer, "devices/" + deviceName + "/data/"); strcat(msgBuffer, data.c_str()); if (esp.publish(aliyunTopic, msgBuffer, true)) { // 发送并确认消息 Serial.println("Data published."); } else { Serial.println("Publish failed."); } } // 订阅云端主题 void subscribeToCloud() { if (esp.subscribe(aliyunTopic) == ESP_OK) { Serial.println("Subscribed to topic!"); } else { Serial.println("Subscribe failed."); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值