欢迎光临
我们一直在努力

基于Arduino的手机显示蓝牙温湿度计(HC05蓝牙、温湿度模块、1602显示屏)

1、概述

对于模块不了解的,可以先看一下我们的模块教程[传送门],了解掌握模块使用方法后,再尝试本小实验。因为综合实验一般涉及多个模块,我们仅对全部使用我司产品的客户做技术支持,若只是部分使用我司产品的,我们只对我司产品部分是否有故障进行排查。

2、所需材料

1、UNO主控板:官方板 或者 国产板
2、辅助配件:面包板杜邦线
3、传感器和模块:HC05蓝牙模块温湿度模块1602显示屏IIC版

3、接线

Arduino DHT11
5V VCC
GND GND
D2 DATA
HC-05蓝牙模块 Arduino
VCC 5V
GND GND
TXD D0(RX)
RXD D1(TX)
Arduino IIC1602显示屏
5V VCC
GND GND
A4 SDA
A5 SCL

4、示例程序



\#include <LiquidCrystal_I2C.h> #include <Wire.h> LiquidCrystal_I2C lcd(0x3B,16,2);//定义I2C地址:0x3B,按照自己的设备自行修改I2C地址。 int humi;//定义湿度 int tol;//定义校对码 int temp;//定义温度 int j;//定义变量 unsigned int loopCnt; int chr[40] = {0};//创建数字数组,用来存放40个bit unsigned long time; #define pin 2//定义DHT11引脚号 void setup() { Serial.begin(38400);//设置串口波特率38400 } void loop() { bgn: delay(2000); pinMode(pin,OUTPUT); digitalWrite(pin,LOW); delay(20); digitalWrite(pin,HIGH); delayMicroseconds(40); digitalWrite(pin,LOW); //设置2号接口模式:输入 pinMode(pin,INPUT); //高电平响应信号 loopCnt=10000; while(digitalRead(pin) != HIGH) { if(loopCnt-- == 0) { //如果长时间不返回高电平,输出个提示,重头开始。 Serial.println("HIGH"); goto bgn; } } //低电平响应信号 loopCnt=30000; while(digitalRead(pin) != LOW) { if(loopCnt-- == 0) { //如果长时间不返回低电平,输出个提示,重头开始。 Serial.println("LOW"); goto bgn; } } //开始读取bit1-40的数值 for(int i=0;i<40;i++) { while(digitalRead(pin) == LOW) {} time = micros(); while(digitalRead(pin) == HIGH) {} //当出现低电平,记下时间,再减去刚才储存的time //得出的值若大于50μs,则为‘1’,否则为‘0’ //并储存到数组里去 if (micros() - time >50) { chr[i]=1; }else{ chr[i]=0; } } //湿度,8位的bit,转换为数值 humi=chr[0]*128+chr[1]*64+chr[2]*32+chr[3]*16+chr[4]*8+chr[5]*4+chr[6]*2+chr[7]; //温度,8位的bit,转换为数值 temp=chr[16]*128+chr[17]*64+chr[18]*32+chr[19]*16+chr[20]*8+chr[21]*4+chr[22]*2+chr[23]; //校对码,8位的bit,转换为数值 tol=chr[32]*128+chr[33]*64+chr[34]*32+chr[35]*16+chr[36]*8+chr[37]*4+chr[38]*2+chr[39]; //输出:温度、湿度、校对码 Serial.print("temperature:"); Serial.println(temp); Serial.print("humidity:"); Serial.print(humi); Serial.println("%RH"); Serial.print("tol:"); Serial.println(tol);//校对码输出至串口 lcd.init(); lcd.backlight(); lcd.print("temperature:"); lcd.print(temp); lcd.print((char)223); lcd.println("C"); //显示摄氏度符号 lcd.setCursor(0,1);//在LCD上换行 lcd.print("humidity:"); lcd.print(humi); lcd.println(" %RH");//空两行防止出现乱码,同时将湿度单位输出到LCD }

手机端和显示屏显示效果:

Arduino串口监视器显示效果:

5、蓝牙设置

参照下面五项AT指令进行设置:
AT+ORGL
AT+NAME=ZBST999
AT+ROLE=0
AT+CMODE=1
AT+PSWD=1234

6、相关下载

1、库文件
2、蓝牙SPP软件(安卓APK)

未经允许不得转载:Arduino-Maker » 基于Arduino的手机显示蓝牙温湿度计(HC05蓝牙、温湿度模块、1602显示屏)

支付宝扫码打赏 微信打赏

原创文章,若帮到您,欢迎打赏

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

线上商城

中贝斯特创客空间蘑菇云创客教育