本文介紹了一款使用由意法半導體公司生產的STM32為核心控制器,在MDK4.70軟件開發平臺下設計開發的智能小車。文中介紹了整個設計的需求分析、方案選擇、硬件部分、軟件部分、傳感器的選擇與布局、電路板的安裝、以及整車的測試與評估。
0.jpg (67.92 KB, 下載次數: 78)
下載附件
2018-6-4 03:04 上傳
本次設計最終采用STM32為主控制器,此款芯片功能強大,足以滿足整個設計的需求,選用最常用高靈敏度的紅外光電傳感器完成循跡功能,采用MG995舵機和HC-SR04超聲波模塊配合完成避障功能,采用MQ-2煙霧氣敏傳感器完成煙霧濃度探測功能,采用DHT11溫濕度傳感器模塊完成溫濕度探測功能,采用NRF24L01無線發射接收模塊完成與上位機之間的無線通信功能,采用SIM800C模塊完成與管理者手機通訊功能。程序經過多次測試和改進,能夠較健壯的運行。最終能夠很好地實現上述功能。
演示視頻:
0.png (198.69 KB, 下載次數: 80)
下載附件
2018-6-4 03:04 上傳
智能小車無線環境監測系統
SmartCar_NF2401
是遙控板程序
SmartCar_Update
是小車程序
小車實現了 循跡、蔽障、檢測濕度、溫度、煙霧、并通過NF2401傳給遙控板,遙控板顯示出溫度濕度煙霧狀態等。遙控板可以可控制小車任意行走或者執行任意模式。小車還實現SIM800發短信和打電話功能,當溫度、濕度、煙霧狀態超標時,給指定手機發短信,打電話!
單片機源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "24l01.h"
- #include "stm32f10x_tim.h"
- #include "stm32f10x_rcc.h"
- u16 Change_mode_cnt=0;//變換模式計數
- u8 Change_mode=1; //改變發送接收模式
- u8 NRF2401_Rxbuf[10];
- u8 NRF2401_Txbuf[10];
- void TIM1_INIT()
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- //??TIM2
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //????
- /* TIM2 configuration */
- TIM_TimeBaseStructure.TIM_Period=10-1;//??,??????ARR??
- TIM_TimeBaseStructure.TIM_Prescaler=899;//???????1Mhz
- TIM_TimeBaseStructure.TIM_ClockDivision=0x00;
- TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//????
- TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);//???
-
-
-
- /* Clear TIM2 update pending flag */
- TIM_ClearFlag(TIM1,TIM_FLAG_Update);//??????
-
- /* Enable TIM2 Update interrupt */
- TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);//????
-
-
-
- //??TIM3????
- NVIC_InitStructure.NVIC_IRQChannel=TIM1_UP_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//??????1
- NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//?????0
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-
- /* TIM2 enable counter */
- TIM_Cmd(TIM1,ENABLE);//?????
-
- }
- int main(void)
- {
-
-
- u8 key;
- delay_init(); //延時函數初始化
- NVIC_Configuration(); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
- uart_init(9600); //串口初始化為9600
- LED_Init(); //LED端口初始化
- LCD_Init(); //初始化LCD
- KEY_Init(); //按鍵初始化
-
- NRF24L01_Init(); //初始化NRF24L01
- TIM1_INIT();
- POINT_COLOR=RED;//設置字體為紅色
- LCD_ShowString(60,50,200,16,16,"WarShip STM32");
- LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");
- while(NRF24L01_Check()) //檢查NRF24L01是否在位.
- {
- LCD_ShowString(60,90,200,16,16,"NRF24L01 Error");
- delay_ms(200);
- LCD_Fill(60,130,239,130+16,WHITE);
- delay_ms(200);
- }
- LCD_ShowString(60,90,200,16,16,"NRF24L01 OK");
- NRF24L01_TX_Mode();
-
- //LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");
- //LCD_ShowNum(60,130,200,6,16);
- POINT_COLOR=BLUE;//設置字體為藍色
- while(1)
- {
- key=KEY_Scan(0);
- NRF2401_Txbuf[0]=1;
- if(key==KEY_UP)
- NRF2401_Txbuf[1]=1;
- else if(key==KEY_LEFT)
- NRF2401_Txbuf[1]=2;
- else if(key==KEY_DOWN)
- NRF2401_Txbuf[1]=3;
- else if(key==KEY_RIGHT)
- NRF2401_Txbuf[1]=4;
- else;
-
-
- if(Change_mode==0)//RX模式
- {
- LCD_ShowString(60,110,200,16,16,"NRF24L01 RX_Mode");
- LCD_ShowString(60,130,200,16,16,"Received DATA:");
- NRF24L01_RX_Mode();
- while(1)
- {
- if(NRF24L01_RxPacket(NRF2401_Rxbuf)==0)//一旦接收到信息,則顯示出來.
- {
- LCD_ShowString(60,150,200,16,16,"Temperature:");
- LCD_ShowNum(160,150,NRF2401_Rxbuf[1],2,16);
- LCD_ShowString(60,170,200,16,16,"Humidity:");
- LCD_ShowNum(160,170,NRF2401_Rxbuf[2],2,16);
- LCD_ShowString(60,190,200,16,16,"Smokestate:");
- LCD_ShowNum(160,190,NRF2401_Rxbuf[3],1,16);
- Change_mode=1;
-
- }
- if(Change_mode)
- break;
-
- }
- }
- else//TX模式
- {
- LCD_ShowString(60,110,200,16,16,"NRF24L01 TX_Mode");
- NRF24L01_TX_Mode();
- while(1)
- {
- if(NRF24L01_TxPacket(NRF2401_Txbuf)==TX_OK)
- {
- LCD_ShowString(60,210,200,16,16,"Car_State:");
- LCD_ShowNum(160,210,NRF2401_Txbuf[1],1,16);
- Change_mode=0;
- }
- else;
-
- if(!Change_mode)
- break;
- }
-
-
- }
-
- }
- }
- void TIM1_UP_IRQHandler(void)
- {
- TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
- Change_mode_cnt++;
- if(Change_mode_cnt>50)
- {
- Change_mode_cnt=0;
- //Change_mode=~Change_mode;
- }
- }
-
復制代碼
0.png (13.04 KB, 下載次數: 78)
下載附件
2018-6-4 03:06 上傳
0.png (45.63 KB, 下載次數: 78)
下載附件
2018-6-4 03:06 上傳
所有資料51hei提供下載:
基于STM32的智能小車無線環境監測系統(完整版).zip
(18.53 MB, 下載次數: 259)
2018-6-3 23:08 上傳
點擊文件名下載附件
小車 下載積分: 黑幣 -5
|