SmartNode与物联网:项目1-8 智能声光控灯

学习目标:

  • 理解光线传感器的工作原理并能正确使用“模拟输入”节点;
  • 能正确连接并使用光线传感器,声音传感器和LED,完成智能声光控灯的制作;
  • 掌握多传感器协同工作的程序编写。

一、项目描述

随着环境污染越来越严重,节能减排的观念已经慢慢深入人心。日常生活中已经出现了许多低功耗智能化的电器,例如走廊中的智能声光控灯。晚上只要有人走动发出声音,我们智能灯就会点亮,如图 1所示。那么神奇的智能灯我们的Edison能否做到呢?我们动手试一试吧。

image196

图 1 走廊中的声光控灯

 

二、项目分析

制作智能声光控灯需要解决两个问题:1.需要判断外界环境的光线强度;2.当光线强度低时需要判断外界环境声音的强度,只有当声音强度大于一定阙值时点亮LED,否则则熄灭。项目分析可参考下表1所示:

表 1 项目分析表

项目名称 智能声光控灯
项目功能 当外界环境光线较低并有声音时,触发LED
器材清单 声音传感器、光线传感器、LED灯
工作流程  image198

 

三、基础知识

(一)光线传感器

光线传感器也称环境光线传感器,本案例使用的光线传感器是由DFRobot出品的模拟环境光线传感器,如图2所示。该传感器模块可以用来对环境光线的强度进行检测,通常用来制作随光线强度变化产生特殊效果的互动作品。

image200

图2 光线传感器

光线传感器是一种模拟传感器,它要接到Edison控制板的模拟口上,值范围为0~1023,光线强弱的不同会输出不同的值,光线越强数值越大,光线越暗数值越小。光线传感器在接线时,也是黑线接GND,红线接5V,第三根线接模拟针脚。

(二)“模拟输入”节点

模拟输入和数字输入相对,是指输入模拟信号(模拟量)。可以说,模拟输入就是输入连续信号。“模拟输入”节点在Edison中运用比较广泛,我们常使用的声音传感器、温度传感器和光线传感器都需要用到“模拟输入”节点。通过“模拟输入”节点可以向Edison发送连续变化的数据并引起判断和触发,“模拟输入”节点发送数据大小范围在0~1023。

image202

图 3 “模拟输入”节点

 

(三)多传感器协同工作

Smart_Node采用数据流的形式,这样对于多传感器协同工作的实现与传统编程思想截然不同。在本案例中我们使用声音传感器和温度传感器相结合控制LED的亮灭,核心思路就是实时判断声光线传感器的数值,当大于一定阙值向声音传感器发送“1”,最终通过判断声音传感器所收集到的数据,最终控制LED的亮灭。

image204

图 4 多传感器协同工作

 

四、实现过程

(一)硬件连接

我们将Edison、声音传感器、光线传感器和LED连接起来,在这里我们将LED连接到数字口5,声音传感器连接到模拟口A4,光线传感器连接到模拟口A0,如图 5 所示。

image206

图 5 “智能声光控灯”连接图

 

(二)流程设计

为了实现智能声光控灯的功能,我们需要实时判断外界光线强度,当强度较低时再判断外界声音强度大小。当外界声音阙值大于一定值时触发LED,使用延时命令在5秒钟后LED自动熄灭,参考程序如图 6所示。

image208

图 6 “智能声光控灯”参考程序

 

(三)节点设置

为了获取外界光线值,我们需要引用“模拟输入”节点。双击“模拟输入”节点之后会出现如下图7所示的界面,根据自己的需要,我们可以设置模拟口为A0,触发时间设置为100毫秒。

 image202  image211

图 7“模拟输入”节点及其设置

为了设置外界光线值的阙值,我们双击“判断”节点,如图 8所示。点击“+规则”按钮,在下拉框中选择“>”并输入100时并生成连接点1,在下拉框选择“<=”输入100并生成连接点2。为了程序的可读性,也可以对节点名称进行设置。

 image184  image215

图 8 外界光线值的“判断”节点及其设置

 

 image146  image148

引入“改变”节点可以实现当外界光线值低于一定阙值时触发下一节点,双击“改变”节点即可对于“改变”节点进行设置。在本案例中为了控制让声音传感器的工作和LED灯熄灭,将“改变”节点分别设置“1”或“0”,如图 9所示。

图 9 “改变”节点及其设置

 

为了获取外界声音值,我们引入Smart_Node中的“声音传感器”节点,双击后即可设置,如图10所示。

 image219  image221

图10 “声音传感器”节点及其设置

 

为了设置外界声音值的阙值,双击“判断”节点,如图11所示。点击“+规则”按钮,在下拉框中选择“>”并输入50时并生成连接点1,在下拉框选择“<=”输入50并生成连接点2。

 image184  image224

图 11 外界声音值的“判断”节点及其设置

“延时”节点设置比较简单,双击后即可根据需要设置延时的时间,如下图12所示。

 image226  image228

图 12 “延时”节点及其设置

LED节点的设置也比较简单,只需要对数字口进行设置即可,在本案例中我们设置为数字口5,如图 12所示。

 

 image019  image021

图 12  LED节点及其设置

 

通过对以上节点的设置,将各个节点连接起来,就可以实现我们智能声光控灯的程序编写。

(四)效果测试

点击“部署”按钮,可以观察LED灯是否可以正常工作。需要注意的是,需要根据实际情况对具体外界环境的光线强度和声音的阙值进行调整。如果不能产生预期的效果,可以老师或同学交流问题所在。最后分享自己的作品和经验。

 

五、挑战自我

“智能声光控灯”程序看着很复杂,但是按照节点数据流梳理后也是很简单的。但是有的同学会觉得这样还不是很完善,外界环境光线较低时,外界声音可能不是人走路发出来的,但是这样LED也会点亮。那么能不能使用红外数字传感器、声音传感器和光线传感器一起协同工作完成新型智能声光控灯呢?动手试试吧。

 

六、扩展阅读

多传感器协同工作

Smart_Node的工作方式采用节点数据流的形式,和我们一般传统编程方式不同,因此在Smart_Node中多传感器协同工作也和传统编程方式不同,在Smart_Node中只有当一个节点满足时才会触发下一个节点(上一节点输出“1”时,才会触发下一节点;上一节点输出“0”时,不能触发下一个节点),这样就使得每一个节点都是独立的,相当于一个黑箱。只需要判断节点是否接受“1”以及通过内部模块运算判断向下一个节点输出“1”或者“0”即可,以此类推。

例如在本案例中,如下图13所示。光线传感器先获取外界环境光强度,并通过“判断”节点判断外界光线阙值,向声音传感器发送“1”或者“0”,当声音传感器接受“1”时,被触发并以此类推向下一节点类推。

image232

图13 智能声光控LED

不管是多少传感器协同工作,只需要注意:1.当节点条件满足时输出“1”并触发下一个节点;当条件不满足时输出“0”,下一节点不工作,按照数据流的形式节点以此类推;2.如果想触发多个节点可以向多个传感器发送数字,如下图14所示。

image234

图14 触发多个节点

发表评论

电子邮件地址不会被公开。 必填项已用*标注

跳至工具栏