本作品设计的是小型四轴飞行器,采用一体化的设计思路,就是机身和处理器板作为一个整体,小型四轴器的处理器使用STM32F103芯片,传感器使用MPU6050,接收板使用STM32F4 Discovery开发板,使用IIC总线的方式与处理器连接;遥控板上面使用NRF24L01无线芯片,通过上位机利用自己定义的协议来完成小型四轴飞行器的姿态显示和控制;采用空心杯电机和两对正反桨,电池使用4.1V的锂电池;整个系统的电源控制部分采用662K稳压芯片,这样可以确保供电的稳定性,保证系统稳定可靠的运行。
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- /* Includes ------------------------------------------------------------------*/
- #include "stm32f10x.h"
- #include "BSP/BSP.H"
- #include "app/uart/uart1.h"
- #include "app/rc/rc.h"
- #include "BSP/ultrasonic.H"
- #include "bsp/tim.h"
- //#include "STM32_I2C.h"
- /*
- TIM3
- TIM1
- */
- extern void i2cInit(void);
- //#define CLI() __set_PRIMASK(1)
- //#define SEI() __set_PRIMASK(0)
- ////////////////////////////////////////////////////////////////////////////////
- //extern void Tim7_Init(u16 period_num);//用于精确延时
- void SYS_INIT(void)
- {
- //MCO_INIT(); //时钟输出初始化 2.4G 时钟
- //LED_INIT(); //LED初始化
- //LED_FLASH(); //LED闪亮
- Tim3_Init(500); //1000=1MS,500=0.5MS
- //Tim7_Init(500); //1000=1MS,500=0.5MS
-
- Moto_Init(); //电机初始化
- //Uart1_Init(500000);
- Spi2_Init();
- Nvic_Init(); //中断初始化
- Nrf24l01_Init(MODEL_TX2,40);
- if(Nrf24l01_Check()) Uart1_Put_String("FLY_NRF24L01 IS OK !\r\n");
- else Uart1_Put_String("FLY_NRF24L01 IS NOT OK !\r\n");
- i2cInit(); //I2c初始化
- MPU6050_Init();
- //Ultrasonic_Init();
- ADC1_Init();//电压检测初始化
- FLASH_Unlock();//模拟EEROM初始化
- EE_INIT();
- EE_READ_ACC_OFFSET();
- EE_READ_GYRO_OFFSET();
- EE_READ_PID();
- }
- ////////////////////////////////////////////////////////////////////////////////
- int main(void)
- {
- SYS_INIT_OK=0;
- SYS_INIT();
- SYS_INIT_OK=1;
- while (1)
- {
-
- }
- }
- ////////////////////////////////////////////////////////////////////////////////
复制代码
所有资料51hei提供下载:
程序源码.7z
(279.18 KB, 下载次数: 56)
硬件设计.zip
(819.17 KB, 下载次数: 49)
|