
摘 要: 针对小型无人机航拍系统的功能要求和存在的问题.设计了一种图像和GPS 数据采集系统,并给出了系统的结构和工作原理。系统以ARM 单片机为核心,采用无线通信方式将串口采集到的数据发送到地面基站,并在上位机上显示。对数据采集、无线发送和上位机编程等关键问题作了分析,并给出了设计方案。实地试验表明.本系统工作稳定.可满足无人机航拍系统的要求。 关键词:无人机;STM32;无线传输;图像采集( D; D2 S" u# G: b& o/ g ) v" C1 n" Z+ r 无人机系统作为一种高端的遥控设备已经被广泛应用于军事侦查、远程监控和地质测绘等领域。通常无人机系统的首要任务是将实时采集到的图像信号通过无线通信设备传送到地面基站。国外对于这方面的研究较早,但由于技术封锁等原因,目前可供借鉴的资料很少,加之我国在该方面研究起步较晚,致使我国在无人机无线视频图像传输领域的技术较落后。现阶段的无人机图像采集技术主要有两种方式:一种是采用模拟传输方式,其频率使用率较低,系统易受干扰,其图像质量较差,信道编码效率不高,且抗多径干扰较差;另一种是采用模拟的CCD摄像头通过模数转换芯片变为数字信& S; ^7 a- z3 x( y3 e 号,再由控制器进行压缩和处理,这样不仅加重了控制器的负担,而且也易造成系统功耗较大。同时,由于小型飞行器的载重及能量供给非常有限,对机载部分的功耗、重量和安装尺度等都提出了更为严格的要求。本文设计了一种基于CMOs摄像头和数字图像处理芯片的图像和GPS数据采集系统。该系统具有体积小、传输速率高、传输距离远、带有数据压缩和图像增强功能的特点。 8 `# g* g% Q# J/ g- I$ C$ ` 地面基站作为无人机系统的“神经中枢”,担负着采集及分析飞行数据、验证及评价飞行效果和保证飞行安全等重要任务。因而,一个好的无人机系统常常需要有功能强大的地面基站平台才能发挥最好的飞行效果。本文设计了一种利用VB编程软件在PC机上实现的具有航迹记录与预测、手动控制飞行、飞行状态监控和视频图像显示等功能的地面基站平台。地面实验表明该系统具有很好的应用效果。' Y. E5 Y) L' H& }: i/ x/ @ 1 系统结构和工作原理 本系统包括机载的视频图像采集系统和地面基站平台两部分,其结构框图如图1所示。系统硬件由摄像头模块、GPS数据采集模块、STM32微控制器和NRF905无线通信模块构成。, P' H* V. f E5 m6 L/ J; G2 Y ![]() (1)机载微控制器通过控制指令控制VC0706图像处理芯片实现控制摄像头拍照、图像数据压缩以及数字图像传输等任务。 (2)机载微控制器将GPS接收机发出的数据按照国家标准的GPS接收机数据输出格式(GB/T20512—2006)进行解码。再将采集到的图像数据和GPS数据按照事先约定好的通信协议通过NRF905无线通信模块与地面基站的STM32微控制器进行通信,基站的微控制器再将数据通过内嵌的USB接口传送到上位机上。由此,实现了图像和GPS定位信息的采集、传输和上位机显示的功能。* t! t( s' Q) G " B( p& X. Q+ R- Q( L 2 相关问题及设计方案 - { X% P% S# a! f6 d 本系统大体可分为图像和GPS数据采集、无线通信以及上位机编程三部分。+ X0 Z9 {1 c, S5 q 0 L( {& Y& z8 ?% h7 R 2.1 数据采集系统3 ?. f0 ?" _! p7 x! k 图像数据采集需要克服数据量大、传输实时性等问题,同时,需要考虑到STM32微控制器内部数据储存容量有限,对图像数据需要进行分批传输。数字摄像头采集一幅480x640的图像数据量为307 200 B,而经过VC7076处理芯片进行压缩率为30% 的压缩处理后,数据量可以减少为92 160 B左右。STM32微控制器的串口传输速率可以达到115200b/s,STM32F103RBT6微控制器的内部数据存储器只有20 KB,无法保存一幅完整的图像数据。由于NRF905无线发射模块每次最多发射32 B的数据.因此VC7076中接收数据只需要微控制器发送起始地址和结束地址指令即可。所以,在微控制器的软件设计中定义了两块容量为1 KB的数据存储块,并且在接收数据时使用微控制器内嵌DMA模块。初始化时,设置DMA数据为串口数据输入,这样每当微控制器的串口接收到1 B的数据, 就可以通过DMA模块自动地保存到相应的地址中而不需要微控制器内部CPU的参与,这使得CPU可以空闲出来进行发送部分的处理。当一块数据接收完成后,会触发DMA 中断,CPU就可以在中断中重新配置起始地址和结束地址,使得微控制器能够循环进行数据接收。在程序中,首先定义了一个用于数据接收和发送的结构体,其中的数据成员是两个容量为1 KB的存储数据块和用于指示接收和发送所用的数据块指针。数据接收的软件流程图如图2所示。 ![]() 该软件程序初始定义为:' ]% D1 s( G$ X1 | struct Image_get_send {9 o- R) \3 x2 \0 s- y unsignedchar dat_ array[2][1024]; unsigned char send_ flag; unsigned char get_ flag; } 由于GPS接收机发出的数据以ASCII码的形式发出, 并且按照GB/T 20512—2006标准进行信息编码,因而需要对从接收机接收到的数据进行解码从而得到能进行处理和识别的数据。GPS接收机采用的是Gstar GS一89模块,该模块能够检测当前位置的经度、纬度、海拔高度、标准定位时间和接收卫星数等信息。GPS接收机输出的信息是以语句的形式进行发送的,总共有5种语句, 每条语句都以$开头,并以回车结束, 同一语句中的不同数据之间采用逗号隔开。其中,GPGGA 语句包含当前的定位信息, 也是应用最广的语句,因而,对GPGGA语句的解码最重要。GPRMC语句的格式如下: $GPGGA,(1),(2),(3),(4),(5), (6), (7), (8), (9),M,(10),M,(11),(12) ★ hh(CR)(LF)8 A8 W! S+ Z4 O; A- N 其中,(1)表示定位时间,(2)、(3)表示纬度,(4)、(5)表示经度,(9)表示海拔高度。对上述数据的解码是系统获取GPS数据的重点,解码的软件流程图如图3所示。, b2 H1 ]# }8 {: U8 c, \ ![]() 2.2 无线通信系统 无人机与地面基站之间数据的传送需要使用无线通信系统来进行。系统的无线通信部分采用的是NRF905—33A无线模块,该模块的最远通信距离可达到3 km,非常适于小范围内的通信网络,而且重量轻,适于在无人机上进行携带。 NRF905—33A无线模块一次只能传送32B,微控制器每次需要等待无线模块传送完成后才能进行下一次的数据传送。而系统中需要进行GPS和图像两种数据的传送。为了提高无线通信的速率和通信的准确性,系统采用了分时传送的方法,即利用GPS接收机每隔1S更新一次定位数据的特性,将GPS数据的传送设定为1S传送一次,而其他时间则进行图像数据传送。为了区分图像数据和GPS数据,在每次不同数据转换时采用了发送32个相同数据的方法与地面基站的接收机进行同步。 $ Y) _0 X5 y& k 2.3 上位机编程 - R9 K% B& C3 D7 p% D 上位机编程采用了Visual Basic编程语言。该编程语言是一种町视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,不仅简单易学,而且功能强大。 $ f% [; W3 \$ C) h. U 上位机需要解决的主要问题是如何进行图像的显示。由于传送到上位机的数据为JPEG格式.本文采用了一个较为巧妙的方法, 即先打开一个空的JPEG格式的文件,然后在有数据发送到上位机时就检测该数据是否为图像的数据头(0xf,0xd8)或数据尾(0xf,0xd9),并将数据写入到打开的图像文件中。当检测到的数据为数据尾时,就将图像文件显示出来。其编程语句如下。 Publie Sub lmageManage (bytinput ()As Byte,intlnputLenth As Integer) Dim n As Integer Dim S As Byte On Enrror GoTo errji) a1 I. }& ?. M! U4 Y0 a Put #1,,bytinput()2 a! T" ?, w, |7 N9 |' E$ T; D //将获得的数据写入到文件中 For n = 0 To intlnputLenth 一2 If bytinput(n+1)=&HD9 And bytinput(n)=&HFF Then //是否到最后的数据1 O( L5 X. a$ X9 d; _8 D/ O Close #1 Form1.Image1.Picture = LoadPicture(”C:krtaub.jpeg”)) I# j0 r' W2 r9 b3 N! d! z2 B& k //显示图像文件 flagl_c = False Open “C:\rtaub.jpeg“For Binary As #1 //打开一个JPEG格式的文件" q2 [4 T$ P0 a; T flag_c = True.& W9 d/ Q _# g( _ n = intlnputLenth 一2 //获取传人数据的长度 Form1.Text3.Text= ”” Rxd_code = 05 Z( o9 S( G# z, `+ ~4 r. y End If Next n3 \7 R# K' @' T2 I6 p- z" P6 o4 t U Exit Sub errji: //打开出错 Close #1 //关闭先前文件 Open”C:\rtaub.jpeg”For Binary As#1 //重新打开文件1 h8 b* E8 [: {, F( i, `1 d, k. S flag_ c=True flagl—5 G# M% e2 \8 w& A8 F( g C=False Exit Sub End Sub 本文针对无人机系统的特性以及要求,提出了一种基于STM32微处理器实现图像和GPS数据采集、传输以及在上位机显示的设计方案。经过静态的地 测试证明,该系统能够很好地实现设计要求的功能,而且传输速度较快,可以满足无人机系统的实时性要求:该系统运行良好,抗干扰能力强,有很好的继承性和维护性。本系统模块化的设计方案和实现方法对无人机系统的设计和研究具有一定的参考价值。采用STM32微处理器.可以大大降低无人机系统的硬件设计难度,缩短设计周期。此外,STM32微处理器还支持串口烧录和在线仿真,可以大大减少软件设计的成本。随着ARM 单片机功能的不断提升,基于ARM技术的STM32系列单片机以它特有的优势将在高新技术领域得到广泛的应用。8 P7 T+ L! _9 O# y . |* H, O9 b1 B/ J9 r: a 4 ~7 `6 h, \1 c* N8 O |
这样算的话是不是至少2S才能发送完成一幅图像,等到接收端处理完成,得多久,这样的延时,估计用着很不爽吧。不知道我说得对不对?