1.3 树莓派能做什么?
对于树莓派应用的方向,Eben(树莓派创始人)早先的初衷是为了让孩子们学习编程,增加编程能力的,但是被创客界的Maker们和一些电子工程师、软件工程师发现后大放异彩,大家分别在各自的领域展现对树莓派独到的见解,制作出各种匪夷所思的有趣应用。
例如,有人用树莓派打造一个家庭影院,利用一款叫作KODI的系统让树莓派成为家中的电视盒,既能够播放影片,又能够作为电子相册展示高清的图片,还能够在闲暇之余听听音乐,而小小的设备可以贴在电视机的背后,完全不占用空间;还有人DIY了复古的留声机,利用树莓派结合3D打印的外壳,制作一个可爱的复古留声机,还能够连接蓝牙并进行音量调节,如图1-13所示。
图1-13 DIY留声机
国外有不少电子爱好者将树莓派配置成无线路由器,再结合Pi-hole系统进行广告的屏蔽,构建家中带广告过滤功能的路由器设备。
还有更多人使用树莓派搭建BT下载服务器,让家里的宽带在空闲时下载学习资料、视频等;也有网络工程师在自己的网络环境里搭建了简单的FTP文件传输服务器,用来发布自己的资源。还有一些比较前卫的程序员将树莓派配置成代码托管服务器来托管代码,搭建自动同步git仓库的自动化设备。
身边有一些无线电爱好者利用树莓派制作小功率网络收音机播放设备,制作成小巧的FM电台播放星球大战的主题曲或者是利用电视棒结合树莓派制作一个SDR(软件定义无线电)设备将空气中不间断的电波用可视化的方式展现出来,如图1-14所示。
图1-14 树莓派SDR
在树莓派上搭建LNMP的环境制作动态网站和一些基础架构的服务器,也是一个非常常见的选择,在自己的家中通过搭建一个基于Nginx Web服务器的动态网站平台到树莓派设备上,再通过PHP脚本语言和MySQL数据库结合来实现动态调用也是非常不错的选择。搜索全球树莓派网站的实例可以发现,很多国外的小型Web服务器都基于树莓派搭建了APACHE Web(Apache一种常见的Web服务器软件)服务,从爬虫的数据结果上能看到都已运行较长时间,说明其稳定性在配置好了系统的条件下还是比较稳定的,而且这样一个低功耗的设备谁不想拥有呢?
还有无线电爱好者使用树莓派结合USB硬盘阵列设备搭建了一个家用的NAS(网络附加存储)设备,实现家庭资源共享平台,如图1-15所示。
图1-15 树莓派NAS设备
更厉害的是,有运维工程师利用树莓派结合cobbler实现了网络批量自动化安装CentOS Linux操作系统的平台,该自动化运维部署服务器大大降低了运维人员的运维成本。这期间还有运维工程师利用开源的zabbix运维监控软件在树莓派上构建了一个实时监控公司内网服务器状态的监控设备,为公司运维人员提供了很好的监控平台。
随着时间的推移,越来越多的爱好者开始在树莓派上实现自己大胆的想法,还有更甚者利用树莓派搭建Hadoop集群或kubernetes(以下简称k8s)集群,如图1-16所示。
图1-16 树莓派k8s集群
以上都是局限在树莓派的软件应用领域的一些应用案例,由于树莓派的软件特性是能够运行Linux系统,在树莓派的软件生态里,Raspbian系统由于其诞生于Ubuntu操作系统,继承了其鼻祖Debian系统的生态多样性,其软件生态也呈现出了Debian软件仓库的那种庞大繁复的特性,从硬件应用到软件开发再到神经网络,都可以找到它支持的软件包,那么相对于偏硬件的应用又有哪些呢?
由于树莓派GPU的性能不错,当给树莓派搭配了官方的摄像头后,就可以实现拍照、摄像功能,可以使用MJPG-Streamer制作网络监控设备或者制作一个小的数码相机,如图1-17所示。
图1-17 SnapPiCam
一些用户将树莓派用在了车载设备上,例如结合GPS模块,通过串口读取经纬度和速度的信息,然后通过3G或者4G网络向谷歌地图的API(Application Programming Interface,应用程序接口)发送请求,实时在地图上标注当前的位置和进行导航设置,如图1-18所示。
图1-18 树莓派车载导航系统
随着特斯拉、波士顿机器人等各种黑科技的不断展现,越来越多的爱好者开始喜欢机器视觉带来的体验,其中机器视觉中以OpenCV的视觉框架技术最受青睐,在嵌入式领域里,很多人在不遗余力地将这个视觉框架移植到嵌入式硬件上。
当然,树莓派也不例外,目前在树莓派上可以非常轻松地搭建OpenCV的环境,只需要一个摄像头就可以进行人脸识别、动态检测等功能,图1-19所示就是一个人脸识别的例子。
图1-19 OpenCV人脸识别
结合人脸识别和动态检测技术,再加入舵机等硬件设备,可以尝试制作一个类似钢铁侠服务机器人的原型机器人。如果使用人脸识别技术结合舵机和水弹枪,甚至可以DIY一个小型防卫系统,通过识别人脸在图像中的位置来进行瞄准和攻击,如图1-20所示。
图1-20 人脸识别防卫水弹
还有很多基于视觉的DIY应用,将在后续章节详细介绍,此处不再赘述。
声音方面,结合USB声卡可以实现语音采集并通过百度语音平台进行语义分析,通过开源的snowboy的平台可以创建唤醒词,这样就可以制作类似天猫精灵一样的网络音箱设备,可以通过呼叫唤醒词来激活树莓派的响应。如果想制作这样的设备,需要提前准备一个兼容USB接口的麦克风设备,因为树莓派本身不带有音频录入的设备。
图1-21所示是一个创客制作的语音天气提醒的盒子,其中就是依靠树莓派连入网络,通过内部隐藏的麦克风来监听用户的请求。用户询问时说出唤醒词来唤醒设备,唤醒词可以自己定义,例如:“天猫精灵,今天天气怎样?”或者“Alexa,告诉我今天天气如何?”,设备通过语义的识别然后调用网络中的相关API获取信息,再转换成声音播放出来,用到的技术多为TTS(Text To Speech,文本转语音)。这样就形成了一个类似“智能音箱”的设备。
图1-21 树莓派语音天气盒子
对于家庭打印机而言,稍加改造就可以将树莓派摇身一变,变为一台网络打印机的打印服务器。如果是3D打印机,树莓派还可以成为其监控设备,只需要下载octoprint操作系统,烧录到TF卡上并插入树莓派启动,简单配置就可以实现,如图1-22所示。
如果涉及树莓派GPIO引脚的功能,那么可以做的就更多了,普通的引脚结合继电器模块就可以控制电灯、插座等设备。在国外,有位工程师就将树莓派和微波炉结合在一起,配合一把扫码枪制作了一台智能微波炉(见图1-23),能够通过扫描食物外包装的条码自动设定时间和火候,只需要将食物丢进微波炉,扫描枪扫一扫条形码就可以自动烹饪了。
针对学生或者科研团体,也有树莓派的适用场景,富有爱心的创客们利用树莓派为盲人制作了超低成本的盲文显示器。
图1-22 3D打印机监控设备
图1-23 树莓派微波炉
有学生在业余时间利用树莓派和摄像头制作了树莓派电子显微镜(见图1-24),不仅可以以超低价格使用电子显微镜观察微生物,还可以将拍摄的高清照片上传到Web服务器提供给其他同学,甚至可以通过OpenCV进行处理,将微生物的菌落通过机器视觉计算出来,既准确又快速,还可以实时监控某个特定形态的微生物的运动状态。这不仅大大减少了学校教具的开销,还加强了学生的动手能力和编程能力,真是一举两得!
图1-24 树莓派电子显微镜
对于物联网属性的应用,主要体现如下:
◆ 二次元的UP主用树莓派搭建B站直播“点歌台”。
◆ 叮当:一个开源的树莓派中文智能音箱项目。
◆ 用HomeKit+Siri声控家用电器开关。
◆ 用树莓派DIY共享鱼缸,支持微信远程喂鱼。
◆ 用树莓派做RTMP流直播服务器,推送至斗鱼直播。
类似这样的应用真是层出不穷,甚至还有将树莓派用在工业领域,想要实现工业互联网原型的应用,这里不再赘述。
针对航模爱好者和电子爱好者,可能更让他们感兴趣的是用树莓派DIY六足行走的机器人;制作DonkeyCar自动驾驶小车,如图1-25所示;或是制作Rapiro机器人,如图1-26所示;或是把树莓派制作成复古游戏机;再或者是利用树莓派控制微型CNC,制作3D打印机、激光切割机等炫酷的设备,或者作为核心主控进入航模的静改动的应用中;更加有趣的是利用树莓派实现图传的功能并搭载到遥控小车或者遥控船上、四轴飞行器上,门类五花八门,不一而足。
图1-25 DonkeyCar漂移驴车
图1-26 树莓派机器人Rapiro Bot
深入剖析这些应用的核心,其实还是一些小的基础应用或技巧和对Linux系统的应用的一个扩展。很多玩家在购买了树莓派后,只开机了一次还没有领略到其有趣的功能,树莓派就被丢弃在某个角落并被遗忘,究其原因,很可能是遇到了Linux系统的技术门槛或者是对树莓派硬件GPIO的操作不了解,以致于遇到问题没办法解决就只能放弃了。为了避免上述问题,本书会通过后续章节慢慢用抽丝剥茧的方式带领读者进入树莓派的奇幻世界!