问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于STM32单片机的声控灯系统开发实例

创作时间:
作者:
@小白创作中心

基于STM32单片机的声控灯系统开发实例

引用
CSDN
1.
https://blog.csdn.net/XCHardware/article/details/139790850

一.系统概述

声控灯系统以STM32为核心控制单元,实现了声音控制灯光效果、温湿度监测和显示、以及音乐播放功能,同时支持远程控制和信息显示,具体包括以下主要功能和相关硬件模块:

  1. 声音传感器与WS2812控制:
  • 使用声音传感器采集环境声音并转化为模拟信号。
  • 根据采集的模拟电压信号判断声音强度。
  • 控制WS2812 LED灯呈现不同的闪烁模式和颜色。
  • 可通过WiFi连接,在手机端调节颜色风格和闪烁模式。
  1. 温湿度传感器与显示屏控制:
  • 控制温湿度传感器采集环境温湿度数据。
  • 控制显示屏显示采集到的温湿度信息。
  1. 语音播报模块:
  • 控制语音播报模块播放歌曲。
  • 在显示屏上显示当前播放歌曲的名称。

二.电路设计

电路图采用Altium Designer进行设计:

  1. 通过STM32F103C8T6单片机作为系统主控,最小系统电路是整个电路的核心;
  2. 使用KY-037声音传感器进行声音检测,模块的模拟输出脚与单片机的模拟输入脚进行连接;
  3. 通过DHT11进行温湿度检测,并通过one-wire总线与单片机的GPIO脚进行连接;
  4. 使用独立按键进行声音强度阈值,按键的一端接地,一端接单片机的GPIO口;
  5. 通过ESP8266-01S将检测到数据上传到上位机,通过UART串口与单片机进行通信;
  6. 使用JR6001进行语音播报,并通过UART串口与单片机进行连接。
  7. 通过0.96寸的OLED12864进行数据显示,采用IIC总线的形式与单片机进行通信。

三.程序设计

#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)
{
    u32 JR6001_Uart_bound = 9600;
    u32 ASR01_Uart_bound = 9600;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
    delay_init(); // 延时函数初始化
    TIM4_Init(300, 7200);
    while (DHT11_Init()) {}
    KEY1_Init();
    Adc_Init();
    Led1_init();
    OLED_Init();
    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);
    JR6001_Uart1_init(&JR6001_Uart_bound);
    ASR01_Uart1_init(&ASR01_Uart_bound);
    ALi_ESP8266_GPIO_Init();
    MQTT_Buff_Init();
    AliIoT_Parameter_Init();
    OLED_CLS();
    OLED_ShowCN(0, 0, 10);
    OLED_ShowCN(0 + 16, 0, 11);
    OLED_ShowCN(0, 2, 12);
    OLED_ShowCN(16, 2, 13);
    OLED_ShowCN(0, 4, 14);
    OLED_ShowCN(16, 4, 15);
    JR6001_Uart1_Voice_Add();
    while (1)
    {
        OLED_Display_Cotrol(); // 显示控制函数
    }
}

四.资料内容

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号