跳转到主要内容
kelly 提交于

<br>作者:谢作如 张敬云 李守良</br>

<strong><font size="5">第一单元 连接物理世界</font></strong>

<strong><font size="5">项目1-2 延时灯</font></strong>

<strong><font size="5">学习目标:</font></strong>

1、理解并能正确完成延时灯的制作;

2、熟练掌握并能正确使用“改变”和“延时”节点;

3、熟悉节点间数据传送规则。

<strong><font size="5">一、项目描述</font></strong>

物联网是在互联网基础上延伸和扩展的一种网络,核心与基础仍是互联网。在学会使用Smart_Node实现强大的物联网之前,我们需要从基础做起。这节课我们就利用手中的Edison套材制作一个按钮控制的延时LED灯吧,如图 1所示。

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10017-1.png…; alt=""></center>

<center><i>图 1 传统的家用灯</i></center>

<br><strong><font size="5">二、项目分析</font></strong></br>

由于Smart_Node采用节点数据流的形式传送数据,因此制作延时灯的关键问题就是控制节点信息传送的流入和流出,并且我们还需要使用“改变”节点和“延时”节点,项目分析可参考下表1所示:

<center><i>表 1 项目分析表</i></center>

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10018-3.jpg…; alt=""></center>

<br><strong><font size="5">三、基础知识</font></strong></br>

<strong>(一)按钮</strong>

按钮,也称为按键,是一种常用的控制电器元件,常用来接通或断开“控制电路”,从而达到控制电动机或其他电器设备运行目的的一种开关。

我们使用的开关属于按压式的开关数字输入模块,能够实现非常有趣的互动作品,使用方便可以做到“即插即用”。按钮有两种状态,即按下或者放开。如图 2 所示。我们使用的这款按钮按下时1(HIGH),放开是0(LOW),所以按钮模块连接爱迪生控制器的数字口。

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10019-4.jpg…; alt=""></center>

<center><i>图 2 按钮</i></center>

<br><strong>(二)LED灯</strong></br>

LED灯是最为畅销的入门级产品。它具有可爱的外形、强力的亮度、斑斓的色彩和简单的操作,是入门玩家必备的电子元件。如图 3所示,你可以用数字端口控制灯的亮灭,也可以用模拟口控制它的亮度。LED模块为输入高电平发亮,低电平则灯灭。

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10020-5.jpg…; alt=""></center>

<center><i>图 3 LED灯</i></center>

<br><strong>(三)节点间数据的传送规则</strong></br>

Smart_Node节点间数据传输采用数据流的形式,默认按照从左到右的形式传输数据。在本案例中由于LED只能接受“0”和“1”两种数据,因此需要引用“改变”节点向LED传送数据。如图 4所示,“按钮”节点触发后将数据传输分成两部分,一部分是直接传入LED节点;一部分传输到“延时”节点和“改变”节点(闭合),最后同样流入LED节点。

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10021-6.jpg…; alt=""></center>

<center><i>图 4 节点间数据传输案例</i></center>

<br><strong><font size="5">四、实现过程</font></strong></br>

<strong>(一)硬件连接</strong>

我们将Edison、按钮和LED连接起来,在这里我们将按钮连接到数字口11,LED灯连接到数字口5,如图 4 所示。

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10022-7.jpg…; alt=""></center>

<center><i>图 5 “延时灯”连接图</i></center>

<br><strong>(四)流程设计</strong></br>

为了实现延时灯的功能,我们需要使用按钮触发程序的运行,还需要引入延时模块,延时控制LED亮灭,通过控制节点间的连接方式控制节点间信息的传送,参考程序如图 6所示。

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10023-8.jpg…; alt=""></center>

<center><i>图 6 延时灯参考程序</i></center>

<br><strong>(五)节点设置</strong></br>

双击“按钮”节点之后会出现如下图7所示的界面,根据自己的需要,我们可以设置数字口为11,触发时间设置为500毫秒。

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10024-9.jpg…; alt=""></center>

<center><i>图 7 按钮节点及其设置</i></center>

<br>“延时”节点,顾名思义就是将从上一节点的信息延时发送到下一节点。在Smart_Node中已经将延时模块进行了分装,用户只需要拖入并连接即可。此节点的设置也比较简单。如图 8所示,我们选择“行为”下拉框中的“延迟消息”,设置时间为“2秒”。为了程序的可读性,也可以对节点名称进行设置。</br>

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10025-10.jp…; alt=""></center>

<center><i>图 8 “延时”节点及其设置</i></center>

<br>想一想:</br>

1、什么时候“行为”设置为“延迟消息”、“随机延迟”、“限制范围”和“基于主题的公平队列”呢?他们之间有什么区别?

“改变”节点主要功能是对传入的信息进行条件分配。其作用相当于编程语言中的switch和if else分支,点击左下角“+规则”添加分支。在本案例中为了控制LED灯熄灭,我们将“规则”设置为0,如图 9所示。

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10026-11.jp…; alt=""></center>

<center><i>图 9 “改变”节点及其设置</i></center>

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10027-12.pn…; alt=""></center>

<br>LED节点的设置比较简单,根据需求只需要对数字口进行设置即可,在本案例中我们设置为数字口5,如图 10所示。</br>

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10028-13.jp…; alt=""></center>

<center><i>图 10 LED节点及其设置</i></center>

<br>通过对以上节点的设置,将各个节点连接起来,就可以实现我们延时灯的程序编写。</br>

<strong>(六)效果测试</strong>

点击“部署”按钮,按下按钮后可以观察LED灯是否正常延时的效果。需要注意的是,只有当按钮按下的时间超过impulse(触发)时间,按钮才能触发下一节点。如果不能产生预期的效果,可以老师或同学交流问题所在。最后分享自己的作品和经验。

<strong><font size="5">五、挑战自我</font></strong>

“延时灯”的制作很简单吧,大家已经对对于Smart_Node节点间数据传输有了一定的了解,那么请同学们能不能实现按钮按下LED亮,再按下LED灭的效果呢?动手试试吧。

<strong><font size="5">六、扩展阅读</font></strong>

<strong>(一)闪烁灯1</strong>

通过制作延时灯,我们对于Smart_Node节点间的数据传输有了进一步的了解,接下来我们就动手制作一个闪烁灯吧。当按钮按下时,LED一会亮一会灭,像星星眨眼一样。程序如图 11所示,我们将两个“改变”节点的参数分别设置为1和0,并分别命名为“开启”和“闭合”,按钮针脚设置为5,LED设置为11。

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10029-14.jp…; alt=""></center>

<center><i>图 11 “闪烁灯”程序</i></center>

<br>程序数据传输分成三部分:1、当触发按钮时,数据从“按钮”节点流出进入“延时2s(上)”节点,延时2s后,通过“开启”节点最后流入LED节点,0-2s,LED是熄灭的;如图 12所示:</br>

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10030-15.jp…; alt=""></center>

<center><i>图 12 传输路径1</i></center>

<br>2、数据通过“延时2s(上)”节点后,流入下面的“延时2s(下)”节点,再延时2s后通过“闭合”节点后流入LED节点,2-4s,LED是亮的,如图 13所示。</br>

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10031-16.jp…; alt=""></center>

<center><i>图 13 传输路径2</i></center>

<br>3、通过“延时2s(下)”节点再重新流入“延时2s(上)”节点,4-6s,LED是熄灭的。如图 14所示,以此类推。</br>

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10032-17.jp…; alt=""></center>

<center><i>图 14 传输路径3</i></center>

<br><strong>(二)闪烁灯2</strong></br>

除了这种方式制作闪烁灯外,我们的Smart_Node已经专用的闪烁灯节点,通过此节点制作闪烁灯就很简单了。我们将按钮针脚设置5,LED针脚设置为11。运行程序后就可以发现LED像星星眨眼了,如图 15所示。

<center><img src="http://intel.eetrend.com/files/2016-09/wen_zhang_/100003088-10033-18.jp…; alt=""></center>

<center><i>图 15 使用“闪烁灯”节点的程序</i></center>

文章来源:<a href="http://www.smartnode.io/smartnodeyuwulianwang/">Smart Node</a>

【教程】《Smart Node与物联网》之延时灯