收藏 分销(赏)

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

上传人:二*** 文档编号:4515813 上传时间:2024-09-26 格式:DOCX 页数:35 大小:2.40MB 下载积分:5 金币
下载 相关
基于RaspberryPi实现的智能家居36.docx_第1页
第1页 / 共35页
本文档共35页,全文阅读请下载到手机保存,查看更方便
资源描述
摘 要 本文以树莓派为载体进行智能家居控制器的设计。在对现在三种市面上的网络电视的比拟中引出毕设的主角——树莓派。首先是LINUX系统常识性的介绍;然后是在ARM/LINUX平台上面开发应用的两种方法:调用系统已有资源、做程序〔C经典法、PYTHON快捷法〕;然后通过简单的对于GPIO口的使用〔点亮LED〕,建立家庭内无线局域网和网络电视的配置展示了本地应用的种种可能;随后简略介绍了根本网络协议〔TCP/IP〕,并在此根底上比拟了五种不同效劳器的优缺点,并将我们的效劳器暴露给外部网络,介绍了实现远程视频监控的两种方法及其比拟;最后是软件源的建立及其意义。在结论中详细罗列了自己对于整个平台的总体认识。 关键字 :智能家居;树莓派;Arm ;Linux Abstract The whole work of my graduation project is related to Raspberry Pi , an Arm && Linux development platform . As an introduction , the first two chapters show out some methods of smart home application development on this platform and the capability of Raspberry Pi by ticking the GPIO ports and setting up a home-scale local wireless network. Then a briefly description of several primary internet protocol ,comparing 5 different ways of web-server building , putting forward web-server to the outside world .Finally , my judgment about the entire development platform . Keywords ::Smart Home;Raspberry Pi;Arm;Linux 目 录 摘 要 I Abstract II 目 录 III 第1章 绪论 1 1.1 课题背景、目的和意义 1 课题背景 1 课题目的 2 课题意义 2 2 3 第2章 控制器平台介绍 4 4 2.2 设计方法 8 2.3 设计功能 12 第3章 本地应用设计 13 3.1 GPIO引脚控制 13 14 3.3 网络电视的配置 17 第4章 网络应用设计 18 4.1 树莓派网络连接 18 4.2 效劳器和Pagekite 20 4.3 Webiopi配置 21 4.4 Motion的配置 22 第5章 软件源的制作 24 结 论 26 致 谢 28 参考文献 29 附 录 30 第1章 绪论 1.1 课题背景、目的和意义 课题背景 首先从我的亲身经历说起。今年4月,考研复试结束之后始耐心做毕业设计,某一天卢老师找我去给他家安装无线路由器。学校网络比校外网络收费高,许多用户转而使用学校外面的电信网络。另外家庭内网络终端,如笔记本电脑、上网本、平板电脑、智能 ,逐渐增多,如何能够让多个终端同时接入网络是一个问题。校方或者说网络中心,引进了新的校园网客户端,正是为了鼓励大家建立家庭内无线局域网,解决多终端上网问题。那天在他家安装TP-LINK无线路由器很简单的建立起了家庭无线网。缺乏之处是:新的校园网客户端要求必须有一个上网终端连接TP-LINK并始终运行认证程序,其他网络终端才可以分享无线网。卢老师家的台式电脑从此以后365天24小时开着,费电不说,像这种家庭用普通台式机持续运行几个月恐怕就要瘫痪了。后来在树莓派官方论坛上看到了几篇关于树莓派连接无线网络的帖子,给了我不少启发。树莓派完全可以将上述台式机客户端认证和TP-LINK无线路由器的功能和二为一。后文有关于实现过程的详细介绍,尽管没有什么技术含量,确实显示出树莓派或者嵌入式系统在智能家居方面是可以有所作为的。 另外一件事情是有关三网合一、网络电视机顶盒。下面是三那么广告:小米高清互联网电视盒299元〔上海、杭州、长沙三地市销售进行中〕;PPTV5月18日零点开放800台工程版PPBOX的网络预售,价格仅为199元;乐视盒子C1S再次改变你的电视。自己曾经试着在树莓上面安装XBMC实现了网络电视的功能,树莓派又可以添加一个功能。还有一件我曾经有切身感受的事情,在我上初中三级的一个下午,奶奶在家突法心肌堵塞,当时她的身边只有刚上幼儿园的小弟,小弟惊慌失措,不知该如何是好。等到其他家庭成员发现情况,着手施救时,为时已晚。如果当时她身边有人能帮一把,或者及时的告知家里的其他成员,也许奶奶还有时机看看曾孙。你或者你周围的人总是会有家庭财务失窃的经历。主人不在,紧闭的平安门形同虚设,不良分子乘虚而入对我们的个人隐私甚至家庭财产造成损害。其时假设能有一个忠诚的管家为我们及时的侦测到不法分子的侵入,通知主人,或者求助于公安民警,便可以及时的防止损失。 另一方面,许多人的智能 都已经更换了好几部。看那所谓的智能 ,配置动那么1GHZ主频的处理器,1GB的内存,等等之类硬件配置何其出众。而现在就是这样一个小小的板子,700HZ主频512MB内存,已经显示出巨大的潜能。那么是否可以通过某种方式把智能 的潜能也发挥出来呢?在传统的上网聊天,拍照玩游戏之外是否也是可以有所作为的呢? 课题目的 本文所要实现的功能,在市面上都已经有成型的产品。我所做的是要把几个有关智能家庭应用的独立功能同时在一块板子上面实现,并试着扩展自己的功能。在这个过程中,为其他人学习ARM/LINUX开发,或者说在树莓派上面的开发厘清一条道路。同时尝试扩展智能 的功能。 课题意义 本文并没有多少前瞻性的东西,所提到的智能家居的各个方面市面上都已经有了成型的产品。自己感觉比拟有意义的是:为我们学校家属区建立家庭无线网提供了一点参考;为测控专业相关课程的开展和自动化协会的开展建立一个巩固的根底;为开源/自由软件的事业做出了一点个人奉献,这个是最重要的。 从个人生活经历来看,智能家居还是一个遥远的词汇,大多数老百姓还没有接触到这些东西。不知道是价格的原因,亦或现在的智能家居还只概念炒作,行业的大方向此处不做过多评论。现仅就上面提到的乐视、小米、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、蓝牙、音频输出;最后是乐视盒子,硬件免费,内容收费;乐视网TV版12个月效劳费价格490元,6个月效劳费价格290元。CORETEX-A9架构双核处理器,无线连接功能,并其集成无线路由器功能,流畅播放1080P高清电影,内容来源乐视网正版资源。 无论从硬件还是内容资源的角度来看,乐视盒子都更胜一筹,费用自然也是最高的。我想网络电视的本质还是电视,或者说视频内容,如果让我为家里面配备一台这样的设备的话,肯定是要以内容为主要考虑。所以尽管价格高一些,我还是会选择乐视盒子。虽然安装XBMC的树莓派硬件功能不比这三者差,但是没有内容资源的支持就是无源之水,没有实用价值。从另外一个角度来说,如此的价格去电影院看电影会有更好些的试听享受,并且对普通家庭用户而言肥皂剧和新闻联播也是要看的,大家的需求未必就是每天欧美大片,这样乐视的优势就不会那么明显了。 本文首先介绍了树莓派开发平台的软硬件资源以及在ARM/LINUX平台开发应用的一般方法,提出我将要实现的功能〔第二章〕;然后是智能家居控制器本地开发〔第三章〕和网络开发〔第四章〕,最后是树莓派软件源的制作和蔼后工作〔第五章〕。 第2章 控制器平台介绍 树莓派是英国树莓派基金会推出的一款旨在推动学校计算机科学教育的信用卡大小的单板电脑。由于其强大的计算能力,丰富的外部扩展和低廉的价格而被选作本毕业设计的开发平台。 下面是树莓派宏观接口图: 图2-1:树莓派B型板的宏观结构图 树莓派就相当于是一块计算机主板。居于长方形板面中心的是一块BCM2835片上系统,其上包括了一个ARM1176JZF-S 700MHZ 的处理器〔可以超频至1GHZ〕,和一块VideoCore IV GPU , 还有 512M RAM〔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/100 M 以太网接口,作用不言自明。另外有三个不长用的外设。一是,USB口和RCA接口之间的音响/测试接口;二是,板上面的类似于扩展接口的JTAG接口;三是,TFT触摸屏接口。 核心芯片BCM2835:高清嵌入式多媒体应用处理器BCM2835是一种低本钱,全高清多媒体应用处理器,适用于需要高品质多媒体性能的移动和嵌入式应用设备。产品设计充分考虑了电池使用效率,并进行了相关优化。BCM2835使用博通公司的第四代VideoCore技术来使能应用程序中的各种图像、视频处理。 *低功耗ARM1176JZ-F 应用处理器 *双核第四代VideoCore多媒体协同处理器 *1080P30帧每秒全高清视编码/解码 *高性能视频输出。1080P60帧每秒持续高分辨率LCD、HDMI输出 *低功耗,高性能VideoCoreGPU *先进的图像传感器流水线〔ISP〕长达20万像素的摄像头高达220万 像 素每秒 下面是该芯片的内部结构图: 图2-2 BCM2835内部结构图 总的来说,树莓派板子的外部接口还算丰富,处理器、存储设备不够强大。但因其低廉的价格〔B型板35美元,A型板25美元〕,在8051单片机和个人电脑之间为我们提供了一个理想的嵌入式开发平台。 软件方面,毫无疑问选择GNU/LINUX平台。做为开源软件平台,GNU/LINUX给予用户以免费或者较低的价格获取操作系统和软件的源代码的权力。这使得用户可以根据自己的需要编辑、修改源代码,分发自己的代码,鼓励人们互相分享。其开放、共享的精神受到了许多科技人员的喜爱。在本毕业设计中笔者使用的操作系统是Raspbian,一款基于Debian并根据树莓派硬件条件进行修改的操作系统。如下是维基百科中关于Debain的描述: Debian是由GPL和其他自由软件许可协议授权的自由软件组成的操作系统,由Debian方案〔Debian Project〕组织维护。Debian方案是一个独立的、分散的组织,由3000人志愿者组成,接受世界多个非盈利组织的资金支持,Software in the Public Interest提供支持并持有商标作为保护机构。Debian以其坚守Unix和自由软件的精神,以及其给予用户的众多项选择择而闻名。现时Debian包括了超过37,500个软件包并支持12个计算机系统结构〔i386、amd64、arm、mips、IBM等等〕。Debian是一个大的系统组织框架,在这个框架下有多种不同操作系统核心的分支方案,主要为采用Linux核心的Debian GNU/Linux系统,其他还有采用GNU Hurd核心的Debian GNU/Hurd系统、采用FreeBSD核心的Debian GNU/kFreeBSD系统,以及采用NetBSD核心的Debian GNU/NetBSD系统。甚至还有应用Debian的系统架构和工具,采用OpenSolaris核心构建而成的Nexenta OS系统。在这些Debian系统中,以采用Linux核心的Debian GNU/Linux最为著名。众多的Linux发布版,例如Ubuntu、Knoppix和Linspire及Xandros等,都基于Debian GNU/Linux。 笔者使用GNU/LINUX Debian已经有三年时间了,深刻的感觉到Debian的强大。针对于嵌入式而言,采用Debian系统有三大优势: 1、丰富的软件包和强大简便的软件包管理器 2、通用操作系统,支持多种计算机系统架构 3、强大的志愿者/开发人员组织 如下文所说,对于习惯了微软操作系统的用户来说,一些GNU/LINUX版本绚丽的桌面环境也许会让你感到惊艳,但是相信我GNU/LINUX的精华来源于黑纸白字的文本界面。作为一名嵌入式开发者,应该熟练的使用文本界面解决问题,那样更能节省珍贵的系统资源并且更接近硬件或软件的本质。由于知识过于庞杂,这里仅就个人认识对GNU/LINUX的特色——文件系统,做简要介绍。 文件系统主要包括两局部:文件、目录。文件系统将枯燥的物理细节〔在硬盘或者SD卡中实际就是0和1的排列组合〕包装成为操作系统易于读写的形象,也就是用户可见的文件,或者说普通文件。而目录,其本质是仍是文件,或者说特殊的文件,亦即储存其他文件的文件。可以将文件理解为实际的物理存储空间,而目录那么包含了指向这些空间的“指针〞。记住一个非常重要的概念,GNU/LINUX是建立在文件系统之上的,系统将外部设备甚至网络设备也当做文件进行读写! 在LINUX系统的 / 根目录下面有: bin boot dev etc home media mnt opt proc root sbin selinux srv sys user var 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是一种面向对象的高级语言,有许多针对特定应用的库函数可控调用,开发周期短,执行效率低〔Raspberry Pi中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,Secure Shell 平安壳协议,一项创立在应用层和传输层根底上的平安协议,为计算机上的Shell〔壳层或者命令解释器〕提供平安的传输和使用环境。SSH可以使得我们获得远程运行LINUX系统命令行的能力,另外SCP命令可以进行文件传输。VNC,Virtual Network Computing,一种使用RFB协定的屏幕画面分享及远程操作软件。此软件借由网络,可以传送键盘与鼠标的动作及实时的屏幕画面。例如,笔者使用的是Tightvnc,正确安装并配置之后,便可以在个人电脑上虚拟树莓派的桌面环境,节省了用于购置鼠标和键盘的费用,同时方便的进行远程操作桌面。SSH只能提供应用户命令行工具,更加节省资源,而Tightvnc的图形界面,更易于新手使用,并且有极少数工作也只能在图形界面下完成,故而也是很有价值的。下面是USB转串口和Minicom/Gtkterm ,在无法连接网络或者系统出现故障时,我们还可以通过树莓派的串口,对它进行调试。为了方便在个人电脑上显示串口窗口,我们需要将串口桥接至USB接口。这就要用到PL2303芯片。PL2303将USB端口和标准RS232端口连接起来,两块大的片上缓存调配两个方向的数据流,为了提高传输速率采用了USB块状数据,串口自动进行信号握手。这使之获得了比传统UART控制器更高的信息传送速率。将树莓派的第6脚〔地〕,8脚、10脚〔UART收发〕分别与模块的相应引脚相连,USB口接电脑,树莓派默认将内核启动信息从UART口输出,同时正常工作时UART也可以作为调试和控制窗口。如下列图示笔者的串口连接方法: 图2-3 USB转串口连接笔记本 另外注意,树莓派可以通过对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+,GIMP ToolKit ,一个生成跨平台的图形界面开发工具。GTK+提供一整套开发控件,使得我们可以使用他来开发小到“HelloWorld!〞大至Gnome桌面的各种应用。由于其跨平台性,GTK+开发的工具在GNU/LINUX,微软系统上都可以运行。尽管GTK+自身采用C语言开发,在其设计之初就考虑到了对于多种语言的支持,如C++、java、python等。下列图是笔者的Debian桌面: 图2-4 笔者漂亮的Gnome桌面 补充一点内容,尽管笔者在设计过程中没有用到,还是比拟有意义的一个开源软硬件平台——Arduino。Arduino是一个开源的单片机控制器,它使用Atmel AVR 单片机,采用了开放源代码的软硬件平台,并且使用类似JAVA、C语言的Processing/Wiring开发环境。与8051单片机不同,其集成开发环境可以非常方便的帮助我们实现USB读写、图像采集等功能。树莓派硬件操作的实时性不好,而Arduino的网络通信和计算能力不够,二者结合,以树莓派作为上位机进行网络通信处理大量数据,使用Arduino作为下位机控制外部器件,是一个不错的组合〔当然可以换成如UDOO之类的高级ARM板子〕。下列图是Arduino开发环境的简图: 图2-5 Arduino IDE 展示 2.3 设计功能 在ARM+GNU/LINUX软硬件平台下面,我们可以实现各种功能,简单来说可以分为本地应用、网络应用。本地应用主要包括GPIO口、串口、SPI和I2C的使用,用来控制外部引脚的上下电平或者数据流以控制外部器件。还能建立家庭无线局域网,将树莓派打造成为网络视频播放器。网络应用,主要包括建立效劳器、效劳器开放以及软件源的制作。 第3章 本地应用设计 3.1 GPIO引脚控制 本地应用开发主要有三种方法,介绍如下。 1、经典法的C语言开发: 首先下载并安装airspayce网站BCM2835有关输入输出的库函数,编译并安装。该库函数提供了各种端口操作函数可供使用,主要有:GPIO 引脚、SPI 、I2C、系统时钟。附录里面有SPI测试程序可供参考。其中缺少串口函数,但是各种外设,例如笔者曾经在树莓派上用到的心电采集模块、北斗模块、与上位机或者Arduino通信等等,都需要用到串口,所以串口非常重要。另外,树莓派以及一些嵌入式系统默认的会将启动信息通过串口输出,串口也可以被当做调试终端来使用。如果要把串口回归其本性,我们需要修改一些设置。将/boot/cmdline.txt 和ttyAMA0有关的信息删除,并将/etc/inttab文件找到包含/ttyAMA0/ 的行,在前面加“#〞将该项注释掉。 2、简洁的Python语言开发: 上面我们提到的是传统的经典的C语言开发方法,而是用Python可以极大的提高我们的开发效率。Python是面向对象的高级编程语言,使用它可以加速开发,高效的与系统整合,效率高且维护费用低,跨平台、开源。在使用的过程中我们会发现Python表达在树莓派的方方面面。下面的例子Bl,简单展示了一个Python脚本,其简练可见一斑: import wiringpi from time import sleep io = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_SYS) io.pinMode(18,io.OUTPUT) #Setup pin 18 (GPIO1) while True: io.digitalWrite(18,io.HIGH) # Turn on light sleep(2) io.digitalWrite(18,io.LOW) # Turn off sleep(2) 对于电脑初学者来说,Python有不可抗拒的魅力。注意,篇幅有限,本文没有对具体GPIO引脚的编程进行详尽的说明。 3、功能强大的Shell编程: 但凡使用过GNU/LINUX肯定对于Shell非常熟悉,它不仅是一个命令解释器,其内置的命令可以非常方便帮助我们完成系统各种日常维护、编辑文件、查看网络等等工作。在Shell双击TAB系统会提示你是否输出各种命令,例如在我的Debian系统中显示有2756个命令可用。Python编程和Shell 编程非常类似,这里不做详细介绍,在用户熟练使用LINUX之后应该试着学习Shell解决日常工作。 硬件编程之外我们需要注意一些事情。树莓派GPIO口默认除电源脚为+5v,其他引脚均为+3.3v高,0V低。上面提到的Arduino默认为+5v高,0v低,二者不可直接相连,最好使用三极管电路将3.3V电平转成5V。如果外部设备需要较大电流的话,也需要可虑各个引脚的负载能力。切记,切记!树莓派GPIO引脚内部没有保护电路,千万不要不将+5V与地短路,后果很严重。 如果使用电池供电的话,需要用到线性电源或者开关电源。相比拟而言线性电源效率低但噪声小,开关电源效率高但噪声大。两种电源笔者都曾经使用过,因为自己所连接的外设需要的电流较大〔总电流大于〕,使用7805做线性电源自身功耗相当大,散热效果很差。后来改用LM2576做开关电源,效果明显好转。开关电源核心是LM2576芯片,外加几个电容、二极管、电感即可,考虑到兼容性采用USB接口输出+5V。下列图笔者自制的开关电源外形图: 图3-1 LM2576开关电源 树莓派自身连接有线网络〔参看下一章〕,通过外接无线模块,建立无线局域网。本工程所使用的无线模块是RT5370,主要是RT5370 的配置: 我们要用到两款软件Hostapd 、Udhcp。Hostapd是、、RADIUS客户端和EPA认证效劳器。Udhcp是一款专用于嵌入式设备的DHCP软件,功能比个人电脑上面的DHCP程序弱,使用简单方便。在这里我们只用到udhcpd,亦即dhcp客户端程序。 1、 连接各个外设启动树莓派,运行下面命令查看RT5370是否被正确识别。 $ sudo lsusb Bus 001 ************************** Bus 001 ************************** Bus 001 ************************** Bus 001 Device 007 :ID 148f:5370 Ralink Technology , Corp, RT5370 2、 本机识别正常,安装相关软件: $ sudo apt-get install hostapd udhcpd 3、下面配置DHCP效劳器,编辑文件 /etc/udhcpd.conf , 添加如下内容: start 192.168.42.2 #DHCP可分配的IP地址空间 end 192.168.42.15 #应为是在家庭内使用,数量不必过多 interface wlan0 # Udhcp效劳器的工作设备 remaining yes opt dns .8 4.2.2.2 # DHCP客户端设备使用的DNS效劳器 opt subnet 255.255.255.0 # 子网掩码 opt router 192.168.42.1 # 无线网的网关,即树莓派的无线IP地址 opt lease 864000 # DHCP效劳器默认运行时间,10天后自动关闭 4、 使能DHCP效劳器开机运行,修改/etc/default/udhcpd 将 DHCP_ENABLED=〞no〞 改为:#DHCP_ENABLED=〞no〞 5、 将/etc/network/interface 添加或者对相应行做如下修改: iface wlan0 inet static #固定树莓派的无线地址作为局域无线网的网关 addres #allow-hotplug wlan0 #iface default inet dhcp 6、配置hostapd。可以参看/etc/hostapd/examples/hostapd.conf.gz 中的内容。 编辑〔或者生成〕文件/etc/hostapd/hostapd.conf 添加以下内容: interface=wlan0 # 要使用的网卡 driver=nl80211 # 驱动名称 ssid=My_AP # 无线局域网的名称 hw_mode=g # channel=6 # hostapd 运作的频率 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=My_Passphrase # 无线网的密码 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP 修改完上述文件后,编辑文件/etc/default/hostapd 将#DAEMON_CONF=〞〞 改为:DAEMON_CONF=〞/etc/hostapd/hostapd.conf〞 7、配置网络地址转换〔NAT〕,该技术可以使几台终端设备通过一根网线连接网络。首先修改/etc/sysctl.conf 文件 找到行 net.ipv4.ip_forward = 1 ,去掉前面的“#〞 将该选项使能。 为了将NAT在linux内核中使能运行一下命令,修改防火墙设置: $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE $ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT $ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT 现在树莓派就可以进行NAT了,当然我们想把刚刚的设置选项永久保存, 运行下面的命令将现在的防火墙设置生成文件: $ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat" 设置开机启动时加载上面的防火墙设置,在/etc/network/interfaces 文件底部添加下面的一行: 8 现在我们就可以建立无线局域网了,设置hostapd和udhcpd开机自启动: $ sudo update-rc.d hostapd enable $ sudo update-rc.d udhcpd enable 树莓派开机重启,使用 或者电脑可以检测到我们刚刚建立的无线信号。 3.3 网络电视的配置 添加下面的内容: deb wheezy contrib 然后导入存档签名秘钥: $sudo apt-key adv --keyserver keyserver.ubuntu --recv-key 5243CDED 完成之后,更新系统: $ sudo apt-get update 安装网络电视软件: $ sudo apt-get install xbmc 速度较慢,完成之后,关机重启,进入xbmc.更改系统设置正常显示中文,安装相应的ZIP文件,添加对于youku、toudu、qiyi等国内视频网站的支持。 如下列图是作者通过树莓派的网络电视观看“舌尖上的中国〞: 图3-2 XBMC观看舌尖上的中国 第4章 网络应用设计 在我的理解中,从一个整体的角度考虑computing , 硬件资源是土地,驱动程序是地基,操作系统便是我们的建筑物,应用程序是我们房子的装饰品,而网络那么是这样一个家庭和外界进行沟通的邮政系统。对亲朋好友的祝福与问候是书信的内容。而假设要合理地投送我们的真情惬意的话,需要Tcp/Ip/Udp等通信协议作为信封,将地址,发件人,收件人,时间等一一表述。现在已经很少有人写信了,网络通信却越来愈多。如果要写出高质量的网络应用或者自己要实现特殊的功能〔如Pagekite反向代理效劳器〕应该对于网络底层细节有一定的认识。因为所涉及的内容较多,这里仅仅就常见的几个通信协议TCP/UDP/IP/DNS做简要介绍。TCP,Transmission Control Protocol, 传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。UDP,User Datagram Protocol,用户数据报协议,相比拟而言,UDP协议只是简单的将信息打包按照目的地址往外传输。邮件只是简单的送到邮筒里面,任其自生自灭。当然他也是有特殊用途的,例如DNS效劳就是采用的UDP协议。IP,Internet Procotol,网络通信协议,为计算机网络相互连接进行通信而设计的协议。简单来说就是,信封上面的发件人地址和收件人地址,或者说本机和目标机器在英特网上面的位置坐标。DNS,Domain Name
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服