基于USB HID和nRF24L01+的飞行器无线调试系统
2017-01-05游安华胥加林
游安华,胥加林
(1.南京理工大学 工程训练中心,南京 210094;2. 南京理工大学 机械工程学院)
基于USB HID和nRF24L01+的飞行器无线调试系统
游安华1,胥加林2
(1.南京理工大学 工程训练中心,南京 210094;2. 南京理工大学 机械工程学院)
为了通过上位机实时采集飞控数据、在线调试飞行器,设计了一种基于USB HID和nRF24L01+的无线地面调试系统。系统接收飞控数据,并将数据发送到上位机,用于动态显示飞行器状态和后续研究分析;同时系统可以将上位机的控制信号发送给飞控系统,实现在线调试、上位机控制。测试结果表明,该调试系统成本低、实时性好,满足四旋翼飞行器的开发需要。
四旋翼飞行器;STM32微控制器;USB HID;nRF24L01+;无线通信
引 言
四旋翼飞行器机械结构简单、操控性能优越,具有良好的军事侦察、搜索救援性能[1-2]。且随着微电子技术、传感器技术的进步,四旋翼飞行器得到迅速发展[3]。为加快飞行器的开发,需实时采集飞行器姿态角和传感器数据,并对其研究分析,以优化控制算法。而由于飞行器的飞行特点,不能通过有线传输的方式采集数据,一定程度上影响飞行器的开发速度。但是,随着中短距离无线传输的发展,无线传输成为重要的数据传输方式。
本文基于USB HID和nRF24L01+,设计了一种无线地面调试系统。四旋翼飞行器的飞控系统将传感器数据、PID参数、飞行器姿态角等数据打包后通过nRF24L01+模块传给地面调试系统,地面调试系统的nRF24L01+模块将接收到的数据基于USB HID协议通过STM32微控制器模块上传到上位机,实时显示飞行器姿态,并将数据有选择地存储下来,用于后续的研究分析。同时可以通过上位机修改飞控系统参数,然后基于USB HID协议通过STM32微控制器模块和nRF24L01+模块发送到飞控系统,实现飞行器的无线调试。最后,基于某开源上位机对无线调试系统进行了测试。
1 系统硬件设计
系统结构主要包括USB HID协议、nRF24L01+模块、STM32微控制器模块3个部分。系统总体方案如图1所示,本文主要设计地面调试系统部分。
图1 系统总体方案图
1.1 USB HID协议
USB[4]是一种计算机外围设备接口标准,具有成本低、传输速度快、数据传输可靠、支持热插拔等优点。
HID类USB接口是为一些人工输入、输出设备而设计的,其与计算机间的通信采用控制传输和中断传输两种方式,中断传输方式拥有强大的错误检测和错误重传的功能[5]。同传统的数据采集系统相比,HID类USB设备使用Windows系统自带的HID类驱动程序,无需为其编写复杂的上位机USB驱动程序,具有无驱动、简单、实时的优点。
1.2 nRF24L01+模块
nRF24L01+是一款工作于2.4~2.5 GHz频段的无线收发芯片,有多达125个频点,可通过SPI传输数据,最大传输速度为2 Mbps,并可通过跳频来避免干扰。室内传输距离为30~40 m,室外传输距离为100~200 m。内置CRC校验和出错重传机制[6]。图2是nRF24L01+模块的电路原理图。
图2 nRF24L01+模块电路原理图
1.3 STM32微控制器模块
STM32F103C8基于Cortex-M3内核,最高工作频率达72 MHz,内部集成64 KB FLASH,全速USB2.0收发器,且最高速度达12 Mbps,是一个完整的小型片上系统,是小型USB应用的理想选择。微控制器通过6个引脚与nRF24L01+模块相连,分别是:MISO、MOSI、SCK、CSN、CE、IRQ。图3是STM32微控制器的电路原理图。
2 系统软件设计
系统软件设计主要包括USB HID设备程序和无线收发模块程序。由于nRF24L01+无线收发芯片的室外传输距离为100~200 m,而人为控制距离为100 m以内,满足控制需要,所以未设置复杂的预警程序。但如果接收数据出错,则会在上位机显示报警信息。
2.1 USB HID设备程序
该地面调试系统利用ST公司提供的USB-FS Devic library V3.3固件库编写下位机程序。USB HID设备程序主要包括初始化程序、中断程序2部分。USB HID接入计算机后,计算机先枚举到设备,获取设备路径。当计算机与设备建立连接后,通过中断的方式进行通信,主机请求响应和数据收发都在中断程序中完成。
(1) 初始化
初始化主要包括USB中断使能、优先级配置、时钟设置、数据缓存设置、获取序列号、对接口上电并复位接口、设置设备地址和端点地址为0、枚举。其中枚举包括获取设备描述符、配置描述符、接口描述符、HID描述符和报告描述符。
(2) 中断程序
中断服务程序根据不同的中断请求,转入相应的处理程序。处理过程为在USB_LP_CAN1_RX0_IRQHandler()函数处响应USB中断请求,并跳转到中断服务函数USB_Istr(),以轮询的方式访问各中断寄存器,判断发生的中断请求。根据不同的中断类型,转入相应的处理程序,并返回处理结果,完成通信任务。
2.2 nRF24L01+收发程序
无线模块软件包括初始化、发送模式、接收模式3个部分。
(1) 初始化
nRF24L01+模块进行无线通信前,需要对其进行初始化,主要包括发送地址、接收地址、应答方式、自动重发次数、工作模式等。该调试系统的工作模式为增强型Shock Burst模式,使能自动应答,自动重发时间为500 μs,最大重发次数为10次,传输速率为2 Mbps。
(2) 接收模式
通过寄存器RX_ADDR_PX配置接收地址为通道0,置高CE引脚130 μs,当接收到有效的数据和地址且CRC校验通过后,自动去除数据头、标志位、校验码,将数据写入RX_FIFO,通过USB将接收到的数据发送给上位机。
部分代码如下:
voidNRF_Check_Event(void){
u8 sta =NRF_Read_Reg(NRF_READ_REG + NRFRegSTATUS);
u8 rx_len =NRF_Read_Reg(R_RX_PL_WID);
NRF_Read_Buf(RD_RX_PLOAD,nRF24L01_2_RXDATA,rx_len);// 读取接收到的数据
Usb_Hid_Adddata(nRF24L01_2_RXDATA,rx_len);
图3 STM32微控制器电路原理图
NRF_Write_Reg(NRF_WRITE_REG + NRFRegSTATUS, sta);
}
(3) 发送模式
STM32微控制器接收到上位机发送过来的命令后,将nRF24L01+设置为发送模式,自动生成数据头、CRC校验码并置高CE发送数据,数据发送完毕后立即自动进入接收模式,接收应答信号。当接收到应答信号后,置1状态寄存器TX_DS,并清除TX_FIFO寄存器中的数据。若未收到应答信号,则认为数据丢失,将重发数据,直到发送成功或达到最大重发次数。
部分代码如下:
voidNRF_TxPacket_AP(uint8_t * tx_buf, uint8_t len){
PMAToUserBufferCopy(Hid_RxData,ENDP1_RXADDR,64);
SPI_CE_L(); //StandBy I模式
NRF_Write_Buf(0xa8, tx_buf, len); //装载数据
SPI_CE_H(); //置高CE
}
3 测试验证
图4 无线数据传输模块
为了验证该无线地面调试系统的有效性,基于某开源上位机分别进行了飞行器姿态显示、在线调试和数据分析测试。图4为该调试系统的无线数据传输模块。
3.1 姿态显示
姿态显示可以将无线模块发回的数据在上位机中动态显示,并将传回的数据赋予三维飞行器模型,再现飞行器的空中姿态,便于PID参数和控制算法的测试验证。图5为飞行器状态显示图。由图5可知,无线模块传回的数据有:遥控器通道行程、飞行模式、电机转速、飞行器高度等。由遥控器和电机数据可知,飞行在顺时针旋转。
图5 飞行器状态显示
3.2 在线调试
PID参数调试需要大量的试验,而每次修改PID参数
图8 加速度计和陀螺仪X轴信号滤波前后对比图
后,都需要对程序重新编译、下载,占用大部分的调试时间。无线地面调试系统中的在线调试功能
可以通过上位机修改PID参数,并通过无线模块发送到飞控,有效降低了PID参数调试时间。图6为飞行器在线调试界面。
由图6可知,该上位机不仅可以进行PID参数的在线调试、传感器校准,还包括许多接口用于后续的功能扩展。
3.3 数据分析
数据分析可以根据需要存储无线地面调试系统发回的数据,然后对其进行研究分析,以改善飞行器的控制算法和滤波算法。图7为数据采集界面,图8为加速度计和陀螺仪传感器X轴信号滤波前后对比图。
图8是将无线地面调试系统发回的数据通过Matlab处理后得到的,其中滤波前的信号是飞行器传感器实际变化值,分析可知,机体振动对加速度传感器影响较大,而对陀螺仪传感器几乎没有影响。根据分析结果,采用不同的滤波算法对两传感器数据进行滤波,滤波后的数据波形基本还原了传感器实际变化值。
图6 飞行器在线调试界面
图7 数据采集界面
结 语
[1] 李波陈,王红州,刘晓栋,等.可伸缩折叠式四旋翼飞行器设计[J].机械研究与应用,2015,28(2):121-124.
[2] Jakob B, Morten K, Martin S. Autonomous hover flight for a quadrotor helicopter[D]. Aalborg , Denmark :Aalborg University,2007.
[3] 孙英达,徐文琴,丁立新. nRF905无线收发芯片的应用[J].机械制造与自动化, 2009,38(6): 115-116.
[4] Compaq,Intel,Philips.Universal Serial Bus Specification Revision2.0[EB/OL].[2016-06].http://www.usb.org.
[5] 王纪刚,袁红兵,张相田.无线温湿度数据采集板的设计[J].机械制造与自动化,2013,42(6):113-117.
[6] 金宝华,张勇,崔光照.基于nRF905的无线数据多点跳传通信系统[J].仪表技术与传感器,2004(9):39-40.
游安华(讲师),主要研究方向为旋翼飞行器设计与开发、嵌入式开发。
Aircraft Wireless Debugging System Based on USB HID and nRF24L01+
You Anhua1,Xu Jialin2
(1.Engineering Training Center,Nanjing University of Science and Technology, Nanjing 210094,China;2.School of Mechanical Engineer,Nanjing University of Science and Technology)
In order to collect the real-time data and debug the aircraft online,the wireless debugging system based on USB HID and nRF24L01+is designed.The flight control system receives the data and then sends to the host computer.The data is used for the dynamic display of flight state and follow-up study.At the same time,the system can send the control signal to the host computer to realize online debugging and host computer control.The test results show that the system has low-cost and good real-time performance,and it meets the needs of the quadrotor development.
quadrotor;STM32 microcontroller;USB HID;nRF24L01+;wireless communication
TP332
A
�迪娜
2016-06-29)