Arduino开发实战指南:智能家居卷.html.pdf

上传人:紫*** 文档编号:2916049 上传时间:2020-05-22 格式:PDF 页数:19 大小:2.10MB
返回 下载 相关 举报
Arduino开发实战指南:智能家居卷.html.pdf_第1页
第1页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Arduino开发实战指南:智能家居卷.html.pdf》由会员分享,可在线阅读,更多相关《Arduino开发实战指南:智能家居卷.html.pdf(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、前言 智能家居,又称智能住宅,在国外常用Smart Home表示。通俗来说,智能家居是将灯光、家电、家庭影院、燃气预警、远程控制、电动窗帘、安防设备、背景音乐等连接成 一个网络物联网,通过一台智能家居主机(控制管理系统)进行统一管理,实现家居设备的自动化和智能化控制,给使用者带来最大程度的高效、便捷、舒适与安全的体 验。 使用者可通过语音、短信、手机或平板电脑触摸屏、无线遥控器、上网设备等在家里或通过网络远程控制家用设备。我们想象一下,在回家的路上,你可以提前用手机打开 家中的空调和热水器;晚上走进自己家的门厅时,对着门厅直接说“开灯”,门厅的灯就亮了;开门时,安卓密码锁功能开启,系统会自动打

2、开电子门锁,安防撤防;坐在沙发 上用手机遥控自己家的电视、空调;睡觉前在床上就可以用手机关闭所有房间的灯光。这一切是多么惬意啊! 出门在外,如果突然想起家里的水壶还在炉台上加热,我们可以通过网络远程、短信等关闭燃气阀门;也可以在接到家中安防告警的短信或家中患病的老人通过手机发来的 SOS短信时,在网上通过摄像头观察家中的情况。 我们还可以进一步设定和执行各种复杂的场景操作,假如使用安卓手机设计了一个“家庭影院”场景,当按下“家庭影院”场景按钮时,智能家居系统将自动执行事先设定 好的多个动作:关闭窗帘、关闭吊灯、打开背景灯、打开电视并切换到高清输入模式、打开DVD、打开功放等,以前需要执行多个动

3、作,现在只需按一个键就可以全部完成了。 正如比尔盖茨在未来之路中曾经说过的那样:“在不远的未来,没有智能家居系统的住宅会像今天不能上网的住宅那样不合潮流。” 很多人或许觉得智能生活离我们还很远,只是个传说中的东西,只闻其名不见其形。其实智能家居系统早已在高端住宅或别墅中实现了,只是没有普及到大众家中,究其原 因,首先是目前主流的智能家居厂家如美国Control4(华歌)、霍尼韦尔、索博、波创、科力屋等,一套系统动辄几万、几十万,甚至上百万,这不是一般家庭能够消费得起的。 其次,市场上许多智能家居产品的功能多为噱头,实用性不强,价格偏高,与我们的实际需求相距甚远。比如,某品牌的智能马桶,价格在万

4、元以上,拥有诸多功能,如自 动冲洗、洁身、坐圈加热、暖风烘干、除菌消毒以及夜间照明等,但其中很多功能对于一般家庭来说中看不中用。其实智能家居系统对使用者来说实用和舒适最重要。 能不能我们自己动手做一套简单易用的智能家居系统呢?答案是肯定的。作为一名业余电子爱好者,我很早就考虑自己动手设计一套符合自己需求的智能家居系统,只是一 直没有找到合适的平台。2014年年初接触到Arduino互动电子技术后,其系统软硬件的开源性、丰富的扩展性给我很大启发,于是决定利用Arduino电子积木搭建心中的系统,从开 始的点滴尝试到最终完成虽经历了很多曲折,却让我学到了更多的知识。对有兴趣动手做电子产品的业余电子

5、爱好者说,其实做一个产品并不难,难的是恒心和毅力。 大家或许觉得智能家居系统涉及计算机技术、网络通信技术、传感器技术、互联网技术,这么多技术都要学习一定很难。我要对大家说,零基础的读者也可以完成本书所涉 及的内容。利用Arduino开源代码,可以完全不需要了解硬件、内部结构和寄存器设置的特点,仅仅知道它的端口作用即可;即使完全不懂硬件知识,只要会简单的C语言,就可 以按照书中一步一步的指导完成整个系统的搭建。 手机上的Android程序编写工作也许会让大家头痛,为此,在本书中,我向大家介绍一款图形化的编程软件App Inventor。它根本不需要你具备任何编程知识,只要像搭积木一 样将预先存放

6、好的组件拖到你想要的位置,即可完成一个复杂的Android程序。 本书前6章介绍了8个手机Android程序和Arduino单片机利用蓝牙之间相互通信控制的实验制作过程,一个用语音控制Arduino遥控器实验和一个室内温湿度用语音合成器播报实 验。第7章介绍了3个物联网平台功能和借助平台通过网页接收数据并控制设备的方法,以及如何实现微博发布和微信互动。最后一章介绍了如何自己动手搭建一个微信智能家居 平台。这一章里涉及PHP语言和MySQL数据库知识。大家只要根据注释部分修改自己的信息,复制其他部分就可以实现微信平台的搭建。 如果大家在实验过程中觉得制作过程比较繁琐,也可以直接到附录B指定的网站

7、下载我已经编写好的程序和源代码。实验中所需要的素材、库函数、App Inventor离线数据 包、Arduino编译软件等书中所提到的所有需要从网上下载的程序和资料也都保存在附录B指定的网站上,供大家下载和相互学习。 这本书能够出版,首先感谢机械工业出版社华章公司能够给我这么一个机会,还要特别感谢华章公司的编辑们,没有他们的辛苦工作,这本书不可能与广大读者见面。 我还要感谢张国强和程晨两位老师对本书提供的帮助和指导,他们提供了大量信息和资料。这里还要向大家推荐两本书:Arduino开发实战指南(程晨编著)、C+程 序设计(谭浩强编著)。如果大家对我的作品感兴趣,就一起动手吧! 由于时间非常仓促

8、,作者水平有限,书中难免存在错误,恳请广大读者批评指正! 赵志 第1章 蓝牙灯 你有没有想象过用手中的智能手机来控制家中的照明灯呢?现在,我们要将这个“天方夜谭”的想法变成现实。首先,要为家中的电灯安装一个蓝牙继电器控制模块, 然后在Android智能手机上安装你亲手编写的蓝牙控制程序。这样,不用拨动墙壁开关,一个用手机控制电灯亮灭的蓝牙灯就真正来到了我们的身边。也许你会说,这些工作一 定非常难吧!我告诉你,只要通过简单的C语言编程,就可以跟着我一步一步完成蓝牙灯的制作。 当晚上你回家摸不到墙壁上电灯开关时;当天冷了,睡觉前不想起床关灯时;当出门前想关闭所有房间电灯时;拿起你身边的手机,轻轻一

9、按就全部轻松搞定!一切就这么 简单,让我们一起动手吧! 开始前,先介绍一下蓝牙灯制作需要准备的硬件。 1.1 Arduino简介 Arduino是一个基于开放源代码的软硬体平台。它的硬件具有丰富的接口,有数字I/O口、模拟I/O口,同时支持SPI、IIC、UART串口通信,能通过各种传感器来感知环境, 并通过控制灯光、马达和其他装置来反馈和影响环境。 Arduino编程语言没有复杂的单片机底层代码,没有难懂的汇编程序,只有简单而实用的函数。直接调用它们就可以完成你需要的功能,而且简便的编程环境(Arduino IDE)拥有极大的自由度,可拓展性能非常高。标准化的接口模式、丰富的开放源代码,使你

10、可以轻松地完成复杂命令的编程工作。 1.2 蓝牙灯的制作 由于灯泡属于大电流和高电压设备,无法直接用Arduino主控板的数字口进行驱动,所以选用继电器控制电灯的开和关,手机和Arduino主控板之间通过蓝牙传送控制命令数 值。 1.3 App Inventor基础 对于一个没有软件编程基础的人来说,编写一个Android手机的控制程序是非常困难的。不但要学习Java知识,还要学习Android SDK知识。不过现在你不用再为此担 心,Google公司专门开发了一款图形化手机编程软件App Inventor。这款编程软件的使用不需要具备一定专业知识,甚至根本不需要掌握任何的程序编制知识。因为这

11、款 软件已经事先将软件代码编写完毕,用户只需根据自己的需求,使用基本组件,例如按钮、文字输入输出等模块,就可以像搭积木一样完成复杂代码程序的拼装。 App Inventor真正让你抛开复杂程序编写的烦恼,它为没有编程基础但是富有创意精神的爱好者提供一个很好的开发平台。 1.4 制作一个App 1.4.1 新建一个项目 进入App Inventor开发环境的Designer界面后,在Designer界面的左上方,选择ProjectMy Projects,进入如图1.18所示项目界面。在项目页面的左上方,选择New Project,新建一个项目,并命名为Lightcontrol。 图1.18 项目

12、界面 第2章 蓝牙锁和LED灯光调节 最近在众筹网站(Kickstarter)上比较火的是一款名为Noke的智能蓝牙锁。Noke是一款由FUZ Designs开发的蓝牙智能挂锁,可以通过手机解锁而无需钥匙。其实我们也 可以根据上一章知识,自己动手制作一把蓝牙锁。 2.1 蓝牙锁 2.1.1 电子锁 在市场上各种各样的电子锁层出不穷,我们买一把最简单的电子锁,如图2.1所示。 图2.1 电子锁 电子锁(电磁锁)原理非常简单:在盒子里有电磁线圈,利用电生磁的原理,当电流通过硅钢片时,电磁锁会产生强大的吸力,紧紧地吸住门上铁片,达到锁门的效果。只 要小小的电流,电磁锁就会产生莫大的磁力。当控制电磁锁

13、电源系统识别人员正确后则会断电,电磁锁失去吸力即可开门。开门后经预设延时后电磁锁恢复通电状态与门上铁片 吸合,门再次锁紧。 2.2 LED灯调节 2.2.1 LED灯 我国大力倡导节能降耗,积极推广LED节能灯照明,因为LED照明灯具有节能、环保与寿命长等优点。一只30瓦的LED半导体晶体灯泡,亮度相当于120瓦的传统灯具。也许 不久的将来,所有的灯泡都将被LED灯所替代。LED灯如图2.8所示。 图2.8 LED灯 LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,是负极,另一端连接电源的正极,整个晶片被环氧树脂封装起来。它是一种能够将电能转化为可见光的固态 的半导体器件,具有直接把

14、电转化为光、转换效率高、构造简单、成本低廉、技术成熟度高等特点。 第3章 电视遥控器 这一章我们一起动手用手机做一个电视遥控器,代替老式按键遥控器。有朋友来家里做客时,拿出手机,轻轻一按,电视就打开了,是不是很酷呢?如果能够用语音遥控电 视机是不是更酷呢?那就行动吧! 首先介绍一下红外遥控原理。红外遥控作为一门较成熟的技术,已经成为家电的常规控制手段。电视遥控器采用的就是红外遥控方式,利用一个能发射出特定波长红外光的 二极管,将一连串二进制脉冲码信号发射出去。接收电路采用一个集成红外线接收和放大一体的红外接收器模块,实现信号还原,经过解码电路,完成对电视机各种功能的控 制。 3.1 红外编码基

15、础 红外遥控发送的编码一般包含引导码和数据码两部分:引导码的作用是标记编码信号的开始,使遥控器能以此判断出所接收的信号是干扰还是遥控代码;数据码是遥控码的 主体,数据码的组成极其多样,比较常见的是由用户码和命令码以及它们的反码进行组合的一连串二进制数据,一般通过码宽或相位变化表示。 一种码宽表示法是高电平时间固定,由低电平时间长度区分0、1。如图3.1所示为NEC编码方式的0、1码(所谓高电平指红外管发射红外脉冲,低电平指发射间歇)。 图3.1 NEC的0、1码 另一种码宽表示法是低电平时间固定,由高电平时间长度变化。如图3.2所示为SONY SIRC编码方式的0、1码。 图3.2 SONY

16、SIRC的0、1码 相位表示法顾名思义,即0、1码的时间长度相等而相位不同。如图3.3所示为RC5编码方式的0、1码。 图3.3 RC5的0、1码 每一个遥控器的用户码只有一个,遥控器上的每个按键对应一个特定的命令码,不同的命令码可以区分不同的按键。 如果长时间按键就会产生重复码。遥控编码协议中对重复码的定义也是形式多样,有不发重复码、短重复码、数据码重复、全码重复和变码重复等几种。 短重复码方式最常用的是NEC码,按住按键会发射一个专用的短重复码,而不是重复发送按键的编码。数据码重复多用于JVC遥控器,它的重复码不发引导码。全码重复是 指每次全部重发,是简单、常用的一种方式。变码重复是最特殊

17、的一个类型,它的重复码与第一次发码不同,比如在RC5和RC6码型中都有一位翻转码(RC5的翻转码在第3 位,RC6的翻转码在第5位),这位码实际上是用于按键的奇偶计数,每按一次按键0、1翻转一次。 因为环境中充满红外辐射,为了使红外信号在发射过程中免受阳光、灯光、噪声等的干扰,通常都是先将其调制在一个固定频率上,频率范围为30kHz60kHz,最常用的是 38kHz和40kHz载波频率。由于没有统一的遥控编码协议,各个厂家自行设计了五花八门的编码方式,常用的红外编码格式有20多种,主要有NEC、索尼SIRC、飞利浦RC5、 RC6、三洋、三菱、夏普、松下、JVC等。 3.2 IRmote库函数

18、 为了提高红外编码的识别效率,需要引用一个IRremote库函数。在编写基于红线传感器收发通信的Arduino应用程序时,这个开源库函数可极大地减少我们的编码工作量和 程序代码量。库函数硬件上支持多种Arduino主控板,软件上支持多种红外遥控编码的发送和接收协议,而且便于扩展和用户自定义。 安装IRremote库函数可到 的文件夹复制到arduino-1.0.5-r2/libraries/文件夹中,并重命名文件夹为IRremote。arduino-1.0.5-r2是你的Arduino安装目录。当复制完成后,重新启动Arduino编程软件即 可。 到目前为止,IRremote红外遥控库函数已支

19、持NEC、SONY SIRC、飞利浦RC5、飞利浦RC6、夏普、松下、JVC和原始协议(Raw protocols)。如果你需要额外的协议, 还可轻松增加。这个函数甚至可以记录你的遥控编码并重新发送,如同一个小型的万能遥控器。 为了便于发送和接收,库文件中分别定义了3个类:IRsend类(负责发送红外遥控编码),IRrecv类(负责接收和解码红外消息),decode_results类(负责返回解码结 果)。库文件不支持同时发送和接收编码,接收期间会禁止发送。 3.3 获取遥控器编码 要想获取你手中的老式电视遥控器按键的编码,最简单的方法是使用Arduino搭建一个解码电路,将你手中的遥控器按键

20、编码进行解码并记录下来。 3.4 制作Arduino遥控器 上一节我们完成了老式遥控器的解码,本节将根据解码结果制作Arduino遥控器,实现用手机通过蓝牙控制Arduino遥控器(Arduino主控板和手机蓝牙通信占用主控板的串 口),进而由遥控器控制电视的目的。Arduino遥控器代码的设计思路如表3.1所示。 表3.1 遥控器设计思路 按照解码程序记录下来的遥控器按键编码值重新发射出去,就可达到模拟电视遥控器发射原理,实现对电视控制的功能。 3.5 “未知类型”遥控器代码 IRremote红外遥控器库函数仅支持有限的几种协议,而目前红外编码协议上百种,如何实现这些“未知类型”遥控器的控制

21、命令发送呢? IRremote红外遥控器库函数还具备支持发射和接收原始协议数据的功能。这个功能原本是用于调试的,但是我们也可以将它用于发射和接收该库函数无法识别的协议,从而 达到支持各类遥控器的功能。 3.6 制作遥控器的App 在第1章蓝牙控制电灯的基础上,新增加5个基本按钮(电源、上一个频道、下一个频道、音量-、音量+)。这5个按钮的功能是一样的:当按钮按下时,图片由原始图片转 换为按下图片,间隔一定时间(比如1秒)后,又恢复到原始图片,同时向Arduino主控板发送控制命令。 要完成上述功能,需要以下步骤。 3.7 语音识别模块 在本章开头部分我们提到,电视遥控器采取两种方式实现:一种是

22、手机遥控,另一种是语音遥控。这一节我们一起制作一个语音遥控器。 既然是语音遥控,就要用到语音识别模块,这里采用的是DFRobot Voice Recognition V1中文语音识别模块。该模块采用LD3320非特定人语音识别芯片,在描述关键词语 时,是用音标标注出要识别的关键词语进行识别的。Voice Recognition模块自带了一个Voice库函数,我们可以直接引用它,以减少我们的编码工作量。 安装Voice库函数,到 Recognition”页面,在页面底部有“Arduino 1.0库文件下载”链接, 点击下载得到一个Voice_1.0.rar压缩文件包,解压缩,并将得到的Voice

23、文件夹复制到arduino-1.0.5-r2/libraries/文件夹中。当复制完成后,重新启动Arduino编程软件即可。 3.8 语音遥控器的制作 我们利用Arduino语音识别模块记录用户所下达的口令,将其转换成红外发射信号,模拟电视遥控器实现电视控制功能。 第4章 温湿度计与温控 在这一章我们制作两种数字温湿度计:一种是用我们的手机作显示终端,直接查看当前的温湿度;另一种是通过语音方式,当我们向主控板询问当前温湿度时,主控板通过 语音合成板向我们报告当前温度和湿度。在本章的后半部分讲解智能家居温度控制的实现方法。 4.1 温湿度传感器 数字温湿度传感器种类很多,主要有:DHT11、S

24、HT1x、DHT21(AM2301)、DHT22(AM2302)等。这里我们以单总线数字温湿度传感器DHT11为例,其硬件如图4.1 所示。 图4.1 DHT11硬件图 DHT11温湿度传感器是一个含有已校准数字信号输出的温湿度复合传感器。它包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接,具有体积 小、功耗低、信号传输距离可达20米以上的优点。它采用4针单排直插引脚封装,引脚1是电源输入,输入范围在35.5V DC;引脚2是单总线数据输入/输出引脚;引脚3是空 脚;引脚4是电源地。 4.2 温湿度计程序代码 为了简化程序,我们可以直接使用厂家提供的库函数,可到 需的

25、温度值和湿度值。本章采用了后一种办法。 4.3 温湿度计的App制作 前几章我们设计的都是单向通信,即用手机发送控制命令,Arduino主控板接收。本章我们要实现手机和主控板双向通信,首先手机发送控制命令,Arduino主控板收到命令 后对温湿度进行采样;然后将温湿度值反向发送回手机,在手机界面上显示出当前的温湿度值。 4.4 语音合成模块 语音温湿度计也采用双向通信。首先我们向主控板语音识别模块询问“当前的温度是多少”或“当前的湿度是多少”;主控板收到信息后,通过语音合成板的喇叭播报当前 的温度和湿度。 上一章已经介绍了语音识别模块的知识和用法,本章还需要增加一个语音合成模块,采用的是DFR

26、obot SYN6288中文语音合成模块。它核心采用SYN6288中文语音合成芯 片,通过异步串口接收待合成的文本,实现文本到声音(TTS)的转换。它支持GB2312、GBK、BIG5和UNICODE内码4种格式的文本;每次合成的文本量最多可达200字节;支 持3种串行通信波特率:9600bps、19200bps、38400bps;内部集成了19种声音提示音,23种和弦提示音,15首背景音乐。 为方便使用,我们直接引用语音合成模块自带的库文件。安装Syn6288库文件可到 Synthesizer Bee语音合成模 块”页面,进入购买页面中间有提示“库文件”,点击下载得到一个Syn6288_1.

27、0.rar压缩文件包,解压缩,并将得到的Syn6288文件夹复制到arduino-1.0.5-r2/libraries/文件夹 中。复制完成后,重新启动Arduino编程软件即可。 4.5 语音温湿度计的制作 4.5.1 硬件连接 DFRobot SYN6288中文语音合成模块如图4.13所示。 图4.13 SYN6288中文语音合成模块 先将语音识别模块叠插在Arduino主控板上,然后将传感器扩展板V5层叠插在语音识别模块上;语音合成模块插到传感器扩展板的数字口0和1,DHT11温湿度传感器接到模 拟口0,如图4.14所示。 图4.14 原理图和实际连接图 4.6 智能温度控制 人体最适宜

28、的环境温度为2427。在白天室外温度较高的时候,尤其是有阳光直射到室内时,人们都会希望将空调温度调低一些,而到了夜晚室外温度较低的时候,人们 又希望将空调温度调高一些。而目前空调只能分区域控制,单独区域只能设置一个温度。温度设置值不能随时间的变换而变化。 在这一节我们计划制作一个智能遥控器,以24小时为一个周期,设定若干个温度区间,定时向空调发送温度控制命令;甚至可以设定周一周五白天关机,晚上开机,周六 和周日全天开机等个性化的操作。 4.7 智能温度控制的App 通过前面的学习,我们很容易就可以制作出温度控制的App。 第5章 短信告警 在这一章里,我们从家庭安全方面入手,介绍燃气监控、漏水

29、/溢水监控、火灾监控、安防监控等4个方面短信告警和联动控制的实现方法。 5.1 燃气和漏水/溢水监控 监控用的硬件包括: Arduino Uno主控板 传感器扩展板V5 MQ5型气体传感器模块 水位传感器模块 电磁阀或阀门机械手24V 单路继电器2A 锂电池24V GSM/GPRS通信模块 SYN6288中文语音合成模块 杜邦线和导线若干 5.2 火灾监控 需要在上一节基础上增加的硬件有:火焰传感器、分励脱扣器+辅助开关。 5.3 安防监控 安防监控一般采用在门窗周围安装红外传感器或门磁传感器的方式,如果监控到有外人闯入,将向监控人员(房间主人、小区保安或社区派出所警察)发送告警信息,并启 动

30、摄像头拍摄闯入者。 5.4 制作短信告警的App 当制作的App程序正在运行时,如果它接收到指定电话号码发来的一条短信,该信息会立即显示在屏幕上,并发出警报声音,提示用户注意。如果程序没有运行,接收到的 短信后会在状态栏有一个通知,点击通知,将会启动程序。 第6章 背景音乐 背景音乐系统的作用是营造一种温馨的居家氛围。当你下班回到家打开家门时,在房间中立刻传出你喜爱的曼妙轻柔的音乐。当你不在意时,背景音乐似乎不存在,当你稍 加留意时,发现它一直伴着你。 6.1 硬件搭建 所需硬件如下: Arduino Uno主控板 传感器扩展板V5 蓝牙模块 MP3播放模块 吸顶喇叭 杜邦线和导线若干 硬件组

31、网图如图6.1所示。 图6.1 硬件组网图 6.2 制作节目单的App 为了让背景音乐可以随时跳到你想要的曲目,在手机上设计一个背景音乐助手节目单。通过节目单我们可随时选择喜爱的轻音乐或更换另一首音乐。 当按下刷新按钮后,手机接收Arduino主控板发来的节目单,显示在屏幕上。根据个人喜好选择喜爱的轻音乐,回传命令给Arduino主控板 第7章 物联网平台 什么是物联网呢?简单地说,物联网就是智能感知、识别技术、远程控制与互联网应用的融合。更确切地说,物联网是互联网的应用拓展,与其说是网络,不如说是业务和 应用。 物联网架构分为3层:感知层、网络层和应用层。感知层由各种传感器及传感器网关构成,

32、是物联网采集信息的来源。网络层由各种私有网络、互联网、有线和无线通信网、 网络管理系统和云计算平台等组成,相当于人的神经中枢和大脑,负责传递和处理感知层获取的信息。应用层是物联网和用户的接口,它与行业需求结合,实现物联网的智能应 用。 比如:一套智能的订水、订奶系统,在水桶的适当位置安装水压传感器或在奶瓶底部安装重量传感器,采集到的信息,通过WiFi网络(或互联网)传送到供应商订货平台 上。当水桶中的水或牛奶没有了,供应商根据传感器终端发回的信息,及时安排送货人员上门服务。这就是物联网的一个简单应用,也是物联网的魅力所在。 在本章我给大家介绍3个物联网平台:Yeelink、乐联网和Xively

33、。 7.1 Yeelink平台 Yeelink是国内一家提供传感器云服务的实时数据监控平台,主要提供传感器数据的接入、存储和展现服务,为所有的开源软硬件爱好者、制造型企业提供一个物联网项目的 平台,让他们能够在不考虑服务器实现细节的情况下,拥有快速实现物联网化电子产品的能力。该平台已支持数值型、图像型、GPS型和泛型等多种数据的接入,并且当数据达 到某个设定阈值的时候,平台会自动调用预先设定的规则,发送短信、微博,或者邮件,还可以定期将统计分析数据发送到指定邮箱内。 7.2 乐联网平台 乐联网和Yeelink一样,也是国内一家提供传感器云服务的平台。其主要功能有:个人门户功能,数据存储和分析(

34、结合行业专家可延展为专家系统),工业仪表无缝接入和 手机App功能。 平台设置方法和Arduino程序代码与Yeelink平台也大同小异。在这里还以上传室内温湿度数据为例。 7.3 Xively平台 Xively是国外一家物联网服务平台。提到Xively平台也许很陌生,但是提到Pachube大家一定非常熟悉。作为物联网领域的领头者和第一个在传感器数据方面独立公开的平 台,它在2009年、2010年连续两年被READWRITEWEB评为十大物联网公司。2011年7月,它被云端计算机服务供应商LogMeIn收购后曾更名为Cosm,2013年5月,Cosm又更 名为Xively。 Xively利用现

35、有的互联网平台来将物理世界和网络世界合二为一。作为了一个平台,它对开发者开放网络API,这样开发者就能将自己的设备连接到Xively的网络平台,从而 发布自己的应用,储存和展示设备的实时数据。通过Xively,开发者环境中的各项数据会动态更新并且通过feed得到通知。 第8章 微信智能家居平台 我们不妨设想一个这样的画面:下班前,用微信对自己家的电器输入“电饭锅煮饭”“空调开启”“洗澡水加热”等命令。回到家里就会在舒适的环境里把热腾腾的米饭盛 上桌,饭后再洗个热水澡了。 这个梦想用我们手中的Arduino和微信就能实现。让我们一起动手利用“微信公众平台”搭建这个梦想吧! 微信和物联网的结合绝不

36、仅仅是应用在智能家居平台上;它可以扩展到生活、工作的方方面面。利用微信这个平台,人能够对家居物品实现状态监控、命令互动,微信平台 将在不久的将来成为我们“操控世界”的遥控器! 8.1 服务器的搭建 首先,我们在使用微信公众平台前需要搭建一个公网服务器平台。如果没有这个条件,也可以选择利用部分免费的云平台搭建自己的服务器端,比如百度应用引擎 BAE( 8.2 服务器端代码的编辑 这一节需要具备PHP语言和MySQL数据库的基础知识。如果没有基础也可以参照下面的程序根据注释进行适当修改。 8.3 Arduino程序设计 硬件需求如下: Arduino Uno主控板 传感器扩展板V5 W5100Et

37、hernet网络扩展板 DHT11温湿度传感器(接到主控板模拟端口0,上传温湿度传感器数据) 一个LED灯(接在数字端口5,显示开关灯效果) 原理图和实际连接图如第7章图7.5和图7.6所示。 程序代码如下: /*我的微信智能家居平台*/ #include #include byte mac = 0 xDE, 0 xAD, 0 xBE, 0 xEF, 0 xFE, 0 xED; EthernetClient client; char server = ; unsigned long lastConnectionTime = 0; /最后一次连接服务器时间,以毫秒为单位 boolean last

38、Connected = false; /上一次连接状态 const unsigned long postingInterval = 3*1000; /两次连接的时间间隔 #define DHT11_PIN 0 /定义DHT11传感器用的变量,DHT11输入和输出引脚连接在Arduino Uno 模拟端口0 byte dht11_dat5; /存储从DHT11传感器采样的温湿度值的数组 char light=0; /初始化开关状态 char c; byte temprature = 0; /初始化温度 byte humdity=0; /初始化湿度 void setup() DDRC |= _BV

39、(DHT11_PIN); /配置DHT11_PIN配置为输出 PORTC |= _BV(DHT11_PIN); /第DHT11_PIN位置1,其他位不变 pinMode(5, OUTPUT); /LED灯接入数字端口5 Serial.begin(9600); Ethernet.begin(mac); /如果为固定IP方式则为Ethernet.begin(mac, ip) void loop(void) while(client.available() /调试 c = client.read(); if (c = ) light= client.read(); if(light = 0) /控制

40、LED灯开关 digitalWrite(5, LOW); else if(light = 1) digitalWrite(5, HIGH); if (!client.connected() client.stop(); if(!client.connected() DHT11(); /调用 DHT11()和read_dht11_dat()子函数 temprature= dht11_dat2; /读温度传感器值 humdity= dht11_dat0; /读湿度传感器值 getData(); /上传数据 delay(2000); lastConnected = client.connected(

41、); /存储连接状态 需要用到函数getData()向SAE平台服务器上传温湿度数据。 /*获取控制命令回传温湿度值的子函数*/ void getData(void) if (client.connect(server,80) Serial.println(connecting client.print(GET /upload.php?token=arduino /发送HTTP GET 请求 client.print(temprature); client.print( client.print(humdity); client.println( HTTP/1.1); client.print

42、ln(Host: ); client.println(Connection: close); client.println(); lastConnectionTime = millis(); else Serial.println(connection failed); Serial.println(disconnecting.); client.stop(); 8.4 微信公众平台搭建 1.注册微信平台公众账号 注册地址为。在注册过程中“选择类型”时,选择“订阅号”,如图8.16所示。 图8.16 选择类型 2.设置微信号 登录后选择“公众号设置”“设置微信号”,如图8.17所示。 图8.1

43、7 设置微信号 3.修改配置 选择“开发者中心”“修改配置”,如图8.18所示。输入SAE服务器上的链接地址和Token值,如图8.19所示。 图8.18 开发者中心 图8.19 修改配置 4.启用服务器配置 点击“开发者中心”,点击“启用”按钮,如图8.20所示。 图8.20 启用配置 8.5 验证 至此,微信智能家居平台全部配置完毕。 登录你自己的微信,在搜索栏内输入你已经配置好的微信号,确定后就能够在“订阅号”里找到你的微信公众平台。输入“开灯”“关灯”“湿度”“温度”等命令,就能 用微信与你的Arduino互动了,如图8.21所示。 图8.21 微信互动 附录A 下载开发包的方法 由于

44、访问某些国外网站可能会受到屏蔽,http:/appinventor.mit.edu/网页经常打不开,在国内用起来不太方便。这个问题的解决办法有3个: 1.从网上下载App Inventor离线开发包 在 spm=686.1000925.1000774.13.V0L8vQ&id=40623480487 下载后安装步骤如下: 1)安装AppInventor_Setup_Installer_v_2_2.exe文件。 2)双击启动AIServer.cmd,看到黑色的命令行窗口运行到Dev App Server is now running为止,不要关闭它。 3)双击启动BuildServer.cmd,

45、看到黑色的命令行窗口运行到Server running为止,不要关闭它。 4)打开包含Chrome内核的浏览器(比如Chrome、Firefox、百度、猎豹、360等浏览器的极速模式),在地址栏输入http:/127.0.0.1:8888。 这样,就可以登录到App Inventor开发界面进行操作了。同时还可以将MIT AI2Companion 2.12.apk软件安装到手机上建立手机仿真环境。 2.登录国内的一些临时服务器 在 地址一:,由%73在浙师大附中架设的服务器。 地址二:,由Wanndy在微软云做的服务器。 地址三:http:/contest.appinventor.mit.ed

46、u,美国麻省理工学院在国内设置的独立服务器。 网站上经常会更新临时服务器的地址,如果在这些服务器上进行开发要及时备份自己的源代码,毕竟那些是临时服务器,无法保障程序安全。 3.采用“翻墙软件” 使用免费翻墙软件时,一定要先杀毒后安装。有条件的话可以购买一些付费的VPN翻墙软件,如GoAgent,所花费用不高,而且非常稳定。 附录B 从百度云盘下载本书资料 我将本书所提到的资料放在百度云网盘上,地址是 1.App inventor离线开发包 文件名称:AI2完美离线仿真全套打包下载.zip 2.Arduino编译软件 文件名称:arduino-1.0.5-r2-windows.zip 3.库函数

47、 IRmote库函数(文件名称:Arduino-IRremote-master.zip) Voice库函数(文件名称:Voice_1.0.rar) Syn6288库函数(文件名称:Syn6288_1.0.rar) Yeelink库函数(文件名称:YeeLinkLib-master.zip) 乐联网库函数(文件名称:LeweiClient-master.zip) Xively库函数(文件名称:HttpClient-master.rar和xively_arduino-master.rar) 4.本书实验 Lightcontrol(第1章实验) BluetoothLock和LEDStrip(第2章实

48、验) TVremote和VoiceTVremote(第3章实验) Hygrothermograph、Syn6288Hygrotherm和Thermostat(第4章实验) SmsAlert(第5章实验) Playbill(第6章实验) Yeelink、Lewei50、Xively(第7章实验) weixin(第8章实验) 说明:以.ino结尾的文件是Arduino编译程序,在Arduino编译软件中可以直接打开;以.apk结尾的文件是Android程序,可以直接安装在手机上观看运行效果;以.aia结尾 的文件是App Inventor编译程序源码,在App Inventor编译页面左上角选择Projectimport project(.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com