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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

有關STM32和GSM的家居系統設計程序+原理圖+PCB資料分享

  [復制鏈接]
跳轉到指定樓層
樓主
      本系統主要由如下幾大模塊構成:MQ-2煙霧傳感器模塊、人體紅外傳感器模塊、溫度傳感器模塊、1602顯示模塊和GSM通訊模塊,系統的主控制器采用的是STM32F103芯片,功能強大,內部資源豐富。以上相關內容的資料都在附件中請自取,并且包含有本系統的程序框圖,硬件原理圖和系統總體程序。更多細節內容我就不做過多介紹,附件中的資料已經很豐富了,還請大家能夠秉持一種學習的態度,我們一起進步。

有關黑幣的扣除并非我設置,所以如果大家的黑幣很緊張的話,建議大家從第一個開始下載,也可以像我一樣分享資料獲取黑幣的方法。

以下的截圖只是文件中的部分內容展示,具體內容還請大家自行下載學習。

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件).

(請一定讀懂程序!!!無論您出于什么目的,我都希望您能真正的弄懂這個程序,
比如板子如何與GSM模塊建立的通訊,I/O口怎么配的(結合原理圖看),ADC又如何調?為什么?等等問題)

文件MDK-ARM-->Project是家居系統的總程序(請提前下載好keil軟件)

單片機源程序如下:
  1. ////頭文件
  2. #include "stm32f10x.h"
  3. #include "GPIOLIKE51.h"
  4. #include "display.h"
  5. #include "ds18b20.h"
  6. #include "key.h"
  7. #include "usart.h"
  8. #include "timer.h"
  9. #include "ADC.h"
  10. #include "iwdg.h"
  11. #include "I2C.h"
  12. #include "EXTI.h"

  13. uchar table1[]="NOW:    %     C ";                                //液晶屏顯示內容
  14. uchar table2[]="SET:    %     C ";                                //液晶屏顯示內容

  15. #define BEEP BIT_ADDR(GPIOA_ODR_Addr,11)                    //蜂鳴器接口
  16. #define STEAL  GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10)    //防盜模塊接口

  17. char Alarm_flag;                                                                                //溫度發送短信標志位,=1表示已經發送,=0表示沒有發送
  18. char Smoke_Alarm;                                                                                //煙霧發送短信標志位,=1表示已經發送,=0表示沒有發送
  19. char Steal_Alarm;                                                                                //防盜發送短信標志位,=1表示已經發送,=0表示沒有發送

  20. void GPIO_Configuration(void)
  21. {
  22.         GPIO_InitTypeDef GPIO_InitStructure;                                                                                                        //等同于int a;

  23.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA , ENABLE);                         //GPIOC APB2                        

  24.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//選中管腳11
  25.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz
  26.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //
  27.         GPIO_Init(GPIOA, &GPIO_InitStructure);//以上設結構體置應用到GPIOA                                 

  28.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;                //選中管腳10
  29.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;         //上拉輸入
  30.         GPIO_Init(GPIOB, &GPIO_InitStructure);                        //以上設結構體置應用到GPIOB
  31. }
  32. /************************************檢測各部分是否異常***********************************************************/

  33. void Check(void)
  34. {
  35.         if(temperature>Set_temp)                //如果實際溫度值大于設置值
  36.         {
  37.                 if((temperature>0)&(temperature<100)) //溫度在正常范圍內才報警
  38.                 {
  39.                         BEEP=1;                                                //啟動蜂鳴器
  40.                         if(Alarm_flag==0)                        //警報標志位為1時發送溫度報警信息
  41.                         {
  42.                                 Send_Message3();                //發送溫度過高報警短信
  43.                         }
  44.                         Alarm_flag=1;                                //標志位置一,表示短信已經發送,避免重復發送短信
  45.                 }
  46.         }
  47.         if(temperature<=Set_temp)                //正常情況
  48.         {
  49.                 Alarm_flag=0;                                //清除標志位,下次溫度超過繼續發送短信一次
  50.         }

  51.         if(Steal_flag==1)
  52.         {
  53.                 if(STEAL==0)                                    //檢測到人體
  54.                 {
  55.                         BEEP=1;                                                //啟動蜂鳴器
  56.                         if(Steal_Alarm==0)                        //警報標志位為1時發送防盜報警信息
  57.                         {
  58.                                 Send_Message2();
  59.                         }
  60.                         Steal_Alarm=1;                                //標志位置一,表示短信已經發送,避免重復發送短信
  61.                 }
  62.         }
  63.         if(STEAL==1)                                        //正常情況
  64.         {
  65.                 Steal_Alarm=0;                                 //清除標志位,下次繼續發送短信一次
  66.         }

  67.         if(Smoke>Set_smoke)                                 //檢測到濃度超標
  68.         {
  69.                 BEEP=1;                                                //啟動蜂鳴器
  70.                 if(Smoke_Alarm==0)                        //警報標志位為1時發送煙霧報警信息
  71.                 {
  72.                         Send_Message1();
  73.                 }
  74.                 Smoke_Alarm=1;                                //標志位置一,表示短信已經發送,避免重復發送短信
  75.         }
  76.         if(Smoke<=Set_smoke)                                //正常情況
  77.         {
  78.                 Smoke_Alarm=0;                                 //清除標志位,下次溫度超過繼續發送短信一次
  79.         }

  80.         if((Smoke<=Set_smoke)&&(temperature<=Set_temp)&&(STEAL==1))
  81.         {
  82.                 BEEP=0;                                                 //關閉蜂鳴器
  83.         }
  84. }
  85. //=============================================================================
  86. //文件名稱:Delay
  87. //功能概要:延時
  88. //參數說明:nCount:延時長短
  89. //函數返回:無
  90. //=============================================================================

  91. void Delay(uint z)                                         //延時約3ms
  92. {
  93.   uint x,y;
  94.         for(x=z;x>0;x--)
  95.                 for(y=5000;y>0;y--);
  96. }


  97. //=============================================================================
  98. //文件名稱:main
  99. //功能概要:主函數
  100. //參數說明:無
  101. //函數返回:int
  102. //=============================================================================
  103. int main(void)
  104. {                  
  105.         GPIO_Configuration();
  106.         GPIO_Configuration_LCD();
  107.         GPIO_Configuration_USART();
  108.         NVIC_Configuration();
  109.         Set_ADC_Init();
  110.         I2C_Init_Set();        
  111.         TIMER_Init();        
  112.         DS18B20_Init();
  113.         temperature=DS18B20_Get_Temp();                                        //讀取實時溫度   第一次讀取跳過85度
  114.         LCD_Initinal();
  115.         GPIO_Configuration_KEY();        
  116.         Set_temp=I2C_EE_BufferRead(EEPROM_ADDRESS1);        //讀取對應地址的值
  117.         Set_smoke=I2C_EE_BufferRead(EEPROM_ADDRESS2);        //讀取對應地址的值
  118.         
  119.         Delay(40000);Delay(40000);                    
  120.         GSM_Init();                                     //GSM初始化
  121.         LCD_Display_String(1,table1);                                        //顯示內容
  122.         LCD_Display_String(2,table2);                                        //顯示內容        
  123.         IWDG_Configuration();
  124.         while (1)
  125.         {   
  126.                 Read_Message();
  127.                 KEY();
  128.                 if(Adjust==0)
  129.                 {
  130.                         if(TIM_GetITStatus(TIM2, TIM_IT_Update)==SET)                  //每0.5s讀取一次溫度
  131.                         {                        
  132.                                 temperature=DS18B20_Get_Temp();                                        //讀取實時溫度
  133.                                 TIM_ClearITPendingBit(TIM2, TIM_IT_Update);                //清除定時器中斷                                
  134.                                 
  135.                                 ADC_RegularChannelConfig(ADC1,ADC_Channel_9,1,ADC_SampleTime_7Cycles5); //選取通道和采樣周期
  136.                                 ADC_SoftwareStartConvCmd(ADC1,ENABLE);                        //使能指定的ADC的軟件轉換啟動功能
  137.                                 Smoke=0.000806*ADC_GetConversionValue(ADC1)/(10/14.7)*20-10;       //3.3V分4096份 ,每份約0.000806V, 硬件已被分壓,除以10k/(10+4.7k)得出真實電壓值(0-5V),
  138.                                                                                 //再根據y=20x(0代表0%,5V代表100%),10是校準值,是沒有檢測到煙霧時顯示的值,確保在潔凈空氣中濃度值盡可能低
  139.                                 if(Smoke<0)                                     //數值低于0做0處理
  140.                                 Smoke=0;
  141.                                 Write_Value(6,Smoke);                                       //顯示濃度值
  142.                
  143.                                 if(Switch_flag==1)                                                           //防盜功能開啟狀態
  144.                                 {
  145.                                         Count++;
  146.                                         if(Count>=20)                              //啟動定時器10s后開啟功能
  147.                                         {
  148.                                                 Count=0;
  149.                                                 Steal_flag=1;
  150.                                         }                                                                           
  151.                                 }
  152.                         }
  153.                         Write_Value(12,temperature);        //顯示溫度到LCD1602
  154.                         Write_Value(0x40+12,Set_temp);  //顯示設置溫度
  155.                         
  156.                         Write_Value(0x40+6,Set_smoke);  //顯示設置溫度
  157.                 }
  158.                                 
  159.         Check();
  160.                 IWDG_Feed();                        //10秒喂狗一次
  161.         }
  162. }
復制代碼

所有資料51hei提供下載:
程序+原理圖+PCB+學習資料+材料清單.7z (779.35 KB, 下載次數: 181)
Surprise!.7z (13.29 MB, 下載次數: 104)
參考資料.7z (10.85 MB, 下載次數: 106)


部分程序截圖4.png (225.25 KB, 下載次數: 120)

部分程序截圖4.png

部分程序截圖3.png (286.17 KB, 下載次數: 101)

部分程序截圖3.png

部分程序截圖2.png (210.36 KB, 下載次數: 106)

部分程序截圖2.png

部分程序截圖1.png (158.91 KB, 下載次數: 133)

部分程序截圖1.png

截圖2.png (48.97 KB, 下載次數: 119)

截圖2.png

截圖1.png (16.61 KB, 下載次數: 107)

截圖1.png

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:1028330 發表于 2022-5-20 23:33 | 只看該作者
有沒有大神能根據樓主提供的資料畫1個仿真圖用于學習呢?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品久久 | 国产91亚洲精品 | 操人网站 | 国产欧美精品一区 | 亚洲高清免费视频 | 天天拍天天草 | 黄色免费三级 | 一道本一区二区 | av日韩一区| 黄色a三级 | 亚洲精品一区国产精品 | 久久久久久久综合色一本 | 久久综合伊人一区二区三 | 91精品国产91综合久久蜜臀 | 国产一区欧美 | 国产精品久久久 | 国产欧美日韩精品在线观看 | 激情亚洲| 色久影院 | 久草在线青青草 | 精品久久久久久18免费网站 | 婷婷91 | 国产成人精品一区二区三区在线 | 狼色网| 亚洲精品一区中文字幕乱码 | 一区二区三区亚洲精品国 | 精品国产一区二区三区性色av | 精品国产乱码久久久久久图片 | 成人婷婷| 羞羞视频在线观看网站 | 精品久久久久久亚洲综合网 | 精精国产xxxx视频在线 | 亚洲欧美日韩精品久久亚洲区 | 91久久久久久久久 | 天天干天天操天天看 | 91视视频在线观看入口直接观看 | 伊人久久免费视频 | 日日干日日 | 成年人免费看的视频 | 一区二区三区视频播放 | 亚洲九九精品 |