Skip to content

Latest commit

 

History

History
140 lines (108 loc) · 7.57 KB

README.md

File metadata and controls

140 lines (108 loc) · 7.57 KB

软件说明 | 硬件说明 | 机械结构说明

LICENSE Slack

  • 本项目用用到了两个实用的软件包:
    • EasyFlash一款开源的轻量级嵌入式Flash存储器库
    • EasyLogger一款超轻量级、高性能的 C/C++ 日志库

1.目录说明

software:【相关软件设计】

   └──CameraOV2640例程】
   ├──RT-ThreadRTT示例】
   ├──rt-thread-master
        └──bsp
            └──stm32f40x控制中心程序
目录组 描述
Kernel 它用于存放RT-Thread内核源文件
User 它用于存放用户应用文件
Applications 它用于存放外设应用程序
Drivers 它用于存放相关外设驱动
STM32_StdPeriph 它用于存放STM32固件库文件
cpu 它用于存放内核相关文件
Fliesystem 它用于存放虚拟文件系统
DeviceDrivers 它用于存放RT-Thread驱动
finsh 它用于存放RT-Thread Finsh组件
libc 它用于存放RT-Thread 相关文件
Easylogger 它用于存放RT-Thread Easylogger组件
EasyFlash 它用于存放RT-Thread EasyFlash
Utilities 它用于存放相关工具与滤波算法

2.软件结构

+——RT-Thread
|    └──Kernel 【RT-Thread内核初始化】                  
|    ├── Normal Peripherals Init 【普通外设初始化】
|    ├── System self-check 【系统自检:检测是否所有外设初始化完成】 
|           └── Read Gyroscope data 【读取JY901 九轴数据】 
|           ├── Detection input devices 【检测输入设别】 
|           ├── Attitude Control 【姿态控制】 	
|    └──...... 

3.定义通信协议

3.1 PC端发送的控制数据包

  • 全部数据按照16进制
  • 定义机头方向为X轴,机头朝向为x正方向
  • 定义垂直于机头方向为y轴,向左为y正方向
编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
数据所代表的含义 包头 包头 数据长度位 深度锁定位 方向锁定位 X轴动力模拟量 Y轴动力模拟量 垂直运动方向位 旋转运动方向位 油门量 灯亮度控制位 变焦摄像头动作位 云台控制位 机械臂控制位 Reserve Reserve Reserve Reserve 启动停止位 校验位
具体描述 AA 55 10 x x x x ON/OFF SUM
数组编号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

控制字格式:0xAA 0x55 0x10+控制字节(16字节)+校验字(所有字节相加后,保留最后一个字节)

  • 第1字节:包头位
  • 第2字节:包头位
  • 第3字节:数据长度位
  • 第4字节:0x01表示深度锁定,0x02表示人工控制(可指定默认值)
  • 第5字节:0x01表示方向锁定,0x02表示随水动(可指定默认值)
  • 第6字节:【左摇杆上下状态】摇杆模拟量 前后状态(0~255)即摇杆居中时为128(即停止),最下为0,最上位255
  • 第7字节:【左摇杆左右状态】摇杆模拟量 左右状态(0~255)即摇杆居中时为128(即停止),最左为0,最右为255
  • 第8字节:【右摇杆上下状态】摇杆模拟量 上下状态(0~255)即摇杆居中时为128(即停止),最下为0,最上位255
  • 第9字节:【右摇杆左右状态】摇杆模拟量 旋转状态(0~255)即摇杆居中时为128(即停止止),最左为0,最右为255
  • 第10字节:0x000xff (0255) 表示的油门大小:4档位可调,LB加档,LT减档,可分别设置4个档位油门大小 【不用】
  • 第11字节:灯的亮度控制,0x01表示变亮,0x02表示变暗,0x00表示不动作(默认)
  • 第12字节:摄像头焦距控制,0x01表示聚焦,0x02表示变放焦, 0x11表示放大,0x12表示缩小,0x00表示不动作(默认)
  • 第13字节:云台转动,0x01表示向上,0x02表示向下,0x03表示归中,0x00表示不动作(默认)
  • 第14字节:机械手动作,0x01表示张开,0x02表示关闭,0x00表示不动作(默认)
  • 第15字节:保留(reserve)
  • 第16字节:保留(reserve)
  • 第17字节:保留(reserve)
  • 第18字节:保留(reserve)
  • 第19字节:0x00 默认 0x01表示启动, 0x02表示停止
  • 第20字节:累加和校验

3.2 ROV/AUV返回的数据包

控制字格式:0xAA 0x55 0x16+控制字节(22字节) +校验字(所有字节相加后,保留最后一个字节)

  • 第一,二字节:电压第一字节表示整数部分,第二字节小数部分
  • 第三,四字节:舱外水温度第一字节表示整数部分,第二字节小数部分
  • 第五,六字节:舱内CPU内核温度第一字节表示整数部分,第二字节小数部分
  • 第七字节:深度值(0~16777215cm)精确到厘米 【高8位】
  • 第八字节:深度值(0~16777215cm)精确到厘米 【中8位】
  • 第九字节:深度值(0~16777215cm)精确到厘米 【低8位】
深度值共由3个字节,24位组成
  • 第十字节:航向角(Yaw)  【高8位】记为YawH

  • 第十一字节:航向角(Yaw)【低8位】记为YawL 计算方法:偏航角(z 轴)Yaw=((YawH<<8)|YawL)/32768*180(°) 航向角(Yaw),两字节(0~359)可用0度代表正北方,90度代表正东,以此类推

  • 第十二字节:俯仰角(Pitch)【高8位】记为PitchH

  • 第十三字节:俯仰角(Pitch)【低8位】记为PitchL 计算方法:俯仰角(y 轴)Pitch =((PitchH<<8)| PitchL)/32768*180(°) 俯仰角(Pitch),可用0°表示水平

  • 第十四字节:横滚角(Roll)【高8位】记为RollH

  • 第十五字节:横滚角(Roll)【低8位】记为RollL 计算方法:横滚角(x 轴)Roll =((RollH<<8)| RollL)/32768*180(°) 横滚角(Roll),可用0°表示水平

  • 第十六字节:航行速度(0~255)单位m/s

  • 第17字节:设备状态标志,0x00表示都正常操作,0x01表示机械手开到头了,0x02表示摄像头转到头了,0x03表示机械手和摄像头都转到头了

设备状态标志8bit 1 1 1 1 1 1 1 1
代表含义 深度传感器初始化成功 所有串口设备初始化成功 IO设备初始化成功 PWM设备初始化成功 聚焦开到头 变焦开到头 云台开到头 机械手到头
  • 第18字节:本设备的启动停止位(若返回的为0x01,代表本设备为启动状态;若为0x02 或 0x00,代表本设备为停止状态;则上位机 【P】图标需要对应)
  • 第19字节:保留
  • 第20字节:保留
  • 第21字节:保留
  • 第22字节:保留

所以,我们发送的字符串就应该为: 0xAA 0x55 0x10 控制字节(16字节) 校验字(所有字节相加后,保留最后一个字节) 若需其他的数据发送,按照此数据格式自行添加即可