当前位置:   article > 正文

STM32项目分享:智能家居安防系统_基于是stm32的智能家居安防系统设计

基于是stm32的智能家居安防系统设计

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板及元器件图

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1Y64y1P7ti/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2

(资料分享见文末) 

二、项目简介

1.功能详解

基于STM32的智能家居安防系统

功能如下:

  1. 密码锁:通过1×4键盘输入开机密码
  2. 采集温湿度:系统通过DHT11模块采集温湿度
  3. 煤气泄漏报警:通过MQ-7一氧化碳传感器判断室内危险气体是否超标
  4. 火灾报警:通过火焰传感器判断室内是否着火
  5. 门磁防盗报警:通过门磁开关判断室内是否有人闯入
  6. 远程照明控制:系统可远程控制LED灯开关
  7. 实时时钟显示:实时时间(年月日周时分秒)显示
  8. OLED显示:显示温湿度、时间、日期、报警信息等等
  9. 蜂鸣器报警:危险情况下本地蜂鸣器触发报警
  10. WIFI通信:使用ESP8266等进行WiFi远程通信
  11. APP功能:手机APP包括功能有修改系统时间、显示当前温湿度信息、显示危险情况报警信息、控制照明灯开关

2.主要器件

  • STM32F103C8T6最小系统板
  • DHT11温湿度传感器
  • OLED显示屏(7针SPI协议)
  • WiFi模块(ESP8266-01s)
  • MQ-7一氧化碳传感器
  • 门磁模块
  • 1×4矩阵键盘
  • DS1302时钟模块
  • 火焰传感器
  • 蜂鸣器
  • LED灯

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板及元器件图

五、程序设计 

  1. int main(void)
  2. {
  3. HAL_Init();
  4. SystemClock_Config();
  5. HAL_Delay(90);
  6. MX_GPIO_Init();
  7. MX_USART1_UART_Init();//串口1初始化
  8. OLED_Init();//oled初始化
  9. OLED_Clear(); //清屏
  10. DHT_Init();
  11. ds1302_init();//RTC初始化
  12. DS1302_WriteTime();
  13. buzz_init();//蜂鸣器
  14. ir_init();//火焰
  15. mq2_init();//煤气
  16. butt_init();//按键
  17. fan_init();//风扇
  18. for(int i=0;i<10;i++)
  19. {
  20. LEDON;
  21. HAL_Delay(100);
  22. LEDOFF;
  23. delay_us(1000);
  24. }
  25. showbegin();//开机动画
  26. delay_us(10);
  27. while (1)
  28. {
  29. if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) == 0 || HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == 0 || HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15) == 1)//进入警报模式
  30. {
  31. if(jingbflag)
  32. {
  33. jingbao =1;//警报开启
  34. if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) == 0)//火灾警报
  35. {
  36. huo = 22;//火焰状态着火
  37. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
  38. OLED_Clear();
  39. OLED_ShowCHinese(47,0,10);
  40. OLED_ShowCHinese(64,0,11);
  41. OLED_ShowCHinese(0,2,21);
  42. OLED_ShowCHinese(17,2,22);
  43. OLED_ShowCHinese(34,2,23);
  44. showhuo();//显示火灾图片
  45. }
  46. else//火焰状态正常
  47. {
  48. huo = 11;
  49. }
  50. if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == 0)//煤气报警
  51. {
  52. mei = 22;
  53. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
  54. HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);
  55. OLED_Clear();
  56. OLED_ShowCHinese(24,0,10);//显示文字
  57. OLED_ShowCHinese(41,0,11);
  58. OLED_ShowCHinese(0,2,49);
  59. OLED_ShowCHinese(17,2,50);//
  60. OLED_ShowCHinese(34,2,51);//
  61. OLED_ShowCHinese(51,2,52);//
  62. showmei();//显示泄漏图片
  63. }
  64. else
  65. {
  66. mei = 11;
  67. }
  68. if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15) == 1)//防盗警报
  69. {
  70. ren =22;
  71. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
  72. OLED_Clear();
  73. OLED_ShowCHinese(24,0,10);
  74. OLED_ShowCHinese(41,0,11);//显示汉字
  75. OLED_ShowCHinese(0,2,12);
  76. OLED_ShowCHinese(17,2,13);//
  77. OLED_ShowCHinese(34,2,14);//
  78. OLED_ShowCHinese(51,2,15);//
  79. showman();//显示防盗图片
  80. }
  81. else
  82. {
  83. ren =11;
  84. }
  85. }
  86. }
  87. else//正常模式
  88. {
  89. huo = 11;
  90. mei = 11;
  91. ren = 11;
  92. if(jingbao == 1)
  93. {
  94. OLED_Clear();
  95. jingbao = 0;//警报解除
  96. }
  97. HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);
  98. HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);
  99. DHT_ReadData();
  100. OLED_ShowCHinese(0,6,7);//显示温度汉字
  101. OLED_ShowCHinese(15,6,8);
  102. OLED_ShowChar(28,6,':');
  103. OLED_ShowCHinese(68,6,9);//显示湿度汉字
  104. OLED_ShowCHinese(83,6,8);
  105. OLED_ShowChar(96,6,':');
  106. OLED_ShowNum(35,6,DHT_data[2],2,16);//显示温度数值
  107. OLED_ShowCHinese(50,6,48);
  108. OLED_ShowChar(57,6,'C');
  109. OLED_ShowNum(104,6,DHT_data[0],2,16);//显示湿度数值
  110. OLED_ShowChar(121,6,'%');
  111. showtime();
  112. }
  113. int num = search(rxdata,18,'Z');
  114. if(num!=-1)
  115. {
  116. rxok = 1;
  117. int begin = 0;
  118. for(int i=0;i<18;i++)
  119. {
  120. if(num<18)
  121. {
  122. rx_normal_data[i]=rxdata[num++];
  123. }
  124. else
  125. {
  126. rx_normal_data[i]=rxdata[begin++];
  127. }
  128. }
  129. }
  130. sprintf(senddata,"%d-%d-%d-%d-%d",DHT_data[2],DHT_data[0],huo,mei,ren);//将温度数值。湿度数值。火灾状态、煤气、防盗、整合到数组
  131. AL_UART_Transmit_IT(&huart1,"AT+CIPSEND=0,14\r\n",sizeof("AT+CIPSEND=0,14\r\n"));//发送初始化
  132. HAL_Delay(300);
  133. HAL_UART_Transmit_IT(&huart1,senddata,14);//启动发送向手机发送数据
  134. HAL_Delay(500);
  135. }

六、实验效果 

七、资料内容

项目分享

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/820370
推荐阅读
相关标签
  

闽ICP备14008679号