APP下载

基于树莓派的远程塔台技术模拟研究*

2018-07-11

单片机与嵌入式系统应用 2018年7期
关键词:塔台树莓温湿度

(中国民用航空飞行学院 空中交通管理学院,广汉 618307)

引 言

所谓的远程塔台技术[1]是指为偏远地区的小型机场提供远程管制服务的技术。管制员并不能通过所在塔台的窗口直接观察到管制地区机场内的飞机,而是通过将现场的实时视频信号传输到远方管制室来实现对飞机的远程指挥[2]。在管制员实施管制服务的整个过程当中,工作人员完全可以像在一般塔台指挥飞机一样来实施管制服务,但是在管制员远程指挥飞机的整个过程中,对于驾驶员来说是不可见并且是完全察觉不到的。管制员可以在管制室对偏远地区机场内的各种传感器、告警系统、灯光系统以及相关的空中交通管理与监视设备进行操控。管制员在进行整个指挥的过程中,所有的视频信息及图像信息都会被完整地记录并保存下来,这些信息数据可以用于以后的分析。

1 模拟实验平台搭建

在实验室中以树莓派为载体,来进行远程塔台技术模拟实验平台的搭建。采用树莓派Raspberry Pi 3B整合自编程序搭建远程终端,直接将信息采集设备收集的信息整理并传输,该种方法效率较高,且开发板体积小巧,操作便利,搭建简单,整体性强,能较好地根据即将进行的多种测试进行调整。采用路由器创造无线网环境,使树莓派Raspberry Pi 3B和用于远程控制的笔记本电脑具有同一IP,通过远程桌面来控制树莓派,并利用其进行数据传输。

局域网环境下数据传输快,延迟低,且有效解决了有线数据传输的布线复杂和成本问题。所搭建好的实验平台如图1所示,相关平台原理图如图2所示,Linux是一种开源的操作系统,获得模块和软件的途径多且便利,有利于不同功能的整合,并采用OpenCV、VLC等组件实施视频采集和传输。Python语言具有丰富和强大的库,能够把用其它语言制作的各种模块很轻松地联结在一起,利用Python的相关编程设计,实现DHT11模块对温湿度的采集并传输,通过控制RTL天线并运行DUMP1090模块实现对ADS-B信号的获取。

图1 实验平台的搭建

图2 平台原理图

2 相关硬件简介

2.1 树莓派简介

树莓派[3](Raspberry Pi) 是2012 年由英国树莓派基金会发行的一款卡片式计算机,本次实验所用树莓派如图3所示,它采用了 ARM架构处理器和 Linux 操作系统,在只有信用卡大小、购买成本只需200 元左右的硬件电路板上实现了个人计算机的全部功能。树莓派接口丰富,可扩展性强,有着丰富的开源软件资源,与传统的嵌入式开发平台相比,在速度、集成度、价格和效率上有着明显的优势,因而上市以来在嵌入式开发领域发展迅速。本文将以树莓派Raspberry Pi 3B型机作为开发机,它搭载了1.2 GHz的64位4核处理器,内装802.11 b/g/n无线网卡和蓝牙4.1适配器,最大驱动电流增为2.5 A。在接口方面,树莓派拥有15针头MIP相机(CSI)界面,可被树莓派相机(无红外线版)使用;4个USB2.0规范接口;MicroSD卡槽;17个GPIO及HAT 规格铺设[4]。

图3 实验所用的树莓派

2.2 DHT11简介

DHT11是一款含有已校准数字信号输出的温湿度复合传感器[5]。本次实验所用的DHT11如图4所示, 其精度湿度为±5%RH, 温度为±2 ℃,量程湿度为20~90%RH, 温度为0~50 ℃。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、响应快、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中在苛刻应用场合的最佳选择。产品为4针单排引脚封装,连接方便。

DHT11模块与树莓派引脚的连接说明为(有3线和4线制两种,本文用的是3线制):①VCC 外接3.3~5 V;②GND 外接GND;③out 小板开关数字量输出接口,接树莓派I/O口。

图4 实验所用DHT11

DHT11与树莓派连接图如图5所示。

图5 DHT11与树莓派相连接

2.3 其它相关硬件简介

本文所用的RTL天线采用R820T2 TUNER芯片取代R820T,其接收效果更好,灵敏度更高,支持SDR RTL1090接收ADS-B信号、978 MHz和1 090 MHz的脉冲信号,支持DVB-T地面无线数字电视信号和DAB FM等无线信号。在视频监控方面,使用树莓派的CSI接口摄像头。

3 程序设计及相关功能实现

3.1 影像监视及视频流传输

用树莓派板子上的内置Camera接口来获取影像,通过网络Streaming Protocol的方法将摄像机的影像传到网络上,用VLC软件来实现远程监控[6]。其命令如下:

$sudo apt-get update

$sudo apt-get upgrade #更新系统的安装程序apt-get

$sudo raspi-config #选择Enale Camera引导树莓派的摄像机

$sudo apt-get install vlc #安装vlc软件

$raspivid -o - -t 0 -w 1024 -h 768 -fps 30 |cvlc -vvv stream:///dev/stdin --sout‘#standard{access=http,mux=ts,dst=:8160}’ :demux=h264 #执行streaming,制作视频流(参数介绍:w视频宽度,h视频高度,fps每秒传输帧数,dst网络的端口,demux视频压缩格式h264)

运行raspivid,树莓派的Teminal终端显示如图6所示,树莓派开始采集视频流。在远程连接的笔记本电脑上通过VLC软件,连接地址http://192.168.0.100:8160(本实验所用树莓派IP为192.168.0.100),就能监视树莓派的实时影像,所监视的飞机模型如图7所示。

图6 树莓派Teminal终端显示

图7 远程监视的画面

3.2 温湿度气象数据的采集及传输

3.2.1编程语言选用

Python语言具有丰富和强大的库,它常被昵称为胶水语言,能够把用其它语言制作的各种模块很轻松地联结在一起[7]。Python是纯粹的自由软件,语法简洁清晰。Python还可以交互模式运行,比如主流操作系统Unix/Linux、Mac、Windows都可以直接在命令模式下直接运行Python交互环境。直接下达操作指令即可实现交互操作。树莓派Raspberry Pi的操作系统是Linux系统,因此选用Python语言通过相应的编程来调用DHT11模块功能,获取温湿度数据。在树莓派上安装Python语言,输入以下命令:

$sudo apt-get update

$sudo apt-get upgrade

$sudo apt-get install python2.7

编码方式:PR库有两种方式,一种是bcm,另一种是wiringPi的方式,两者的区别大致是bcm的pin的序号为0,1,3,...是与每一个GPIO引脚对应的,不包含GND和电源之类的在内,而wiringPi则是从电源开始为0,然后按增序排。本文采用bcm方式,在Python的脚本中,应在setmode函数里面制定编码方式为bcm,所连树莓派引脚为GPIO4,即channel=4,脚本编辑为:

channel=4

data=[]

j=0

GPIO.setmode(GPIO.BCM)

3.2.2DHT11模块时序信号

DHT11模块有两个关键的时序信号:开始握手阶段和数据发送阶段。开始握手阶段:主机端GPIO发送开始信号首先拉低至少18 ms,然后拉高20~40 μs,模式变为IN等待信号输入,DHT11等待主机端开始信号(低电平)结束后,发送80 μs低电平响应开始信号,然后DHT11拉高电平80 μs。握手完毕,如图8所示。

数据发送阶段:一次的湿度和温度数据,DHT11需要发送40位(0、1)数据,每一位数据之前都以50 μs低电平开始,随后的高电平时序信号,持续26~28 μs表示这一位是0,持续70μs表示这一位是1,然后继续50 μs低电平,紧接着下一位的高电平开始,如图9所示。40位数据的组成=8位湿度整数部分+8位湿度小数部分(暂时没用)+8位温度整数部分+8位温度小数部分(暂时没用)+8位校验和。8位的顺序都是高位先出,然后用移位相加的方式,将这8位转换成整型数字。

图8 开始握手阶段

图9 数据发送阶段

脚本编辑为:

while j < 40:

k = 0

whileGPIO.input(channel) == GPIO.LOW:

continue

whileGPIO.input(channel) == GPIO.HIGH:

k+=1

if k > 100:

break

if k < 8:

data.append(0)

else:

data.append(1)

计算湿度、温度、校验和按照每8位转换成一个十进制数字,脚本编辑为:

fori in range(8):

humidity +=humidity_bit[i] * 2 ** (7-i)

humidity_point += humidity_point_bit[i] * 2 ** (7-i)

temperature +=temperature_bit[i] * 2 ** (7-i)

temperature_bit += temperature_point_bit[i] * 2 ** (7-i)

check +=check_bit[i] * 2 ** (7-i)

tmp = humidity + humidity_point + temperature + temperature_point

通过文本编辑器输入以下程序,并保存成DHT11.py:

$nano DHT11.py

输入完成后,通过Ctrl+O组合键存储程序,Ctrl+X组合键离开nano编辑器。输入以下命令就能获取当前的温度和湿度:

$sudo python dht11.py

若check值和tmp值不相等,就会输出“wrong”,并输出相应的校验值,直到check=tmp,才会输出温湿度值,如图10所示为测试几次输出的错误校验值,图11所示为正确值,当前所测温度为19 ℃,湿度为36%。为了检验所测数据的准确性,把手指放在DHT11传感器上,显示结果会明显发生变化,温湿度值均会升高。

3.3 航班监视实现

所需要的软件都是在网上的,首先要先安装一个svn软件,用git即可。终端下输入指令:

#sudo apt-get install git

#sudo apt-get install cmake

安装两个软件,“rtl-sdr”软件,网址位于:http://github.com/pinkavaj/rtl-sdr.git,它是一个RTL28320芯片的控制软件,负责控制电视棒频率,类似破解驱动。另一个是“dump1090”软件,网址位于:https://github.com/antirez/dump1090。它是一个把无线电中的数字信号提取出来并解码的软件[8],就是解码S模式应答机的内容,分别下载安装两个软件并编译,(以dump1090为例)终端下输入指令:

#git clone https://github.com/antirez/dump1090.git

#cd dump1090/

# make

图10 错误数据的校验

图11 所获取的温湿度

运行dump1090,模型将开始收集附近配备ADS-B[9]飞机的信息。终端下输入如下命令:

#sudo rmmod dvb_usb_rtl28xxu

#sudo ./dump1090 --interacitve --net

树莓派终端就会显示此时在天空中飞行的一些飞机的数据信息,如图12所示,既能收到中国民航飞行学院广汉分院训练用的小型机,又能收到在空中飞过的大型民航运输客机的信息,界面的相关参数为:Hex16进制数据、Flight航班号、Altitude飞行高度、Speed飞行速度、Lat/Long经纬度地理坐标。用远程控制的笔记本电脑进一步访问http://192.168.0.103:8080,便可获取结合Google地图的详细飞机轨迹等相关信息[10],如图13所示。对于民航客机,还可访问FlightAware、FlightStats等相关网站,获取和此航班有关的更多信息,比如飞行时间、机型型号、飞行计划和历史航班等,如图14所示。

图12 终端显示的ADS-B信息

图13 结合Google地图的显示画面

图14 访问FlightAware获取航班信息

结 语

本文介绍了远程塔台的主要实现和工作原理,并罗列了主要的程序设计过程。程序设计主要通过Linux系统和Python语言完成,实现了对远程终端(树莓派Raspberry Pi 3B)的控制,以及远程终端影像视频信息获取、传输,温湿度气象数据的获取,ADS-B信号接收的功能。本次模型建设基本实现远程塔台技术的几个基本功能,但在功

能的实现中,还存在一些不足之处:影像视频传输存在2~3 s的延迟,气象数据只采集了温湿度,还可添加更多的传感器模块,实现更丰富的气象资料的采集传输。DHT11在获取温湿度时,错误率还是比较高的,暂时不知道如何比较准确地识别时序信号,而且在树莓派执行多任务时,很可能错得很离谱。

猜你喜欢

塔台树莓温湿度
温湿度控制器在回收砂冷却系统中的应用
新时代机场空管塔台的基本形态以榆林榆阳机场空管塔台设计为例
塔台
基于DSP的多路温湿度监测系统
基于树莓派的骑行智能头盔设计
飞机场的塔台是干什么的?
新一代民机试验场指挥塔台设计研究
基于温湿度控制的天气预测装置
基于树莓派的远程家居控制系统的设计
蒸发冷却温湿度独立控制空调系统的应用