当前位置:   article > 正文

STM32项目分享:智能家居(机智云)系统

stm32项目

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板及元器件图

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

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

(资料分享见文末) 

二、项目简介

1.功能详解

基于STM32的智能家居(机智云)系统。

功能如下:

  1. 采集温湿度:系统通过DHT11模块采集温湿度
  2. 烟雾监测:通过MQ-2模块采集环境中烟雾浓度
  3. 煤气监测:通过MQ-7一氧化碳模块采集环境中一氧化碳浓度
  4. 空气质量监测:通过MQ-7空气质量传感器采集环境空气质量情况
  5. 大气压强采集:通过BMP280采集环境气压大小
  6. 窗帘控制:通过步进电机模拟窗帘开关
  7. LED灯控制:控制LED灯
  8. OLED显示:显示温湿度、烟雾浓度、一氧化碳浓度、空气质量、大气压强等信息
  9. 蜂鸣器报警:危险情况下本地蜂鸣器触发报警
  10. 自动模式:设置自动模式,系统根据光强大小控制窗帘和LED灯的开闭
  11. 手动模式:设置手动模式,APP手动控制窗帘和LED灯的开关
  12. WIFI通信:使用ESP8266等进行WiFi远程通信
  13. APP功能:使用机智云APP,包括功能有控制并显示LED灯和窗帘的状态、显示当前温湿度、烟雾浓度、一氧化碳浓度和空气质量等信息。

2.主要器件

  • STM32F103C8T6最小系统板
  • DHT11温湿度传感器
  • OLED显示屏(7针SPI协议)
  • WiFi模块(ESP8266-01s)
  • MQ-2烟雾传感器
  • MQ-7一氧化碳传感器
  • MQ-135空气质量传感器
  • BMP280气压传感器
  • 28BYJ51步进电机
  • 蜂鸣器
  • LED灯

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板及元器件图

五、程序设计 

  1. int main(void)
  2. {
  3. u8 t=0;
  4. int key_value; //按键值
  5. uart_init(115200); //串口初始化为115200
  6. delay_init(); //延时函数初始化
  7. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  8. Adc1_Channe_Init(); //ADC通道初始化
  9. KEY_Init(); //按键引脚初始化
  10. bmp280Init();
  11. //while(DHT11_Init());
  12. LED_Init(); //初始化与LED连接的硬件接口
  13. MOTOR_Init();
  14. OLED_Init(); //OLED初始化
  15. OLED_Clear(); //OLED清屏
  16. Gizwits_Init();
  17. gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入
  18. delay_ms(500);
  19. while(1)
  20. {
  21. Get_Data(0);
  22. if(gz_value<=A_gz_value&&mode==0)
  23. {
  24. LED0=0;
  25. curtain_flag=0;
  26. }else if(gz_value>A_gz_value&&mode==0){
  27. LED0=1;
  28. curtain_flag=1;
  29. }
  30. if(last_curtain_flag!=curtain_flag&&mode==0)
  31. {
  32. BUJING_Cotrol(curtain_flag,3,270);
  33. last_curtain_flag = curtain_flag;
  34. }
  35. if(last_curtain_flag!=currentDataPoint.valueCurtain&&mode==1)
  36. {
  37. BUJING_Cotrol(currentDataPoint.valueCurtain,3,270);
  38. curtain_flag = currentDataPoint.valueCurtain;
  39. last_curtain_flag = currentDataPoint.valueCurtain;
  40. }
  41. if(mode==1)
  42. {
  43. LED0=!currentDataPoint.valueLED;
  44. }
  45. if(DHT11_Temp>=A_DHT11_Temp||DHT11_Hum<=A_DHT11_Hum||Pre>=A_pre||m135_value<=A_m135_value||m2_value>=A_m2_value||m7_value>=A_m7_value)
  46. {
  47. BEEP=!BEEP;
  48. }else BEEP = 0;
  49. key_value = KEY_Scan(0);
  50. if(key_value==2)
  51. {
  52. display_contrl++;
  53. }
  54. if(display_contrl%2==0&&t>=10)
  55. {
  56. OLED_ShowCHinese(0,0,0);
  57. OLED_ShowCHinese(16,0,2);
  58. sprintf((char*)buff,":%2dC",DHT11_Temp);
  59. OLED_ShowString(32,0,buff,16); //显示温度
  60. OLED_ShowCHinese(64,0,1);
  61. OLED_ShowCHinese(82,0,2);
  62. sprintf((char*)buff,":%2d%%",DHT11_Hum);
  63. OLED_ShowString(96,0,buff,16);//显示湿度
  64. OLED_ShowCHinese(0,2,3);
  65. OLED_ShowCHinese(16,2,4);
  66. sprintf((char*)buff,":%2dhpa ",Pre);
  67. OLED_ShowString(32,2,buff,16);//显示气压
  68. OLED_ShowCHinese(0,4,5);
  69. OLED_ShowCHinese(16,4,6);
  70. OLED_ShowCHinese(32,4,7);
  71. OLED_ShowCHinese(48,4,8);
  72. sprintf((char*)buff,":%4dppm",gz_value);
  73. OLED_ShowString(64,4,buff,16);//显示光照强度
  74. OLED_ShowCHinese(0,6,9);
  75. OLED_ShowCHinese(16,6,10);
  76. OLED_ShowCHinese(32,6,11);
  77. OLED_ShowCHinese(48,6,12);
  78. sprintf((char*)buff,":%4dppm",m135_value);
  79. OLED_ShowString(64,6,buff,16);//显示空气质量
  80. }else if(display_contrl%2==1&&t>=10)
  81. {
  82. OLED_ShowCHinese(0,0,13);
  83. OLED_ShowCHinese(16,0,14);
  84. OLED_ShowCHinese(32,0,15);
  85. OLED_ShowCHinese(48,0,16);
  86. sprintf((char*)buff,":%4dppm",m2_value);
  87. OLED_ShowString(64,0,buff,16);//显示M2数据
  88. OLED_ShowCHinese(0,2,17);
  89. OLED_ShowCHinese(16,2,18);
  90. OLED_ShowCHinese(32,2,19);
  91. OLED_ShowCHinese(48,2,20);
  92. sprintf((char*)buff,":%4dppm",m7_value);
  93. OLED_ShowString(64,2,buff,16);//显示M7数据
  94. OLED_ShowCHinese(0,4,5);
  95. OLED_ShowCHinese(16,4,6);
  96. OLED_ShowCHinese(32,4,7);
  97. OLED_ShowCHinese(48,4,8);
  98. sprintf((char*)buff,":%4dppm",gz_value);
  99. OLED_ShowString(64,4,buff,16);//显示光照强度
  100. OLED_ShowCHinese(0,6,9);
  101. OLED_ShowCHinese(16,6,10);
  102. OLED_ShowCHinese(32,6,11);
  103. OLED_ShowCHinese(48,6,12);
  104. sprintf((char*)buff,":%4dppm",m135_value);
  105. OLED_ShowString(64,6,buff,16);//显示M135数据
  106. }
  107. userHandle(); //用户数据采集
  108. WIFI_Contection(key_value);//WiFi连接控制
  109. gizwitsHandle((dataPoint_t *)&currentDataPoint);//机智云协议处理
  110. Canshu_Change(key_value);
  111. t++;
  112. delay_ms(100);
  113. }
  114. }

六、实验效果 

七、资料内容

项目分享

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

闽ICP备14008679号