久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11269|回復: 2
打印 上一主題 下一主題
收起左側

基于STM32的智能小車無線環境監測系統(完整版資料)

  [復制鏈接]
跳轉到指定樓層
樓主
本文介紹了一款使用由意法半導體公司生產的STM32為核心控制器,在MDK4.70軟件開發平臺下設計開發的智能小車。文中介紹了整個設計的需求分析、方案選擇、硬件部分、軟件部分、傳感器的選擇與布局、電路板的安裝、以及整車的測試與評估。

本次設計最終采用STM32為主控制器,此款芯片功能強大,足以滿足整個設計的需求,選用最常用高靈敏度的紅外光電傳感器完成循跡功能,采用MG995舵機和HC-SR04超聲波模塊配合完成避障功能,采用MQ-2煙霧氣敏傳感器完成煙霧濃度探測功能,采用DHT11溫濕度傳感器模塊完成溫濕度探測功能,采用NRF24L01無線發射接收模塊完成與上位機之間的無線通信功能,采用SIM800C模塊完成與管理者手機通訊功能。程序經過多次測試和改進,能夠較健壯的運行。最終能夠很好地實現上述功能。

演示視頻:

智能小車無線環境監測系統
SmartCar_NF2401
是遙控板程序
SmartCar_Update
是小車程序

小車實現了 循跡、蔽障、檢測濕度、溫度、煙霧、并通過NF2401傳給遙控板,遙控板顯示出溫度濕度煙霧狀態等。遙控板可以可控制小車任意行走或者執行任意模式。小車還實現SIM800發短信和打電話功能,當溫度、濕度、煙霧狀態超標時,給指定手機發短信,打電話!

單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"         
  7. #include "24l01.h"          
  8. #include "stm32f10x_tim.h"
  9. #include "stm32f10x_rcc.h"


  10. u16 Change_mode_cnt=0;//變換模式計數
  11. u8 Change_mode=1; //改變發送接收模式
  12. u8 NRF2401_Rxbuf[10];
  13. u8 NRF2401_Txbuf[10];


  14. void TIM1_INIT()
  15. {
  16.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  17.           NVIC_InitTypeDef NVIC_InitStructure;
  18. //??TIM2
  19. RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //????
  20.    /* TIM2 configuration */
  21.    TIM_TimeBaseStructure.TIM_Period=10-1;//??,??????ARR??
  22.    TIM_TimeBaseStructure.TIM_Prescaler=899;//???????1Mhz
  23.    TIM_TimeBaseStructure.TIM_ClockDivision=0x00;
  24.    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//????
  25.    TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);//???
  26.    
  27.   
  28.    
  29.    /* Clear TIM2 update pending flag */
  30.    TIM_ClearFlag(TIM1,TIM_FLAG_Update);//??????
  31.    
  32.    /* Enable TIM2 Update interrupt */
  33.    TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);//????
  34.          
  35.          
  36.           
  37.      //??TIM3????
  38.      NVIC_InitStructure.NVIC_IRQChannel=TIM1_UP_IRQn;
  39.      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//??????1
  40.      NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//?????0
  41.      NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  42.      NVIC_Init(&NVIC_InitStructure);
  43.                  
  44.                   /* TIM2 enable counter */
  45.    TIM_Cmd(TIM1,ENABLE);//?????


  46. }

  47. int main(void)
  48. {         
  49.        
  50.        
  51.         u8 key;                     
  52.         delay_init();                     //延時函數初始化          
  53.         NVIC_Configuration();          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  54.         uart_init(9600);                 //串口初始化為9600
  55.         LED_Init();                             //LED端口初始化
  56.         LCD_Init();        //初始化LCD
  57.         KEY_Init();         //按鍵初始化       

  58.         NRF24L01_Init();            //初始化NRF24L01
  59.           TIM1_INIT();
  60.         POINT_COLOR=RED;//設置字體為紅色
  61.         LCD_ShowString(60,50,200,16,16,"WarShip STM32");       
  62.         LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");                  
  63.         while(NRF24L01_Check())        //檢查NRF24L01是否在位.       
  64.         {
  65.                 LCD_ShowString(60,90,200,16,16,"NRF24L01 Error");
  66.                 delay_ms(200);
  67.                 LCD_Fill(60,130,239,130+16,WHITE);
  68.                 delay_ms(200);
  69.         }
  70.         LCD_ShowString(60,90,200,16,16,"NRF24L01 OK");
  71.         NRF24L01_TX_Mode();
  72.                                                                           
  73.         //LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");
  74.         //LCD_ShowNum(60,130,200,6,16);
  75.         POINT_COLOR=BLUE;//設置字體為藍色
  76.         while(1)
  77.         {
  78.          key=KEY_Scan(0);
  79.                 NRF2401_Txbuf[0]=1;
  80.     if(key==KEY_UP)
  81.                 NRF2401_Txbuf[1]=1;
  82.         else if(key==KEY_LEFT)
  83.                 NRF2401_Txbuf[1]=2;
  84.         else if(key==KEY_DOWN)
  85.                 NRF2401_Txbuf[1]=3;
  86.         else if(key==KEY_RIGHT)
  87.                 NRF2401_Txbuf[1]=4;
  88.         else;
  89.                
  90.                
  91.          if(Change_mode==0)//RX模式
  92.          {
  93.                 LCD_ShowString(60,110,200,16,16,"NRF24L01 RX_Mode");       
  94.                 LCD_ShowString(60,130,200,16,16,"Received DATA:");       
  95.                 NRF24L01_RX_Mode();       
  96.            while(1)                 
  97.                 {                                                                                   
  98.                         if(NRF24L01_RxPacket(NRF2401_Rxbuf)==0)//一旦接收到信息,則顯示出來.
  99.                         {
  100.                                 LCD_ShowString(60,150,200,16,16,"Temperature:");
  101.                                 LCD_ShowNum(160,150,NRF2401_Rxbuf[1],2,16);

  102.                                 LCD_ShowString(60,170,200,16,16,"Humidity:");
  103.                                 LCD_ShowNum(160,170,NRF2401_Rxbuf[2],2,16);

  104.                                 LCD_ShowString(60,190,200,16,16,"Smokestate:");
  105.                                 LCD_ShowNum(160,190,NRF2401_Rxbuf[3],1,16);
  106.                                 Change_mode=1;
  107.                        
  108.                         }
  109.               if(Change_mode)
  110.               break;                               
  111.                                     
  112.                 }
  113.         }
  114.         else//TX模式
  115.         {                                                            
  116.                 LCD_ShowString(60,110,200,16,16,"NRF24L01 TX_Mode");       
  117.                 NRF24L01_TX_Mode();
  118.                 while(1)
  119.                 {                                                              
  120.                         if(NRF24L01_TxPacket(NRF2401_Txbuf)==TX_OK)
  121.                         {       
  122.                                  LCD_ShowString(60,210,200,16,16,"Car_State:");
  123.                                   LCD_ShowNum(160,210,NRF2401_Txbuf[1],1,16);
  124.                                   Change_mode=0;                               
  125.                         }
  126.                         else;
  127.                
  128.                         if(!Change_mode)
  129.       break;                               
  130.                 }
  131.        
  132.           
  133.         }   
  134.        
  135. }
  136. }

  137. void TIM1_UP_IRQHandler(void)
  138. {
  139. TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
  140.         Change_mode_cnt++;
  141.         if(Change_mode_cnt>50)
  142.         {
  143.                 Change_mode_cnt=0;
  144.                 //Change_mode=~Change_mode;
  145.         }
  146. }
  147.        

復制代碼




所有資料51hei提供下載:
基于STM32的智能小車無線環境監測系統(完整版).zip (18.53 MB, 下載次數: 259)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏10 分享淘帖 頂3 踩
回復

使用道具 舉報

沙發
ID:469436 發表于 2019-1-16 22:43 | 只看該作者
很好啊很需求這個東西
回復

使用道具 舉報

板凳
ID:414804 發表于 2019-12-8 19:38 | 只看該作者
拿走了,謝謝。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美在线不卡 | 欧美在线综合 | 欧美成人一区二区三区 | 一级黄色片一级黄色片 | 精品久久久久香蕉网 | 国产成人aⅴ | 免费一区 | 国产露脸对白88av | h视频在线看 | 国产91综合 | 国产精品久久久久久久 | 亚洲一区二区在线免费观看 | 欧美一区二区三区 | 久久爆操 | 成人国产精品久久久 | 中文字幕第十一页 | 国产一区二区不卡 | 久久精品久久精品久久精品 | 91精品国产综合久久久久久蜜臀 | 午夜网 | 日韩中文久久 | 欧美99久久精品乱码影视 | 成人av在线播放 | 黄色欧美在线 | 精品久久不卡 | 激情欧美一区二区三区 | 黄色大片网站 | 九九视频在线观看视频6 | 国产精品18久久久 | 日韩电影在线 | 综合久久久 | 亚洲精品黄色 | 综合久久综合久久 | 欧美日韩成人一区二区 | 国产成人免费 | 有码一区 | 国产日韩久久 | 伊人网综合 | 欧美男人天堂 | 国产视频久久 | 一级黄色录像片子 |