博客
关于我
Arduino读取DHT11的温湿度显示在基于I2C的1602上
阅读量:389 次
发布时间:2019-03-05

本文共 2378 字,大约阅读时间需要 7 分钟。

背景摘要

又到了周末,B站的番还未更新。闲来无事,搞搞吃灰已久的Arduino。

南方的冬天真冷啊,测测屋子里的温湿度怎么样!为了测量屋子里的温湿度,就用简单大方的Arduino,STM32继续吃灰去。

Arduino的开发流程

开发流程,无外乎是 硬件 与 软件 啦(废话2333)

一、硬件的搭建:

1.Arduino 板子的选择:

本人吃土啃老大学生一枚,专业是最不赚钱的机械自动化,所以手上的板子只有国产Arduino UNO 和 ESPduino。我一开始想用ESPduino作为开发板,想着以后能把温湿度上传到云,便一开始用ESPduino结果做到一半发现DAC口只有一个,根本不能实现用LiquidCrystal_I2C库(这个库最低要两个DAC口),Arduino yun买不起,就只有用UNO了。(下面是ESPduino)

2.其他配件

杜邦线就不用说了,还有DHT11和接有PCF8572AT的LCD1602啦。为什么LCD1602要接PCF8572AT?因为省线,只要4根线,电源两根、I2C通讯两根。而且还有配套的库,方便实惠。(下面是I2C通讯1602图)

3.接线

LCD1602 i2c模块                         Ardunio Uno

GND                           <------>        GND接地线

VCC                           <------>         3.3V 接电源

SDA                            <------>         A4

SCL                            <------>         A5

 

DHT11模块                                Arduino UNO

GND                           <------>        GND接地线

VCC                           <------>         3.3V 接电源

DATA                         <------>          PIN 2

接好后如下所示,so easy啦

 

二、开始编程

1.开发环境

开发环境我选择最有逼格的VS

纳尼!!!VS能开发Arduino???眼见为实:

很方便有木有?按下Tab自动补充,避免打错和忘记方法,简直神奇,Arduino IDE弱爆了。怎么搞?下一个Visual Micro,查一查CSDN别人写的博客就OK啦,反正我是搞了很久才破解好的。想要高逼格就要下功夫。

2.程序写入

// Visual Micro is in vMicro>General>Tutorial Mode// /*Name:       DHT11.inoCreated:	2020/1/3 16:52:45Author:     DESKTOP-TGBP3JC\LENOVO*/// Define User Types below here or use a .h file//// Define Function Prototypes that use User Types below here or use a .h file//// Define Functions below here or use other .ino or cpp files//// The setup() function runs once each time the micro-controller starts//定义头文件:总线通讯/1602显示屏的I2C通讯/DHT11的头文件#include 
#include
#include
#define uint unsigned int#define ulong unsigned long#define DHT11PIN 2float humi, temp;//设置LCD1602设备地址,我这里是PCF8572AT,地址是0x3F,一般是0x20,或者0x27具体看模块手册LiquidCrystal_I2C lcd(0x3F, 16, 2);dht11 DHT11;void setup(){ //1602初始化 lcd.init(); lcd.backlight(); //重启时可以让1602黑一下,更有逼格 delay(500);}// Add the main program code into the continuous loop() functionvoid loop(){ //读取DHT11 int chk = DHT11.read(DHT11PIN); //LCD设置光标 lcd.setCursor(0, 0); //打印湿度 lcd.print("Humi(%):"); lcd.print((float)DHT11.humidity, 2); //LCD设置光标 lcd.setCursor(0, 1); //打印温度 lcd.print("Temp(oC):"); lcd.print((float)DHT11.temperature, 2); //延时一段时间 delay(3000);}

说明一下,PCF8572AT是有地址的。地址不对啥都显示不出来,寻找这些地址的程序和原理自己谷歌百度都行。

这些库要自己装啊,否则报错的说。DTH11的库大家应该都有,LCD1602 I2C的库,下载地址是 https://github.com/marcoschwartz/LiquidCrystal_I2C

把下载的库放到Arduino的库里,文件夹是D:\Arduino IDE\Arduino\libraries,打开可以看到里面有很多的内置库文件,可以自己写库玩玩。

在VS micro下可以自动加载未下载的库,十分方便。

实验效果:

室内15°C的温度71%的湿度,湿冷湿冷的,在大连的朋友说室内穿短袖,要不停的喝水否则口干舌燥的,羡慕ing

 

展望

想以后能把数据传到网上,树莓派啊,Micro Python啊都用上,做一个智能家居系统。可是我啥也不会啊。。。

转载地址:http://pnewz.baihongyu.com/

你可能感兴趣的文章
navicat 添加外键1215错误
查看>>
navicat 系列软件一点击菜单栏就闪退
查看>>
navicat 自动关闭_干掉Navicat!MySQL官方客户端到底行不行?
查看>>
Navicat 设置时间默认值(当前最新时间)
查看>>
navicat 连接远程mysql
查看>>
navicat:2013-Lost connection to MySQL server at ‘reading initial communication packet解决方法
查看>>
Navicate for mysql 数据库设计-数据库分析
查看>>
Navicat下载和破解以及使用
查看>>
Navicat中怎样将SQLServer的表复制到MySql中
查看>>
navicat创建连接 2002-can‘t connect to server on localhost(10061)且mysql服务已启动问题
查看>>
Navicat可视化界面导入SQL文件生成数据库表
查看>>
Navicat向sqlserver中插入数据时提示:当 IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显式值
查看>>
Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))
查看>>
Navicat如何连接MySQL
查看>>
navicat导入.sql文件出错2006- MySQLserver has gone away
查看>>
Navicat导入海量Excel数据到数据库(简易介绍)
查看>>
Navicat工具Oracle数据库复制 or 备用、恢复功能(评论都在谈论需要教)
查看>>
navicat工具查看MySQL数据库_表占用容量_占用空间是多少MB---Linux工作笔记048
查看>>
navicat怎么导出和导入数据表
查看>>
Navicat报错connection is being used
查看>>