一.系统概述
基于STM32单片机的智能投影灯,具备以下功能:
1. 手动控制:通过手动开关控制灯的开关状态。
2. 灯色变换:提供三种不同的灯光颜色,可以在这三种颜色之间切换。
3. 底盘与灯片旋转:控制灯的底盘转动,带动灯片进行旋转,实现动态效果。
4. 远程控制:通过手机应用程序实现远程控制,包括灯的开关、灯色变化和音乐播放功能。
系统功能流程:
1. 手动开关控制:用户可以通过物理开关直接控制灯的开关。
2. 灯色变换:提供三种灯光颜色选项,通过按钮或远程控制切换不同的灯光颜色。
3. 底盘与灯片旋转:控制底盘转动,带动灯片旋转,创建动态投影效果。
4. 远程控制功能:开发手机应用程序,通过蓝牙或Wi-Fi与投影灯通信,实现远程控制灯的开关、颜色变换和音乐播放功能。
二.电路设计
电路图采用Altium Designer进行设计:
1. 通过STM32F103C8T6单片机作为系统主控,最小系统电路是整个电路的核心;
2. 通过ULN2003进行步进电机的驱动,模块的IN输入端接单片机的GPIO口,OUT输出端接电机;
3. 使用JR6001进行语音播报,并通过UART串口与单片机进行连接;
4. 通过ESP8266-01S将检测到数据上传到上位机,通过UART串口与单片机进行通信;
5. 使用独立按键进行旋转灯控制,按键的一端接地,一端接单片机的GPIO口。
三.程序设计
#include "sys.h"
#include "delay.h"
#include "adc.h"
#include "math.h"
#include "key.h"
#include "OLED_I2C.h"
#include "Beep_Led_Relay.h"
#include "Control_Report_To_Police.h"
#include "ds18b20.h"
#include "ds1302.h"
#include <Usart1.h>
/************************************************
版权:小常硬件
公众号:微信搜索“小常硬件“在公众号免费下载相关资料
************************************************/
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
delay_init(); //延时函数初始化
TIM4_Init(300,7200);
KEY1_Init(); //PB12 PB13 PB14 PB15
RGBLED_init() ; //PB0 PB1 PB10
ULN2003_GPIOB_Init();
RGB_B=0;RGB_G=0;RGB_R=0;
Usart1_Init(9600);
JR6001_Uart1_init((u32*)9600);
ALi_ESP8266_GPIO_Init(); //PA2 PA3 PA8
MQTT_Buff_Init();
AliIoT_Parameter_Init();
Usart1_TxString("A8:02/00001*MP3");
delay_ms(2000);
while(1)
{
OLED_Display_Cotrol(); //显示控制函数
}
}