
基于STM32的智能路灯控制系统.docx
19页xxxx电气工程学院第三届电子设计大赛D题 智能路灯系统组 长:xxx学 号:xxxx队员1:xxxxx 学号:xxxxxxx队员2:xxxxx 学号: xxxxx学 院:xx大学电气工程学院 xxx大学通信工程学院 摘 要本设计根据题目要求制作一套智能路灯控制系统,并且本着低成本高性能、结构简单、控制方便、直观显示等的设计思想我们通过对硬件系统和软件程序的设计,以此实现通过光线强弱状态来控制路灯的亮灭功能其中硬件电路部分主要包括:单片机最小系统、路灯控制电路部分、红外检测和执行电路部分、数码管显示电路部分;软件部分主要包括:相应软件和路灯控制、光电检测和执行、时间显示等程序模块为了能够精确控制智能灯的开关状态,本参赛队队员决定采用集成度高、处理能力强、可靠性高的单片机STM32F103RCT6设计相应程序,通过红外检测模块来检测是否有物体通过当物体通过时,下降沿触发产生中断,随后单片机执行中断函数里的命令通过CH340g串口通信用电脑将采集到的有用数据发送给单片机,以此通过引脚高低电平和驱动电路控制路灯亮灭再经处理后将物体通过的时间和对应速度显示在数码管上。
关键词:STM32F103RCT6,红外检测模块,LED驱动电路,CH340g串口通信 1.系统方案论证与比较1.1整体设计思路流程1.2单片机模块部分方案一:选择STC89C52作为主控芯片,STC89C52周期比较慢,系统反应比较慢方案二:选择STM32F103RB作为主控芯片,这款单片机的虽然周期是比STC89C52快,但是CPU兼容性不强,存储空间不够大方案三:选择STM32F103RCT6作为主控芯片,这块芯片CPU兼容性更强,同时存储空间很强大,一个16位普通IC/OC/PWM),2个16位基本(IC/OC/PWM),1个STI,2个USART,同时具有低功率、记忆、定时器等功能完全可以满足系统智能控制的要求综合以上三种方案,选择方案三2.电路与程序设计2.1电路的设计2.1.1红外感应检测模块部分采用红外感应技术而不采用其他人体感应技术,是因为目前基于红外线的人体感应技术已经发展成熟,各种类型的红外感应器也已经十分多见,而且价格便宜,目前成为最流行的人体感应技术红外感应部分由红外线自动检测电路、逻辑运算、延迟电路、驱动电路等组成利用红外传感器,可以检测到人体的接近、移动等运动状态。
即当有人体进入到感应区域内时,红外发射电路发出的红外线被人体反射回一部分,红外接收电路接收后通过逻辑运算电路控制路灯的亮灭,从而实现自动控制红外自动检测系统如图1-3所示光学系统传导系统信号处理传感器红外源图1-3红外线自动检测系统框图2.1.2 LED驱动电路部分本部分通过LED驱动电路根据环境亮度的敏感程度做出反应当环境亮度较低时(夜晚时分),电路将自动启动,给红外感应器模块供电,这时可以根据有没有人经过而自动控制路灯的亮灭当环境亮度较高时(白天或者周围有更高亮度的路灯点亮时),电路将自动切断并进入省电模式,这是无论有没有人经过,路灯都不会点亮如下1-4为LED驱动电路的仿真图图1-4LED驱动电路设计图其中每只LED灯控制逻辑关系如图1-5所示,即在规定的时间条件成立的条件下,当明暗条件成立的情况下开灯时间条件1LED灯明暗条件 输出为1 灯亮 输出为0 灯灭图1-5 LED灯控制逻辑图2.1.3 串口通信部分该部分采用的是通过CH340g进行串口通信,即进行软件设置以后,将编程器与目标板连接,然后对单片机烧录程序2.1.4 系统总体框图 智能路灯控制系统主要采用单片机进行控制,根据环境的明暗程度以及时间条件来决定路灯的开与关,其控制流程如下开始 初始化显示系统信息 循环处理接受处理是否控制 是 关灯控制开灯控制时间调整 循环处理开灯时间成立?明暗条件成立?立否 否LED1和LED2熄灭LED1和LED2熄灭 是 是 2.2程序的设计1、程序功能根据题目要求软件部分主要实现运算与显示。
2、程序设计利用单片机STM32F103RCT6的外部中断以及计时器功能,通过红外检测模块来检测是否有物体通过当物体通过时,下降沿触发产生中断,随后单片机执行中断函数里的命令以此通过引脚高低电平和驱动电路控制路灯亮灭,再经处理后将物体通过的时间和对应速度显示在数码管上3.测试方案与测试结果3.1测试方案1、硬件测试首先分模块搭建硬件电路并分别测试成功,然后将分立的模块搭建在一起测试整体功能经测试,我们的电源模块、功耗模块、单片机控制模块以及信号检测放大模块均工作正常2、软件仿真测试利用Proteus软件画出电路仿真图,进行电路的各项性能测试,结果正常3、硬件软件联调软件仿真结果与实测值进行比较,分析差异原因,找出改进方案3.2 测试结果及分析 经过测试,系统各部分均工作正常,智能路灯照明系统可以控制LED灯的开关状态同时可以根据数码管显示相应物体运动速度等,测试结果也比较准确,因此本设计可以满足相应功能附主要程序:主函数#include "stm32f10x.h"#include"LCD1602.h"#include"time_i.h"#include"clock.h"#include "delay.h"#include "sys.h"#include "usart.h"#include"strcmp.h"#include"Fixed_time.h"#include"led.h"#include"Digital_LED.h"#include"Alarm.h"#include"Speed_Cal.h"#include"IR_EXTI.h"#include"EXTI_PC10.h"#include"EXTI_PC11.h"#include"exti_PC13.h"#include"EXTI_PC14.h"#include"EXTI_PC15.h"#include"Judge_LED.h"int main(void){ u8 t; u8 len; u8 Time_Set[]="Set"; u8 Time_Set_Flag=0; u8 Fix_Flag=0; u8 *P_Fix_Flag; P_Fix_Flag=&Fix_Flag; order=Pass_order=0; //LED1_Flag=LED2_Flag=0; //LED_1=LED_2=L=M=R=1; Time_Record_Flag=0; Action_Record=0;/****************************************************************************/ /*配置GPIO*/ LCD_Data_GPIO_Config(); LCD_Com_GPIO_Config();/*配置数码管的GPIO*/ Digital_LED_GPIO_Init(); /*LED GPIO配置*/ LED_GPIO_Config(); /*LCD初始化*/ LCD1602_Init(); /*延时函数初始化*/ delay_init(); /*设置中断优先级分组*/ NVIC_Configuration_sys(); /*警报初始化*/ Alarm_Config(); /*外部中断初始化*/ //EXTI_PC_Config(); EXTI_PC10_Config(); EXTI_PC11_Config(); EXTI_PC13_Config(); EXTI_PC14_Config(); EXTI_PC15_Config(); /*串口初始化为9600*/ uart_init(9600); /*配置TIM3 默认开启时钟*/ Timer_Init(); /*给时钟赋初始时间*/ Clock_Init();/*****************************************************************/ LED1(OFF); LED2(OFF); while(1) {Judge(); {if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度 printf("%s_%s_%s_%s\r\nThe message you have sent:\r\n\n",Fixed_Buf1,Fixed_Buf3,Fixed_Buf2,Fixed_Buf4); for(t=0;t












