综述

Python publisher01 37℃
                                                                                          by 王鹏钦 on 2019.06.14

树莓派是世界上最小的台式机,系统基于Linux,由Eben·Upton在2012年3月发行,其特点是集成了PC和单片机的功能于一体。在本篇综述中,首先讨论树莓派的基本功能及其实现,之后基于项目加深对树莓派的理解。

基本功能

我们认为,树莓派作为PC的最基本功能是联网,作为单片机的最基本功能是编写程序和连接并控制输入输出设备。

联网

联网后,既可以通过Google等浏览器访问互联网,也可以通过linux终端下载互联网上的资源。无论是软件包的更新还是python中库的安装,都离不开联网,这是树莓派作为小型台式机的基本功能之一。以下为联网的实现。

1. 无线

初次启动后,将键盘和显示器连接到树莓派上,初始化系统后配置wifi。方便起见,我连接的是自己的手机热点,这样只要树莓派在热点覆盖的范围内启动,便自动连接。


初次配置wifi

初次配置wifi后,便不再需要键盘和显示器。用笔记本电脑+putty+vncviewer实现树莓派的图形界面控制。
在putty和vncviewer软件安装完成后,在putty中输入ip地址,如图putty。


putty

在login中输入pi的用户名和密码实现树莓派的远程网络访问,注意:这一步电脑和树莓派必须在同一个网段下!接着,将vncservr的端口设为1后,就可以用vncviewer进行图形界面控制了。

login

在vncviewer中新建连接,输入IP地址::端口号,在弹出的窗口中输入密码,实现图形界面控制。


vncviewer

2. 有线

将树莓派和笔记本电脑用网线连接起来后,打开网络和共享中心,点击 无线网络->属性->共享,允许其它网络用户通过此计算机的internet来连接,即将笔记本电脑的网络分享给树莓派。


网络共享

在控制台输入arp-a查看到树莓派的ip地址后,和无线连接方式一样使用putty+vncview进行图形界面操控。

编程

如果说联网是树莓派作为小型台式机的最基本功能,那么它作为单片机的基本功能毫无疑问就是编程。树莓派提供了一个十分强大的平台,这些平台允许用户通过Python、Java和C等常用语言创建程序轻松地与硬件交互。


自带开发工具

尽管树莓派提供了上图所示的诸多开发工具,但我选择的是在自己的Windows上进行开发,编写完成后通过WinSCP传输到树莓派。


WinSCP

编程的过程包含在各个项目中,本身不再解释。

项目实例

以下为我在为期半月的树莓派学习中设计并完成的项目。这些项目让我对树莓派的使用和开发有了一定的了解,并通过对比STC15系列单片机和AT89C51单片机明了了一些树莓派的优势与劣势。

1. 基于树莓派的火灾报警器

选题背景

在大型仓库、商场、高级写字楼、宾馆等场所,火灾报警采用集中区域报警控制方式,其系统复杂、成本较高。而在居民住宅区、办公室等小型防火单位,需要设置一种单一或区域联网、廉价实用的火灾自动探测报警装置。因此,研制一种结构简单、价格低廉的数字联网火灾自动报警器是必要的。

设计思路

采用树莓派3B作为控制器件,传感器采用MQ-2型气体传感器和数字型温度传感器DS18B20完成对烟雾和温度的检测。


控制流程

报警条件:有害气体浓度达到设定的阈值或环境温度达到设定的最高值
应急措施:通过蜂鸣器与LED报警,并启动风扇以散热和消烟
人机交互:在树莓派上利用python中的socket模块搭建基于TCP协议的服务器,在PC端与之相对应地通过python中的socket模块搭建客户端,或编写安卓app作为移动客户端
当移动端或PC端未通过人机交互控制树莓派时,每隔1s进行自动检测,若达报警条件则启用应急措施;当移动端或PC端通过人机交互控制树莓派后,使用者可远程监测环境温度和气体浓度,达到报警条件后会启用应急措施并向使用者发送警报。

实物电路


实物电路

2. 基于STC15系列单片机的烟雾报警器

选题背景

2019年宏晶杯2题

设计思路

通过MQ-2烟雾传感器检测并通过AD模块和LCD1602液晶显示屏显示烟雾浓度,通过按键调整报警阈值,达阈值后产生蜂鸣器响和LED点亮的模拟输出动作并启动风扇。风扇的转速与时间控制根据题目要求的设计相应算法:采用PI算法,烟雾浓度与阈值的差值作为比例算法的输入、烟雾浓度的下降量作为积分算法的输入。

电路设计


仿真电路

3.基于AT89C51的计算器

选题背景

课程微处理器实验3.7

实验要求

AT89C51本身作计算器,通过与16个按键和LCD 1602实现并显示两个数的加减乘除

电路设计


计算器

4.用树莓派做RTMP流直播服务器(进行中)

选题背景

在智能车实验中,要实现摄像头画面的实时传输,要考虑视频的采集、流的传输与接收、服务器与客户端的配置。
采用GStreamer采集摄像头捕获的视频,RTMP模块用于流的传输与接收。

GStreamer与RTMP

gstreamer是一个用于开发流式多媒体应用的开源框架,其核心是pipeline及用于扩展功能的插件,基本元素有element、pad、bin和pipeline。
element:节点,最基本的单元
pad:相当于插头,节点的输入和输出
bin:element按照某种目的实现的集合,可实现某种功能
pipeline:完整的流式数据处理管道
RTMP:Real Time Message Protocol,基于TCP协议的实时信息传输协议

软件配置

avconv 和 GStreamer 用于采集摄像头捕获的视频流并推送到 RTMP 服务
NGINX 和 RTMP 模块,用于接收视频流,同时提供视频发布功能
Strobe Media Playback,一款基于 Flash 的网页视频播放器
参考:用树莓派做 RTMP 流直播服务器,可推送至斗鱼直播 | 树莓派实验室 http://shumeipai.nxez.com/2017/11/01/build-rtmp-stream-live-server-with-raspberry-pi.html

项目进展

完成了NGINX和RTMP模块的安装与配置,开启GStreamer模块采集后如图所示。


GStreamer采集

目前存在的问题:在开启浏览器的Flash后,显示无法连接到网络,即无法将摄像头采集到的视频呈现给客户端的浏览器。但注意到左上角视频采集的数据越来越大,说明开始采集。


Strobe播放器

感受

项目1与2的横向对比

可以看到,项目1与项目2实现的是相同的功能,但无论是电路实现还是代码实现,树莓派比STC15系列单片机要简单许多。其中最直观的原因就是项目1采用了python编程而项目2使用的是C,而且我们在为STC15配置网络的时候要额外加上一个ESP8266wifi模块,所以对比之下显得树莓派真的太方便了!

项目1与3的纵向对比

项目3实现的是简单的计算功能,但它的C源代码达到了200多行;相比之下,项目1实现的为更复杂的报警系统,但却仅仅需要几十行代码。无论从代码编写还是调试检查的角度,真的不是一个等级的啊!

为何树莓派如此方便呢?这要从树莓派的宗旨说起,它正是为了让全世界的计算机工作者更好地编程而实现的,所以既有网络层面的支持又有开放的编程平台、支持更多的编程语言。
结构决定功能。CPU分为两类:MCU(微控制器)和MPU(微处理器) 。树莓派用的是MPU,而单片机用到的是MCU,树莓派属于开源硬件,而STC属于传统单片机开发板,所以二者的运算能力有巨大差别。
有利必有弊,人们常常会注意树莓派的高度便捷而忽略了它的高度封装。换句话说,虽然树莓派是为编程而设计,但我们却接触不到它最底层的东西。如果想要解除最底层最接近原理的,可以更多地考虑单片机。玩STM系列可以学到更多基础的知识,脚踏实地慢慢来,从零开始,看着自己的作品一点点完善,难道不是一件很有趣的事情吗?
另外一点,就是成本。对于量产化的产品,设计成本的重要性不言而喻。而树莓派开发的高成本在一定程度上也限制了它的发展。
没有最好的,只有最合适的,通过这段时间的学习我不仅仅学到了树莓派开发的知识和过程,更明白了要根据自己的爱好和需要选择合适的产品。更重要的,关于树莓派,关于开源硬件,关于创新项目,很开心走上这条道路,也希望在老师和同学的陪伴下能够越走越远!

转载请注明:Python量化投资 » 综述

喜欢 (0)or分享 (0)