本作品設計的是小型四軸飛行器,采用一體化的設計思路,就是機身和處理器板作為一個整體,小型四軸器的處理器使用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)
2019-6-3 04:49 上傳
點擊文件名下載附件
硬件設計.zip
(819.17 KB, 下載次數: 49)
2019-6-2 19:07 上傳
點擊文件名下載附件
|