硬件开发_基于STM32单片机的智能路灯系统
一.系统概述
随着智能技术的持续发展,智能路灯系统在城市照明管理中扮演着越来越重要的角色。本文介绍了一种基于STM32单片机的智能路灯系统,该系统能够进行光照检测,并根据光强调节灯光亮度,同时具备多种控制方式和数据展示功能。
-
光照检测与调节:
- 系统配备光照传感器,能够实时监测环境光强度。
- 根据检测到的光强,自动调整路灯亮度,实现节能和舒适的照明效果。
-
定时控制:
- 使用定时模块设置路灯的开启和关闭时间。
- 实现自动化管理,提高系统的智能化水平。
-
手动控制:
- 提供操作按键,用户可以手动控制路灯的开关。
- 方便在特殊情况下进行人工干预。
-
数据展示:
- 系统通过显示屏展示检测到的光强数据和实时时间。
- 直观展示当前系统状态和环境信息。
二.电路设计
电路图采用Altium Designer进行设计,主要包括以下组件:
- 主控单元:采用STM32F103C8T6单片机作为系统控制核心,构建最小系统电路。
- 光强检测:使用光敏电阻模块进行光强检测,传感器的模拟端与单片机的模拟输入端相连接。
- 时钟定时:通过DS1302实现时钟定时功能,利用SDA、SCK、DAT三个引脚与单片机进行连接。
- 数据显示:采用0.96寸OLED 128×64显示屏进行数据显示,通过IIC总线与单片机进行通信。
- 手动控制:配备独立按键用于灯光控制,按键一端接地,另一端连接至单片机的GPIO口。
三.程序设计
#include "sys.h"
#include "delay.h"
#include "adc2.h"
#include "math.h"
#include "key.h"
#include "OLED_I2C.h"
#include "Control_Report_To_Police.h"int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级delay_init(); //延时函数初始化 KEY_Init();Adc2_Init(); //光照E18_D80_Init(); DS1302_GPIO_Init_Write_Time();Led0_init();TIM4_Init(2005,719); //定时器 72M/(719+1)=100KHz 1个计数周期是0.01msOLED_Init(); //OLED初始化OLED_CLS(); //OLED清屏OLED_ShowCN(32,2,0); //小常硬件OLED_ShowCN(32+16,2,1);OLED_ShowCN(32+32,2,2);OLED_ShowCN(32+32+16,2,3);delay_ms(100);OLED_CLS();/*******显示汉字**********/OLED_ShowCN(0,0,14); OLED_ShowCN(0+16,0,15);
// OLED_ShowCN(0,2,12);
// OLED_ShowCN(0+16,2,13); // // Beep=1;//蜂鸣器初始化 系统上电后先让蜂鸣器停止叫while(1){OLED_Display_Cotrol(); //显示控制函数}
}
四.资料内容
24-32-52