你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32的智能语音识别的柔光台灯设计(源程序+原理图+PCB+设计说明书+PPT)

[复制链接]
STMCU小助手 发布时间:2022-5-30 10:54
本设计:! n8 g8 z$ m- Z- n. U* |$ g
基于STM32的智能语音识别的柔光台灯设计(源程序+原理图+PCB+设计说明书+PPT)
原理图:Altium Designer
程序编译器:keil4/keil 5
编程语言:C语言
编号Y001
3 o4 {2 p- b+ F
设计说明:
  课题主要研究语音识别、按键识别、PWM波调节亮度、OLED屏幕显示四个模块,目前市面上语音识别的台灯大多仅是控制灯的亮灭,采用的是普通LED节能灯进行照明,相比较于市场上已有的产品,本课题所研究设计的台灯采用的主控芯片是性能较高的STM32F103C8T6单片机芯片,采用中断方式对台灯进行按键控制,并通过基于LD332O语音识别模块,利用非特定人语音识别技术对台灯的工作状态进行语音控制,同时实现了语音控制和按键控制台灯的工作状态,采用输出波形比较输出PWM波,利用PWM波来控制光照的亮度及达到柔光照射的目的,并采用OLED屏幕显示台灯的工作状态灯信息,因此使用者可以快速的指导台灯目前的工作状态,根据自身的实际需求通过语音或者按键对台灯的工作状态进行调节,这样就能够更好的帮助这些弱势群体,如老人、儿童、孕妇等行动不便的人,由于采用的是柔光台灯照明,在一定程度上减缓青少年近视发病率持续上升的趋势,并且LED灯能够缓解资源消耗过大、污染物排放量的现状。
+ T5 S! ~2 w4 a" F  d/ A
实现功能如下:
1.语音识别部分:采用市面上流行的基于LD3320语音识别模块,利用非特定人语音识别(ASR)技术,调试语音模块使其满足台灯所需要的特定词汇。词汇包括:唤醒词、开灯、关灯、亮一点、变暗等。采用主控芯片STM32F103C8T6与LD3320语音识别模块进行串口通信,主控芯片接收数据后处理该消息命令。
2.按键控制部分:利用按键中断机制来控制灯的亮度,以及控制灯的开和关。
3.PWM波控制LED柔光灯亮度部分:采用STM32F103C8T6内部自带定时器输出PWM功能,接上外围电路,控制多个LED灯。
4.显示模块部分:主控芯片通过SPI协议驱动0.96寸OLED屏幕,在128*64个像素点的屏幕上显示灯的亮度级数及其他信息。
. M$ @* e- z; _% f2 O+ i" J. O* u
640 (5).png

1 v7 S$ v4 A% O+ O/ s
640.jpg

% ^# q0 d9 `; F/ H: n( B4 p
640 (4).png
8 W1 O$ C" ?9 r, R& x
原理图(提供源文件):
640 (3).png

1 F/ T2 y9 Q5 [4 j7 Q: y: _; b
PCB图(提供源文件):
640 (2).png

/ L8 z6 q5 s+ M% T3 \; z
源程序(提供源文件)
640 (1).png

9 ~* K, e* U" j, ]5 |% K1 A# q
以下为部分程序,完整程序可在下载链接获取:

  1. 7 p& _; R0 d3 ]' ^4 _
  2. int lighter=0;   ! ^( m; {1 ]. _& k
  3. int main(void)
    5 K. q& _  E2 I' n' Z1 O% R
  4. {  
    & @2 s+ e% X. J# Q, b" [5 p: o  ?5 P
  5.     delay_init();   //延时函数初始化   
    0 b9 Z; t* g4 p
  6.     NVIC_Configuration();  //设置NVIC中断分组2:2位抢占优先级,2位响应优先级   LED_Init();  
    " x1 F+ Q. L! k6 L
  7.     OLED_Init();  //初始化OLED  & W4 M# o2 L* p. I
  8.     OLED_Clear();  //OLED清屏1 R' V( ^9 ]& Z# L9 |
  9.     TIM1_PWM_Init();  //TIM1 PWM波输出初始化,并使能TIM1 PWM输出   
    - L  w% v+ A4 K! m* e
  10.     usart2_Init(9600);  //初始化串口22 ?/ @8 R" t) P- x2 X
  11.     EXTIX_Init();    //外部中断初始化:中断线,IO,设置中断优先级(抢占优先级,响应优先级),触发方式  
    7 e( a$ C+ a2 d& o. c+ }4 p# h" s
  12.     int j;
    , Z# G, }: v, k. z
  13.     show_name();
    7 T- z: Q# p2 V
  14.   0 O* P0 w/ O$ H! c
  15.     while(1) % M( R8 |) A1 [( e! K
  16.     {        3 p5 b8 W; X0 b4 b) h
  17.     j=ld3320_uart_receive();      //得到接受函数的字符串buff
    " R# F; S* ^3 C( M0 v
  18.     pwm_led_out_test(lighter);    //设置PWM波占空比,以此控制台灯亮度      
    * Q  O; d- U1 D0 M
  19.     switch(j)
    : Z' Q7 u# u+ D& x; B" o
  20.     { * j+ x  q0 \5 o; J% i3 ]
  21.       case 1:             //一级口令:小陈  + x9 l& p$ j" _7 g
  22.       show_name();  1 d# u5 s2 h; @4 g
  23.       break;  
    8 R, j0 [1 d$ ?- ~) \! e
  24.       case 2:    //亮一点" m- K) t4 I1 u
  25.       if(lighter<5)        //亮度还不满5
    ! D6 ^* C& |3 g& O/ O& T
  26.       {
    % T$ y; d+ _) }5 ~+ D
  27.         lighter++;' J* {2 H7 z! n, K
  28.         show_light(lighter);  //显示亮度% `2 L4 I9 P& e! h! u
  29.       }  
    2 A7 s# j. h# A) O' {. E
  30.       else    |+ [/ \( C% l/ N8 n$ q- V
  31.       show_zuida();  4 k7 u- J' N' c
  32.       break;      //显示已达最大亮度      
    . ?% o1 n' z+ T% k  k) r
  33.       case 3:   //变暗& F- _  ]* g8 J, v" V
  34.       if(lighter>0)4 F* I2 G# r1 }
  35.       {
    9 }% c; D/ d5 d7 \0 c
  36.         lighter--;2 l" N4 E, D5 B) {
  37.         show_light(lighter);  //显示亮度      5 T9 R: O" U$ G2 L/ @3 _; P
  38.       }1 A$ h7 h/ L5 p. ~/ n' C* t
  39.       else  
    0 h1 d$ A1 \7 q) L! e2 M* @- C; ]
  40.       show_zuidi();  ! G' F( b& i  d  c
  41.       break;  //显示已达最低亮度               
    ) d, h8 A  ?( H9 r+ k
  42.       case 4:              //开灯(默认亮度等级3,60)( F9 ^0 h0 @& G% U
  43.         lighter = 3;
    - S5 _, r5 M" @1 D0 l- u
  44.         show_light(lighter);
    4 f" H3 ~9 `9 W5 u5 a8 @/ K
  45.       break;     : v( }6 _$ W5 V1 a) m2 {
  46.       case 5:              //关灯
    1 e, h. s. g3 R4 s& q7 i2 O
  47.       lighter = 0;- {: H7 M" I8 i4 S
  48.       show_ling();         ( L# d- y9 T1 }# j5 S- [
  49.       break;      
    ) ^. S4 d! `1 R7 u+ E2 h3 X0 w9 a
  50.       case 6:              //亮度20
    ! M: f% w* B3 G
  51.       lighter = 1;
    5 |1 ^7 y+ {7 W) @2 B$ w! X
  52.       show_ershi();        7 e7 W4 w, E3 O. d7 Z7 @
  53.       break;     
    / k# S7 f6 z; X! Y' y. l) _+ m9 ~
  54.       case 7:              //亮度60
    # U+ J! h3 o: D# J0 w: V6 V
  55.       lighter = 3;* u2 K* `5 t( S' D* H2 i: q' o
  56.       show_liushi();            
    " E+ e/ z- n9 P$ V/ w4 `% t4 B
  57.       break;      
    3 Q: u9 d3 K- i# ^8 Q' F
  58.       case 8:               //亮度100
    # L: C$ P! q; f' s  S' V
  59.       lighter = 5;3 J% x# q: I5 I8 r
  60.       show_yibai();         
    - X! W# H: _* O8 F: b5 U+ a
  61.       break;      $ H6 Q8 ?9 ?8 e
  62.       case 9:              //显示请重新发口令
      \2 G5 L0 m/ F6 _5 d# m5 n$ u' v
  63.       show_chongfa();      
    " e  e' C5 y2 S' U
  64.       break;   
    ) h6 O" j9 j8 [7 X
  65.       case 10:             //显示请重新发口令  
    ' j- a+ G5 n/ t. X: O0 }
  66.       show_chongfa();      $ h2 N( f6 p$ c" G; R) e# I
  67.       break;
    ! c3 p) R! |0 h. c5 S. ^. V4 `4 j
  68.       default:break;8 |3 S& P. a0 P/ r5 Y
  69.     }8 N6 J8 |& Y0 m7 Y* j6 c4 i; M
  70.   }    6 {9 A6 e4 v7 D, ?3 m
  71. }
复制代码
设计说明书:
640.png
0 ?) A7 ~3 W) M0 m2 i" S) J
赞 收藏 评论0 发布时间:2022-5-30 10:54

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版