本帖最后由 hollyedward 于 2024-3-4 13:37 编辑
一、DHT11温湿度传感器
1、模块介绍
DHT11是一种工作电压为3.3V~5V的温湿度传感器。在室温条件下(25摄氏度左右),湿度的可测量范围为20%~90%RH,精度为±5%RH,温度的可测量范围为0~50℃,精度为±2℃。温湿度传感器的另一种选择是DHT22传感器,它具有更好的精度。其湿度可测量范围为0%~100%RH,精度为±5%RH,温度可测量范围为-40~125℃,精度为±0.2℃。
传感器上有4个引脚:
pin名称 |
用途 |
VCC |
供电3.3~5V |
DATA |
数据单总线 |
NC |
接空 |
GND |
接地 |
一般NC脚接空没有用,市面上只有3个引脚的温度/湿度传感器,将传感器的三脚引出,同时加了上拉电阻5k:
DHT11数字湿温度传感器采用单总线数据格式。即,单个数据引脚端口完成输入输出双向传输。其数据包由5Byte(40Bit)组成。数据分小数部分和整数部分
一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和校验和数据为前四个字节相加。传感器数据输出的是未编码的二进制数据。数据(湿度、温度、整数、小数)之间应该分开处理。如果,某次从传感器中读取如下5Byte数据:由以上数据格式可以得到温湿度计算方法humi (湿度)= byte4 . byte3=45.0 (%RH)temp (温度)= byte2 . byte1=28.0 ( ℃)jiaoyan(校验)= byte4+ byte3+ byte2+ byte1=73(=humi+temp)(校验正确)
2、模块连接
一般买过来的模块都是安装在pcb板上的,未安装在PCB上的DHT传感器,则必须在数据线添加5k~10K欧姆上拉电阻。
接入开发板的3.3电源,数据线接端口8
3、烧录程序
#include "DHT.h"
// The digital pin we're connected to.
#define DHTPIN 8
// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println(F("DHTxx test!"));
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
}
串口输出结果
二、光敏电阻模块
1、模块介绍
光敏电阻模块是一种使用光敏电阻的传感器模块。光敏电阻是一种光照强度变化时电阻值也会变化的电阻器。光敏电阻模块通常由光敏电阻、比较器、限流电阻和电源电路组成。
光敏电阻模块的原理是利用光敏电阻的光电效应。当光照强度变化时,光敏电阻的电阻值也会变化。比较器将光敏电阻的电阻值与参考电压进行比较,输出高电平或低电平。限流电阻用于限制流过光敏电阻的电流,保护光敏电阻。电源电路用于为光敏电阻模块提供电源。
光敏电阻模块的接线方法如下:
- VCC:接电源正极
- GND:接电源负极
- DO:数字输出
- AO:模拟输出
BW16上有一个模拟量adc输入口A2
2、烧录代码
光强改变rgb灯颜色,设置一个阈值
#ifndef BOARD_AITHINKER_BW16
#error "Please use this example on the BW16 Board"
#endif
const int analogPin = A2; // 模拟脚A0 定义为analogPin
int inputValue = 0;//设置一个全局变量
void setup() {
Serial.begin(115200); // 设置串口波特率
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
}
void loop(){
// 将模拟引脚A0口上读入的电压量的数值,赋值到inputValue上,然后打印出来
inputValue = analogRead(analogPin);
Serial.print("LDR Reading:");
Serial.println(inputValue);
if(inputValue < 300){
// fade RED in from min to max in increments of 5 points:
for (int fadeValue = 0; fadeValue <= 255; fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(LED_R, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
// fade RED out from max to min in increments of 5 points:
for (int fadeValue = 255; fadeValue >= 0; fadeValue -= 5) {
// sets the value (range from 0 to 255):
analogWrite(LED_R, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
} // wait for a second
}
if(inputValue >= 300 && inputValue < 1100){
// fade BLUE in from min to max in increments of 5 points:
for (int fadeValue = 0; fadeValue <= 255; fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(LED_B, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
// fade BLUE out from max to min in increments of 5 points:
for (int fadeValue = 255; fadeValue >= 0; fadeValue -= 5) {
// sets the value (range from 0 to 255):
analogWrite(LED_B, fadeValue);
// wait for 30 milliseconds to see the dimming effect
delay(30);
}
}
delay(1000);
}
烧录结果:
光照强的时候,红色呼吸灯
光照弱的时候,蓝色呼吸灯
reference:
https://www.amebaiot.com.cn/en/amebad-arduino-gpio-dht/
DHT11 Humidity & Temperature Sensor 文档
DHT11传感器的学习使用
Arduino的光敏电阻应用