基于STM32,DHT11,LCD显示的蓝牙温湿度检测完整代码
时间: 2023-08-26 18:03:42 浏览: 131
下面是一个基于STM32、DHT11和LCD显示的蓝牙温湿度检测完整代码,使用HC-05蓝牙模块将温湿度数据发送到蓝牙终端设备上,同时将数据显示在1602液晶屏上:
```
#include <dht11.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#define DHT11_PIN PB1 //DHT11传感器数据引脚
#define BT_TX PA2 //蓝牙模块TX引脚
#define BT_RX PA3 //蓝牙模块RX引脚
#define LCD_RS PA4 //LCD1602 RS引脚
#define LCD_EN PA5 //LCD1602 EN引脚
#define LCD_D4 PA6 //LCD1602 D4引脚
#define LCD_D5 PA7 //LCD1602 D5引脚
#define LCD_D6 PB0 //LCD1602 D6引脚
#define LCD_D7 PB10 //LCD1602 D7引脚
dht11 DHT11; //DHT11传感器对象
SoftwareSerial BTSerial(BT_TX, BT_RX); //蓝牙串口对象
LiquidCrystal lcd(LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7); //LCD1602对象
void setup() {
Serial.begin(9600);
BTSerial.begin(9600);
lcd.begin(16, 2);
lcd.print("Temp: Humi: ");
}
void loop() {
int chk = DHT11.read(DHT11_PIN);
if (chk == DHTLIB_OK) {
float temp = DHT11.temperature;
float humi = DHT11.humidity;
String temp_str = String(temp, 1) + " C";
String humi_str = String(humi, 1) + " %";
lcd.setCursor(6, 0);
lcd.print(temp_str);
lcd.setCursor(6, 1);
lcd.print(humi_str);
String data = String(temp) + "," + String(humi);
BTSerial.println(data); //将温湿度数据通过蓝牙发送出去
Serial.println(data); //将温湿度数据打印到串口监视器
} else {
Serial.print("DHT11 read error: ");
Serial.println(chk);
}
delay(3000); //每隔3秒采集一次温湿度数据
}
```
需要注意的是,本示例使用的是HC-05蓝牙模块和LCD1602液晶屏,如果您使用的是其他型号的蓝牙模块或显示屏,可能需要进行相应的修改。另外,由于DHT11读取数据的时间较长,需要在发送数据之前加一定的延时,以免出现数据传输错误。
阅读全文