• STM32项目分享:智能家居语音系统


    目录

    一、前言

    二、项目简介

    1.功能详解

    2.主要器件

    三、原理图设计

    四、PCB硬件设计

    1.PCB图 

    2.PCB打板焊接图:

    五、程序设计 

    六、实验效果 

    七、包含内容

    项目分享


    一、前言

    项目成品图片:

    哔哩哔哩视频链接:

    https://www.bilibili.com/video/BV1K94y1H7mk/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2

    (资料分享见文末) 

    二、项目简介

    1.功能详解

    基于STM32的智能家居语音系统

    功能如下:

    1. 温湿度采集:系统通过DHT11模块采集温湿度
    2. 烟雾监测:通过MQ-2模块采集环境中烟雾浓度
    3. 光照强度采集:通过BH1750传感器采集环境光照强度
    4. 窗帘控制:通过步进电机转动模拟窗帘控制
    5. 风扇控制:通过继电器和指示灯模拟风扇驱动
    6. 照明控制:通过继电器和指示灯模拟照明驱动
    7. 蜂鸣器报警:环境烟雾异常情况下蜂鸣器报警
    8. OLED显示:显示温湿度、光照强度和烟雾浓度
    9. APP功能:使用机智云APP,包括功能有控制照明灯和风扇开关、显示当前温湿度信息
    10. 自动模式:烧录自动模式程序,系统根据光强大小控制窗帘和LED灯的开闭,同时禁止手动模式的APP控制

    2.主要器件

    • STM32F103C8T6最小系统板
    • DHT11温湿度传感器
    • OLED显示屏(4针I2C协议)
    • WiFi模块(ESP8266-01s)
    • MQ-2烟雾传感器
    • BH1750光照强度传感器
    • 28BYJ51步进电机
    • 继电器
    • 蜂鸣器
    • LED灯

    三、原理图设计

    四、PCB硬件设计

    1.PCB图 

    2.PCB打板焊接图:

    五、程序设计 

    1. int main ( void )
    2. {
    3. /* 系统时钟树配置 */
    4. RCC_Configuration();
    5. /* 中断系统配置 */
    6. NVIC_Configuration();
    7. /* 初始化硬件延时, 使用滴答定时器完成 */
    8. delay_init();
    9. /* 板级初始化 */
    10. DEBUG_UART_Config( );
    11. DEBUG_LOG("Bsp init\n");
    12. /* 上电延时,等待各个模块运行稳定 */
    13. delay_ms( 200 );
    14. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE); //使能相应接口的时钟,以及RCC_APB2Periph_AFIO
    15. GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //禁用JTAG
    16. /* 初始化定时器3, 中断频率 1000hz */
    17. FML_TIME_Init();
    18. FML_TIME_Register(Sys_timer_handle, 1); //系统时间片,1tick = 1ms
    19. FML_TIME_Start(Sys_timer_handle); //开启定时
    20. /* 配置按键引脚 */
    21. //Key_GPIO_Config(p_SysParamHandle->p_keyhandle);
    22. /* LED Fan IO 初始化 */
    23. LED_Init( );
    24. BEEP_Init();
    25. Moto_Init();
    26. /* dht11 初始化 */
    27. DHT11_Init();
    28. /* 语音模块初始化 */
    29. ld3322_init( );
    30. RegisterLd3322(p_SysParamHandle->psLdHandle, CmdList, CMD_NUM); /*!< 注册指令参数表 */
    31. Switch_GPIO_Config( );
    32. /* 机智云SDK初始化 */
    33. Gizwits_Init();
    34. /* 0.96OLED初始化 */
    35. OLED_Init();
    36. BH1750_Init();
    37. ADC_Sensor_Init();
    38. /*!< 延时确保初始页面错误 */
    39. delay_ms(300);
    40. /* OLED显示初始画面 */
    41. OLED_InitPage( );
    42. while ( 1 )
    43. {
    44. /* 传感器数据 */
    45. if (p_SysParamHandle->u32SensorTim == 0)
    46. {
    47. p_SysParamHandle->u32SensorTim = 200;
    48. p_SysParamHandle->u16Lightness = bh_data_read( ); //!< 读取光照强度
    49. get_mq2_value( &p_SysParamHandle->fMqValue ); //!< 读取烟雾浓度
    50. DHT11_Read_TempAndHumidity( p_SysParamHandle->psDHT11DataHandle );//!< 读取温湿度
    51. }
    52. /* ld3320语音识别模块 */
    53. uint16_t index;
    54. if (psLdHandle->bl_rev_cmd_flg == CMD_REV_OK)
    55. {
    56. psLdHandle->bl_rev_cmd_flg = CMD_REV_NO_OK;
    57. for (index=0; indexu16_cmd_num; index++)
    58. {
    59. if (!strcmp(psLdHandle->pCmdTable[index].cmd_str, psLdHandle->pu8_rev_cmd_buf))
    60. {
    61. psLdHandle->pCmdTable[index].funCallback();
    62. DEBUG_LOG("Ld3322 check OK\n");
    63. break;
    64. }
    65. }
    66. if (index == psLdHandle->u16_cmd_num)
    67. {
    68. DEBUG_LOG("Ld3322 Erorr\n");
    69. }
    70. User_MemSet(psLdHandle->pu8_rev_cmd_buf, 0x0, 30);
    71. }
    72. /* 机智云云端协议处理 - 任务 */
    73. gizwitsHandle( p_SysParamHandle->p_DataPoint );
    74. /* 机智云数据同步 - 任务 */
    75. app_SyncData_Task( p_SysParamHandle );
    76. /* oled参数更新 - 任务 */
    77. char str[16] = {0};
    78. if (p_SysParamHandle->u32LcdUpdateTim == 0)
    79. {
    80. /* 任务时间重装载 */
    81. p_SysParamHandle->u32LcdUpdateTim = 1000;
    82. sprintf(str, "%d", p_SysParamHandle->psDHT11DataHandle->temp_int);
    83. OLED_ShowCnAndAsciiStr(40, 0, str, 2);
    84. sprintf(str, "%d", p_SysParamHandle->psDHT11DataHandle->humi_int);
    85. OLED_ShowCnAndAsciiStr(40, 2, str, 2);
    86. sprintf(str, "%d", p_SysParamHandle->u16Lightness);
    87. OLED_ShowCnAndAsciiStr(80, 4, str, 2);
    88. sprintf(str, "%.2f", p_SysParamHandle->fMqValue);
    89. OLED_ShowCnAndAsciiStr(80, 6, str, 2);
    90. /* 机智云事件处理 - 线程 */
    91. app_GizwitsDataEvent_Handle( p_SysParamHandle );
    92. }
    93. }
    94. }

    六、实验效果 

    七、资料内容

    项目分享

  • 相关阅读:
    解决vscode保存时,代码自动格式化问题
    运维必备 | ansible 自动化运维工具之变量的定义与调用
    H3C交换机设置时间命令
    树和二叉树的概念与使用(Tree&Binary Tree)
    Spring AOP 简单使用
    Vulkan图形开发简介
    【UV打印机】墨路之过滤器
    ubuntu-hadoop伪分布
    vue3中如何掉用子組件的方法
    【线性代数】为什么 AA* = |A|E
  • 原文地址:https://blog.csdn.net/qq_44016222/article/details/139485235