当前位置: 首页 > news >正文

STM32项目分享:校园绿色照明智能控制系统

“我们不做一锤子买卖,只做技术成长的长期伙伴!”

目录

一、视频展示

二、项目简介

三、原理图设计

四、PCB硬件设计

五、程序设计

六、资料分享


一、视频展示

基于STM32的智能安防监控系统设计 -视频分享

二、项目简介

题目:校园绿色照明智能控制系统
主控:STM32
BH1750传感器
oled显示
蓝牙模块
USB小灯
DS1302时钟模块
三按键

功能如下:

1、根据环境亮度,随着不同季节日照时长的不同,
     自动控制照明装置开启和关闭例如夏天时晚上7点到第二天5点为开启状态,
     冬天是下午五点到早上七点为开启状态。
2、当检测到光照不足的时候蓝牙发送手机异常提示。
3、PWM调光,根据环境光强度自动调光。
4、手机连接蓝牙,可得到单片机的数据。数据可以发送到云端

三、原理图设计

四、PCB硬件设计

五、程序设计

#include "stm32f10x.h"                  // Device header
#include "delay.h"
#include "lcd.h"
#include "ds1302.h"
#include "IOput.h"
#include "BH1750.h"
#include "pwm.h"
#include "usart.h"float light;
u8 show_flag, show1_flag,light_flag,count,Error=0;void showtime(void)
{ds1032_read_realTime();         //??????OLED_ShowNum(0,4,TimeData.year,4,16);OLED_ShowString(35,4,"/",16);OLED_ShowNum(43,4,TimeData.month,2,16);OLED_ShowString(60,4,"/",16);OLED_ShowNum(70,4,TimeData.day,2,16);OLED_ShowNum(0,6,TimeData.hour,2,16);OLED_ShowString(20,6,":",16);OLED_ShowNum(30,6,TimeData.minute,2,16);OLED_ShowString(50,6,":",16);OLED_ShowNum(60,6,TimeData.second,2,16);}void show_change_time(void)
{OLED_ShowString(0,4,"20",16);OLED_ShowNum(16,4,lssj.year,2,16);OLED_ShowString(35,4,"/",16);OLED_ShowNum(43,4,lssj.month,2,16);OLED_ShowString(60,4,"/",16);OLED_ShowNum(70,4,lssj.day,2,16);OLED_ShowNum(0,6,lssj.hour,2,16);OLED_ShowString(20,6,":",16);OLED_ShowNum(30,6,lssj.minute,2,16);OLED_ShowString(50,6,":",16);OLED_ShowNum(60,6,lssj.second,2,16);Delay_50ms(2);
}int main (void)
{delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);OLED_Init();delay_ms(1);OLED_Clear();Init_BH1750();Usart1_Init(9600);Usart2_Init(9600);TIM_PWM_Init(71,9999);ds1302_gpio_init();input_init();
//	while(1){count++;light=read_BH1750();  //  ȡBH1750 Ĺ ǿ    key_scan();if(light<=30){light_flag=1;}else if(light>30 && light<=60){light_flag=2;}else if(light>60 && light<=100){light_flag=3;}else if(light>100 && light<=130){light_flag=4;}else if(light>130 && light<=160){light_flag=5;}else if(light>160 && light<=200){light_flag=6;}else if(light>200){light_flag=7;}if (key1_flag == 1 && show_flag == 0) {key1_flag = 0;show1_flag++;if (show1_flag >= 2)show1_flag = 0;}// ʱ   ޸ ҳ  if (show1_flag == 1) {OLED_ShowCH(0,0,"    :");OLED_ShowNum(40,0,light,4,16);	OLED_ShowString(96,0,"lx",16);if (key2_flag == 1){key2_flag = 0;show_flag++;}if (show_flag == 7){show_flag = 0;lssj.month = (lssj.month / 10 * 16) + (lssj.month % 10);lssj.day = (lssj.day / 10 * 16) + (lssj.day % 10);lssj.hour = (lssj.hour / 10 * 16) + (lssj.hour % 10);lssj.minute = (lssj.minute / 10 * 16) + (lssj.minute % 10);lssj.second = (lssj.second / 10 * 16) + (lssj.second % 10);lssj.year = lssj.year;ds1032_init();}//   ʾ   ޸ ʱ       switch (show_flag){case 0:showtime();lssj.year = TimeData.year - 2000;lssj.month = TimeData.month;lssj.day = TimeData.day;lssj.hour = TimeData.hour;lssj.minute = TimeData.minute;lssj.second = TimeData.second;lssj.week = TimeData.week;break;case 1:show_change_time();if (key1_flag == 1){key1_flag = 0;lssj.year++;}if (key3_flag == 1){key3_flag = 0;lssj.year--;}if (lssj.year > 100)lssj.year = 0;OLED_ShowChar(24, 4, '_', 16);Delay_50ms(2);break;case 2:show_change_time();if (key1_flag == 1){key1_flag = 0;lssj.month++;}if (key3_flag == 1){key3_flag = 0;lssj.month--;}if (lssj.month > 12)lssj.month = 1;if (lssj.month < 1)lssj.month = 12;OLED_ShowChar(51, 4, '_', 16);Delay_50ms(2);break;case 3:show_change_time();if (key1_flag == 1){key1_flag = 0;lssj.day++;}if (key3_flag == 1){key3_flag = 0;lssj.day--;}if (lssj.day > 31)lssj.day = 1;if (lssj.day < 1)lssj.day = 31;OLED_ShowChar(78, 4, '_', 16);Delay_50ms(2);break;case 4:show_change_time();if (key1_flag == 1){key1_flag = 0;lssj.hour++;if (lssj.hour > 23)lssj.hour = 0;}if (key3_flag == 1){key3_flag = 0;lssj.hour--;if (lssj.hour > 200)lssj.hour = 23;}OLED_ShowChar(8, 6, '_', 16);Delay_50ms(2);break;case 5:show_change_time();if (key1_flag == 1){key1_flag = 0;lssj.minute++;if (lssj.minute > 59)lssj.minute = 0;}if (key3_flag == 1){key3_flag = 0;lssj.minute--;if (lssj.minute > 200)lssj.minute = 59;}OLED_ShowChar(38, 6, '_', 16);Delay_50ms(2);break;case 6:show_change_time();if (key1_flag == 1){key1_flag = 0;lssj.second++;if (lssj.second > 59)lssj.second = 0;}if (key3_flag == 1){key3_flag = 0;lssj.second--;if (lssj.second > 200)lssj.second = 59;}OLED_ShowChar(68, 6, '_', 16);Delay_50ms(2);break;default:break;}}//   ʾ  Ϣ    if (show1_flag == 0){OLED_ShowCH(0,0,"    :");OLED_ShowNum(40,0,light,4,16);	OLED_ShowString(96,0,"lx",16);
//					OLED_ShowNum(72,2,light_flag,2,16);	showtime();OLED_ShowCH(0,2,"    :");if(TimeData.month>=1 && TimeData.month<7)//    Ϊ1  3 £  ļ Ϊ4  6 £  ^Ϊ7  9 £     Ϊ10  12  {OLED_ShowCH(40,2,"    "); //7 㵽   if((TimeData.hour>=19 && TimeData.hour<=23) || (TimeData.hour>=0 && TimeData.hour<5)){if(light_flag==7){TIM_SetCompare2(TIM2,0);}else if(light_flag==6){TIM_SetCompare2(TIM2,16);}else if(light_flag==5){TIM_SetCompare2(TIM2,32);}else if(light_flag==4){TIM_SetCompare2(TIM2,48);}else if(light_flag==3){TIM_SetCompare2(TIM2,64);}else if(light_flag==2){TIM_SetCompare2(TIM2,70);}else if(light_flag==1){TIM_SetCompare2(TIM2,90);}}else{TIM_SetCompare2(TIM2,0);}}if(TimeData.month>=7 && TimeData.month<=12)//    Ϊ1  3 £  ļ Ϊ4  6 £  ^Ϊ7  9 £     Ϊ10  12  {OLED_ShowCH(40,2," ﶬ");//  㵽 ߵ if((TimeData.hour>=17 && TimeData.hour<=23) || (TimeData.hour>=0  && TimeData.hour<7)){if(light_flag==7){TIM_SetCompare2(TIM2,0);}else if(light_flag==6){TIM_SetCompare2(TIM2,16);}else if(light_flag==5){TIM_SetCompare2(TIM2,32);}else if(light_flag==4){TIM_SetCompare2(TIM2,48);}else if(light_flag==3){TIM_SetCompare2(TIM2,64);}else if(light_flag==2){TIM_SetCompare2(TIM2,70);}else if(light_flag==1){TIM_SetCompare2(TIM2,90);}}else{TIM_SetCompare2(TIM2,0);}}}if(light<=50){Error=0;}else{Error=1;}if(count>=50){count=0;UsartPrintf(USART1,"light:%f\r\n",light);if(light<=50){UsartPrintf(USART1,"       ϣ  뼰ʱ       ϵͳ  \r\n",light);UsartPrintf(USART1,"    ʱ  :%d  %d  %d  %dʱ%d  %d  \r\n\r\n",TimeData.year,TimeData.month,TimeData.day,TimeData.hour,TimeData.minute,TimeData.second);}UsartPrintf(USART1,"\r\n");USART_SendData(USART2,'B');delay_ms(1);USART_SendData(USART2,'b');delay_ms(1);USART_SendData(USART2,Error);delay_ms(1);USART_SendData(USART2,'a');delay_ms(1);USART_SendData(USART2,((short int)(light))  >>  8); // ߰ λdelay_ms(1);USART_SendData(USART2,((short int)(light))  &  0x00ff); // Ͱ λdelay_ms(1);USART_SendData(USART2,'E');delay_ms(1);}}
}

六、资料分享

点击即可查看当前资料分享。

http://www.dtcms.com/a/525181.html

相关文章:

  • 共享经济型网站开发湖北省节能建设网站
  • 免费在线网站建设敦化建设局网站
  • oracle数据泵数据库自动备份脚本
  • 数据库运维查询SQL语句集合
  • 家具在线设计网站网上最好购物网站
  • 青岛房地产团购网站建设佛山网站建设网站建设收费
  • Pytest+requests进行接口自动化测试9.0(redis + excal文件的使用)
  • Python+Selenium+Pytest+POM自动化测试框架封装详解
  • 大模型-模型压缩:量化、剪枝、蒸馏、二值化 (1)
  • 高中男女做那个视频网站挂机软件定制
  • 怎么查看一个网站的浏览量自豪地采用wordpress
  • 微网站建设哪里便宜wordpress仿wiki
  • 计算机网络设计:从基础到原则的体系化指南
  • 在安阳想建个网站怎么做经典的网站设计工具
  • 生物油分离及分离产物结构性质与表征
  • Android开发教程之Java入口方法介绍 Java打印 Java注释 Java变量 常量申明 变量命名规则
  • 一个新的面向东亚地区的高精度天气模拟的基准算例已开源发布
  • 宁波易通建设网站网站个人备案百度推官
  • P1928 外星密码(dfs)
  • 什么网站是最全的南通哪里做网站
  • 快速排序代码实现详解
  • 社会工程学全解析:从原理到实战
  • 基于LSTM的多变量时间序列预测创新路径
  • gofair做网站seo规范培训
  • 网站做充值和提现优化企业网站标题
  • 【 RocketMQ 全解析】分布式消息队列的架构、消息转发与快速实践、事务消息
  • k8s上配置canal用的zookeeper为什么需要用两个service?
  • 基于Springboot + vue3实现的房屋买卖平台
  • 网站设计分辨率网站遇到攻击时应该怎么做
  • date-fns 现代 JavaScript 日期实用程序库(基础篇)上