树莓派
2017-02-24陈纪昌邱元阳刘宗凡金琦
陈纪昌 邱元阳 刘宗凡 金琦
编者按:上期我们探讨了教育对开放API的应用,其实除了开放软件接口外,在教育领域,我们还可以体验开放硬件接口的设备。这期我们以适应新型的开发和应用平台的树莓派为例,让目前的信息技术教育不再仅限于应用型技能,期望用这种低廉的设备燃起所有孩子学习信息技术的热情,让他们能自由发挥和任意改装,进而开发属于自己的程序。
Raspberry Pi(中文名为“树莓派”,简写为RPi,或者RasPi/RPI),是由注册于英国的慈善组织“Raspberry Pi基金会”开发的。2012年3月,树莓派基金会正式发售了世界上最小的台式机,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry Pi,中文译名“树莓派”。树莓派是为学生计算机编程教育而设计的微型计算机,其系统基于Linux(如图1)。
作为把教育当成第一目标的微型计算机,树莓派具有许多优点。首先,较低的价格能被大多数家庭或学校所接受。有了广大的用户基数,开发者有了开发热情,应用的数量和质量才会水涨船高,教学工作才能得以更好地进行,这就形成了一个良性循环,这也是树莓派得以成功的不可或缺的条件。其次,由于有大量编译器的支持,树莓派能编译大部分不同语言的代码,即它可以胜任大部分语言的教学工作。最后,麻雀虽小,五脏俱全。作为一台完整的计算机,它能承担家庭计算机、教学用计算机等功能,可以说它是世界上最具性价比的微型计算机之一。
陈纪昌:树莓派配置与各接口详解
大概了解过树莓派之后,让我们看看树莓派的配置与接口,只有了解树莓派的性能与可扩展性,我们才能将树莓派的价值最大化。最新的树莓派为3代B型,采用了博通BCM2837处理器,这是1.2GHZ的64位四核处理器,性能比上代树莓派提升了50%~60%,或者粗略地说要比最原始的树莓派性能提升了10倍。它还拥有1GB LPDDR2内存,虽然与我们当下智能手机动辄4GB内存相比,1GB内存可能显得有些“不够看”,但别忘了我们需要的是什么,1G內存对于一块廉价开发板来说已经绰绰有余了。
树莓派3B的3.5mm音频输出口与上一代树莓派完全一致,以太网接口和4个USB接口也并无改动,依旧是采用Micro-USB Type B接口供电,电压要求5伏,电流则要在700毫安以上,额定功率变成了4W,USB供电能力进一步增强,以前外设供电不足等情况也有所好转。我们甚至可以用充电宝给树莓派供电,这样它就真正成为随身终端。
在显示输出方面,树莓派有HDMI接口,当然还可以在GPIO上接LCD显示屏,新手在视频输出方面经常会遇到一些问题,这里需要根据自己屏幕的类型修改SD卡中的config.text文件及写入驱动。
除此之外,它还加入了Wi-Fi/BLE(蓝牙低能耗技术),相当于不再占用1~2个USB接口,也就可以外接更多的USB外设,对于Wi-Fi和蓝牙有刚需的开发者着实是件好事。
树莓派本身并无存储芯片,一切的数据包括操作系统都需要依靠一张Micro SD卡来保存,所以树莓派本身并无“变砖”的可能,这也大大提高了树莓派的可靠性,只要及时备份数据,学生就可以放心地对它进行调试,这也是成本较低的一个原因。另外,树莓派扩展的核心——GPIO(全称是General Purpose Input Output,通用输入/输出)也非常重要,具体来说就是一些可以输出高低电平或者读入是高电平或低电平状态的引脚。我们可以通过GPIO口和一些硬件进行交互,控制硬件工作或者是读取硬件工作状态。图2即为树莓派经典的结构示意图。
邱元阳:安装树莓派操作系统及软件
介绍过树莓派后,相信大家会迫不及待地想要动手尝试一番了。别着急,首先我们需要确定安装什么系统,树莓派官方和第三方支持的系统不少,如Raspbian、Pidora等Linux发行版,Raspbian是基于Debian的一个版本(针对Raspberry Pi硬件Debian进行了专门的优化,树莓派官方Raspbian系统下载:http://www.raspberrypi.org/downloads),这对于初学者来说是一个很好的起点。
下载好系统镜像后,我们需要格式化SD卡(推荐16G及以上的高速卡,SD卡支持列表http://elinux.org/RPi_SD_cards),下载Win32 Disk Imager工具,解压下载的Raspbian系统压缩文件,得到img镜像文件,在软件中选择系统镜像的img文件,“Device”下选择SD卡的盘符,然后点击“Write”就开始安装系统了,安装结束后会弹出完成对话框,说明安装就完成了。如果不成功,请关闭防火墙一类的软件,重新插入SD卡进行安装。安装完,Windows系统下看到SD卡的剩余容量只剩几十MB了,这是正常现象,因为Linux下的分区在Windows下是看不到的。
接下来,将SD卡插入树莓派的读卡器中,接上电源线,树莓派就启动了!不过这样还没法操作树莓派,我们需要给它接上键盘和鼠标,用HDMI线将它和显示器连接起来(如果显示器没有HDMI接口,可以考虑接网线或连接Wi-Fi使用远程桌面、SSH等连接)。Raspbian系统默认是LXDE图形界面,使用命令行输入sudo raspi-config,用方向键和回车键选择Boot Options,可以切换图形界面和终端界面,重启界面就会发生更改,虽然终端界面只有单调的命令行,习惯图形界面的人可能会对终端界面感到陌生,但这需要一个适应的过程,在某些情况下,终端界面会比图形界面的效率高很多。
进入系统之后,就是一些常用软件的安装了,输入命令sudo apt-get install+软件名称就可以了。由于树莓派的官方语言是Python,所以我们以编译Python为例,其他软件在此不多赘述。我们主要是用sudo apt-get update、sudo apt-get upgrade、sudo apt-get dist-upgrade把树莓派软件及系统升到最新版,因为Raspbian系统自带Python编译器,所以直接在图形界面双击Python图标或者在终端界面输入Python就可以开始编程了。
金琦:树莓派对信息技术教育的意义
随着信息技术的迅猛发展,计算机、智能手机已经成为人们生活的一部分,但必须意识到我国信息技术教育投入和资源配置在城乡和东西部还存在不平衡,基础的编程计算机在许多乡镇及山村学校的信息教育中没有普及,若能对师资进行培训,树莓派将凭借其低廉的价格和自身具备的可替代传统计算机的多种功能,为不发达地区的信息技术教育,尤其是编程设备建设问题提供一种解决方案,毕竟树莓派的成本只是品牌机的十分之一,而且板块化设计功耗低,且不容易损坏。在软件的系统层面上,微软也对树莓派进行了支持,但树莓派默认采用的是Linux发行版,可以不受微软Windows操作系统的束缚,这样一来就更能培养学生的动手能力和创新意识了,这也为信息技术教育的拓展提供了巨大的帮助。
最近,国内教育工作者对信息素养主导的中小学信息技术课程进行了反思,重新强化了程序设计教学在信息技术教育中的地位,这也为树莓派引入教学带来了契机。树莓派类能接受若干种编程语言,从图形化的Scratch到较专业的Python语言,完全可以适应未来的中小学编程教育。这里我们要了解树莓派的主要应用语言,正如树莓派的创始人Eben Upton所说:“树莓派的‘Pi就是‘Python的缩写。”所以,Python就成了树莓派的官方语言,而且重要的是其不需要配置任何环境就可以开发,Python是一种面向对象的解释型计算机程序设计语言,其公认的特点是简单、易学、免费、开源等,并且面向编程教育市场有强大的吸引力。近些年来,国际上在科学计算语言方面,尤其是面向人工智能、机器学习方面,Python已经占了半壁江山,这在一些重量级的开源应用中都得到了证实。另外,随着信息技术课程改革的深入,以及Python越来越广泛的应用,国内一些省市在信息技术课编程工具的选择上,正在尝试用Python代替传统的VB,既然Python是树莓派的官方语言,如果在教学中投入树莓派,想必对教学能起到事半功倍的效果。那么Python和现在高中学的VB具体有什么区别呢?首先VB是一种结构化的、模块化的、面向对象的、包含协助开发环境的以事件驱动为机制的可视化程序设计语言,而且很多VB开发都依赖Windows系统自带的Active X控件和API。而Python是一种面向对象的解释型计算机程序設计语言,抛开编译方面的区别,单从代码上来讲,与VB的差别其实不是很大,只要注意各自的语法就行了,但是有一点要特别注意,Python不像VB那样,不同的模块之间会有诸如next、end之类的关键字,Python区分不同模块的方法只有一种,那就是缩进。VB缩进不正确只是阅读比较累,但违反了缩进规则的Python程序则不能通过编译。所以使用Python能养成良好的编程习惯。
图3展现了高中程序设计学习中最经典的算法——冒泡排序在两种语言环境(分别在Windows 7和树莓派的Raspbian上)实现的效果。
不难看出,Python实现看起来比较清爽、简洁、易读。而且随着Web开发和跨平台程序设计越来越流行,Python的应用范围将更广泛,前景比VB更加可期待,它要求学生的思维更加严谨,更加注重编程规范,这也难怪国内一些省市正尝试用Python语言代替Visual Basic语言进行教学了。正因为Python在树莓派上运行效率非常高,价格又低廉,所以树莓派即使不能代替PC,也完全可以作为中小学信息技术学习的一个实验拓展工具。
刘宗凡:树莓派的GPIO应用
正如前面所说,树莓派在Python教学方面有着强大的优势。但是,除了基础教育,我们能不能更加深入地挖掘树莓派的潜力呢?怎么才能将树莓派的作用最大化即扩展树莓派的功能呢?那么之前提到的GPIO就是至关重要的了,当然在树莓派上也可以用Python来控制GPIO。
想用Python来控制GPIO,最便捷的办法就是使用一些Python类库,我们需要输入这些命令来配置环境:sudo apt-get install python-dev、sudo apt-get install python-rpi.gpio、sudo apt-get install python-serial。安装完成后,我们就可以尽情发挥自己的想象,动手打造一些功能丰富的小玩意。大家可从最简单的控制LED灯发光开始尝试。
编写代码之前,首先我们需要将LED灯的针脚通过杜邦线连接到树莓派的引脚上,如可以连接到12号引脚。新建一个main.py文件,写入如下代码。
import RPi.GPIO as GPIO //引入函数库
import time
RPi.GPIO.setmode(GPIO.BOARD) //设置引脚编号规则
RPi.GPIO.setup(12, RPi.GPIO.OUT) //将12号引脚设置成输出模式
while True
GPIO.output(channel, 1) //将引脚设置为高电平,此时LED亮
time.sleep(1) //程序休眠1秒钟,让LED亮1秒
GPIO.output(channel, 0) //将引脚设置为低电平,此时LED灭
time.sleep(1) //程序休眠1秒钟,让LED灭1秒
保存,并退出文件,执行python3 main.py,即可看到LED灯效果。
也许简单的LED灯起不了什么作用,但如果脑洞大开,是不是可以作为水位指示灯?如果结合温度传感器和蜂鸣器,我们是不是可以制作温度报警系统?树莓派的乐趣就在于此,只有想不到,没有做不到。
陈纪昌:利用树莓派培养创客精神
上面讲的实例最后已经接近物联网概念了,现在许多中小学都开设了创新实验室,其有别于传统的教学实验室,也在尝试一些最基础的智能教室控制,恰好和树莓派自由、开放的特点相符合。我们可以将上面的例子再扩展一下,通过Python控制电平高低,进而对教室灯光进行亮灭控制;还可以采用步进电机驱动的窗帘模块设计一块驱动板,通过GPIO控制步进电机的转动方向和速度,驱动板上的4个输入口连到树莓派的4个GPIO口,并利用PIN2给步进电机提供5V电压,驱动步进电机,完成窗帘开闭操作。然后大家可以试着到sourceforge下载webiopi源代码进行扩展安装,webiopi是一个可控制树莓派GPIO的面向物联网的Web框架,再通过手机或PC终端访问http://树莓派IP:8000,对教室灯光、窗帘等进行物联智能控制。
树莓派成本低,具有很强的拓展性,所以,对于一个创客来说,搭配不同的扩展模块,可以用树莓派实现各种各样的功能。例如,Web服务器、家用VPN 服务器、流量监视器以及树莓派无人机等,安装不同的操作系统,可以充当家用媒体播放器或成为黑客入侵的工具。国外甚至有人将树莓派发送到太空拍摄了一系列月球的表面照。也就是说,树莓派在前沿创新中将不断给我们带来惊喜。
结语
树莓派在教育领域的前景不可估量,不管是在信息技术教育普教层面,还是在各中小学的创新课堂里,它都是物美价廉的选择之一。中国乃至世界的未来在于创新,我们的孩子从小缺乏动手能力的培养,如果让他们接触到类似树莓派这样的开源硬件,能让教师探究开设更加具有时代性、创新性的教学内容,这样的学习也许能真正从“知识获取”向“知识深化和创造”转变,我们也才能真正进入大众创新的新时代。