当前位置:   article > 正文

STM32项目分享:智能窗帘系统_stm32简单小项目

stm32简单小项目

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板打样焊接图

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

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

(资料分享见文末) 

二、项目简介

1.功能详解

基于STM32智能窗帘系统。功能如下:

  1. 光强采集:光敏电阻实时采集环境光强度数据
  2. 温湿度采集:DHT11温湿度传感器采集环境温湿度
  3. 危险气体监测:MQ-7判断危险气体是否超标(超标板子指示灯闪烁)
  4. 窗帘控制:步进电机模拟窗帘驱动开闭
  5. OLED显示:当前时间,温湿度数据,模式信息
  6. 实时时钟:DS1302时钟模块读取记录当前时间
  7. 蓝牙APP控制:手机端蓝牙app远程遥控窗帘
  8. 控制模式:JR6001语音模块驱动扬声器播报提示音
  9. 控制模式:支持四种窗帘控制模式:自动模式、手动模式、定时模式和遥控模块,可按键切换

2.主要器件

  • STM32F103C8T6最小系统板
  • OLED显示屏(4针I2C协议)
  • 光敏电阻
  • DHT11温湿度传感器
  • MQ-7一氧化碳传感器
  • 28BYJ51步进电机
  • ULN2003步进电机驱动芯片
  • 蓝牙模块(BT04-A)
  • JR6001串口语音模块
  • 扬声器

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板打样焊接图

五、程序设计 

  1. int main(void)
  2. {
  3. u16 ii=0;
  4. delay_init();
  5. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  6. uart_init(9600); //语音模块串口初始化
  7. usart3_init(9600); //蓝牙使用
  8. DHT11_Init();
  9. Adc_Init();
  10. Moto_Init();
  11. ds1302_gpio_init();
  12. ds1032_init(); //时间设置
  13. ds1032_read_realTime(); //读取实时数据
  14. KEY_Init();
  15. MQ_Init();
  16. LED_Init();
  17. OLED_Init(); //屏幕初始化
  18. TIM3_Int_Init(719,7199);
  19. printf("AF:30");//声音调到31档 最大
  20. delay_ms(100);
  21. delay_ms(1000);
  22. printf("A7:00003");//欢迎使用
  23. delay_ms(1000);
  24. OLED_CLS();
  25. while(1)
  26. {
  27. if(Flag_caidan==1)//自动模式
  28. {
  29. delay_ms(500);
  30. Flag_adc=Get_Adc_Average(0,10);
  31. delay_ms(500);
  32. if(Flag_adc>1000&&Flag_dakai==0)
  33. {
  34. printf("A7:00001");//打开
  35. TIM_Cmd(TIM3,DISABLE);
  36. for(ii=0;ii<Num_i;ii++)
  37. {
  38. Motorcw_angle(1,3);
  39. MotorStop();
  40. }
  41. TIM_Cmd(TIM3, ENABLE);
  42. Flag_dakai=1;
  43. dakai=1;
  44. }
  45. if(Flag_adc<1000&&Flag_dakai==1)
  46. {
  47. printf("A7:00002");//关闭
  48. TIM_Cmd(TIM3,DISABLE);
  49. for(ii=0;ii<Num_i;ii++)
  50. {
  51. Motorccw_angle(1,3);
  52. MotorStop();
  53. }
  54. TIM_Cmd(TIM3, ENABLE);
  55. Flag_dakai=0;
  56. dakai=0;
  57. }
  58. if(MQ==0)
  59. {
  60. LED0 = !LED0;
  61. delay_ms(100);
  62. LED0 = !LED0;
  63. delay_ms(100);
  64. }
  65. }
  66. if(Flag_caidan==2)//手动模式
  67. {
  68. if(dakai==1&&Flag_dakai==0)
  69. {
  70. printf("A7:00006");//打开
  71. TIM_Cmd(TIM3,DISABLE);
  72. for(ii=0;ii<Num_i;ii++)
  73. {
  74. Motorcw_angle(1,3);
  75. MotorStop();
  76. }
  77. TIM_Cmd(TIM3, ENABLE);
  78. Flag_dakai=1;
  79. }
  80. if(dakai==0&&Flag_dakai==1)
  81. {
  82. printf("A7:00007");//关闭
  83. TIM_Cmd(TIM3,DISABLE);
  84. for(ii=0;ii<Num_i;ii++)
  85. {
  86. Motorccw_angle(1,3);
  87. MotorStop();
  88. }
  89. TIM_Cmd(TIM3, ENABLE);
  90. Flag_dakai=0;
  91. }
  92. }
  93. if(Flag_caidan==3)//定时模式
  94. {
  95. if(TimeRAM.kai==1&&Flag_dakai==0)
  96. {
  97. if(TimeRAM.hour_kai==TimeData.hour&&TimeRAM.minute_kai==TimeData.minute)
  98. {
  99. printf("A7:00006");//打开
  100. TIM_Cmd(TIM3,DISABLE);
  101. for(ii=0;ii<Num_i;ii++)
  102. {
  103. Motorcw_angle(1,3);
  104. MotorStop();
  105. }
  106. TIM_Cmd(TIM3, ENABLE);
  107. Flag_dakai=1;
  108. }
  109. }
  110. if(TimeRAM.guan==1&&Flag_dakai==1)
  111. {
  112. if(TimeRAM.hour_guan==TimeData.hour&&TimeRAM.minute_guan==TimeData.minute)
  113. {
  114. printf("A7:00007");//关闭
  115. TIM_Cmd(TIM3,DISABLE);
  116. for(ii=0;ii<Num_i;ii++)
  117. {
  118. Motorccw_angle(1,3);
  119. MotorStop();
  120. }
  121. TIM_Cmd(TIM3, ENABLE);
  122. Flag_dakai=0;
  123. }
  124. }
  125. }
  126. if(Flag_caidan==4)//遥控模式
  127. {
  128. if(dakai==1&&Flag_dakai==0)
  129. {
  130. printf("A7:00006");//打开
  131. TIM_Cmd(TIM3,DISABLE);
  132. ii=0;
  133. for(ii=0;ii<Num_i;ii++)
  134. {
  135. Motorcw_angle(1,3);
  136. MotorStop();
  137. }
  138. TIM_Cmd(TIM3, ENABLE);
  139. Flag_dakai=1;
  140. }
  141. if(dakai==0&&Flag_dakai==1)
  142. {
  143. printf("A7:00007");//关闭
  144. TIM_Cmd(TIM3,DISABLE);
  145. for(ii=0;ii<Num_i;ii++)
  146. {
  147. Motorccw_angle(1,3);
  148. MotorStop();
  149. }
  150. TIM_Cmd(TIM3, ENABLE);
  151. Flag_dakai=0;
  152. }
  153. }
  154. }
  155. }

六、实验效果 

七、资料内容

项目分享

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

闽ICP备14008679号