版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1三种语言控制树莓派GPIO树莓派的IO共有26根Pin,排列如图1所示,其中包括GPIO8个Pin,SPI5个Pin,串口2个Pin,I2C2个Pin,其余为DNC和电源Pin。为比拟Python、Java、C在树莓派上的开发特点,在GPIO上连接LED和限流电阻,分别使用三种语言让LED点亮一秒然后熄灭。1.1Python控制GPIO树莓派自带Python开发环境,它推荐使用Python语言进行开发工作,控制GPIO需要先安装RPi.GPIO库,安装完成后,点亮与熄灭LED的Python代码如下[2]。importRPi.GPIOasGPIO#导入GPIO库importtime#导入时钟库GPIO.setmode〔GPIO.BCM〕#使用BCM的I/O命名GPIO.setup〔18,GPIO.OUT〕#设BCMI/0的18端口为输出口GPIO.output〔18,GPIO.HIGH〕#设为高电平,灯亮time.sleep〔1〕#亮1秒GPIO.output〔18,GPIO.LOW〕#设为低电平,灯灭1.2Java控制GPIO最新的树莓派Raspbian操作系统已经自带jre运行环境,安装pi4j的类库后,使用Java控制LED的代码如下。finalGpioControllergpio=GpioFactory.getInstance〔〕;//GPIO对象finalGpioPinDigitalOutputledpin=visionDigitalOutputPin〔RaspiPin.GPIO_01,"LED",PinState.HIGH〕;//ledpin对象,设置为输出口、高电平ledpin.high〔〕;//设ledpin为高电平,灯亮Thread.sleep〔1000〕;//延时1秒ledpin.low〔〕;//设置低电平,灯灭1.3C控制GPIO安装BCM2835CLibrary后,使用文本编辑器编写以下代码,存为led.c,然后用gcc编译,控制LED的代码如下。#include#defineLEDRPI_GPIO_P1_12//LED对应bcm2835库中的P1_12引脚voidmain〔intargc,char**argv〕{bcm2835_init〔〕;//初始化GPIO端口bcm2835_gpio_fsel〔LED,BCM2835_GPIO_FSEL_OUTP〕;//设为输出bcm2835_gpio_write〔LED,HIGH〕;//设LED引脚为高电平,灯亮bcm2835_delay〔1000〕;//亮一秒bcm2835_gpio_write〔LED,LOW〕;//设置低电平,灯灭}1.4比拟与分析上述三个程序都运行于树莓派官方提供的Linux操作系统Raspbian中,其中树莓派推荐的Python语言代码最为简洁直观,接近于人的自然语言,而对于大量已经掌握Java语言的程序员而言,Java代码一目了然,且不需要学习Python语言。由于有BCM2835CLibrary库的支持,C代码的实现也不难,不需要自己写GPIO的Linux驱动。在这个简单的GPIO编程中,可以看到树莓派的Linux开发有丰富的语言环境可选择,开发效率高且易于学习,相对于传统的S3C24x0上的“Linux驱动编程+应用层编程+交叉编译〞要容易掌握。我们在Linux开发实训教学中,通过上述三种语言的例子,使学生体验到树莓派开发的高效与语言环境的丰富多样。2应用开发分析以下用树莓派推荐的Python语言实现串行通信和TCP/IP网络通信等更为复杂的应用,然后分析实现智能家居和物联网的思路,以进一步分析树莓派的能力和优点。2.1串行通信安装python-serial库后,用Python语言在树莓派的Raspbian操作系统中实现串行通信的代码如下。importserialsport=serial.Serial〔"/dev/ttyAMA0",baudrate=9600〕#whileTrue:sbuf=f.readline〔〕#读一行到sbuf中iflen〔sbuf〕==0:#空行表示发送完毕breaksport.write〔sbuf〕#发送sbuf内容对于嵌入式Linux系统的串行通信编程,与传统的C语言开发相比,Python代码显得“简洁优美〞,犹如人的自然语言,廖廖数语,即可实现串口通信,非常适合快速开发与教学使用。树莓派的开发显示,尽管C〔C++〕可以让开发者更深入理解和控制硬件,对于Linux内核和驱动的开发仍然有不可取代的价值,但随着硬件越来越廉价,性能越来越好,C在Linux应用层开发的使用率正在并将继续被象Python或Java这类更“高级〞的面向对象语言蚕食,就如以前的汇编语言使用率被C蚕食一样。2.2Socket通信、智能家居或物联网Python同样能以很少的语句实现TCP/IP通信。它实现Socket客户端的关键代码如下。importsockets=socket.socket〔socket.AF_INET,socket.SOCK_STREAM〕#IPv4,TCPs.connect〔address〕#向效劳器发起Socket连接s.send〔'Hello'〕#向效劳器发送Hellos.close〔〕#关闭Socket与C〔C++〕或者Java相比,Python的Linux网络编程仍然出人意料的简洁。由于树莓派的性能足以支持专业的LAMP〔LinuxApacheMysqlPHP〕Web效劳器,因而,只要综合上述的GPIO和串口编程,控制外围的8bit单片机及传感器,安装LAMPWeb效劳器,通过Python实现网络通信及管理界面,即可构成智能家居或物联网的控制中心。假设按传统的基于S3C24x0的嵌入式Linux开发教学方式,要实现智能家居或物联网控制系统,需要设计ARM开发板,对Linux进行移植裁剪,用C语言开发硬件驱动与应用层,然后交叉编译到开发板中,开发链很长,难度相当大,软硬件的可靠性与稳定性也需要长时间的测试。此外,Linux内核及驱动程序的C代码使用了大量的指针和双指针,如何深入理解这些指针变量,是嵌入式开发与教育的一大难点。而使用树莓派,Python语言“明白如话〞,不需要模拟器和交叉编译,即写即运行,硬件小如信用卡大小,可以直接嵌入到应用系统中使用,无需自行设计生产,在应用开发上有突出的实用价值。3软硬件、资源优势与平台选型3.1软硬件优势树莓派之所以在全球热销,原因不仅在于支持Python、Java、C等丰富的语言开发环境,它提供的Raspbian操作系统是历时5年多重新测试与移植超过19000个Linux软件包的结晶。创始人Eben博士目前任树莓派的主芯片设计公司Broadcom的IC设计主管,可以很好的控制CPU及开发板的性价比和质量〔Broadcom是全球领先的通信领域的半导体公司〕。因此,树莓派同时拥有CPU、操作系统、应用开发环境三个方面的背景优势。此外,由于内置GPU支持1080P视频硬解码,树莓派官方又提供了界面友好的OpenELEC和RASPBMC操作系统,它可以打造成家庭媒体中心,成为网络电视机顶盒。3.2资源优势全球有数以百万计的开发者在为树莓派进行开发,有丰富的软硬件开发资源可供参考与借鉴。软件巨头Oracle推出了基于树莓派和JavaFx的DukePad方案,并开设了互联网免费课程“DevelopJavaEmbeddedApplicationsUsingaRaspberryPi〞〔使用树莓派开发Java嵌入式应用〕。RaspiRobotBoard是一个典型的树莓派扩展板,可将树莓派扩展为机器人控制器,它有专门的Python库支持,支持对机器人的控制。利用它的Python库实现一个简易的“漫步者机器人〞只需三十几行代码[3]。可以再添加超声波测距仪和显示器,WiFi、摄像头等,做成机器人竞赛常用的“探月车〞。我们在嵌入式专业毕业班的教学上,使用树莓派作为主控制器,结合外围的51单片机、传感器、电机等实现智能小车,借助Internet上丰富的树莓派资源进行开发,取得了较好的教学效果。3.3平台选型国内有不少仿造树莓派的开发板,由山寨或平板的方案改造而成,通常声称有更高的硬件配置。但由于树莓派全球性软硬件资源的综合优势,用户比拟不用担忧它的质量、长期供货、是否停产、以及长远的技术延续和开展前景,开发者也不必为设计和生产技术要求很高而批量又不大的开发板困扰,在快速变化与剧烈竞争的市场环境下,这些都是开发与教学在平台选型时需要考量的重要因素。由于树莓派的Broadcom和剑桥背景,而ARM也同样源自剑桥,树莓派所构造的软硬件平台并不是一个简单的玩具,它有深远的优势所在,战略上看,相似的开发平台要与树莓派竞争,需要有重量级的资源支持。树莓派的成功对于我国高校与企业的合作具有启发意义,期待将来自主芯片与操作系统的“〞出现。4结语树莓派对于全球嵌入式Linux开发及教育已经并将继续带来广泛的影响,及早将之引入我国主流的嵌入式开发与教学环境中或将是有益的。尽管传统的“ARM开发板硬件设计+Linux移植裁剪+虚拟机环境+交叉编译+驱动编程+应用层编程〞开发链可以深入理解和控制嵌入式Linux系统,但因其复杂性而更适合需要定制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华师大版初中科学1.1机械运动(第2课时)
- 算法设计与分析 课件 5.4.2-动态规划-0-1背包问题-动态规划求解
- 2024年江西客运资格证种类
- 2024年客运从业资格证什么样子
- 2024年客运司机从业资格证
- 2024年长沙客运实操考试
- 吉首大学《教师礼仪与修养》2021-2022学年第一学期期末试卷
- 吉首大学《场景速写》2021-2022学年第一学期期末试卷
- 《机床夹具设计》试卷18
- 吉林艺术学院《全媒体新闻写作》2021-2022学年第一学期期末试卷
- (完整版)高考作文稿纸(标准)
- 小班安全《特殊的电话号码》
- 争做新时代好少年主题班会课件(共29张PPT)
- 化工总经理岗位职责
- 饼干喷油机安全操作保养规程
- 国电职称考试水能动力工程考试题库2023版
- 水稻栽培管理技术培训(精简)课件
- 第12讲 隐零点问题处理方法
- 外科护理技术-说课-课件
- 考试通用答题卡-A4可直接打印
- 工程项目全过程跟踪审计实施方案(三篇)
评论
0/150
提交评论