Smart Node与物联网

 

 

谢作如 张敬云 李守良编著

Smart Node与物联网》课程下载

 

目录

 

第一单元 连接物理世界
项目1-1控制LED
项目1-2 延时灯
项目1-3 噪声测试仪
项目1-4 智能植物生长灯
项目1-5 自动起落架
项目1-6 遥控家用电器
项目1-7 遥控LED
项目1-8 智能声光控灯
第二单元 连通网络世界
项目2-1 看家宝1.0
项目2-2 看家宝2.0
项目2-3 体验云计算
项目2-4 视频看家宝
项目2-5 天气预报提示器
项目2-6 微信互动1.0
项目2-7微信互动2.0
第三单元 强大的计算
项目3-1 万圣节宝箱(人脸识别)
项目3-2 宠物相机
项目3-3 方向识别
第四单元 情感大白
项目 4-1 情感大白

 

 

第一单元 连接物理世界

                    

 

项目1-1控制LED

学习目标:

1.认识Smart_Node及其界面,了解Smart_Node的编程特点;

2.理解并能正确完成按钮控制LED灯的制作;

3.认识扩展板的针脚和按钮、LED等模块的连接。

一、项目描述

顾名思义,物联网就是物物相连的网络。要学会通过网络控制万物,首先要从点亮一个LED开始。我们用爱迪生完成的第一个项目,就是用按钮控制LED的开和关。

 

 

图 1 灯

二、项目分析

这是一个很简单的项目,只需要当按钮按下时触发LED就可以实现,硬件部分除了Edison和扩展板外,还需要按钮和LED灯即可。项目分析可参考下表 1所示:

表 1 “按钮控制的LED灯”项目分析

项目名称

按钮控制的LED

项目功能

当按钮按下触发LED灯,LED灯变亮;当按钮离开时,再次触发LED灯,LED灯熄灭

器材清单

按钮、LED灯

工作流程

 

 

三、基础知识

(一)爱迪生

Intel Edison核心是一款22纳米的凌动系统(代号Silvermont),基本信息是:双核500M处理器+独立MCU、1G DDR3 内存、4G EMMC存储、WIFI、蓝牙,这些都作为SOC方案封装在一个芯片里面。 整个核心部分浓缩到只有邮票大小,如图2(开发板左下角那个小块块是核心,可以拆下来单独用),小到令人难以置信。

小是小,但是功能不弱,使用Edison可以完成很多不可思议的创造。例如图3所示。

    

图2 Edison板                图3 使用Edison的制作智能水杯

(二)Smart_Node

Smart Node是创客大爆炸针对没有开发经验的智能硬件开发者,在Node-Red的基础上开发的一款在线图形化编程工具。Smart Node的操作流程极其简单。开发人员不需要下载程序, 只需要支持Smart Node的开发板和一个连接上Wifi的浏览器,就能开始对智能硬件进行设计开发。编程流程分为拖拽所需功能(drag&drop)、配置 (configure)、连接(link)、运行(done)4步,在输入相关参数的基础上,将各功能模块按照逻辑连接在一起,通过部署让程序在开发板上运行,基本的硬件模型就可以完成。

Smart_Node操作界面如下图 4所示。Smart_Node界面主要由三大部分组成:1.节点区;2.节点编辑区;3.信息显示和调试区。用户可以在节点区去拖拽所需节点进入节点编辑区,在节点编辑区进行编辑。

 

图 4 Smart_Node的界面

四、实现过程

(一)硬件连接

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

 

图 5 “按钮控制的LED灯”的连接图

(二)流程设计

为了实现“按钮控制LED灯”的制作,我们需要引入按钮节点和LED节点,然后将节点连起来,触发按钮使LED灯工作。参考程序如图 6所示。

 

图 6 “按钮控制的LED灯”的程序

(三)节点设置

按钮作为整个程序运行的起来,重要性不言而喻。双击按钮节点之后会出现如下图 7所示的界面,根据自己的需要,我们可以设置数字口为11,触发时间设置为500毫秒。

 

 

 

图 7 按钮节点及其设置

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

 

 

图 8  LED节点及其设置

通过对以上节点的设置,将各个节点连接起来,就可以实现我们“按钮控制LED灯”的程序编写。

(四)效果测试

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

五、挑战自我

“按钮控制的LED灯”很简单吧,Smart_Node包含了触摸传感器等丰富的节点,除了使用按钮外,我们还可以使用别的节点控制LED吗?同学们,动手试试吧。

六、扩展阅读

针脚原有多种解释,现在我们常指的是硬件芯片向外提供的接口方式,由于采用的是针式接口,所以称为针脚。

Edison使用DFRobot扩展板V7,扩展板V7共有18个针脚,为了方便用户使用,扩展板V7开发者将三线合一,只需要将连接线插入针脚即可。针脚主要功能如表2所示:

表2 针脚的功能

针脚

功能

针脚

功能

针脚

功能

A0 A1

A2 A3

A4 A5

 

模拟输入

D2 D4 D7 D8 D13

数字输入

数字输出

 

RX TX

 

 

串口

D3 D5 D6

D9 D10 D11 D12

数字输入和输出

模拟输出

 

注:

1.数字针脚0(RX)和1(TX)用于计算机和Edison之间的通信,其中数字针脚0用于接收信号,数字针脚1用于发送信号,所以在接线的时候数字针脚0和1不要接。

2.数字输入(DI)和数字输出(DO)都属于二进制值输入和输出。例如开关接通是1,断开是0。

3.模拟输入(AI)和模拟输出(AO)则为多个连续变化的状态。例如使用温度传感器获取外界的温度,则需要使用模拟输入,制作了呼吸灯(灯的亮度渐变)则需要使用模拟输出。在DFRobot硬件模块中,模拟输入取值的范围是:0~1023,模拟输出取值的范围是:0~255。

 

 

项目1-2 延时灯

学习目标:

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

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

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

一、项目描述

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

 

图 1 传统的家用灯

二、项目分析

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

表 1 项目分析表

项目名称

延时灯

项目功能

当按钮触发时,LED灯变亮一定时间后自动熄灭

器材清单

按钮、LED灯

工作流程

 

三、基础知识

(一)按钮

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

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

 

图 2 按钮

(二)LED灯

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

 

图 3 LED灯

 

(三)节点间数据的传送规则

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

 

图 4 节点间数据传输案例

四、实现过程

(一)硬件连接

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

 

图 5 “延时灯”连接图

(四)流程设计

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

 

图 6 延时灯参考程序

(五)节点设置

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

 

 

图 7 按钮节点及其设置

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

 

 

 

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

想一想:

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

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

 

 

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

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

 

 

图 10  LED节点及其设置

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

(五)效果测试

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

五、挑战自我

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

六、扩展阅读

(一)闪烁灯1

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

 

图 11 “闪烁灯”程序

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

 

图 12 传输路径1

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

 

图 13 传输路径2

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

 

图 14 传输路径3

(二)闪烁灯2

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

 

图 15 使用“闪烁灯”节点的程序

 

 

项目1-3 噪声测试仪

学习目标:

1.理解并能正确使用“调试输出”和“软件开关”节点;

2.能正确连接并使用声音传感器和Edison,完成噪声测试仪的制作;

3.了解声音传感器的工作原理。

一、项目描述

强大的物联网,就是利用互联网将世界万物连接为一个整体,使得物体与物体之间产生联系。物联网最大的特征之一是实时获取外界的信息并对该信息做出及时有效的反馈,而本节课我们将使用Edison套材中的声音传感器和LCD制作一个噪声测试仪,实现实时获取外界环境声音的强度的功能,如图 1 所示。

 

图 1 噪声测试仪

二、项目分析

制作噪声测试仪的关键是需要解决两个主要问题:1.实时获取外界声音值;2.将获取的声音值显示出来。Edison套材中的声音传感器可以获取外界声音值,Smart_Node的LCD节点和“调试”节点则可以帮我们显示获取的声音值。项目设计列表可以参考下表1所示。

表 1 噪声测试仪的项目设计

项目名称

噪声测试仪

项目功能

获取外界的声音值,并实时显示出来

器材清单

声音传感器、LCD

工作流程

 

三、基础知识

(一)声音传感器

声音传感器是一款简单、实惠的电子耳朵,它能“听到”声音的大小,并转化为模拟信号。通过模拟反馈电压信号的大小值获取环境声音的大小,因此声音传感器需要接到模拟口上,值的范围为0~1023,根据声音强弱的不同会输出不同的值,声音越强数值越大,声音越小数值越小。

使用一个简单的3芯数据线就能将它连接到“大脑”Edison控制器。Edison在“听到”不同强弱的声音后做出设定好的反应。它是基于麦克风声音检测的传感器,可用来对周围环境中的声音强度进行检测,具有300倍的放大器,输出模拟信号能使用3.3V和5V为基准AD采集。该款声音传感器可以实现根据声音大小进行互动、制作声控机器人、声控开关、声控报警等效果,如图 2 所示。

 

图 2 声音传感器

(二)调试输出

“调试输出”节点在Smart_Node中运用比较广泛,我们在调试程序时会常用到,如图3所示。其作用类似于Arduino中的串口通信,可以将我们需要调试的数据呈现在“调试”窗口中。例如在本案例中实时读取外界声音的强弱。

 

图 3 “调试输出”节点

(三)软件开关

“软件开关”节点作为程序的起点,在Smart_Node中应用很广泛,如图4所示。顾名思义,“软件开关”节点可以取代硬件开关,成为一个虚拟开关而直接控制程序的运行。在本案例中,我们使用“软件开关”节点对噪声测试仪的程序运行进行设置。

 

图 4 “软件开关”节点

四、实现过程

(一)硬件连接

将Edison和声音传感器连接起来,如下图 5所示,声音传感器连接到模拟输入(A0)。

 

图 5 噪声测试仪硬件连接图

(二)流程设计

噪声测试仪采用数据流的形式,通过“软件开关”节点触发,将获取的声音传感器的值实时显示在“调试”窗口中。具体流程如下图6所示。

 

图6  噪声测试仪的程序设计图

(三)节点设置

由于要持续监测监测声音传感器所获取的数值,因此我们需要对“软件开关”节点进行设置。其设置也和硬件开关类似,可以在initVal中延时效果,即:按多长时间出发开关信号,我们将“initVal”设置“1”。如下图7所示:

 

 

 

图 7“软件开关”节点设置

为了获取外界的声音强度,我们需要在Smart_Node引入“声音传感器”节点,并且需要对此节点进行设置,如下图8所示:

 

 

图8 “声音传感器”节点设置

声音传感器可以实时获取外界的声音强度,那么我们如何读取呢?为了解决这个问题,我们就需要用到调试节点。调试节点的设置比较简单,本案例主要将“输出”设置为“消息属性”,将“输出到”设置“调试标签页”,具体如图 9所示。

 

 

 

 

 

图 9  “调试节点”设置

想一想:在“输出”下拉框选择“完整的消息对象”,结果会有什么不同呢?

通过对以上节点的设置,将各个节点连接起来,就可以实现我们的噪声测试仪程序编写。

(六)效果测试

点击“部署”按钮,可以观察噪声测试仪是否正常工作。如果不能正常工作,可以老师或同学交流查找问题所在。最后,分享自己的作品和经验。

五、挑战自我

点击“部署”后,我们的噪声测试仪就完成。但是在制作“噪声测试仪”的过程中,我们发现“调试”窗口显示外界的声音值有很多不方便的地方,例如硬件模块需要和电脑连接在一起不能实现离线测试。我们是否可以使用Edison套材中的LCD模块呢?将声音传感器获取的数据直接显示LCD中,动手试试吧。

六、扩展阅读

LCD与Edison的硬件连接如图10所示,我们同样将声音传感器针脚设置为A0,LCD的SCL设置A5针脚;SDA设置为A4针脚;VCC设置任一5V针脚;GND设置为任一GND针脚即可。

 

图 10 新型噪声测试仪硬件连接

程序实现也比较简单,在“软件开关”触发后,声音传感器获取的数据实时传输到LCD中,程序编写如下图11所示。

 

图 11 新型噪声测试仪软件编写

注:我们可以在Smart_Node中对LCD的背景颜色(RGB)进行设置。

(一)LCD

LCD ( Liquid Crystal Display 的简称)液晶显示器。LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。

本案例使用的LCD可以显示16*2个字符,对于Edison初学者来说,不必为繁琐复杂液晶驱动电路连线而头疼了,这款LCD扩展板将电路简化,采用I2C的通讯接口驱动,如图12所示。

 

图 12  LCD液晶显示器

 

 

项目1-4 智能植物生长灯

学习目标:

1.理解并能正确使用调试输出和分支结构等节点;

2.能正确连接并使用光线传感器,完成智能植物生长灯的制作;

3.理解并能够正确设置注入节点、判断等节点以及掌握使用Smart_Node制作智能植物生长灯的逻辑。

一、项目描述

植物生长灯是一种特殊的灯具,依照植物生长必须需要太阳光的原理,当光线强度较低时继续向植物提供光线从而促进植物生长,如图1所示。现在市场中已经出现大量的植物生长灯,但是目前市场上植物生长灯主要针对经济作物,对于家庭室内植物提供的较少,并且价格比较昂贵。本节课我们就使用Edison的套材和Smart_Node相结合制作可以判断外界环境光线的强弱,当光线较弱时,触发LED灯亮灭的智能植物生长灯。

 

图 1 植物生长灯

二、项目分析

制作植物生长灯的关键问题就是判断外界环境的强弱,当光线低于一定的阙值时,就可以触发LED的亮灭来为植物提供外界光线。为了解决这个问题,我们可以使用光线传感器判断外界光线的强弱,项目设计列表可以参考下表1所示。

表 1 智能植物生长灯的项目设计

项目名称

智能植物生长灯

项目功能

判断外界光线强弱,当低于一定的值时触发LED灯。

器材清单

Edison、光线传感器、LED灯

 

工作流程

 

三、基础知识

(一)光线传感器

光线传感器也成为环境光线传感器,可以用来对环境光线的强度进行检测,通常用来制作随光线强度变化产生特殊效果的互动作品,如图 2 所示。

光线传感器是一种模拟传感器,需要接到模拟口上,值的范围为0~1023,光线强弱的不同会输出不同的值,光线越强数值越大,光线越暗数值越小。

 

图 2 光线传感器

(二)调试输出

“调试输出”节点在Smart_Node中运用比较广泛,我们在调试程序时会常用到。“调试输出”节点可以将我们需要调试的数据呈现在“调试”窗口中,其作用类似于编程中的print。例如在本案例中,我们需要用“调试输出”实时获得光线传感器的数值,才能根据数值设定判断的条件。

(三)分支结构

由于Smart_Node在采用数据流的形式,所以我们常常需要使用分支结构完成分流。例如在本次案例中,我们就需要判断外界光线是否大于20,如果小于20则数据流流入“1”节点中,如果大于等于20则流入“0”节点中。

四、实现过程

(一)硬件连接

将Edison,LED灯和光线传感器连接起来,如下图 3所示。LED灯连接到数字口5(D5),光线传感器连接到模拟输入(A0)。

 

图 3 智能植物生长灯硬件连接图

(三)流程设计

智能植物生长灯采用数据流的形式,通过“时间戳”节点每一分钟触发一次,switch(判断)节点判断外界光线的强弱,当光线值低于一定值时向LED灯发送“1”,LED灯亮;当光线值高于一定值时向LED灯发送“0”,则LED灯灭。具体流程如下图 2所示。

 

图 4 智能植物生长灯的流程设计图

(三)节点设置

由于要持续监测光线传感器所获取的数值,因此我们需要使用“时间戳”节点并对节点进行设置。我们将“重复”下拉框中选择“时间间隔”,并选择每个1分钟监测一次。如下图 5所示:

 

 

 

图 5 “时间戳”设置

想一想:

1.什么时候“有效载荷”设置为“时间戳”、“字符串”和“空白”呢?他们之间有什么区别?

2.在设置“时间戳”是,选择和不选择在最开始插入一次有什么区别呢?

3.什么时候“重复”设置“无”、“时间间隔”、“时间段内的时间间隔”、“特定时间”,他们之间有什么区别呢?

光线传感器可以实时获取外界的光线强度,那么我们如何读取呢?为了解决这个问题,我们就需要用到调试节点了。调试节点的设置比较简单,本案例主要将“输出”设置为“消息属性”,将“输出到”设置“调试标签页”,具体如图 6所示。

 

 

 

图 6  “调试节点”设置

怎么能够判断光线的强弱呢?不用担心,这个时候我们需要用到switch(判断)节点了。使用switch节点当外界光线低于一定的阙值时,我们输出1;当高于一定阙值时,switch就输出0。具体设置也很简单的,如下图 7所示。

 

 

图 7 switch节点设置

我们知道LED灯的亮灭主要取决于输入的是0还是1,因此我还需要一个节点,通过switch节点对外界光线强弱判断后,我们选择“改变”节点,向LED灯输入数字。具体设置如图 8所示。

 

 

图 8 “改变”节点输出1的设置

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

(七)效果测试

点击“部署”按钮,可以观察智能植物生长灯是否正常工作。如果不能正常工作,我们可以选择“调试”框对光线传感器的阙值进行设置,也可以老师或同学交流查找问题所在。最后,分享自己的作品和经验。

五、挑战自我

点击“部署”后,我们的智能植物生长灯就完成了,很简单吧。但是我们发现每次LED灯的亮度值都是一定的,我们能不能根据外界的光线强度自动调整LED的亮度值呢?

六、扩展阅读

(一)range节点

Smart_Node编程环境中有“range节点”,该节点可以将一定范围内的一个值转化为另一个范围内的值。下面简单介绍一下该节点的使用。

 

下面给大家举个例子,我们可以将输入的数值从0~1023等比例缩小到0~255的目标范围。

 

有同学肯定会有疑问,为什么是0~1023到0~255,而不是别的数值呢?原因就是我们光线传感器值的范围是0~1023,而LED灯的亮度为0~255。

本节课我们学习制作了智能植物成长灯,当光线较弱时,LED灯亮,当光线较强时,LED灯熄灭。那么我们能否根据光线的强弱控制LED灯的亮度呢?【利用映射实现】

(二)模拟输入

Edison能对数字信号进行有效的处理和识别,但是生活上很多东西,很多概念都不是一个数字量。比如说温度值,它是一个连续变化的信号。这个问题也比较好解决,我们只要使用传感器(sensor),将模拟量有效转换为Edison能够识别的形式即可,例如转换成电压。

温度传感器能够将温度值转换成0V到5V间的某个电压,比如0.3V、3.27V、4.99V等。至于到底可以转换成多少可能的值则取决于模数转换的精度,精度越高能够得到的值就会越多。而Edison采用的ADC(Analog to Digital

Converter),称模数转换,每一个模数转换器的精度都是 10bit,也就是说能够读取1024(2^10 = 1024)个状态。在Edison的每一个模拟输入管脚上,电压的变化范畴是从0V到5V,因此Edison能够感知到的最小电压变化是4.8毫伏 (5/1024 = 4.8mV)。

(三)模拟输出

既然有了模拟输入,当然少不了模拟输出。现实生活中有时候除了开灯,关灯之外可能还需要调光,调光就是模拟的一种输出方式。

由于Edison的微控制器只能产生高电平(5V)或者低电平(0V),而不能产生变化的电压,因此必须采用脉宽度调制技术(PWM,Pulse Width Modulation)来模拟电压变化。

PWM是一种开关式稳压电源应用,它的原理是通过改变占空比,通过低通滤波得到平均电压从而实现模拟输出。简而言之,PWM是一种对模拟信号电平进行数字编码的方法,它通过对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等但宽度不相等的脉冲,如下图10所示。

 

图10 脉冲宽度调制

 

 

项目1-5 自动起落架

学习目标:

1.理解并能正确使用“数字输入”节点和“舵机”节点;

2.能正确连接并使用红外数字避障传感器,舵机和Edison,完成自动起落架的制作;

3.了解红外数字避障传感器和舵机的工作原理。

一、项目描述

随着社会经济的快速发展,汽车在人们的日常生活中越来越普及,城市里几乎出现“一家一车”的现状。但是司机在停车的时候经常遇到自动起落架升起速度慢、人工操作繁琐等问题,如图1所示。那么我们能不能使用Edison制作一个检测到车辆时自动升起的装置呢?这节课我们就动手学习一下吧。

 

图 1 自动起落架

二、项目分析

制作自动起落架的关键是:1.检测是否有车辆;2.如果有车辆时触发舵机转动,5s后舵机自动复原。我们使用DFRobot生产的红外数字避障传感器检测车辆并触发舵机转动,项目设计列表可以参考下表1所示。

表 1 自动起落架的项目设计

项目名称

自动起落架

项目功能

检测是否有车辆,如有就触发舵机转动,5s后舵机自动复原。

器材清单

红外数字避障传感器、舵机

工作流程

 

三、基础知识

(一)红外数字避障传感器

红外数字避障传感器是一种集发射与接收于一体的光电开关传感器,如2所示。数字信号的输出伴随传感器后侧指示灯亮的亮灭,检测距离可以根据要求进行调节。该传感器具有探测距离远、受可见光干扰小等特点,可以广泛应用于机器人避障、互动媒体等众多场合。

红外数字避障传感器属于数字传感器,输出状态是0和1,即数字电路中的低电平和高电平,正常状态输出高电平,检测到目标输出低电平。

 

图 2 红外数字避障传感器

(二)舵机

舵机(英文名叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,制定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度)。

普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是转圈转动作动力用,舵机是控制某物体转动一定角度用(比如机器人的关节,摄像头的云台)。本案例使用的舵机转速由舵机无负载的情况下转过60°所需时间来衡量,常见舵机的速度一般在0.11/60°~0.21s/60°之间,如下图3所示。

 

图 3 舵机

 

(三)“数字输入”节点

   Edison以袖珍的外形和强大的数据处理功能为人所认知,Edison常需要处理一类最基本的输入输出信号,即数字量(开关量)信号,这些信号包括:开关的闭合与断开,指示灯的亮与灭,继电器或接触器的吸合与释放,电机的启动与停止,阀门的打开与关闭等,这些信号的共同特点是以二进制的逻辑“1”合“0”出现的,数字输入就是二进制值输入。

例如在Samrt_Node中并没有“红外数字避障传感器”节点,使用“数字输入”节点可以解决这个问题。当检测到汽车时,触发“数字输入”节点并发出响应指令,如下图4所示。“数字输入”节点的使用也比较简单,只需要设置合适的针脚即可。

 

图 4 “数字输入”节点

四、实现过程

(一)硬件连接

将Edison,舵机和红外数字避障传感器连接起来,如下图 5所示,舵机连接到数字输出(D11),红外数字避障传感器连接到数字输入(D5)。

 

图 5 自动起落架硬件连接图

(四)流程设计

为了实现检测到车时转动舵机,5秒后自动闭合的功能,我们需要使用“延时”节点和“改变”节点,具体流程如下图6所示。

 

图6  自动起落架的程序设计图

程序数据的传输分成2部分:1.当检测到车时,触发红外数字避障传感器通过“改变”节点向舵机发送“75”,舵机即可转动75°,如图7所示。

 

图 7 传输路径1

2.当触发红外数字避障传感器后,数据流向“延时”节点和“改变”节点,在延时5s后向舵机传输“0”,舵机即可闭合,如图8所示。

 

图8 传输路径2

 

(三)节点设置

为了检测是否有车辆通过,我们需要使用红外数字避障传感器。但是我们Smart_Node中没有“红外数字避障传感器”节点,这个难不倒我们,强大的Smart_Node提供“数字输入”节点。本案例中我们将针脚设置D5,在interrupt下拉框中我们选择“Falling”,如下图7所示:

 

 

图 7“数字输入”节点设置

想一想:在“interrupt”下拉框出现“Falling”、“Rising”和“Both”,它们之间会有什么不同呢?

舵机在自动起落架制作过程中至关重要,我们需要对“舵机”节点进行设置,在本案例中,我们将舵机针脚设置为数字输出针脚11(D11),如下图8所示:

 

 

 

图8 “舵机”节点设置

在触发红外数字避障传感器后,需要向舵机传输转动的角度。需要引入“改变”节点,并对“设置”下拉框进行数字设置。具体如图 9所示。

 

 

图 9  “改变”节点设置

通过对以上节点的设置,将各个节点连接起来,就实现我们的自动起落架程序编写。

(八)效果测试

点击“部署”按钮,可以观察自动起落架是否正常工作。当车辆通过时,红外数字避障传感器尾部发出红光(如果连接出错,则会一直出现红光),舵机转动,5s后舵机自动复原。如果不能正常工作,可以老师或同学交流查找问题所在。最后,分享自己的作品和经验。

五、挑战自我

每次检测到汽车时舵机转动的角度总是固定的,功能比较单一。我们能不能实现旋钮传感器控制舵机转动角度呢?舵机转动的角度随着旋钮传感器角度的改变而改变,动手试试吧。

六、扩展阅读

(一)红外数字避障传感器的原理

数字避障传感器的原理同蝙蝠相似,都是通过发出一定频率的超声波,当遇到障碍物时反射回来,通过接收该反射波,再根据发射和接收的时间差获得障碍物位置信号确定障碍物位置,但超声波探测在近距离表现欠佳,因为属机械波,发射时产生的振动会影响接收器,所以有一定的盲区。而红外数字避障传感器解决了这个问题,红外探测是根据反射发出特定频率的红外线确定物体距离的。具体测量过程是这样的,先调节距离旋钮使其探测距离达到所用超声波探测器的盲区最大值,用程序控制探头发射信号,然后捕捉反射信号,若无反射信号说明无障碍,如有反射信号说明有障碍,信号从上拉电阻的OC门取出。

(二)数据转换

常用图形化编程环境中为了满足数据转换的需求,都提供“映射”函数。同样强大的Smart_Node也提供了“映射”函数,那么除了使用“映射”函数外,还有别的方式控制数据转换呢?很简单,我们可以使用数学公式。例如利用公式将旋钮传感器的“0-1023”和舵机的“0-180”通过数学公式一次函数对应起来。这样当旋钮传感器发出一个数据时就自动转换成另外一个对应的数据。

 

 

项目1-6 遥控家用电器

学习目标:

1.理解红外遥控的工作原理;

2.能正确连接并使用红外遥控套件,完成遥控家用电器的制作;

3.掌握遥控家用电器的程序编写。

一、项目描述

家用遥控器大家都比较熟悉,如下图1所示。前面几节课我们介绍使用Edison完成物联网的一些制作。本节课我们尝试将遥控器引入我们的物联网中,丰富我们物联网大家庭的内容,使用遥控器发送特定红外信号并且Edison显示遥控器发送的信息。

 

图 1 遥控器

二、项目分析

本项目需要遥控器发送特定红外信号,并且需要显示特定内容。那么我们只需要使用Edison的“红外遥控套件”节点和“调试”节点显示即可。项目分析可参考下表1所示:

表 1 项目分析表

项目名称

遥控家用电器

项目功能

遥控器发送特定红外信号并显示信号内容

器材清单

红外遥控套件

工作流程

 

三、基础知识

(一)“红外遥控套件”节点

遥控器发送的特定信号,在将硬件红外信号接收插入对应的数字口后,通过Edison的“红外遥控套件”节点即可获取。如下图2所示。“红外遥控套件”节点满足数据流的输出而不能输入,将获取遥控器的信号采集后向下一节点输出。

 

图2 “红外遥控套件”节点

四、实现过程

(一)硬件连接

我们将红外遥控套件和Edison连接起来,在这里我们将红外遥控套件连接到数字口2,如图 3 所示。

 

图 3 “遥控家用电器”连接图

)流程设计

为了实现遥控器发送特定红外信号并显示信号内容,我们需要实时判断遥控器的输入,并将获取的信息显示在“调试”窗口中,参考程序如图 4所示。

 

图 4 “遥控家用电器”参考程序

)节点设置

为了实现遥控器发送特定红外信号,我们需要引用“红外接收模块”节点。双击“红外接收模块”节点之后会出现如下图5所示的界面,根据自己的需要,我们可以设置数字口为2。

 

 

 

图 5“红外接收模块”节点及其设置

为了显示信号内容,本案例中我们引入“调试”节点。“调试”节点的设置也比较简单,我们选择如图 6所示。本案例主要将“输出”设置为“完整的消息对象”,将“输出到”设置“调试标签页”。

 

 

图 6 “调试”节点及其设置

想一想:在“输出”下拉框选择“消息属性”,结果会有什么不同呢?

通过对以上节点的设置,将各个节点连接起来,就可以实现我们遥控家用电器的程序编写。

)效果测试

点击“部署”按钮,点击遥控器观察“调试”窗口是否显示对应的内容。需要注意的是,在测试时遥控器和红外接收模块距离要比较近。如果不能产生预期的效果,可以老师或同学交流问题所在。最后分享自己的作品和经验。

五、挑战自我

“遥控家用电器”程序比较简单,但是我们需要手动点击遥控器才可以控制信号的发送。那么我们能不能使用多种方式触发红外信号的发送(例如光线较低时)呢?动手试试吧。

六、扩展阅读

    (一)红外遥控器

红外遥控器发出的信号是一连串的二进制脉冲码。为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射出去,而红外线接收装置则要滤除其他杂波,只接收该特定频率的信号并将其还原成二进制脉冲码,也就是解调。

(二)红外接收头

红外接收头的原理也比较简单,内置接收管将红外发射管发射出来的光信号转换为微弱的电信号,此信号经由IC内部放大器进行放大,然后通过自动增益控制、带通滤波、解调变、波形整形后还原为遥控器发射出的原始编码,经由接收头的信号输出脚输入到电器上的编码识别电路。红外接收头有三个引脚如下图7所示:

 

图7 红外接收头

 

 

项目1-7 遥控LED

学习目标:

1.理解红外遥控的工作原理;

2.能正确连接并使用红外遥控套件和LED,完成红外遥控爱迪生的制作;

3.掌握遥控控制多个LED的程序编写。

一、项目描述

前面几节课我们学习如何使用Edison控制LED的亮灭,但是我们发现现实生活中,我们常常需要使用遥控器等方式远程控制LED的亮灭,如图 1所示。那么我们的Edison能否做到使用遥控器控制LED呢?我们动手试一试吧。

 

图 1 遥控控制LED

二、项目分析

制作遥控控制多个LED需要解决主要的问题就是判断遥控器发送的内容,并触发对应的LED。项目分析可参考下表1所示:

表 1 项目分析表

项目名称

遥控控制多个LED

项目功能

根据不同的键值,控制不同的LED

器材清单

红外遥控套件、LED灯×2

工作流程

 

三、基础知识

(一)红外遥控套件

红外遥控是目前使用最广泛的一种通信和遥控手段。由于红外遥控装置具有体积小、功耗低、功能强、成本低等特点,继彩电、录像机之后,在录音机、音响设备、空凋以及玩具等其它小型电器装置上也纷纷采用红外遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。

红外遥控主要包括红外遥控器和红外接收头,如图2所示。红外遥控器有21个按键,红外接收头针脚的定义是:D连接数字口,VCC接5V,GND接GND。

  

图2 红外遥控套件

红外遥控器都有对应的键值,在使用时,首先需对遥控器进行解码,本书中用到的红外遥控器的键值(十六进制的数值)如表2所示。

表2 红外遥控器键值附表

遥控器字符

键值

遥控器字符

键值

红色按钮

FD00FF

ST/REPT

FD708F

VOL+

FD807F

1

FD08F7

FUNC/STOP

FD40BF

2

FD8877

左2个三角

FD20DF

3

FD48B7

暂停键

FDA05F

4

FD28D7

右2个三角

FD609F

5

FDA857

向下三角

FD10EF

6

FD6897

VOL-

FD906F

7

FD18E7

向上三角

FD50AF

8

FD9867

0

FD30CF

9

FD58A7

EQ

FDB04F

 

 

四、实现过程

(一)硬件连接

我们将红外遥控套件和LED连接起来,在这里我们将LED连接到数字口5和10,红外遥控套件连接到数字口2,如图 3 所示。

 

图 3 “遥控控制多个LED”连接图

)流程设计

为了实现遥控控制多个LED的功能,我们需要实时判断遥控器的输入,当遥控器输入1时,则LEDD10亮;当遥控器输入2时,则LEDD5亮,参考程序如图 4所示。

 

图 4 “遥控控制多个LED”参考程序

)节点设置

为了远程控制LED的亮灭,我们需要引用“红外接收模块”节点。双击“模拟输入”节点之后会出现如下图5所示的界面,根据自己的需要,我们可以设置数字口为2。

 

 

 

图 5“红外接收模块”节点及其设置

为了判断遥控器的输入值,我们需要双击“判断”节点,如图 6所示。点击“+规则”按钮,在下拉框中选择“=”并输入1时并生成连接点1,在下拉框选择“=”输入2并生成连接点2。为了程序的可读性,也可以对节点名称进行设置。

 

 

图 6 “判断”节点及其设置

引入“改变”节点可以实现当遥控器输入值与预设值相同时触发下一节点,双击“改变”节点即可对于“改变”节点进行设置,如图 7所示。

 

 

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

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

 

 

图 8  LED节点及其设置

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

)效果测试

点击“部署”按钮,点击遥控器可以观察LED灯是否可以正常工作。需要注意的是,在测试时遥控器和红外接收模块距离要比较近。如果不能产生预期的效果,可以老师或同学交流问题所在。最后分享自己的作品和经验。

五、挑战自我

“遥控控制多个LED”程序比较简单,但是我们发现每次触发一个键只能控制一个LED的亮灭。那么我们能不能触发某一个键一次性打开或者关闭所有的灯呢?动手试试吧。

六、扩展阅读

红外遥控工作原理

红外遥控器发出的信号是一连串的二进制脉冲码,为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射出去,而红外线接收装置则要滤除其他杂波,只接收该特定频率的信号并将其还原成二进制脉冲码,也就是解调。

内置接收管将红外发射管发射出来的光信号转换为微弱的电信号,此信号经由IC内部放大器进行放大,然后通过自动增益控制、带通滤波、解调变、 波形整形后还原为遥控器发射出的原始编码,经由接收头的信号输出脚输入到电器上的编码识别电路。

要想对某一遥控器进行解码必须要了解该遥控器的编码方式,这就叫知己知彼,百战不殆 。本节课使用的遥控器的编码方式为:NEC协议。下面就介绍一下NEC协议:

(1)8位地址位,8位命令位;

(2)为了可靠性,地址位和命令为被传输两次;

(3)脉冲位置调制;

(4)载波频率38khz;

(5)每一位的时间为1.125ms或2.25ms。

 

 

项目1-8 智能声光控灯

学习目标:

1.理解光线传感器的工作原理并能正确使用“模拟输入”节点;

2.能正确连接并使用光线传感器,声音传感器和LED,完成智能声光控灯的制作;

3.掌握多传感器协同工作的程序编写。

一、项目描述

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

 

图 1 走廊中的声光控灯

二、项目分析

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

表 1 项目分析表

项目名称

智能声光控灯

项目功能

当外界环境光线较低并有声音时,触发LED

器材清单

声音传感器、光线传感器、LED灯

工作流程

 

三、基础知识

(一)光线传感器

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

 

图2 光线传感器

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

(二)“模拟输入”节点

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

 

图 3 “模拟输入”节点

 

(三)多传感器协同工作

Smart_Node采用数据流的形式,这样对于多传感器协同工作的实现与传统编程思想截然不同。在本案例中我们使用声音传感器和温度传感器相结合控制LED的亮灭,核心思路就是实时判断声光线传感器的数值,当大于一定阙值向声音传感器发送“1”,如果没有达到这个阙值时,则向传感器发送“0”。当声音传感器接受“1”时,被触发并以此类推向下一节点类推。最终通过判断声音传感器所收集到的数据,最终控制LED的亮灭。注:在Smart_Node中,当数据“0”经过传感器节点时,节点不会工作;而数据“1”经过时则触发节点。

 

图 4 多传感器协同工作

四、实现过程

(一)硬件连接

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

 

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

(二)流程设计

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

 

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

(三)节点设置

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

 

 

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

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

 

 

 

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

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

 

 

 

 

 

 

 

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

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

 

 

 

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

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

 

 

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

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

 

 

 

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

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

 

 

图 12  LED节点及其设置

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

(四)效果测试

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

五、挑战自我

“智能声光控灯”程序看着很复杂,但是按照节点数据流梳理后也是很简单的。但是有的同学会觉得这样还不是很完善,为了更加精确判断是否有人通过,我们能不能将声音传感器改成红外热释电传感器呢?以及将模拟输出改成使用定时器定时检查呢?动手试试吧。

六、扩展阅读

节点数据流运行规则

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

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

 

图14 触发多个节点

 

 

 

 

 

第二单元 连通网络世界

 

 

项目2-1 看家宝1.0

学习目标:

1.理解并能够正确设置注入节点、判断/切入节点、添加字符串节点及e-mail节点;

2.能够正确连接运动传感器、蜂鸣器;

3.了解电子邮件收发协议。

一、项目描述

随着生活节奏的加快,很多人常常因为工作出差、假期出游而长时间离家,从而导致家里无人看管,家里的宠物无人照顾。为了解决这个问题,很多公司凭借自己的科技实力,生产出了功能强大的智能看家宝,如图1所示。这是联想公司生产的一款看家宝,主人不仅可以通过APP利用手机遥控摄像头实时监测家里的情况,甚至如果家里有不明人物出现时,还能触发监测设备及时向主人报警。本节课我们将利用edison套件中的器材,制作一个若检测到家里有人出入,便有警报声响起,同时通过e-mail的方式向主人发送消息的智能看家宝。

 

图1 看家宝

二、项目分析

制作看家宝的关键问题是人的检测和警报声的响起,我们可利用运动传感器和蜂鸣器很好的解决这个问题,至于通过e-mail发送消息给主人,当然会用到e-mail节点,项目分析可参考表1。

表1 看家宝的项目分析

项目名称

看家宝

项目功能

检测是否有人,若检测到有人,则发出警报并通过e-mail发送消息给主人

器材清单

edison、运动传感器、蜂鸣器

工作流程

 

三、基础知识

(一)运动传感器

运动传感器(如图2所示)是一种能够检测运动的人或动物身上发出红外线的装置。当它在一定的检测范围内检测到运动的生命体时,输出高电平值,否则输出低电平值。

 

图2 运动传感器

(二)蜂鸣器

蜂鸣器是一款简单的发声装置,只要简单的高低电平信号就能够驱动。当然也可以与模拟输出针脚连接,从而能够实现不同的音调来模拟我们生活中的许多声音和音乐,如图3所示。

 

图3 蜂鸣器

四、实现过程

(一)硬件连接

准备好器材后将运动传感器、蜂鸣器与edison连接起来,这里我们将运动传感器连接到数字针脚2,蜂鸣器连接到模拟针脚3,如图4所示。

 

图4 运动传感器、蜂鸣器与edison的连接图

(二)流程设计

为了实现看家宝的功能,我们需要使用“注入”节点不断的对运动传感器进行检测,并且需要通过“判断/切换”节点对运动传感器的值进行判断,如果检测到有运动的人,便触发蜂鸣器发出警报,同时将信息借助“添加字符串”节点,通过e-mail的方式向主人发送信息,参考流程如图5所示。

 

图5 看家宝流程图

(三)节点设置

“注入”节点可实现对运动传感器的不断检测。双击它可出现如图6所示界面,我们设置有效载荷为“字符串”,重复为“时间间隔”,并且每隔1分钟检测一次(时间间隔可根据具体的需要设定)。

 

 

图6 注入节点及其设置

想一想:

1.什么情况下可以将有效载荷设置为“字符串”?重复设置为“无”“时间段内的时间间隔”或“特定时间”?

2.在设置注入节点时,选中和不选中“在最开始插入一次?”有什么区别?

“运动传感器”节点能够检测是否有运动的人或动物经过,若检测到有人,则输出1,否则输出0,并且能够把检测到的结果发送到下一个节点,其具体设置如图7所示。

 

 

图7 运动传感器节点及其设置

“判断/切换”节点可实现是否有运动的人的判断。若检测到有运动的人,即运动传感器的值为1时,“判断/切换”节点的值输出1(如图8所示),同时蜂鸣器响起,并通过e-mail发送消息给主人,否则一切正常。

 

 

图8 判断/切换节点及其设置

“添加字符串”节点,顾名思义,就是将此节点的字符串数据流到下一个节点。此节点的数据可添加到前缀框或后缀框(如图9所示),这里我们在前缀框写上“有人来了”。为了增加整个流程的可读性,还可为节点取个名字,例如“报警”(当然也可不设)。

 

 

图9 添加字符串节点及其设置

“e-mail”节点可发送或接收e-mail,由于本课当中的看家宝是要向主人发送消息,因此用到的是e-mail的发送节点。双击“e-mail”的发送节点,可出现如图10所示的界面。我们只要知道收件人的邮箱地址,就可以通过发件人的邮箱地址和密码向收件人发送消息。值得注意的是,不同的邮箱地址,需设置不同的邮箱服务器及端口。这里我们是以网易邮箱用户向QQ邮箱用户发送消息为例(本课程中,若不加说明,涉及到邮箱节点时,都是以网易邮箱用户向QQ邮箱用户发送消息为例),所以设置发件服务器是smtp.163.com,端口为465。

 

 

图10 e-mail发送节点及其设置

(三)测试效果

单击部署按钮,待部署成功后观察看家宝的功能是否符合预期,如有问题,在老师或同学的帮助下逐一排查解决。最后,与同学分享自己的作品和经验。

五、挑战自我

在本节内容的基础上,你能对看家宝的功能做出一些完善吗?比如听到家里有声音,警报声以不同的音调响起,并发e-mail给主人。

六、扩展阅读

SMTP(简单邮件传输协议)和POP(邮局协议)是电子邮件服务中最常见的两种协议。可通过SMTP协议从客户端发送邮件到邮件服务器,可通过POP协议从邮件服务器上获取邮件的信息、下载邮件。此外比较常见的还有IMAP(互联网邮件访问协议),它同POP协议类似,都是一种邮件获取服务。不同的是POP允许电子邮件客户端下载服务器上的邮件,但在电子邮件客户端的操作(如:移动邮件、标记已读等)是不会反馈到服务器上的。而在IMAP协议下,邮件客户端的操作都会反馈到服务器上,并且对邮件进行的操作,服务器上的邮件也会做相应的动作。同时,IMAP可以只下载邮件的主题,只有在真正需要的时候,才会下载邮件的所有内容。

现在国内大多数的免费邮箱默认情况下是关闭SMTP和POP协议的,因此在使用“e-mail”节点收发电子邮件时,需首先开启SMTP和POP协议。下表2所示,列举了几种常用的邮箱服务器及其端口设置。

表2 常用邮箱服务器及端口

邮箱类型

服务器

端口号

QQ邮箱

SMTP服务器:smtp.qq.com

465或587

POP服务器:pop.qq.com

995

IMAP服务器:imap.qq.com

993

163邮箱

SMTP服务器:smtp.163.com

465

POP服务器:pop.163.com

994

IMAP服务器:imap.163.com

993

139邮箱

SMTP服务器:smtp.139.com

465

POP服务器:pop.139.com

995

IMAP服务器:imap.139.com

993

 

 

项目2-2 看家宝2.0

学习目标:

1.理解并能够正确设置注入节点、判断/切入节点、改变节点及e-mail节点;

2.能够正确连接温度传感器与edison;

3.加深对电子邮件收发协议的理解。

一、项目描述

近年来,随着物联网技术的快速发展,智能家居系统也越来越为人们所喜爱,家居照明系统、家庭安防系统、家庭网络系统等是智能家居必备系统。上节课我们也已经成功制作出了看家宝1.0,为家里的安防保驾护航,那么这节课我们能否延续上节课的思路,利用edison套件中的器材,制作一款能够自动获取室内温度,并通过e-mail的方式向主人发送消息的智能看家宝2.0,如图1所示。

 

图1 看家宝2.0

二、项目分析

制作看家宝2.0的关键问题是室内温度的检测,我们可利用温度传感器很好的解决这个问题,至于通过e-mail发送消息给主人,当然会用到e-mail节点,项目分析可参考表1。

表1 看家宝2.0的项目分析

项目名称

看家宝2.0

项目功能

定时发送室内温度并通过e-mail发送消息给主人

器材清单

edison、温度传感器

工作流程

 

三、基础知识

温度传感器

温度传感器是一款用来对环境温度进行定性检测的装置,通过其表面大写A的标识,可知它是模拟传感器,如图2所示。温度传感器是基于LM35半导体的传感器,LM35半导体温度传感器是美国国家半导体公司生产的线性温度传感器,其测温范围是-40℃到150℃,输出电压与温度成正比,可与edison相结合,实现与环境温度感知相关的互动效果。

 

图2 温度传感器

四、实现过程

(一)硬件连接

准备好器材后将温度传感器与edison连接起来,这里我们将温度传感器连接到模拟针脚0,如图3所示。

 

图3 温度传感器与edison的连接图

(二)流程设计

为了实现看家宝2.0的功能,我们需要使用“注入”节点定时的对温度传感器进行检测,并且需要通过“判断/切换”节点对温度传感器的值进行判断,若温度大于28℃,则发送“温度大于28℃,请注意防暑”,若温度在20℃在28℃之间,则发送“温度适宜,在20℃—28℃之间”,若温度小于20℃,则发送“温度小于20℃,请注意防寒”,参考流程如图4所示。

 

图4 看家宝2.0流程图

(三)节点设置

“注入”节点可实现对温度传感器的定时检测。双击它可出现如图5所示界面,我们设置有效载荷为“字符串”,重复为“时间段内的时间间隔”,并且在早上6:00到下午18:00之间每隔60分钟发送一次(时间间隔可根据具体的需要设定)。

 

 

图5 注入节点及其设置

  “温度传感器”节点可实现室内温度的获取。在这里我们将其连接在模拟针脚A0上,interval保持默认值1000,如图6所示。当然也可根据自己的需要延长或缩短interval值。

 

 

图6 温度传感器节点及其设置

“判断/切换”节点可实现对温度的判断。若温度大于28℃,即温度传感器的值为1时,“判断/切换”节点的值输出1,若温度在20℃—28℃之间,即温度传感器的值为2时,“判断/切换”节点的值输出2,若温度小于20℃,即温度传感器的值为3时,“判断/切换”节点的值输出3,如图7所示,并将相关的信息通过e-mail发送消息给主人。

 

 

图7 判断/切换节点及其设置

“改变”节点的主要功能是对传入的信息进行条件分配。其作用相当于编程语言中的switch和if else分支,点击左下角“+规则”添加分支。本项目中对温度进行判断,若大于28℃,则将“设置”改为“温度大于28℃,请注意防暑”,如图8所示。

 

 

图8 改变节点及其设置

做一做:尝试完成温度在20℃—28℃之间及温度小于20℃时,“改变”节点的设置。

“e-mail”节点可发送或接收e-mail,由于本课当中的看家宝是要向主人发送消息,因此用到的是e-mail的发送节点。双击“e-mail”的发送节点,可出现如图9所示的界面。我们只要知道收件人的邮箱地址,就可以通过发件人的邮箱地址和密码向收件人发送消息。值得注意的是,不同的邮箱地址,需设置不同的邮箱服务器及端口。这里我们是以网易邮箱用户向QQ邮箱用户发送消息为例,所以设置发件服务器是smtp.163.com,端口为465。

 

 

图9 e-mail发送节点及其设置

(三)测试效果

单击部署按钮,待部署成功后观察看家宝2.0的功能是否符合预期,如有问题,在老师或同学的帮助下逐一排查解决。最后,与同学分享自己的作品和经验。

五、挑战自我

在本节内容的基础上,你能对看家宝的功能做出一些完善吗?比如同时检测室内温度和光线强弱,并通过e-mail的方式将消息发送给主人。

六、扩展阅读

要想实现室内温度和光线强弱数据的同时输出,即多传感器合并数据的输出,需用到“融合”节点,它能将两个或更多节点的消息合并在一起后一次性输出,然后通过“模板”节点将多个节点的变量连接在一起同时发送到“e-mail”节点即可。

这里我们将光线传感器连接到edison的模拟针脚5,如图10所示。

 

图10 温度传感器、光线传感器与edison的连接图

参考流程如图11所示。

 

图11 看家宝完善流程图

“触发”节点可以确保时间很长或者很短的触发动作,成为一个稳定的触发动作,比如可以确保LED亮固定的时间,可以让“语音”节点把想说的话说完等等。为了实现本项目每隔一个小时只发一封邮件的效果,我们把“发送”设置为“字符串有效载荷”并将其值设为1;把“当”设置为“等待”并将其值设为1秒;把“当…发送”设置为“字符串有效载荷”并将其值设为0,如图12所示。

 

 

图12 触发节点及其设置

节点消息的默认属性为payload,但在需要时,我们可通过“判断/切换”节点更改其属性。本项目中,需将温度和光线的消息属性合并到一起输出,因此要先改变它们的属性,如图13所示为改变光线节点消息属性的设置。

 

 

图13 判断/切换节点及其设置

“融合”节点用于融合多个节点的信息。部署后,节点会尝试收集所有在列别中的消息,当节点收集到全部的消息,或者输入超时,节点会将收集到的信息合并起来一次发送出去。这里是将光线节点的信息和温度节点的信息合并在一起,如图14所示。

 

 

图14 融合节点及其设置

“模板”节点可以按照已有的模板创建一个新的消息。在之前“体验云计算”的项目中对其已有一定了解。这里我们将光线节点的消息属性light和温度节点的消息属性temperature合并为一个消息属性payload,然后通过邮箱节点发送到邮箱中,如图15所示。

 

 

图15 模板节点及其设置

 

 

项目2-3 体验云计算

学习目标:

1.理解并能够正确设置模板节点、判断/切入节点、http请求节点;

2.能够正确连接PM2.5传感器;

3.了解物联网的概念并通过物联网开放平台体验云计算。

一、项目描述

随着互联网技术的普及、开源硬件的广泛推广、各类物联网服务平台的推出,物联网技术迎来一个飞跃的阶段。那么如何将互联网技术应用到我们的日程生活当中呢。本节课我们将利用edison套件中的器材,借助物联网开放平台,结合物联网技术完成一个在线实时监测室内PM2.5项目。

二、项目分析

完成在线实时监测室内PM2.5项目的关键问题是PM2.5的检测以及如何将收集到的PM2.5数据上传到物联网平台。我们可利用PM2.5传感器很好的解决PM2.5检测的问题,至于如何将数据上传到物联网平台,就要取决于我们选择的是怎样的互联网平台,项目分析可参考表1。

表1 体验云计算的项目分析

项目名称

体验云计算

项目功能

采集室内PM2.5数据,并上传到物联网平台进行实时监测

器材清单

PM2.5传感器

工作流程

 

三、基础知识

(一)PM2.5传感器

PM2.5传感器是红外线发射二极管和光电晶体管组成,并对角式地排列在模块中,能够检测到空气粉尘中的反射光,尤其可以有效的检测到非常细的颗粒,比如香烟烟雾。为了方便接线,使用时需结合PM2.5传感器转接模块。该模块可以很方便的将PM2.5传感器和edison连接起来,在连接时只需将6针的连接线连接到PM2.5传感器上,转接模块上标D的接口通过3P线接到edison的数字针脚,标A的接口通过3P线连接到edison的模拟针脚即可。

 

图 1 PM2.5传感器(左)和转接模块(右)

(二)物联网平台

随着信息技术的不断发展与智能设备的不断普及,我们正逐渐迈入物联网的时代,并实现万物互联的愿景,从传统的传感器模块、冰箱、电视到健康手环、智能眼镜等可穿戴设备都能够通过各种各样的网络协议连接到一起,这就需要一个强大的物联网平台,对这些设备产生的大量数据进行存储和分析。

目前能够看到的物联网开放平台有TLINK物联网开放平台、乐为物联网开放平台、中国移动物联网开放平台等。而通过对接口使用、性能稳定、数据处理因素的综合考虑,本项目最终选择了使用中国移动互联网开放平台作为依托。

接入中国移动互联网开放平台之前,我们首先要注册,登陆,完成界面如图2所示。从图中也可看出平台已提供了接入的详细文档,这里只提醒几点:1.项目创建成功时,可自动生成一个APIKey,默认关联本项目的所有设备,权限最大,是HTTP头参数携带的。2.设备添加成功时,可自动生成API地址,这是编写程序时,在“http请求”节点要用到的地址,从而实现将采集到的数据上传到我们创建的设备地址。

 

图2 完成登录界面

四、实现过程

(一)硬件连接

准备好器材后将PM2.5传感器与edison连接起来,这里我们将PM2.5传感器通过转接模块分别连接到模拟针脚1和数字针脚2,如图3所示。

图3 PM2.5传感器与edison的连接图

(二)流程设计

为了采集室内PM2.5并实时上传到物联网平台进行监测,我们需要使用“注入”节点设置在一开始时就触发传感器,并且需要通过“模板”节点定义变量,通过“改变”节点设置HTTP的头参数,再通过“http请求”节点发送数据到目的地址,同时借助“调试输出”节点将信息输出到调试窗口,以判断数据上传成功与否,参考流程如图4所示。

 

图4 体验云计算流程图

(三)节点设置

“注入”节点可根据我们的需要触发下一节点。双击它可出现如图5所示界面,我们设置有效载荷为“时间戳”,重复为“无”,并将在最开始插入一次打上对勾,从而保证在程序一开始执行时就触发传感器。

 

 

图5 注入节点及其设置

“PM2.5传感器”节点可采集室内PM2.5的值,这里我们连接在了edison的模拟针脚1,具体设置如图6所示:

 

图6 PM2.5传感器节点及其设置

“模板”节点可以按照已有的模板创建一个新的消息。点击该节点,在信息窗口便可查看如何创建新消息的相关信息。双击该节点可看到默认为mustache项,这里我们需创建一个JSON节点,因此选为JSON项,用来接收PM2.5传感器的值,为了增加可读性,将名称改为构架post文本,具体设置如图7所示。

 

 

图7 模板节点及其设置

“改变”节点的主要功能是对传入的信息进行条件分配。其作用相当于编程语言中的switch和if else分支,点击左下角“+规则”添加分支。本项目需要在head中构建APIKey,因此需将物联网平台中自动生成、权限最大的APIKey地址赋给headers.api-key,从而实现数据的上传,具体设置如图8所示。

 

 

 

图8 改变节点及其设置

“http请求”节点可以得到我们需要的网页地址。本项目中我们需要将上一节点的信息上传到物联网平台,因此使用的是POST方法,请求的是我们在物联网平台上添加设备时生成的API地址+datapoints?type=3。由于在模板节点创建的是JSON对象,因此在返回项中要选择解析过的JSON对象,具体设置如图9所示。

 

 

图9 http请求节点及其设置

  “调试”节点主要是对我们输出结果的正误进行检测和调节。该节点的设置比较简单,本项目中主要将“输出”设置为“消息属性”,将“输出到”设置“调试标签页”,具体如图10所示。若在调试窗口显示为{ "errno": 0, "error": "succ" },则表明数据上传成功。

 

 

图10 调试节点及其设置

(三)测试效果

单击部署按钮,待部署成功后若调试窗口的显示符合预期,登录到中国移动物联网开放平台便可看到我们采集的PM2.5数据在实时的更新中。若有问题,在老师或同学的帮助下逐一排查解决。最后,与同学分享自己的作品和经验。

五、挑战自我

数据上传成功,我们便可在物联网平台看到一系列变化的数据,但你是否觉得数据的叠加显示太过随意?可否将数据转化为图表的形式展示出来呢?动手试试吧。

六、扩展阅读

将数据转化为图表,在Excel中我们已经非常熟悉,其实在物联网平台实现这一操作也很简单。在项目菜单下有一项是应用管理,点击添加应用即可出现如图11所示的界面。在图中我们可以很清楚的看到,可以创建曲线图、柱形图、仪表盘等等。这里我们选择曲线图。然后在右边的选项中选择相对应的数据流即可。当然还可添加图表标题、改变曲线颜色等信息。

 

图11 新建应用界面

应用添加成功之后,再返回项目的主页面查看数据展示项,便可看到数据的显示已变成曲线图形式(如图12所示),看着是不是更加直观形象了呢!其实,在物联网开放平台能做的有趣的事情还有很多,赶紧去探索吧。

 

图12 数据的图表化

 

 

项目2-4 视频看家宝

学习目标:

1.理解并能够正确设置摄像头节点、面部检测节点及显示图像节点;

2.能够正确连接运动传感器、摄像头;

3.了解图像转流数据节点及如何在网页中正确显示图像。

一、项目描述

目前市场上的看家宝种类繁多,而且随着科技的不断发展,看家宝的功能也愈加强大和人性化。无论身在何处,用户都可使用PC、手机或平板电脑等智能终端设备,随时观看家中摄像头中的信息。在之前的项目中,我们已经制作了能够获取室内温度以及能够报警并发送e-mail的智能看家宝,本节课我们将延续之前的项目,利用edison套件中的器材,制作一个若检测到家里有人出入,便会自动开启摄像头进行记录的视频看家宝,如图1所示。

 

图1 视频看家宝

二、项目分析

制作视频看家宝的关键问题是人的检测,结合之前项目的学习,我们知道利用运动传感器就能很好的解决这个问题。至于摄像头的自动开启,当然要由检测到有无运动的人来决定,项目分析可参考表1。

表1 视频看家宝的项目分析

项目名称

视频看家宝

项目功能

检测是否有人,若检测到有人,则自动开启摄像头

器材清单

edison、运动传感器、摄像头

工作流程

 

三、基础知识

(一)摄像头节点

“摄像头”节点,顾名思义,是用来获取图像,并可将图像数据发送至下一节点。使用时,将其插入到Edison的USB口即可(注意要将开关调到使用的USB口一端),如图2所示。

 

图2 “摄像头”节点

(二)面部检测节点

“面部检测”节点能够接收“摄像头”节点传过来的图像数据,并能够将相关的数据发送到下一个节点。但需注意,输出1的数据为人脸个数,输出2的数据为图像数据包。若想显示图像,就要将下一个节点与输出2相连接,如图3所示。

 

图3 “面部检测”节点

四、实现过程

(一)硬件连接

准备好器材后将运动传感器、摄像头与edison连接起来,这里我们将运动传感器连接到数字针脚2,摄像头插入到Edison的USB口,如图4所示。

 

图4 运动传感器、摄像头与edison的连接图

(二)流程设计

为了实现视频看家宝的功能,我们需要使用“软件开关”节点触发运动传感器进行检测,并且需要通过“判断/切换”节点对运动传感器的值进行判断,如果检测到有运动的人,便开启摄像头,否则关闭摄像头,参考流程如图5所示。

 

图5 视频看家宝流程图

(三)节点设置

 “判断/切换”节点可对是否检测到有运动的人做出判断。若检测到有运动的人,即运动传感器的值为1时,“判断/切换”节点的值输出1;若检测到没有运动的人,即运动传感器的值为0时,“判断/切换”节点的值输出2,如图6所示。

 

 

 

图6 判断/切换节点及其设置

“改变”节点用来开启或关闭摄像头。若接收到上一个节点的信息为1,即检测到有人运动,则开启摄像头,设置payload到1,如图7所示;若接收到上一个节点的信息为2,即没有检测到有人运动,则关闭摄像头,设置payload到0。

 

 

图7 改变节点及其设置

“摄像头”节点用来捕获图像信息,可接收上一个节点开启或关闭摄像头的信息并执行。而且可设置其图像分辨率的大小、图像模式及捕获图像的时间间隔。当只有一个摄像头时,摄像头编号默认为0,具体设置如图8所示。

 

 

图8 摄像头节点及其设置

“面部检测”节点能够接收“摄像头节点的图像数据信息,并将图像数据信息及检测到的人脸个数发送到下一个节点,其中第一个输出节点为人脸个数,第二个输出节点为图像数据信息,具体设置如图9所示。

 

 

图9 面部检测节点及其设置

“显示图像”节点用来接收上一节点传过来的图像数据信息,并将其通过网页的形式显示出来。使用时,双击节点并点确定按钮即可,如图10所示。

 

 

图10 显示图像节点及其设置

(三)测试效果

单击部署按钮,待部署成功后观察视频看家宝的功能是否符合预期,如有问题,在老师或同学的帮助下逐一排查解决。最后,与同学分享自己的作品和经验。

五、挑战自我

按常理来说,如果家里有异常状况发生,我们希望能够及时看到家里情况。那么你能在本节内容的基础上,对视频看家宝的功能做出一些完善吗?比如当自动开启摄像头之后,能够将拍下的图像通过e-mail的方式发送给主人。动手试试吧。

六、扩展阅读

在之前的项目学习中,我们已接触过将文本信息或数字信息通过e-mail的方式发送给主人。但本项目要求将图像信息通过e-mail的方式发送给主人又该如何实现呢?为了能够正常显示图像,就需使用“图像转流数据”节点对“面部检测”节点发过来的图像信息进行编码,然后通过“添加字符串”节点将编码之后的图像信息嵌入到网页中,最后通过邮箱的方式发送给主人,参考流程设计如图11所示。

 

图11 流程设计图

“图像转流数据”节点能够接收上一个节点发送过来的图像信息,并使用Base64对传入的图像信息进行编码,生成具有头信息的base64图像流,并将其发送到下一个节点,如图12所示。

 

 

图12 图像转流数据及其设置

“添加字符串”节点在本项目的主要功能就是将上一个节点发送过来的图像流经过处理变成能够被网页识别的图像信息,具体设置如图13所示。

 

 

图13 添加字符串节点及其设置

“e-mail”节点的设置请参考项目1,这里不再赘述。

 

 

 

项目2-5 天气预报提示器

学习目标:

1.理解并能够正确设置软件开关节点、http请求节点及调试节点;

2.了解函数节点及其应用;

3.体验动手制作天气预报提示器的乐趣。

一、项目描述

俗话说“天气即是天意”,天气状况对人类生活的影响不言而喻。农耕文化下,我们的祖先很早就发明了各种仪器来记录和预测气象,像东汉时期用来测风向的“相风铜乌”(如图1所示)、《史记》中记录的天平式测试仪等。随着气象学的发展,如今人们想要预知未来天气,只需拿起手机上网一查就会有精确的数字呈现,然而简便之余也失去了不少的乐趣。本节课我们将利用edison套件中的器材,动手制作一个天气预报提示器。

 

图1相风铜乌

二、项目分析

制作天气预报提示器,首要解决的问题便是天气预报地址的获取,我们可利用http请求节点很好的解决这个问题,然后将消息通过调试节点显示在调试窗口,项目分析可参考表1。

表1 天气预报提示器的项目分析

项目名称

天气预报提示器

项目功能

获取某一地点的天气,并显示在调试窗口

器材清单

edison

工作流程

 

三、基础知识

(一)软件开关节点

“软件开关”节点作为程序的起点,在Smart_Node中应用普遍,如图2所示。其功能类似于硬件开关,可直接控制程序的运行,在本项目中,我们使用“软件开关”节点控制天气预报的获取与否。

 

图2 “软件开关”节点

(二)调试节点

“调试”节点在调试程序时会常用到,如图3所示。其作用类似于Arduino中的串口通信,可以将我们需要调试的数据呈现在“调试”窗口中。例如在本项目中实时读取某一地区天气状况。

 

图3 “调试输出”节点

四、实现过程

(一)流程设计

为了实现只在我们需要时才获取天气,需使用“软件开关”节点进行控制,而为了获取我们想了解的天气状况,需使用“http请求”节点进行设置,最后使用“调试”节点将信息输出到调试窗口,参考流程如图4所示。

 

图4 看家宝2.0流程图

(二)节点设置

“软件开关”节点决定程序的运行与否。双击它可出现如图5所示界面,可将它想象成硬件开关,点击一次程序运行一次,再点击一次,程序运行停止,并且可在initVal中设置延时,即:延迟多长时间触发开关信号,这里我们将“initVal”设置为“1”,如图5所示。

 

 

图5 “软件开关”节点及其设置

“http请求”节点可以得到我们需要的网页地址。本项目中我们需要获取某一地址,因此使用的是GET方法,请求的是我们想了解的某一地区的天气预报的地址,例如北京天气预报的地址,即http://www.weather.com.cn/adat/cityinfo/101010100.html,填在网页地址一栏;因为输出的是字符串,因此在返回项中要选择UTF-8字符串,至于名称可根据程序的可读性进行设置,这里保持默认名称,即http请求,具体设置如图6所示。

 

 

 

图6 http请求节点及其设置

想一想:什么情况下可以方法设置为“POST”、“PUT”、”DELETE”等? 

“调试”节点主要是对我们输出结果的正误进行检测和调节。该节点的设置比较简单,本项目中主要将“输出”设置为“消息属性”,将“输出到”设置“调试标签页”,具体如图7所示。

 

 

图7 调试节点及其设置

试一试:在“输出”下拉框选择“完整的消息对象”,结果会有什么不同呢?

若在调试窗口显示的为如图8所示的内容,则表明天气预报获取成功,其中包括获取天气的地区、最高温度、最低温度等信息。

 

图8 调试窗口内容

(三)测试效果

单击部署按钮,待部署成功后观察调试输出的信息是否符合预期,如有问题,在老师或同学的帮助下逐一排查解决。最后,与同学分享自己的作品和经验。

五、挑战自我

根据本节课制作的天气预报提示器,我们可在调试窗口中获得很多有用或没用的信息。那么能否对此做出进一步的修改和完善,比如只输出最高温度和最低温度?动手试试吧。

六、扩展阅读

“函数”节点可允许用户根据自己的需要编写JavaScript代码,以便灵活的完成更多有趣的事情,如图9所示为函数节点及其默认设置。可将msg看成一个结构体,它下面可以有很多变量,若返回msg,则会把上一节点的所有信息输出出来,若返回msg.payload,则只输出payload值。默认输出的是payload,很多节点都默认接收payload。当然编写函数时,还可参考信息标签页进行编写。

 

 

图9 函数节点及其默认设置

在本项目中,若想只输出最高温度的值,则要对截取的字符进行计算,再结合substring方法即可实现。在这里我们截取的字符是(58,60),需注意的是,这是左闭右开的情况,即只输出第58和59两个字符,如图10所示。

 

 

图10 函数节点及其设置

做一做:根据最高温度的函数节点设置,尝试完成最低温度的函数节点设置。

参考流程如图11所示。

 

图11 天气预报提示器改进版流程图

 

 

项目2-6 微信互动1.0

学习目标:

1.理解并能够正确设置微信输入、微信输出及温度传感器节点;

2.了解微信公平号平台的应用;

3.体验动手制作智能家居的乐趣。

一、项目描述

随着智能家居的迅猛发展,越来越多的家居开始引进智能化系统和设备,因此如何让我们更方便的对这些智能化的系统和设备进行管理和控制,操作终端的选择便显得尤为重要(如图1所示)。而微信作为时下最热门的社交信息平台、最火热的APP应用,其众多的交互功能亦成为控制家居最方便的工具之一。本节课我们就将利用edison套件中的器材,结合微信公众平台的应用,制作一款能够通过微信发送命令,从而实时获取室内温度的作品。

 

图1 智能家居

二、项目分析

制作一款通过微信发送命令,实时获取室内温度的作品,首要解决的问题便是温度的感知,这可利用温度传感器很好的解决这个问题,至于如何通过微信发送命令,就需要用到“创客大爆炸服务平台”(在微信公众号中搜索“创客大爆炸服务平台”关注即可)了,项目分析可参考表1。

表1 智能家居1.0的项目分析

项目名称

智能家居1.0

项目功能

通过微信发送命令,获取室内温度

器材清单

edison、温度传感器

工作流程

 

 

三、基础知识

(一)温度传感器

温度传感器是一款用来对环境温度进行定性检测的装置,通过其表面大写A的标识,可知它是模拟传感器,如图2所示。温度传感器是基于LM35半导体的传感器,它是美国国家半导体公司生产的线性温度传感器,其测温范围是-40℃到150℃,输出的电压与温度成正比,并且可与edison相结合,实现与环境温度感知相关的互动效果。

 

图2 温度传感器

(二)微信公众平台

创客大爆炸服务平台是一个专门与Smart Node互动的微信公众平台,只需关注此公众号,再通过编写简单的程序,便能实现很多与Smart Node互动的有趣作品,其公众号界面如图3所示。

 

图3 创客大爆炸服务平台界面

四、实现过程

(一)硬件连接

准备好器材后将温度传感器与edison连接起来,这里我们将温度传感器连接到模拟针脚0,如图4所示。

 

图4 温度传感器与edison的连接图

(二)流程设计

既然是通过微信发送命令,自然会用到“微信输入”节点,又是通过微信接收信息,当然也会用到“微信输出”节点,而室内温度的感知便是通过“温度传感器”节点获得,参考流程如图5所示。

 

图5 智能家居1.0流程图

(三)节点设置

“发微信”节点用来给Smart Node发送命令。双击它可出现如图6所示界面,Account ID是创客大爆炸服务平台的ID,当用户关注了该平台的微信公众号,会自动生成一个ID供用户使用,这里获取的ID为vtd_u,将其填写到节点里面即可。需要注意的是,用微信发送的指令只能是布尔值,即只有真假两个值,0表示假,即不触发节点;非0表示真,即触发节点,从而获取我们想要的信息。

 

 

 

图6 发微信节点及其设置

“温度传感器”节点可实现室内温度的获取。在这里我们将其连接在模拟针脚A0上,interval保持默认值1000,如图7所示。当然也可根据自己的需要延长或缩短interval值。

 

 

图7 温度传感器节点及其设置

“收微信”节点是用来将上一节点的信息输出到微信当中。该节点的设置与“发微信”节点的设置一样(如图8所示),比较简单,这里不再赘述。

 

 

图8 收微信节点及其设置

(三)测试效果

单击部署按钮,待部署成功后,我们可打开创客大爆炸服务平台的微信号,发送非0的值,若输出正常即可出现如图9所示的界面。

 

图9 数据输出界面

但我们却发现,发送一次命令,却得到一连串不间断的数据。那么能否发一次命令只得到一个数据呢?当然可以,根据上面的描述,可知只需再发送让其停止的命令,即0便可,如图10所示。

 

图10 数据输出优化界面

当然结合之前学过的“触发”节点,我们也可从流程设计中对其进行优化,如图11所示,只需将其触发动作设置为1秒,就能轻松实现发送一次命令,得到一次数据的效果,如图12所示。

 

图11 设计流程优化界面

 

图12 数据输出优化界面

单击部署按钮,待部署成功后观察微信互动1.0的功能是否符合预期,如有问题,在老师或同学的帮助下逐一排查解决。最后,与同学分享自己的作品和经验。

五、挑战自我

通过本节课的学习,相信你对微信节点的应用已非常熟悉,那么能否结合之前摄像头的知识,用微信发送命令,驱动摄像头,并用邮箱获取图像呢?赶紧试试吧。

六、扩展阅读

因为我们已经有过用运动传感器触发摄像头获取图像并发送到邮箱项目的经验,因此用微信发送命令,驱动摄像头,获取图像并发送到邮箱的案例便不再那么困难,只是触发摄像头方式的不同而已,具体的流程设计如图13所示。

 

图13 流程设计界面

 

 

项目2-7微信互动2.0

学习目标:

1.理解并能够正确设置注入节点、判断/切入节点、添加字符串节点及e-mail节点;

2.能够正确连接运动传感器、蜂鸣器;

3.了解电子邮件收发协议。

一、项目描述

智能家居是在物联网技术的发展之下物联化的体现,可以让用户以更加方便的手段来管理家庭设备。上节课我们已经讲述了如何通过微信发送命令实时获取室内温度,这节课我们将继续学习,利用edison套件中的器材,制作一个若检测到家里有人出入,便通过微信的方式向主人发送警报的智能安防作品。

 

图1 智能家居

二、项目分析

制作智能安防作品的关键问题是人的检测,这可利用运动传感器很好的解决这个问题,至于通过微信询问及发送警报给主人,当然会用到收发微信节点,项目分析可参考表1。

表1 智能家居2.0项目分析

项目名称

智能家居2.0

项目功能

用微信触发传感器检测是否有人,若检测到有人,则通过微信发送警报给主人

器材清单

edison、运动传感器

工作流程

 

三、基础知识

运动传感器

运动传感器(如图2所示)是一种能够检测运动的人或动物身上发出红外线的装置。当它在一定的检测范围内检测到运动的生命体时,输出高电平值,否则输出低电平值。

 

图2 运动传感器

四、实现过程

(一)硬件连接

准备好器材后将运动传感器与edison连接起来,这里我们将运动传感器连接到数字针脚2,如图4所示。

 

图3 运动传感器与edison的连接图

(二)流程设计

为了实现智能安防作品的功能,我们需要使用“发微信”节点触发传感器进行检测,并且需要通过“判断/切换”节点对运动传感器的值进行判断,如果检测到有运动的人,便通过改变节点将消息通过微信的方式发送给主人否则一切正常,参考流程如图5所示。

 

图4 智能家居2.0流程图

(三)节点设置

“判断/切换”节点可实现是否有运动的人的判断。若检测到有运动的人,即运动传感器的值为1时,“判断/切换”节点的值输出1,如图6所示。

 

 

图5 判断/切换节点及其设置

“改变”节点可改变一个节点的消息属性。这里通过“改变”节点将上一个节点检测到有人的数据1设置为Somebody is coming,然后通过微信节点将消息发送给主人,如图6所示。

 

 

 

图6 改变节点及其设置

  “收微信”节点是用来将上一节点的信息输出到微信当中。双击它可出现如图7所示界面,Account ID是创客大爆炸服务平台的ID,当用户关注了该平台的微信公众号,会自动生成一个ID供用户使用,这里获取的ID为vtd_u,将其填写到节点里面即可。

 

 

图7 收微信节点及其设置

(三)测试效果

单击部署按钮,待部署成功后查看微信是否收到可正确的信息,如有问题,在老师或同学的帮助下逐一排查解决。最后,与同学分享自己的作品和经验。

五、挑战自我

在本节内容的基础上,你能对智能安防作品的功能做出一些完善吗?比如检测到有人运动时,不仅能够通过微信发送警报给主人,还能有语音警告声响起。动动试试吧。

六、扩展阅读

SmartNode的强大的之处在于它有很多神奇的节点,通过这些节点我们便可做出很多神奇又有趣的作品。“say”节点便是其中之一,它能够将文本信息转化为语音信息并通过音响播放出来,从而给原本枯燥的作品增加了语音交互的有趣功能。但当前的“say”节点只能识别英文的文本信息,使用时稍加注意即可。

使用微信触发运动传感器检测到有人运动时便通过微信发送警报给主人的项目我们已完成。为了实现一些更加酷炫的效果,可使用“say”节点在将警报发送给主人的同时发出语音警报,以便威吓陌生人,具体流程设计如图8所示。

图8 流程设计界面

“say”节点能够将上一节点的文本信息转化为语音的形式播放出来,因此可以不再对“say”节点进行任何设置,具体如图9所示。

 

 

图9 say节点及其设置

 

 

 

 

第三单元 强大的计算

 

 

 

项目3-1 万圣节宝箱(人脸识别)

学习目标:

1.理解并能够正确使用摄像头节点、面部检测节点、图像转流数据节点及显示图像节点;

2.了解触发节点及其应用;

3.体验动手制作作品的乐趣。

一、项目描述

在茫茫人海的火车站,一眨眼的功夫已经被认出;当危险人物走进时,手机立刻发出嘀嘀的报警声,并且上面已经显示危险人物的姓名和信息……随着科技的快速发展,这些令人炫目的电影特技,已经在人脸识别技术的发展应用下成为现实。“刷脸”一词便是最好的例证,“刷脸”进站,“刷脸”支付(如图1所示),“刷脸”防盗等等,“刷脸”已成为人们的口头禅。本节课我们将利用edison套件中的器材,动手制作一个简单的人脸识别的作品。

 

图1 刷脸支付

二、项目分析

既然是制作人脸识别作品,自然要用到摄像头节点,然后再通过面部检测、图像转流数据及显示图像节点将图像通过网页的形式显示出来,项目分析可参考表1。

表1 人脸识别作品的项目分析

项目名称

人脸识别

项目功能

当检测到是人脸时,就将图像输出

器材清单

Edison、摄像头

工作流程

 

三、基础知识

(一)摄像头节点

“摄像头”节点,顾名思义,是用来获取图像,并可将图像数据发送至下一节点。使用时,将其插入到Edison的USB口即可(注意要将开关调到使用的USB口一端),如图2所示。

 

图2 “摄像头”节点

(二)面部检测节点

“面部检测”节点能够接收“摄像头”节点传过来的图像数据,并能够将相关的数据发送到下一个节点。但需注意,输出1的数据为人脸个数,输出2的数据为图像数据包。若想显示图像,就要将下一个节点与输出2相连接,如图3所示。

 

图3 “面部检测”节点

(三)显示图像节点

“显示图像”节点是用来接收“图像转流数据”节点传过来的图像信息,并将其通过网页的形式显示出来。使用时,双击节点并点确定按钮即可,如图4所示。

 

图4 “面部检测”节点

四、实现过程

(一)硬件连接

准备好器材后将摄像头与edison连接起来,摄像头连接大的USB接口即可,如图5所示。

 

图5 摄像头与edison的连接图

(二)流程设计

为了实现摄像头的开启,需使用“软件开关”节点进行控制,然后通过“面部检测”节点将发过来的图像信息进行识别并发送到下一个节点,最后使用“显示图像”节点将图像信息通过网页的形式显示出来,并且还可使用“调试”节点将检测到的人脸个数输出到调试窗口作为参考,参考流程如图6所示。

 

图6 人脸识别流程图

(三)节点设置

“摄像头”节点用来捕获图像信息,可接收上一个节点开启或关闭摄像头的信息并执行。而且可设置其图像分辨率的大小、图像模式及捕获图像的时间间隔。当只有一个摄像头时,摄像头编号默认为0,具体设置如图7所示。

 

 

 

图7 摄像头节点及其设置

“面部检测”节点能够接收“摄像头节点的图像数据信息,并将图像数据信息及检测到的人脸个数发送到下一个节点,其中第一个输出节点为人脸个数,第二个输出节点为图像数据信息,具体设置如图8所示。

 

 

图8 面部检测节点及其设置

“显示图像”节点用来接收上一节点传过来的图像数据信息,并将其通过网页的形式显示出来。使用时,双击节点并点确定按钮即可,如图9所示。

 

 

图9 显示图像节点及其设置

(三)测试效果

单击部署按钮,待部署成功后观察图像是否能够正常显示,如有问题,在老师或同学的帮助下逐一排查解决。最后,与同学分享自己的作品和经验。

五、挑战自我

在本节课的基础上,你能做出一些更加有趣的作品吗?比如万圣节宝箱、店铺欢迎机器猫等,当检测到人脸时,就会发出语音提示并摆动手臂打招呼,开动你的大脑,动手试试吧!

六、扩展阅读

SmartNode有很多神奇的节点,通过多个节点的联合使用,可实现各种想要的功能和效果,比如“语音”节点和“舵机控制”节点的联合使用,便可轻松解决挑战自我中的问题——制作语音提示并摆动手臂打招呼的作品。

语音提示与摆动手臂的有无需根据捕获到的人脸个数来决定,因此要用“判断/切换”节点对其人脸个数进行判断,如果人脸个数大于0,便开启语音提示并控制舵机摆动,否则关闭语音提示并控制舵机停止摆动,具体流程如图10所示。

 

图10 人脸识别升级版

由图10可看出,流程设计中用到了“触发”节点。“触发”节点可以确保时间很长或者很短的触发动作,成为一个稳定的触发动作,比如可以确保LED亮固定的时间,可以让“语音”节点把想说的话说完等等。为了实现本项目的效果,我们把“发送”设置为“字符串有效载荷”并将其值设为1;将“当”设置为“等待直到复位”(如图11所示),表示只有收到了msg.reset消息,当前过程(即语音提示)才会结束。

 

 

 

图11 触发节点及其设置

想一想:

1.“触发”节点与之前学过的“延时”节点有什么区别?

2.什么情况下可以将“发送”设置为“存在的消息”或“无”?

3.将“当”设置为“等待”和设置为“等待直到复位”有何区别?

当捕获的人脸个数大于0时,我们通过“改变”节点,将开启舵机并将其值设置为90(如图12所示);通过“触发”节点实现语音的提示,这里我们将语音设置为“Welcome”,需注意的是,“语音”节点暂时只能支持英文。

 

 

图12 改变节点及其设置

当捕获的人脸个数为0时,通过“改变”节点将舵机关闭。同时通过“改变”节点设置msg.reset消息发送到“触发”节点,以结束语音提示,如图13所示。

 

 

图13 改变节点及其设置

 

 

项目3-2 宠物相机

学习目标:

1.理解并能够正确使用红外接近开关节点、摄像头节点及函数节点;

2.了解函数代码编写的一般原则;

3.感受科技作品给我们的生活带来的轻松有趣。

一、项目描述

对于一个宠迷来说,每时每刻都想知道自己的宠物在做什么,有没有趁自己不在家的时候和伙伴开Party?随着养宠的人越来越多,这个需求的声音也越来越大,于是一个有趣的产品便诞生了——宠物相机(如图1所示)。只需将相机挂在宠物项圈上,便可轻松得知宠物的一切动态,当然再也不会错过宠物各种萌萌哒的姿态了!本节课我们将利用edison套件中的器材,动手制作一个宠物相机,实现当宠物靠近相机时,便能自动拍照的效果。

 

图1 宠物相机

二、项目分析

制作宠物相机需解决两个关键问题,一是当相机检测到有宠物接近时会自动启动摄像头;二是判断检测到的是宠物还是人物。对于第一个问题我们可利用红外接近开关很好的解决,至于第二个问题来说可能就要复杂一点,利用函数来解决,项目分析可参考表1。

表1 宠物相机的项目分析

项目名称

宠物相机

项目功能

当检测到的障碍物不是人脸时,就将图像输出

器材清单

Edison、红外接近开关、摄像头

工作流程

 

三、基础知识

(一)红外接近开关

红外接近开关(如图2所示)也称红外数字壁障传感器,是一种集发射与接收于一体的光电开关传感器,在传感器接收到信号后会引起后测指示灯的亮灭。这款传感器背面有一个电位器,可以根据需要调节障碍的检测距离。当探头前方无障碍时,红外数字壁障传感器输出高电平,有障碍时则相反。

 

图2 红外接近开关

(二)函数节点

“函数”节点可允许用户根据自己的需要编写代码以实现更多有趣的事情。如图3所示。

 

图3 函数节点

四、实现过程

(一)硬件连接

准备好器材后将红外接近开关、摄像头与edison连接起来,这里我们将红外接近开关连接到数字针脚2,摄像头连接到大的USB接口,如图4所示。

 

图4 摄像头与edison的连接图

(二)流程设计

为了检测是否有物体靠近宠物相机,可使用红外接近开关进行检测,然后通过“判断/切换”节点控制摄像头的开启,若检测到的人脸个数为0,即为非人脸时,还用通过“函数”节点将编码过的图像信息传到下一个节点,最后通过网页的形式显示图像。参考流程如图7所示。

 

图5 宠物相机流程图

(三)节点设置

“红外接近开关”节点用来判断是否有障碍物。双击它可出现如图6所示界面,这里将其接在数字针脚2,并且可在initVal中设置延时,即:延迟多长时间触发开关信号,这里我们将“Interval”设置为“500”。

 

 

图6 “红外接近开关”节点及其设置

“判断/切换1”节点用来接收“红外接近开关”节点的信息并对其进行分流,当接收到的信息为1,即无障碍物时,输出1;当接收到的信息为2,即有障碍物时,输出2,具体设置如图7所示。

 

 

图7判断/切换1节点及其设置

“判断/切换2”节点用来接收“面部检测”节点的人脸个数信息,当接收到的信息为0,即人脸个数为0时,输出1,具体设置如图8所示。

 

 

图8 判断/切换2节点及其设置

“改变”节点用来改变上一节点的变量,因为“面部检测”节点的两个输出值都是payload变量,为了确保图像信息不丢失,需使用“改变”节点将人脸个数的变量改为payload1,并将其设置为1发送到下一个节点,具体设置如图9所示。

 

 

图9 改变节点及其设置

“函数”节点用来判断接收的图像是否为宠物图像信息,若是则将其值(即1)保存到全局变量global中,若不是则将其值(即0)保存到全局变量global中,最后判断全局变量global的值是否为1,若是则输出保存在变量payload中的宠物图像信息,否则不输出任何值,具体设置如图10所示。

 

 

图10 函数节点及其设置

(三)测试效果

单击部署按钮,待部署成功后观察宠物相机是否能够正常工作,如有问题,在老师或同学的帮助下逐一排查解决。最后,与同学分享自己的作品和经验。

五、挑战自我

我们已经实现了宠物相机的制作,但按常理来说,拍下的照片应该能够让我们及时看到才对,那么你能否在本课的基础上进行完善和改进,当自动拍下宠物照片后将其发到自己的邮箱里?

六、扩展阅读

在之前的学习过程中,将图像发送到邮箱的练习我们应该已经非常熟练。若想把自动拍下宠物的照片及时发送到主人的邮箱,只需通过“添加字符串”节点将数据嵌入到网页中,然后再发送到邮箱节点即可,具体流程设计如图11所示。

 

图11 流程设计界面

 

 

项目3-3 方向识别

学习目标:

1.理解并能正确使用“集合形状识别”节点;

2.能正确连接并使用红外数字避障传感器,摄像头,音响和Edison,完成“方向识别”项目的制作;

3.了解摄像头图形识别的工作原理。

一、项目描述

通过前面知识的学习,我们对于Edison强大的功能有了一定的了解。面对物联网和机器人的迅猛发展,我们常常可以在电视中看到机器人自动识别图像并作出相应的动作,如下图 1所示。那么我们的Edison能不能完成摄像头识别图形并针对性的发出语音播报呢?我们动手试试吧。

 

图 1 机器人的眼睛

二、项目分析

这个项目工作原理很清晰,当遇到障碍物时,摄像头自动识别图形并根据图形样式进行语音播报。项目分析可参考下表 1所示:

表 1 “方向识别”项目分析

项目名称

方向识别

项目功能

遇到障碍物时,检测前方图形并针对性地播报

器材清单

音响,红外数字避障传感器,摄像头

工作流程

 

三、基础知识

(一)“集合形状识别”节点

该节点使用摄像头和OpenCV进行图形识别,在光照充足的情况下,可以识别正方形和圆形,如图 2所示。

 

图 2 “集合形状识别”节点

当摄像头输入采集到的图像时,向“集合形状识别”节点输入“1”,则该节点开始工作并判断图像类型。输出的值为0-2的整数,1为矩形,2为圆形,0为未知图形。需要注意的是需要将摄像头插入Edison的USB口。

四、实现过程

(一)硬件连接

我们将Edison、红外数字壁障传感器、摄像头和音响连接起来,在这里我们将红外数字壁障传感器连接到数字口5,如下图 3所示。

 

图 3 “方向识别”的连接图

)流程设计

为了实现“方向识别”项目的制作,我们需要引入“摄像头”、“红外数字避障传感器”等节点,然后将节点连起来。参考程序如图 4 所示。

 

图 4 “方向识别”的程序

)节点设置

为了触发红外数字壁障传感器,我们需要引入“注入”节点。双击之后会出现如下图 5所示的界面,我们在有效载荷下拉框中选择“字符串”并输入“1”,将该节点名字修改为“注入”。

 

 

图 5 “注入”节点及其设置

为了检测是否遇到障碍物,我们需要使用红外数字避障传感器,Smart_Node的“红外接近开关”节点可以满足这个功能。本案例中我们将针脚设置D5,在InterVal下框中我们输入1500,如下图 6所示:

 

 

 

图 6 “红外接近开关”节点设置

想一想:

1.在“interrupt”框为什么输入1500呢?如果输入很小的数值(例如输入0)会有什么不同?

为了满足只有在障碍物的情况下才触发摄像头,我们需要引入“判断”节点,具体设置如下图 7所示:

 

 

图 7 判断”节点设置

触发红外数字避障传感器后,需要触发“摄像头”节点进行图像的采集。在这里我们设置Camerald为“0”,FrameConfig为“320*240”,TimerVal为“1500”。具体如图 8所示。

 

 

 

图 8  “摄像头”节点设置

针对“集合形状识别”节点输出的三种不同情况,我们需要引入“判断”节点,具体设置如下图 9所示:

 

 

图 9 “判断”节点设置

当“判断”节点输出“0”时,我们需要音响说出“i do not know”;输出“1”时,音响说出“it is rectangle”;输出“2”时,音响说出“it is circle”,我们需要引入“开启”节点。以输出“2”时为例,具体的设置如下图 10所示:

 

 

图 10  ”开启”节点设置

为了音响播出声音,我们需要引入“say”节点。由于“开启”节点已经向“say”节点输入内容,则不需要对“say”节点进行任何设置。具体如下图 11所示:

 

 

图 11 “say”节点设置

通过对以上节点的设置,将各个节点连接起来,就实现我们的“方向识别”程序编写。

)效果测试

点击“部署”按钮,先使用障碍物触发红外数字壁障,并将印有圆或长方形的纸张(颜色分明)显示摄像头前,观察音响是否可以正常发出声音。如果不能产生预期的效果,可以老师或同学交流问题所在。最后分享自己的作品和经验。

 

五、挑战自我

“方向识别”很简单吧,除了使用识别图形控制语音外,我们可不可以使用语音交互控制Edison呢?同学们,动手试试吧。

 

六、扩展阅读

(一)图像识别

图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术。图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。

图像识别是人工智能的一个重要领域。为了编制模拟人类图像识别活动的计算机程序,人们提出了不同的图像识别模型。例如模板匹配模型。这种模型认为,识别某个图像,必须在过去的 经验中有这个图像的记忆模式,又叫模板。当前的刺激如果能与大脑中的模板相匹配,这个图像也就被识别了。例如有一个字母A,如果在脑中有个A模板,字母A 的大小、方位、形状都与这个A模板完全一致,字母A就被识别了。这个模型简单明了,也容易得到实际应用。但这种模型强调图像必须与脑中的模板完全符合才能 加以识别,而事实上人不仅能识别与脑中的模板完全一致的图像,也能识别与模板不完全一致的图像。例如,人们不仅能识别某一个具体的字母A,也能识别印刷体 的、手写体的、方向不正、大小不同的各种字母A。同时,人能识别的图像是大量的,如果所识别的每一个图像在脑中都有一个相应的模板,也是不可能的。

 

 

 

第四单元 情侣大白

 

 

项目4-1 情感大白

学习目标:

1.认识MQTT节点及其使用,了解MQTT的通讯方式;

2.能正确连接并使用,完成情感大白的制作;

3.掌握情感大白器的程序编写。

一、项目描述

情感大白,顾名思义就是朋友间通过大白进行信息交流,主要适用于异地朋友。当朋友中一方开心或者不开心时候通过触发大白,就可以引起另一方大白的反应,则这个时候另一方情感就可以及时获取对方的感受,并及时给予安慰和鼓励。并且情感大白还可以显示今日的最低天气等信息,进行温馨提示。如图1所示。

 

图 1 情感大白

二、项目分析

通过前面几章的学习,相信本章的情感大白案例对于大家学习也不会很难。对于情感大白A而言,通过触发按钮A,通过MQTT则可以向情感大白B传递信息,则在情感大白B心中的LED灯闪烁,代表今天情感大白A今天很开心,并发送语音i miss you;触发按钮B时,通过MQTT向情感大白B传递信息,情感大白B脸部的LED灯保持亮的状态,代表今天情感大白A不开心,并播放语音i am not happy;反之,当情感大白B向情感大白A发送信息也是有同样的效果。并且情感大白A和B,都可以在早晨时识别到人脸后,当温度高于一定数值时,播放语音Today is temperature is high;当温度低于一定数值时,播放语音Today  is  temperature  is  low。项目分析可参考下表1所示:

表 1 “情感大白”项目分析

项目名称

情感大白

项目功能

情感大白之间可以相互通信,并显示今日的温度

器材清单

Edison*2、按钮*6、LED*/4、摄像头*2、音响*2

工作流程

以情感大白A为例:

 

 

三、基础知识

(一)MQTT节点

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品 和外部连接起来,被用来当做传感器和致动器的通信协议。

因着MQTT强大的功能,Smart_Node也引入该节点,共分成MQTT输入和MQTT输出两个节点,如图2和图3所示,通过设置MQTT节点的broker和主题就可以将两个节点间进行通信。需要注意的是,MQTT输入和MQTT输出需要保持同一个主题。

    

图2 MQTT输入         图3 MQTT输出

(二)“根据位置查找”字符串节点

为了更好获取指定位置的数据或信息,Smart_Node引入了“根据位置查找”字符串节点。只需要设置所需要获取信息的起始点和终点,我们既可以获取指定范围的字符串。这对于我们抓取一些有用信息起到了很好地帮助作用,免去了重新书写代码的麻烦。如图4所示。

 

图 4 “根据位置查找”字符串节点

 

四、实现过程

(一)硬件连接

以情感大白A为例,我们将Edison、按钮、LED、音响和摄像头连接起来,在这里我们将按钮A连接到数字口2,按钮B连接到数字口3,按钮C连接到数字口7,LED灯A连接到数字口6,LED灯B连接到数字口8。摄像头和音响连接到大的USB口即可,如下图 5所示。情感大白B与情感大白A类似。

 

图 5 “情感大白A”的连接图

注:左侧是概念图,Edison板需要连接USB连接线,连接线需要连接摄像头和音响。需要提醒的是,需要将USB口上部的拨片开关移动到靠USB口端的位置。

(二)流程设计

为了实现“情感大白”的制作,我们需要引入相对比较多的节点,然后将节点连起来。参考程序如图 6和图7所示。

 

 

 

图 6 “情感大白A”的程序

 

 

图 7 “情感大白B”的程序

(三)节点设置

MQTT节点作为两个大白之间的通讯工具,重要性不言而喻。在这里我们先介绍MQTT输出节点的设置,双击之后会出现如下图 8所示的界面,在Broker中点击按钮即可输入mqtt.smartnode.io,默认端口设置为1883,主题类似于我们传统网页中的id号,在这里我们设置为shouliang10。注:1.id号设置时最好选用不常用的,以免和别的id号重复;2.本案例选用创客大爆炸的服务器,因此所有的Broker设置都是一致的,即:mqtt.smartnode.io。

 

 

 

图 8 MQTT输出节点及其设置

MQTT输入节点设置和MQTT输出节点设置类似,双击之后会出现如下图 9所示的界面,在Broker中同样设置为mqtt.smartnode.io,默认端口设置为1883,为了两者之间的通信,我们在主题中同样设置为shouliang10。需要注意的是,为了实现情感大白的功能,MQTT输入节点和MQTT输出节点需要在不同的大白中显示。

 

 

图 9 MQTT输入节点及其设置

由于“改变”节点不需要触发就可以将字符串传给下一个节点,因此我们需要在“改变”节点前引入“判断”节点,并进行设置。如图10所示。

 

 

 

图 10 “判断”节点及其设置

由于MQTT默认是发送“1”,这样就会导致不管你有没有触发,MQTT一直在传输工作。因此为了更好地传输信息,我们可以设置成当按钮按下时,就向MQTT传输一个非0和1的字符串。在这里我们以“sad”为例。如图11所示。

 

 

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

当MQTT输出节点发送“sad”字符串后,我们可以在MQTT输入节点后加入判断节点,并对接受到的信息进行判断。如图12所示。

 

 

 

图 12 “判断”节点及其设置

为了在早晨时间才可以显示天气,因为我们需要引入“时间戳”节点。该节点的设置比较简单,如图13所示。

 

 

图 13  LED节点及其设置

为了抓取特定温度的数值,我们需要引用“根据位置查找”字符串节点。本案例中我们想抓取北京天气的最低温度,通过计算在第72个字符可以获取最低温度,具体设置为图14所示。

 

 

 

图 14 “根据位置查找”节点及其设置

(四)效果测试

点击“部署”按钮,分别按下按钮A、B和C后可以观察另一个大白LED和音响是否正常工作,在早晨时摄像头识别脸部后观察是否会触发音响。如果不能产生预期的效果,可以老师或同学交流问题所在。最后分享自己的作品和经验。

 

五、挑战自我

“情感大白”看似很复杂,但是具体实施是还是很简单吧。但是我们发现情感大白功能还是比较简单的,那么我们使用摄像头抓取图片后通过微信实现大白之间的图片传输功能呢?同学们,动手试试吧。

 

六、扩展阅读

(一)MQTT

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;

2、对负载内容屏蔽的消息传输;

3、使用 TCP/IP 提供网络连接;

4、有三种消息发布服务质量:

“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

“至少一次”,确保消息到达,但消息重复可能会发生。

“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;

6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;

 

 

 

发表评论

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

跳至工具栏