基于RaspberryPi实现的智能家居.docx

上传人:b****7 文档编号:26642875 上传时间:2023-06-21 格式:DOCX 页数:34 大小:960.85KB
下载 相关 举报
基于RaspberryPi实现的智能家居.docx_第1页
第1页 / 共34页
基于RaspberryPi实现的智能家居.docx_第2页
第2页 / 共34页
基于RaspberryPi实现的智能家居.docx_第3页
第3页 / 共34页
基于RaspberryPi实现的智能家居.docx_第4页
第4页 / 共34页
基于RaspberryPi实现的智能家居.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

基于RaspberryPi实现的智能家居.docx

《基于RaspberryPi实现的智能家居.docx》由会员分享,可在线阅读,更多相关《基于RaspberryPi实现的智能家居.docx(34页珍藏版)》请在冰豆网上搜索。

基于RaspberryPi实现的智能家居.docx

基于RaspberryPi实现的智能家居

摘要

本文以树莓派为载体进行智能家居控制器的设计。

在对现在三种市面上的网络电视的比较中引出毕设的主角——树莓派。

首先是LINUX系统常识性的介绍;然后是在ARM/LINUX平台上面开发应用的两种方法:

调用系统已有资源、做程序(C经典法、python快捷法);然后通过简单的对于GPIO口的使用(点亮LED),建立家庭内无线局域网和网络电视的配置展示了本地应用的种种可能;随后简略介绍了基本网络协议(TCP/IP),并在此基础上比较了五种不同服务器的优缺点,并将我们的服务器暴露给外部网络,介绍了实现远程视频监控的两种方法及其比较;最后是软件源的建立及其意义。

在结论中详细罗列了自己对于整个平台的总体认识。

关键字:

智能家居;树莓派;Arm;Linux

 

 

Abstract

ThewholeworkofmygraduationprojectisrelatedtoRaspberryPi,anArm&&Linuxdevelopmentplatform.Asanintroduction,thefirsttwochaptersshowoutsomemethodsofsmarthomeapplicationdevelopmentonthisplatformandthecapabilityofRaspberryPibytickingtheGPIOportsandsettingupahome-scalelocalwirelessnetwork.Thenabrieflydescriptionofseveralprimaryinternetprotocol,comparing5differentwaysofweb-serverbuilding,puttingforwardweb-servertotheoutsideworld.Finally,myjudgmentabouttheentiredevelopmentplatform.

Keywords:

SmartHome;RaspberryPi;Arm;Linux

目录

摘要I

AbstractII

目录III

第1章绪论1

1.1课题背景、目的和意义1

1.1.1课题背景1

1.1.2课题目的2

1.1.3课题意义2

1.2智能家居发展现状2

1.3主要研究内容及内容安排3

第2章控制器平台介绍4

2.1设计平台的软硬件介绍4

2.2设计方法8

2.3设计功能12

第3章本地应用设计13

3.1GPIO引脚控制13

3.2无线路由器的实现14

3.3网络电视的配置17

第4章网络应用设计18

4.1树莓派网络连接18

4.2服务器和Pagekite20

4.3Webiopi配置21

4.4Motion的配置22

第5章软件源的制作24

结论26

致谢28

参考文献29

附录30

第1章绪论

1.1课题背景、目的和意义

1.1.1课题背景

首先从我的亲身经历说起。

今年4月,考研复试结束之后始耐心做毕业设计,某一天卢老师找我去给他家安装无线路由器。

学校网络比校外网络收费高,许多用户转而使用学校外面的电信网络。

另外家庭内网络终端,如笔记本电脑、上网本、平板电脑、智能手机,逐渐增多,如何能够让多个终端同时接入网络是一个问题。

校方或者说网络中心,引进了新的校园网客户端,正是为了鼓励大家建立家庭内无线局域网,解决多终端上网问题。

那天在他家安装TP-link无线路由器很简单的建立起了家庭无线网。

不足之处是:

新的校园网客户端要求必须有一个上网终端连接TP-LINK并始终运行认证程序,其他网络终端才可以分享无线网。

卢老师家的台式电脑从此以后365天24小时开着,费电不说,像这种家庭用普通台式机持续运行几个月恐怕就要瘫痪了。

后来在树莓派官方论坛上看到了几篇关于树莓派连接无线网络的帖子,给了我不少启发。

树莓派完全可以将上述台式机客户端认证和TP-link无线路由器的功能和二为一。

后文有关于实现过程的详细介绍,尽管没有什么技术含量,的确显示出树莓派或者嵌入式系统在智能家居方面是可以有所作为的。

另外一件事情是有关三网合一、网络电视机顶盒。

下面是三则广告:

小米高清互联网电视盒299元(上海、杭州、长沙三地市销售进行中);PPTV5月18日零点开放800台工程版PPBOX的网络预售,价格仅为199元;乐视盒子C1S再次改变你的电视。

自己曾经试着在树莓上面安装XBMC实现了网络电视的功能,树莓派又可以添加一个功能。

还有一件我曾经有切身感受的事情,在我上初中三级的一个下午,奶奶在家突法心肌梗塞,当时她的身边只有刚上幼儿园的小弟,小弟惊慌失措,不知该如何是好。

等到其他家庭成员发现情况,着手施救时,为时已晚。

如果当时她身边有人能帮一把,或者及时的告知家里的其他成员,也许奶奶还有机会看看曾孙。

你或者你周围的人总是会有家庭财务失窃的经历。

主人不在,紧闭的安全门形同虚设,不良分子乘虚而入对我们的个人隐私甚至家庭财产造成损害。

其时若能有一个忠诚的管家为我们及时的侦测到不法分子的侵入,通知主人,或者求助于公安民警,便可以及时的避免损失。

另一方面,许多人的智能手机都已经更换了好几部。

看那所谓的智能手机,配置动则1Ghz主频的处理器,1GB的内存,等等之类硬件配置何其出众。

而现在就是这样一个小小的板子,700Hz主频512MB内存,已经显示出巨大的潜能。

那么是否可以通过某种方式把智能手机的潜能也发挥出来呢?

在传统的上网聊天,拍照玩游戏之外是否也是可以有所作为的呢?

1.1.2课题目的

本文所要实现的功能,在市面上都已经有成型的产品。

我所做的是要把几个有关智能家庭应用的独立功能同时在一块板子上面实现,并试着扩展自己的功能。

在这个过程中,为其他人学习Arm/LINUX开发,或者说在树莓派上面的开发厘清一条道路。

同时尝试扩展智能手机的功能。

1.1.3课题意义

本文并没有多少前瞻性的东西,所提到的智能家居的各个方面市面上都已经有了成型的产品。

自己感觉比较有意义的是:

为我们学校家属区建立家庭无线网提供了一点参考;为测控专业相关课程的开展和自动化协会的发展建立一个坚固的基础;为开源/自由软件的事业做出了一点个人贡献,这个是最重要的。

1.2智能家居发展现状

从个人生活经历来看,智能家居还是一个遥远的词汇,大多数老百姓还没有接触到这些东西。

不知道是价格的原因,亦或现在的智能家居还只概念炒作,行业的大方向此处不做过多评论。

现仅就上面提到的乐视、小米、PPTV不过一年左右时间连续发布的价位功能相近的三款扩展普通电视为网络电视的数字机顶盒做一下简单介绍和比较:

首先是小米盒子,高清互联网电视,迄今为止小米手机最发烧友的配件,硬件价格299元,视频来源为央视正版授权高清内容,标配遥控器或者小米手机来控制控,体积类似于大屏智能手机,HDMI接口;Coretex-A9处理器,主频800MHZ,内存1G、H.264、VC-1、WMV-HD、MPEG1/2/4最大至1080p@30帧/秒,10/100M自适应RJ45接口,Micro-USB接口;其次是PPBOX,1GHZ主频处理器、1GB内存、4G闪存,支持DLNA和Airplay多屏互动,售价299元,HDMI接口、wifi、蓝牙、3.5mm音频输出;最后是乐视盒子,硬件免费,内容收费;乐视网TV版12个月服务费价格490元,6个月服务费价格290元。

Coretex-a9架构双核1.5G处理器,无线连接功能,并其集成无线路由器功能,流畅播放1080P高清电影,内容来源乐视网正版资源。

无论从硬件还是内容资源的角度来看,乐视盒子都更胜一筹,费用自然也是最高的。

我想网络电视的本质还是电视,或者说视频内容,如果让我为家里面配备一台这样的设备的话,肯定是要以内容为主要考虑。

所以尽管价格高一些,我还是会选择乐视盒子。

虽然安装xbmc的树莓派硬件功能不比这三者差,但是没有内容资源的支持就是无源之水,没有实用价值。

从另外一个角度来说,如此的价格去电影院看电影会有更好些的试听享受,并且对普通家庭用户而言肥皂剧和新闻联播也是要看的,大家的需求未必就是每天欧美大片,这样乐视的优势就不会那么明显了。

1.3主要研究内容及内容安排

本文首先介绍了树莓派开发平台的软硬件资源以及在ARm/LINUX平台开发应用的一般方法,提出我将要实现的功能(第二章);然后是智能家居控制器本地开发(第三章)和网络开发(第四章),最后是树莓派软件源的制作和善后工作(第五章)。

第2章控制器平台介绍

树莓派是英国树莓派基金会推出的一款旨在推动学校计算机科学教育的信用卡大小的单板电脑。

由于其强大的计算能力,丰富的外部扩展和低廉的价格而被选作本毕业设计的开发平台。

2.1设计平台的软硬件介绍

下面是树莓派宏观接口图:

图2-1:

树莓派B型板的宏观结构图

树莓派就相当于是一块计算机主板。

居于长方形板面中心的是一块BCM2835片上系统,其上包括了一个ARM1176JZF-s700Mhz的处理器(可以超频至1Ghz),和一块VideoCoreIVGPU,还有512MRAM(A型板内存为256M)。

板子上面没有内置的长期存储设备,但是提供一个SD插槽,用户可以将自己的SD卡插入作为硬盘使用。

SD插槽的旁边是一个Micro-USB电源插孔,由此引入5V的电源,也可以通过GPIO接口的2号(VCC)和3号(GND)引脚提供5V电源。

在SD插槽的另一边是26针的扩展接口,其中2脚可以接入或给出5V电源,1脚给出3.3V电源,第12脚可以提供PWM,另外包括一组UART,一组SPI,一组I2C,8个GPIO引脚。

扩展接口还算丰富。

两种视频接口方式。

其一是HDMI,HDMI兼容的电视或者显示器可以直接通过这个接口获得输出的视频信号,VGA显示器可以通过HDMI-VGA转换器得到VGA信号。

在HDMI相反方向是一个RCA接口,可以输出模拟视频信号供旧式电视使用。

非常显眼的可以看到叠在一起的两个USB接口(A型板只有一个USB接口),可以用来连接鼠标和键盘,总是会遇到USB接口不够用的时候,这是就需要我们通过USB-HUB来进行扩展。

在USB接口旁边是10/100M以太网接口,作用不言自明。

另外有三个不长用的外设。

一是,USB口和RCA接口之间的音响/测试接口;二是,板上面的类似于扩展接口的JTAG接口;三是,TFT触摸屏接口。

核心芯片BCM2835:

高清嵌入式多媒体应用处理器BCM2835是一种低成本,全高清多媒体应用处理器,适用于需要高品质多媒体性能的移动和嵌入式应用设备。

产品设计充分考虑了电池使用效率,并进行了相关优化。

BCM2835使用博通公司的第四代VideoCore技术来使能应用程序中的各种图像、视频处理。

*低功耗ARM1176JZ-F应用处理器

*双核第四代VideoCore多媒体协同处理器

*1080p30帧每秒全高清视编码/解码

*高性能视频输出。

1080p60帧每秒持续高分辨率LCD、hdmi输出

*低功耗,高性能OpenGL-ES1.1/2.0VideoCoreGPU

*先进的图像传感器流水线(ISP)长达20万像素的摄像头高达220万

像素每秒

下面是该芯片的内部结构图:

图2-2BCM2835内部结构图

总的来说,树莓派板子的外部接口还算丰富,处理器、存储设备不够强大。

但因其低廉的价格(B型板35美元,A型板25美元),在8051单片机和个人电脑之间为我们提供了一个理想的嵌入式开发平台。

软件方面,毫无疑问选择GNU/LINUX平台。

做为开源软件平台,GNU/LINUX给予用户以免费或者较低的价格获取操作系统和软件的源代码的权力。

这使得用户可以根据自己的需要编辑、修改源代码,分发自己的代码,鼓励人们互相分享。

其开放、共享的精神受到了许多科技人员的喜爱。

在本毕业设计中笔者使用的操作系统是Raspbian,一款基于Debian并根据树莓派硬件条件进行修改的操作系统。

如下是维基百科中关于Debain的描述:

Debian是由GPL和其他自由软件许可协议授权的自由软件组成的操作系统,由Debian计划(DebianProject)组织维护。

Debian计划是一个独立的、分散的组织,由3000人志愿者组成,接受世界多个非盈利组织的资金支持,SoftwareinthePublicInterest提供支持并持有商标作为保护机构。

Debian以其坚守Unix和自由软件的精神,以及其给予用户的众多选择而闻名。

现时Debian包括了超过37,500个软件包并支持12个计算机系统结构(i386、amd64、arm、mips、IBM等等)。

Debian是一个大的系统组织框架,在这个框架下有多种不同操作系统核心的分支计划,主要为采用Linux核心的DebianGNU/Linux系统,其他还有采用GNUHurd核心的DebianGNU/Hurd系统、采用FreeBSD核心的DebianGNU/kFreeBSD系统,以及采用NetBSD核心的DebianGNU/NetBSD系统。

甚至还有应用Debian的系统架构和工具,采用OpenSolaris核心构建而成的NexentaOS系统。

在这些Debian系统中,以采用Linux核心的DebianGNU/Linux最为著名。

众多的Linux发布版,例如Ubuntu、Knoppix和Linspire及Xandros等,都基于DebianGNU/Linux。

笔者使用GNU/LINUXDebian已经有三年时间了,深刻的感觉到Debian的强大。

针对于嵌入式而言,采用Debian系统有三大优势:

1、丰富的软件包和强大简便的软件包管理器

2、通用操作系统,支持多种计算机系统架构

3、强大的志愿者/开发人员组织

如下文所说,对于习惯了微软操作系统的用户来说,一些GNU/LINUX版本绚丽的桌面环境也许会让你感到惊艳,但是相信我GNU/LINUX的精华来源于黑纸白字的文本界面。

作为一名嵌入式开发者,应该熟练的使用文本界面解决问题,那样更能节省宝贵的系统资源并且更接近硬件或软件的本质。

由于知识过于庞杂,这里仅就个人认识对GNU/LINUX的特色——文件系统,做简要介绍。

文件系统主要包括两部分:

文件、目录。

文件系统将枯燥的物理细节(在硬盘或者SD卡中实际就是0和1的排列组合)包装成为操作系统易于读写的形象,也就是用户可见的文件,或者说普通文件。

而目录,其本质是仍是文件,或者说特殊的文件,亦即储存其他文件的文件。

可以将文件理解为实际的物理存储空间,而目录则包含了指向这些空间的“指针”。

记住一个非常重要的概念,GNU/LINUX是建立在文件系统之上的,系统将外部设备甚至网络设备也当做文件进行读写!

在LINUX系统的/根目录下面有:

binbootdevetchomemediamntoptprocrootsbinselinuxsrvsysuservar

bin:

本目录下面是常用的命令,如文件的删除、建立、压缩,目录的建立、删除,文件权限的更改,磁盘读写刻录,内存查看等等。

对本目录里面的内容应该熟练掌握,其他命令程序无特别需要建立概念即可,命令的查阅参见,

boot:

本目录存储系统启动有关的信息,如系统内核,CPU和GPU关于内存的分配。

我们将看到在树莓派的boot目录下面有cmdline.txt这个文件。

这个文件控制着树莓派UART是否输出系统信息。

dev:

device,即设备。

光驱cdrom,优盘ttyUSB,串口ttyS0,终端tty**在这儿都有体现。

有几个非常有趣的设备zero、null、random.

以后你会发现他们的妙用。

etc:

包含运行在系统上所有程序的配置文件。

这个目录很重要,经常用!

home:

主目录,GNU/LINUX作为多用户操作系统,每一个用户都有各自目录以存储个人信息。

这就要引申出文件权限的概念。

参考下面的连接:

proc:

该目录下面存放一些系统运行状态信息。

如查看lscpu、lsusb、lspci、查看系统登陆用户的一些命令,实际是读取的本目录下面文件的内容。

var:

这个目录很有意思,如我们的网络文件储存在/var/www下面。

在/var/log目录下存储各种日志,用户登录,系统运行,开机信息,网络连接信息,内核运行信息等。

如果系统运行出现问题应该首先到这里寻找灵感。

2.2设计方法

接上节,我们将要在ARM+LINUX平台上面实现自己的功能。

实现的方法有两种:

其一,自己动手写代码;其二,调用系统已有的命令、程序。

首先如果自己动手的话,Raspbian作为一个完整的操作系统,可以编译并执行如C、C++、PHP、Python、java等各种编程语言构建的程序。

笔者主要用到C、Python两种语言。

C语言是基础,开发周期长,执行效率高。

Python是一种面向对象的高级语言,有许多针对特定应用的库函数可控调用,开发周期短,执行效率低(RaspberryPi中Pi是python的缩写)。

其次是调用系统已有的命令、程序,GNU/LINUX内置的命令程序都是经受过历史考验的,尤其是是Debain这样一个以稳定性为特色的操作系统。

大多数命令、程序都可以接受用户的参数做出相应的动作,来完成用户的要求。

笔者认为,在实际开发过程中,应该尽量首先使用系统自带的资源,其次是自己编写程序,而在编程语言中优先选择Python语言,其次是C语言。

然而,从学习的角度来说,应该把C语言放在最前面,Python语言或者直接调用系统集成好的工具会把许多细节蒙蔽掉,限制了用户的权力。

另外,对于嵌入式系统,从资源和效率的角度考虑,也应该多使用C语言。

嵌入式开发,尤其是在GNU/LINUX+ARM下面,还有一项非常重要的工具:

文本编辑器。

编辑器之所以重要,是因为首先很多系统配置文件都是以*.conf的形式储存在文件系统中,我们可以通过文本编辑器方便的修改;其次,使用文本编辑器而非图形IDE可以节省许多宝贵的系统资源,熟练掌握文本编辑器之后可以极大的提高我们编写代码的质量和速度。

常用编辑器由三款:

Nano、Vim和Emacs。

相比较而言,Nano使用非常简单,同时功能无几,适合入门级用户使用。

Vim和Emacs是GNU/LINUX系统中最为著名的两款文本编辑神器。

笔者使用Vim两年有余,深刻的被Vim的强大所折服,通过按键的组合和插件的使用,Vim赋予机械的二极管、门电路生机和活力。

当然Emacs也是非常强大的一款编辑器。

对于经常使用GNU/LINUX,或者做嵌入式开发的人来说,Vim、Emacs应该熟练掌握一种。

Vim更加轻盈,所有的GNU/LINUX操作系统默认安装Vi(Vim的前身)。

相比较而言Emacs更加灵活。

简单根据兴趣爱好来讲,底层开发人员(硬件到操作系统)适宜使用Vim,上层开发人员(操作系统到网络)使用Emacs。

通常嵌入式设备,例如树莓派资源有限,我们总是在个人电脑上完成开发过程然后向嵌入式设备移植,另外我们也需要借助个人电脑的一些外设,如键盘和鼠标,完成一些工作。

几个工具可以帮助我们远程控制目标机器或者方便调试:

SSH、VNC、USB转串口、Minicom/Gtkterm。

SSH,SecureShell安全壳协议,一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层或者命令解释器)提供安全的传输和使用环境。

SSH可以使得我们获得远程运行LINUX系统命令行的能力,另外SCP命令可以进行文件传输。

VNC,VirtualNetworkComputing,一种使用RFB协定的屏幕画面分享及远程操作软件。

此软件借由网络,可以传送键盘与鼠标的动作及实时的屏幕画面。

例如,笔者使用的是Tightvnc,正确安装并配置之后,便可以在个人电脑上虚拟树莓派的桌面环境,节省了用于购买鼠标和键盘的费用,同时方便的进行远程操作桌面。

SSH只能提供给用户命令行工具,更加节省资源,而Tightvnc的图形界面,更易于新手使用,并且有极少数工作也只能在图形界面下完成,故而也是很有价值的。

下面是USB转串口和Minicom/Gtkterm,在无法连接网络或者系统出现故障时,我们还可以通过树莓派的串口,对它进行调试。

为了方便在个人电脑上显示串口窗口,我们需要将串口桥接至USB接口。

这就要用到PL2303芯片。

PL2303将USB端口和标准RS232端口连接起来,两块大的片上缓存调配两个方向的数据流,为了提高传输速率采用了USB块状数据,串口自动进行信号握手。

这使之获得了比传统UART控制器更高的信息传送速率。

将树莓派的第6脚(地),8脚、10脚(UART收发)分别与模块的相应引脚相连,USB口接电脑,树莓派默认将内核启动信息从UART口输出,同时正常工作时UART也可以作为调试和控制窗口。

如下图示笔者的串口连接方法:

图2-3USB转串口连接笔记本

另外注意,树莓派可以通过对GPIO第2脚+5V来供电,而PL2303也正好有一个+5V引脚,如果树莓派外接设备不是很多的话(如只接网线),我们可以直接将上述的+5V对应连接,使树莓派正常工作。

上图,是笔者总结出的树莓派最简工作方式。

下面需要一款程序查看串口发送来的信息,这就要用到Minicom/Gtkterm。

Minicom是一种文本模式的串口通信工具,类似于微软系统的超级终端,可以模拟ANSI和VT102终端。

功能强大,应用稍显复杂。

Gtktrem是基于GTK+开发的串口调试程序,图像界面,简单实用。

笔者使用的是Gtkterm,感觉不错,但是Minicom的文本操作模式更适合GNU/LINUX环境。

如果个人电脑安装的是微软系统的话,可以是使用超级终端。

虽然最近几年GNU/LINUX系统特别是UBUNTU发行版,在图形界面方面已经做的相当花哨,但是对于一名高手或者针对嵌入式开发来说,我们应该熟练掌握文本界面的使用,甚至在文本里面浏览网页。

这里要提到两款比较著名的文本浏览器Lynx和W3m。

Lynx是纯文本网页浏览器,可以在UNIX/LINUX/MAC系统中使用,历史悠久,并且仍在积极的开发之中。

用户众多,功能强大。

W3m是一款基于文本的网页浏览器,支持多种操作系统,在命令行终端可以很好的支持中文,和Emacs有一定渊源。

这里不做详细介绍。

另外要提及一个GNU/LINUX下的图形界面开发工具,GTK+。

GTK+,GIMPToolKit,一个生成跨平台的图形界面开发工具。

GTK+提供一整套开发控件,使得我们可以使用他来开发小到“HelloWorld!

”大至Gnome桌面的各种应用。

由于其跨平台性,GTK+开发的工具在GNU/LINUX,微软系统上都可以运行。

尽管GTK+自身采用C语言开发,在其设计之初就考虑到了对于多种语言的支持,如C++、java、python等。

下图是笔者的Debian桌面:

图2-4笔者漂亮的Gnome桌面

补充一点内容,尽管笔者在设计过程中没有用到,还是比较有意义的一个开源软硬件平台——Arduino。

Arduino是一个开源的单片机控制器,它使用AtmelAVR单片机,采用了开放源代码的软硬件平

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1