开源硬件平台——RASPBERRYPI随着嵌入式软硬件的发展,各项技术的集成度越来越高。软硬件结合开发的门槛越来越高,工程师学习的周期也越来越长。这两年,以Arduino为代表的开源硬件运动在世界范围内越来越普及,用户群体开始从工程师扩散到大学生,然后到中学生,甚至小学生。各种开源硬件平台的出现,通过全球网络社区的驱动共享资源,极大的降低了学习门槛,刺激了创新,加速了各种创意从构思到实现的落地。开源软件和开源硬件都在于共享,分享。不管是开源软件也好,开源硬件也好,都有四个维度:第一:人人可用(任何人可以任何目的自由的使用);第二:人人可探(任何人可以探知其原理);第三:人人可改(任何人可以按照自己的方式自由修改);第四:人人可再分发(任何人可以把自己修改过成果自由地再次发布)。RaspberryPi概述•RaspberryPi,价格约¥280(512MB内存,版本B)。•RaspberryPi是英国RaspberryPi基金会2012年推出的一个迷你电脑,简称RPi,中文名字叫做“树莓派”,只有信用卡大小,连接显示器或电视(RPi拥有电视机的模拟显示接口,可以使用电视当作显示器使用降低使用成本)、键盘后即可使用。它就像一台小型个人计算机可以做任何桌机可做的事情,譬如电子表格、文字编辑、游戏、等等,它还能播放高画质的视讯影片。•RPi推出的初衷是针对贫困国家的计算机教育而设计的,售价仅25~35美元。不过RPi推出后在全球销售相当火爆,多次售罄,客户大多都是爱折腾的电脑爱好者,许多客户常常在预定后几个月才能收到产品。•RPi推出后,迅速形成了庞大的开源社区及相应的生态系统,大量爱好者在其上开发各种各样的应用项目,大量不断完善的库函数简化了开发工作,便于快速开发及实现创意,而规范的编程接口和架构也便于开发者之间的交流共享,毕竟开源的目的就是为了共享。•RPi推出后,全球出现了许多类似的平台系统,而且硬件配置都比RPi高一个档次。树莓派的强处在于其主流的系统Raspbian已经有了超过3.5万个软件包以及预编译的软件,其软件资源也就是应用环境的生态系统更加成熟完善。RaspberryPi概述RaspberryPi概述RaspberryPi概述RPi的硬件是典型的SoC(系统单芯片),采用Broadcom(博通公司)的解决方案,为BCM2835,即CPU、GPU、DSP、SDRAM等器件集成到一个芯片中。设备按配置不同分A、B两种型号:项目A型B型上市价格$25$35SoCBroadcomBCM2835(内含CPU、GPU、DSP、SDRAM)CPUARM1176JZF-S核心(ARM11系列)700MHzGPUBroadcomVideoCoreIV,OpenGLES2.0,1080p30帧/sH.264/MPEG-4AVC高清解码器内存256MByte512MByteUSB2.0接口个数12(支持USBhub扩展)影像输出CompositeRCA(PAL&NTSC),HDMI(rev1.3&1.4),rawLCDPanelsviaDSI14HDMIresolutionsfrom640x350to1920x1200plusvariousPALandNTSCstandards.音源输出3.5mm插孔,HDMI板载存储SD/MMC/SDIO卡插槽网络接口无(需通过USB外接)10/100以太网接口(RJ45接口)外设8个GPIO、UART、I2C、带两个选择的SPI总线,+3.3V,+5V,Ground(负极)额定功率300mA(1.5W)700mA(3.5W)电源输入5V/通过MicroUSB或GPIO头总体尺寸85.60×53.98mm重量45g操作系统DebianGNU/Linux,Fedora,ArchLinuxARM,RISCOS,FreeBSD,Android和多媒体中心XBMCRaspberryPi软件系统•官方主推的操作系统是Rasbian系统,这个系统基于DebianWheezy的ARM内核版本,跟Debian的操作基本一样。操作界面默认是命令行,但可以设置成默认开机就进入X-window,自带的桌面环境是LXDE,一个轻量级的桌面环境。•应用程序方面,一些常用的工具,比如apt,vim,gcc都有,还预装了Python的开发环境,RPi下的许多应用都是用Python开发的,包括外围硬件如GPIO、串口、I2C等的控制都可以通过相应的Python库函数编程实现。RaspberryPi接口扩展RaspberryPi使用•RPi没有内部NANDFlash存储器存储操作系统,必须从外部的SD卡启动,这也是RPi运行速度慢的主要原因。树莓派的官网提供了三个版本的镜像文件,还有无数第三方的镜像,想要更换系统,只要把不同的系统烧入不同的SD卡,然后更换SD重新启动RPi,就可以使用不同的系统了。•把HDMI线、鼠标、键盘、网线全部插上。RaspberryPi使用RaspberryPi使用•首次启动加电后,就会开始出现启动画面和Linux启动界面,但企鹅被替换成了树莓:RaspberryPi使用•进入LXDE的X-Window环境,图形化的操作界面比较容易掌握使用。RaspberryPi使用•绝大部分用X.264编码的1080p视频都可以正常流畅播放。RaspberryPi接口扩展•RaspberryPi的接口扩展板RaspberryPi接口扩展测量距离的超声波传感器PIR运动传感器,检测运动状态的被动式红外线传感器步进电机LED及蜂鸣器扩展板RaspberryPi编程——Scratch•Scratch是一个图形化的编程开发环境,类似于LabView。通过这一工具,不需要编写代码就可以创建交互式游戏、动画等应用,从中可以领会计算机编程的基本思想,如赋值、计算、分支、循环等。RaspberryPi中预装了Scratch开发环境,是其主要的计算机教学工具。RaspberryPi编程——ScratchRaspberryPi编程——ScratchRaspberryPi编程——Python•RaspberryPi中预装了Python,这是一种非常流行的跨平台的脚本语言,它是RaspberryPi的官方编程语言,还有IDLE3,一个Python的集成开发环境(IDE)。使用Python可以编写出许多功能强大的,RaspberryPi提供了许多功能丰富强大的Python扩展库,从简单数学计算和编写游戏,到网络通信,甚至可以直接控制RaspberryPi的硬件接口。RaspberryPi编程——Python•图形编程RaspberryPi编程——Python•网络编程——Web服务器RaspberryPi编程——Python•在Python中通过调用相关的库函数,如官方提供的RPi.GPIO库,可以非常方便地通过编程控制GPIO等硬件接口,避免了驱动开发的苦恼。RaspberryPi编程——Python•硬件扩展接口定义RaspberryPi编程——C/C++编程•RaspberryPi上预装有GCC编译器,可以进行C/C++编程开发。对于有经验的Linux开发者,如果把开发环境配置好,甚至可以直接用RaspberryPi编译Linuxkernel,只不过速度很慢,据尝试过的人称,需要大约5小时以上。•官方提供的RPi.GPIO库主要针对的是Python编程,除此之外还有一些第三方库也非常好用,比如WiringPi,这是一款模仿ArduinoWiring风格的函数库,而且支持C/C++、Ruby、Python、Perl、Java、TCL等多种语言编程,不局限于Python,使用起来非常简单,习惯C/C++编程的人可以通过这个库控制RaspberryPi的硬件接口。•此外,WiringPi还提供了附加的功能函数,如用于串口处理的shiftIn/shiftOut库(同时支持板载串口和USB转接的串口),用于控制LCD的库,简单的线程编程和进程优先级控制库,还完全支持PiFace扩展板。RaspberryPi与Arduino•Arduino是一个受欢迎的开放源硬体平台,使用的是微控制器,RaspberryPi使用的是应用处理器,两者之间的配合还可以极大扩展应用和创意丰富性,RaspberryPi甚至能够成为Arduino的开发平台。•SimonMonk的博客中提到了如何使用Python实现两者之间的通讯,Arduino会传送'HelloPi'的讯号,而RaspberryPi便会传送数字讯号给Arduino,Arduino便会根据该讯号闪耀LED特定的次数。•RaspberryPi方面,作者使用Python进行开发,使用特定的Python库——pySerial,这个库包含了Arduino的指令,可以存取串行口。RaspberryPi与Arduino经典应用——RaspberryPi超级计算机•在SimonCox的带领下,一群来自英国南安普敦大学的工程师用一堆RaspberryPi和乐高积木组装出了属于他们自己的超级计算机,总共六十四块RaspberryPi拥有近1TB的存储空间。•也许这不是传统认知上的超级计算机,但这些硬件组合足够让人们着手学习、理解超级计算机的工作原理。因为这套东西用MPI(TheMessagePassingInterface)来管理簇群上每个独立节点间的数据通信。用Cox的话说,当你学会如何使用MPI后,对于Hadoop的使用便能更得心应手,因为这正是超级计算机背后的基本处理思路之一。经典应用——RaspberryPi超级计算机经典应用——RaspberryPi云终端•所谓云终端,或者叫做瘦客户端。RaspberryPI能够满足作为一个瘦客户端的要求,能够输出1080p高清图像,具有丰富的接口可以满足用户输入输出的需要。谢谢!