Page Title

第8课 在Arduino中使用温湿度传感器和OLED——环境监测仪


2019-07-31 15:36:49

blob.png

人类舒适的生活环境,与温度、湿度的高低密切相关。本课我们将制作一个环境自动监测仪,它不仅能够在数码管上实时显示温度、湿度值,还可以通过RBG LED的颜色了解环境温度是否适宜。

blob.png

要制作本课的范例作品,需要使用以下新的硬件模块:

温度、湿度传感器模块


温度、湿度传感器是指能够感受温度、湿度并转换成电信号的传感器。

Arduino套件中的温度、湿度传感器采用的是“DHT11”温湿度传感器(如下图8-1所示)。这是一款温湿度复合传感器,既能够检测温度、又能够检测湿度。它的温度检测范围是(0℃-50℃)、误差值±2℃;湿度检测范围是(20%-90%RH)、误差值±5%RH。


blob.png


 图8-1 DHT11温湿度传感器模块

注:日常生活中所指的湿度是“相对湿度”,采用“%RH”表示。“90%RH”就是指空气中实际水蒸气的含量与相同温度下饱和水蒸气含量的百分比是90%

OLED模块


OLED的中文名称叫做“有机发光二极管”。它具有自发光的特性,每个像素都可自行发光,不管在什么角度、什么光线下都可以清晰显示,而且环境越暗屏幕显示越清楚。在创客作品中,一般用OLED显示字符以及数字。


blob.png


8-2 OLED模块

 

要制作本课的范例作品,还需要使用以下新的指令:

blob.png

使用“读DHT11”指令可以读取指定端口温湿度传感器上输出的温度、湿度值。指令默认读取的是温度值;通过单击下拉列表,可以选择读“温度”还是“湿度”。单击端口设置的下拉列表 ,选择温湿度传感器与扩展板的连接端口

blob.png

使用“OLED清除”指令可以用于清除OLED上面的内容。

blob.png

使用“OLED显示数”指令可以设置OLED显示数值并且对数值显示的位置进行设定。默认显示的数字是123,从第一行第一列即左上角开始显示内容。

blob.png

使用“OLED显示字符”指令可以设置OLED显示英文文本。默认显示的文本是”hello world”,若要输入其他的内容,只需要修改英文冒号中间的内容。目前OLED也无法显示中文。

 

blob.png 

要制作本课的范例作品,需要使用以下器材:

²  UNO主控板和配套的扩展板

²  OLED模块:一个

²  温湿度传感器模块:一个

²  RGB LED模块:一个

²  4P连接线:一根

²  3P连接线:二根

第一步:连接硬件、运行插件                       


要搭建本课的范例作品硬件,可以按以下步骤操作:

1.      UNO扩展板插入到UNO主控板上。

2.      4P连接线白色插头插入数码管模块的接口中、黑色插头插入扩展板第二排右边的IIC端口,黑色插头插入时要注意连接线每根线的颜色和扩展板插座针脚的颜色相同。

3.      将一条3P连接线白色插头插入温湿度传感器的白色接口中、黑色插头插入扩展板中间的“3”号端口,黑色插头插入时要注意连接线每根线的颜色和扩展板插座针脚的颜色相同。

4.      将另一条3P连接线白色插头插入RGB LED模块的白色接口中、黑色插头插入扩展板中间的“2”号端口,黑色插头插入时要注意连接线每根线的颜色和扩展板插座针脚的颜色相同。

具体器材连接方式如下图8-2所示:

blob.png

 


8-3 “环境自动监测仪”范例作品硬件连接图

5.      USB线把主控板和计算机连接起来,打开“好好搭搭硬件下载”插件,选择“型号”为“UNO”,确认插件程序左下角的端口和型号显示正确。

第二步:在OLED上显示温度                      


登录“好好搭搭”网站,选择“创作”栏目中的“Arduino模板”,进入“Arduino编程设计页”进行编程。

要在OLED上显示环境温度值,可以使用“重复执行”指令,重复执行“点阵屏消除”、 OLED显示数”、 “等待”指令。具体程序代码如下图8-4所示:


blob.png

 


8-4 “在OLED上显示温度”程序代码

blob.png

OLED第一行显示环境温度值,第二行显示环境湿度值。

 

 

第三步:在OLED上用字符标注数值


OLED上同时显示环境温度数值和湿度数值,为了让显示的数值内容更为直观,可以添加文本标注。温度的英文为“temperature”,湿度的英文为“humidity”,此处可以取两个单词的前三位字母“tem”和“hum”分别用来表示温度和湿度。每隔一秒便会读取一次环境的温度和湿度值,保证显示数值的实时性,而用于标注数值的字符“tem”、“hum”是固定不变的。

此处可用“重复指令”、“OLED清除”以及两个“OLED显示数值”和“OLED显示字符”、“等待”等指令。

具体程序代码如下图8-5所示:


blob.png


8-5 “在OLED上用字符标注数值”程序代码

blob.png

8-5所示程序编译下载后,分四行显示内容,第一行显示“tem:,第二行显示温度数值,第三行显示“hum:,第四行显示湿度数值。如果要让“tem:”和温度数值在同一行显示、“hum:”和湿度数值在同一行显示,程序应该如何修改?

 

 

 

第四步:用RGB LED做智能环境监测仪                  


除了使用OLED显示温湿度值,也可以利用RGB LED直观显示温度状态:比如温度如果比较适宜,那么RGB LED显示绿色;如果温度太高了,那么RGB LED显示红色;如果温度太低了,那么RGB LED显示蓝色。

具体的程序代码如下图8-6所示:


blob.png

8-6 “用RGB LED直观显示温度状态”程序代码


blob.png

8-7 “用RGB LED直观显示温度状态”RGB功能模块程序代码

blob.png

除了用RGB LED直观显示温湿度,对于异常的数值,还可以采用蜂鸣器报警。请进一步完善程序代码,使得环境自动监测仪能够使用蜂鸣器报警。

 

 

blob.png

除了温度和湿度,我们还可以监测周围环境的光线强度、声音强度……请进一步完善作品,使得环境自动监测仪功能更加强大。

我打算这么做:_______________________________________________________

______________________________________________________________________

做的时候需要注意:____________________________________________________

______________________________________________________________________