基本参数:
1) 处理器:
STM32F103RET6/512K ROM/64K RAM
2) 加/角速度:MPU6050
3) 气压计:BMP180
4) 通讯方式:WIFI(ESP8266)、蓝牙(HC-05)、2.4G射频(NRF24L01+)
5) 电机:8520空心杯
6) 电池:850mA锂电池
7) 遥控器:10K高精度遥杆、1.8寸TFT彩色液晶显示屏
8) 滤波算法:滑动平均、限幅
9) 姿态解算:默认卡尔曼,可通过地面站配置为一阶、二阶、四元数。
10) PID算法:串行PID控制算法
11) GPS:当前V1.0版本暂不支持
12) 图传:当前V1.0版本暂不支持
13) CREELINKS无人机交流群:623083844
无人机特点:
2) 支持代码无缝移植到其它平台
3) 支持WIFI方式连接地面站
5) 支持WIFI方式连接遥控器
6) 支持通过地面站配置PID参数及滤波参数
7) 支持通过地面站观察参数波形
8) 遥控器支持WIFI、蓝牙、2.4G射频三种通讯方式
/**
* @brief CREELINKS平台主入口函数(裸奔)
* @return 0
*/
int main(void)
{
ceSystemOp.initial(); //Creelinks环境初始化 ceDebugOp.initial(Uart4); //通过Uart串口输出Debug信息到上位机
//TODO:请在此处插入模块初始化等操作
initialParment(); //结构体的参数初始化
initialModule(); //初始化所有功能模块
while (1)
{
ceTaskOp.mainTask(); //Creelinks环境主循环任务,请保证此函数能够被周期调用
//TODO:请在此处插入用户操作
acc = ce6DofOp.getAcceleration(&ce6Dof); //获取当前无人机加速度
gyr = ce6DofOp.getGyroscope(&ce6Dof); //获取当前无人机角速度
ceEnvirmont = ceBmp180Op.getEnvironmentAsync(&ceBmp180);//获取当前无人机大气压相关数据
ceNowAcc.x = acc->x ; //转存加速度数据
ceNowAcc.y = acc->y ;
ceNowAcc.z = acc->z ;
ceNowGyr.x = -gyr->x; //转存角速度数据
ceNowGyr.y = gyr->y;
ceNowGyr.z = gyr->z;
ceNowAngles.altitude = ceEnvirmont->altitude;//当前高度暂存
ceFilterOp.filter(&ceNowAcc,&ceNowGyr,&ceNowAngles,dtS); //对当前加速度、当前角速度进行姿态解析及滤波,以获取无人机姿态角数据,注:会将计算结果更新到三个指针参数所指内容。
ceDrivePower = cePIDOp.calculate(&ceNowAcc, &ceNowGyr, &ceNowAngles, &ceHopeAngles,dtS); //根据当前加速度及角速度、姿态角、还有期望姿态进行串级PID运算,并获得四个电机的驱动强度
ceMDOp.setDriverPower(&ceMD0,(uavStatus != UAV_STATUS_READY)? (ceDrivePower->driverPower0):0); //配置第0路电机驱动强度,0~1000
ceMDOp.setDriverPower(&ceMD1,(uavStatus != UAV_STATUS_READY)? (ceDrivePower->driverPower1):0); //配置第1路电机驱动强度,0~1000
ceMDOp.setDriverPower(&ceMD2,(uavStatus != UAV_STATUS_READY)? (ceDrivePower->driverPower2):0); //配置第2路电机驱动强度,0~1000
ceMDOp.setDriverPower(&ceMD3,(uavStatus != UAV_STATUS_READY)? (ceDrivePower->driverPower3):0); //配置第3路电机驱动强度,0~1000
sendStatusToCtl(); //整合当前数据,并发送给控制端
checkConnectStatus(); //检测连接是否断开,如果断开,无人机姿态规中并缓慢下降
calSystemRunCycle(); //计算程序执行周期时间
checkTurnOver(); //检测无人机是否翻机,如果是则关闭电机输出,以保护MOS管及电机
};
}