当前位置:   article > 正文

匿名科创无人机学习心得

匿名科创

*1.

*飞控stm32串口5连接imu,串口五发送的指令会发送到imu中,如果是自定义的用户格式帧(比如:AA FF F1 03 01 01 01 A0 67)会先到imu,imu的串口1接stm飞控。串口2接数传,从串口1接收到的数据会通过串口二发送给数传,数传传给另一个数传,在通过USB线传输给上位机。
但是如果不是属于用户自定义的格式帧,imu会进行处理,比如飞控串口5一上电就会输出电池信息(如:AA FF 0D 04 0100 0000 6B 7F)imu会接收并处理,最后上位机得到的数据是(AA AF 0D 04 0100 0000 6B 7F)。
*

2.

.数传的一个串口一直有数据时,闪烁绿灯,当另一个口也有数据进来时,会闪烁白灯,并且两个串口收到的数据都会在上位机显示 。

3.imu会把无人机的各种信息计算出来并且发送出来,两种HID连接方式上位机 都会接收到数据,飞控的UART5发给IMU数据,IMU并不会直接通过HID转发出来,它还是按自己计算出来的数据发出来(当然这只是基本数据,不包括用户自定义数据),用户自定义数据IMU不会自己发送,只会接收到UART5传来的用户自定义数据再通过HID转发。

3.关于GPS数据的获取以及源码关于GPS的原理

	case 0x30: //GPS数据
	{
	
	for (u8 i = 0; i < 23; i++)
		{
			
			send_buffer[(*_cnt)++] = ext_sens.fc_gps.byte[i];
		}
	}
	break;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

case30 里面是获取GPS数据,GPS的23个字节的数据都存储在 ext_sens.fc_gps.byte[i]函数里,这个数组里的数据是是GPS的23个字节的数据。具体每个字节数据的含义要看匿名协议手册。获取到send_buffer里面在后面的程序会通过串口5发送给凌霄imu,这时候灯光会依据凌霄imu的0x30的数据来变化,如果数据一直是空的,那么灯光闪红色,如果数据是有的,那么指示灯亮绿色说明GPS工作正常。如果没有0x30类的数据帧发送给凌霄imu,那么说明GPS无效,指示灯亮白色,说明没有接入GPS。

用自己的方法直接在0X30处发送数据,如下:

case 0x30: //GPS数据
	{
	u8 cnt=0;
	u8 datasend[100];
	datasend[cnt++]=0xAA;
	datasend[cnt++]=0xFF;
	datasend[cnt++]=0x30;
	datasend[cnt++]=0;		
	for (u8 i = 0; i < 23; i++)
		{
			datasend[cnt++]=ext_sens.fc_gps.byte[i];
			//send_buffer[(*_cnt)++] = ext_sens.fc_gps.byte[i];
		}
	
	datasend[3]=cnt-4;
	u8 ac=0;
	u8 sc=0;
	for(u8 i=0;i<cnt;i++)
	{
		sc+=datasend[i];
		ac+=sc;
	}
	datasend[cnt++]=sc;
	datasend[cnt++]=ac;
	DrvUart5SendBuf(datasend, cnt);
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

与上面是一样的效果,只是串口五提前发送给了凌霄imu.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/610807
推荐阅读
相关标签
  

闽ICP备14008679号