我是靠谱客的博主 俏皮钥匙,最近开发中收集的这篇文章主要介绍基于STM32的阿里云智能路灯照明控制系统前言一、任务书二、代码思路三、硬件及框图四、代码以及框图等资料五、联系我们六、部分代码,加了阿里云喜欢请点赞哦!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

提示:记录毕设

文章目录

  • 前言
  • 一、任务书
        • 1.1设计(研究)目标:
        • 1.2设计(研究)内容:
  • 二、代码思路
        • 2.1 代码部分
        • 2.2 硬件设计部分
        • 2.4 昼夜模式
  • 三、硬件及框图
  • 四、代码以及框图等资料
  • 五、联系我们
  • 六、部分代码,加了阿里云
  • 喜欢请点赞哦!

前言

路灯是一个城市基础设施的重要组成部分,也是人类生活中必不可少的工具。但目前国内的路灯设备基本上处于人工监控的状态,需要大量的人力资源进行维护和维修,其次,路灯往往不能在光线发生变化时及时调整开关状态,从而造成了巨大的能源浪费。此外,由于路灯的布设环境复杂,布设地域广,在发生故障时往往难以被路灯巡检人员及时发现,这就造成了故障路灯难以及时得到修复,为人们的夜间出行带来了安全隐患。

随着物联网的发展,越来越多的物联网技术被运用到各行各业之中。路灯作为城市照明的基础,直接影响着人们的生活质量,所以,使用物联网技术设计一种智能化路灯,在智慧城市的推进过程中有着重要的作用。为了解 决 目 前路灯设备存在的智能化程度低、人力资源需求高、能源浪费大、检修效率低等问题,文中设计了一种基于STM32的路灯智能监测控制系统。该系统能够实现光照强度、PM2.5等环境数据的采集,根据光照强度和时间进行自动开关路灯操作,并实时监测路灯的工作状态。此外,该系统能够通过4G无线传输方式与上位机进行信息交互,实现远程数据传输及远程控制。

基于STM32的车间煤矿井下探测系统,主控使用STM32F103ZET6,在正点原子的精英板上开发。


一、任务书

1.1设计(研究)目标:

以STM32单片机为核心器件,设计一个智能路灯照明控制系统系统。路灯智能监测控制系统主要由六个部分组成,分别是MCU、环境信息采集模块、路灯控制模块、故障检测模 块、无线通信模块和上位机 理模块。其中,MCU为主控制器,是系统的核心模块,环境信息采集模块负责采集各类环境数据,路灯控制模块负责控制路灯的开关,故障检测模块负责对路灯运行状态进行监测,无线通信模块负责实现上位机与下位机之间的数据通信,上位机管理模块是用户可视化的展示与控制界面。

1.2设计(研究)内容:

  • 总体要求
    1、题目的意义;
    2、各种传感器及设备的一般技术和特殊技术的学习:
    3、总体方案的选型设计:
    4、STM32单片机及其外围设备的软硬件系统的技术开发:
    5、系统的调试和总体运行原理
  • 其他设计内容;具体要求:
    1、硬件要求1张1号以上的大图:
    2、软件以流程图方式表示:
    3、有调试的说明。

二、代码思路

2.1 代码部分

  • 打开定时器2,作为系统运行时间;
  • esp8266每1S刷新一次;
  • dht11每800ms刷新一次;

2.2 硬件设计部分

  • 光照传感器的数据信号处理模块的处理器使用的是STC15W404AS,在该模块中使用单片机的串口1进行下载和仿真,串口2通过RS485总线接收STM32所发送的采集指令,并将封装好的传感器数据帧发送给数据处理模块,串口3通过IIC总线接收BH1750传感器采集的光照强度数据。

  • 故障检测模块的主要功能为检测路灯是否能够正常打开或关闭,并在路灯出现故障时,及时将故障信息上传到上位机端,以便检修人员及时进行修复。当路灯正常点亮时,路灯供电电路的电流在2A~3A之间,所以该模块使用了电流互感器和电磁继电器对路灯电路中的电流是否达到了正常范围进行检测。电流互感器感应到路 灯 电 路 中 的 电 流 后,经 过1000倍 的缩小后驱动电磁继电器闭合,从而使电磁继电器负载端输出一个5V高电平,STM32的PD13引 脚 只 需 检测该电平的高低状态即可判定当前路灯的开关状态。

2.4 昼夜模式

具体实现过程中,系统分为夜间模式和非夜间模式,夜间12点到次日凌晨6点,系统进入夜间工作模式,此时路灯除采集温湿度信息外,主要采集人体红外传感器的数据,若有人经过,通过人体红外感应传感器可获取相应信号,此时控制路灯自动点亮,当人离开路灯一定范围,通过检测到的数据控制路灯熄灭,这样路灯就不会处于整晚点亮状态,可有效节省电能。若系统工作在非夜间模式下,此时路灯除采集温湿度数据外,主要采集光敏传感器的数据,根据采集到的光照强度对比设置的阈值,决定是否点亮路灯及是否调整路灯的亮度,实现按需照明。

  • 夜间模式
    在这里插入图片描述

  • 白天模式
    在这里插入图片描述

三、硬件及框图

  • ESP826601s
  • DHT11
  • OLED
  • 按键
  • 电流互感器
  • LED

在这里插入图片描述

四、代码以及框图等资料


int main(void)
{

	while(1)
	{	
		
		/*****************************************************/
		//以下是读取温湿度光照等数据
		/*****************************************************/
		Light=ADC_IN1(); //in0
		Light=Light/Light_Check;
		delay_ms(1);
		
		wendu=ADC_IN2();  //in1
		wendu=wendu/wendu_Check;
		delay_ms(1);
		
		shidu=ADC_IN3();  //in2
		shidu=shidu/shidu_Check;
		delay_ms(1);

		/*****************************************************/
		//以下是蜂鸣器报警
		/*****************************************************/			
		if(CH4>=Set_CH4||CO>=Set_CO||HS>=Set_CH4||O2>=Set_O2)BEEP=0;
		else BEEP=1;

		
		/*****************************************************/
		//以下是OLED显示
		/*****************************************************/
		show_caption();
		show_chinese();
		show_data();
		
		
		/*****************************************************/
		//以下代码是测试用
		/*****************************************************/					
		if(send_flag==1)
		{
			LED=!LED;
			send_flag=0;
		}					
	}
}


在这里插入图片描述

五、联系我们

(qq)“2424644692”
承接stm32单片机、STC 51/52系列单片机设计、嵌入式。

六、部分代码,加了阿里云

int main(void)
{
	vu8 key=0;

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  delay_init();			  // 延时初始化
  all_usart_init();		// 串口初始化
	LED_Init();         //LED初始化
	
  KEY_Init();	
	PCF8591_Init();     //pcf8591初始化
	TIM3_PWM_Init(899,0);	    //不分频。PWM频率=72000000/900=80Khz
	
	DHT11_Start();
	TIM2_Int_Init(999,7199);  //10Khz的计数频率,计数到1000为100ms
	OLED_Init();              //oled初始化
	OLED_Clear();             //清屏
	
	//show_caption();
	Show_Chinese();	

	while(1)
	{
		/*****************************************************/
		//以下是按键
		/*****************************************************/			
		key=KEY_Scan(0);	//得到键值

		if(key==1);
		else if(key==2) OLED_ShowString(60 ,0,"        ",16);
		else if(key==3) system_mode=!system_mode;
		else if(key==4) OLED_ShowString(60 ,0,"Wring!!!",16);
		else delay_ms(10);				
		
		
		/*****************************************************/
		//以下是读取pcf8591,light范围0-255
		/*****************************************************/
		if(!system_mode)//自动
		{
			light=ADC_IN2();
		}
		else //手动
		{
			if(ADC_IN2()/2.55+2>=60)
			{
				if(key==1) //有障碍或者接收到A
				{
					light=255;
					TIM_SetCompare2(TIM3,1020-light*4);	
					delay_ms(1000);delay_ms(1000);delay_ms(1000);delay_ms(1000);delay_ms(1000);
				}
				else light=0;
			}
			else if(key==5)
			{
				light=255;
				TIM_SetCompare2(TIM3,1020-light*4);	
				delay_ms(1000);delay_ms(1000);delay_ms(1000);delay_ms(1000);delay_ms(1000);
			}
			else light=0;		
		}
	  light_change=light/2.55;
		OLED_ShowNum(34,3,light_change+2,3,16);
		
		//电压
		OLED_ShowNum(0,0,ADC_IN2()/20,3,16);


		/*****************************************************/
		//以下是切换模式
		/*****************************************************/			
		if(system_mode) OLED_ShowString(38 ,6,"S",16);
		else OLED_ShowString(38 ,6,"Z",16);			

		
		/*****************************************************/
		//以下是调节pwm调节亮度,led0pwmval范围0-900
		/*****************************************************/	
		TIM_SetCompare2(TIM3,1020-light*4);	
    
	
		/*****************************************************/
		//以下是采集模拟量和温湿度
		//dht_flag是读取标志,每800ms这个标志位会被置1一次
		//OLED_ShowNum,这是在oled屏上显示的函数
		//ADC_IN()是采集过来的电压值
		/*****************************************************/
		if(dht_flag==1)
		{
			dht_flag=0;
			DHT11_ReadData(&shidu,&wendu);
			OLED_ShowNum(98,3,shidu,3,16);
			OLED_ShowNum(98,6,wendu,3,16);
		}

		sprintf(topicmsg,"%s%d%s%d%s","{\"temp\":",light_change,",\"humi\":",100-light_change,"}");
		//sprintf(topicmsg,"%s%d%s%d%s","{\"temp\":",wendu,",\"humi\":",shidu,"}");
		Send_Aliyun(topicmsg);
		delay_ms(500);
		
		sprintf(topicmsg1,"%s%d%s%d%s","{\"wendu\":",wendu,",\"shidu\":",shidu,"}");
		Send_Aliyun(topicmsg1);
		delay_ms(500);
		key=0;
		/*****************************************************/
		//以下是ESP8266向PC发送数据,每1s发送一次
		/*****************************************************/		
//		if(esp_flag==1)
//		{
//			esp_flag=0;
//			LED=!LED;		
//		}
	}
}


void show_caption(void)
{
	//云端平台监测系统
	OLED_ShowCHinese(0,0,0);
	OLED_ShowCHinese(16,0,1);
	OLED_ShowCHinese(32,0,2);
	OLED_ShowCHinese(48,0,3);
	OLED_ShowCHinese(64,0,4);
	OLED_ShowCHinese(80,0,5);
	OLED_ShowCHinese(96,0,6);
	OLED_ShowCHinese(112,0,7);
}

void Show_Chinese(void)
{
	OLED_ShowString(2 ,3,"Lig:",16);
	OLED_ShowString(68,3,"Hum:",16);
	OLED_ShowString(2 ,6,"Mod:",16);
	OLED_ShowString(68,6,"Tem:",16);
	OLED_ShowString(32,0,"V",16);
}

void Send_Aliyun(char* topic_msg)
{
	char Aliyun[200];
	sprintf(Aliyun,"%s%s%s", "{"topic&msg":"", topic_msg, ""}rn");
	//printf(Aliyun);
	usart1_Sendchar(Aliyun);
}


喜欢请点赞哦!

在这里插入图片描述

最后

以上就是俏皮钥匙为你收集整理的基于STM32的阿里云智能路灯照明控制系统前言一、任务书二、代码思路三、硬件及框图四、代码以及框图等资料五、联系我们六、部分代码,加了阿里云喜欢请点赞哦!的全部内容,希望文章能够帮你解决基于STM32的阿里云智能路灯照明控制系统前言一、任务书二、代码思路三、硬件及框图四、代码以及框图等资料五、联系我们六、部分代码,加了阿里云喜欢请点赞哦!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部