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

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

[复制链接]
STMCU小助手 发布时间:2022-5-30 10:54
本设计:( A) K) k( h7 E) g- ]% l! r+ S" o
基于STM32的智能语音识别的柔光台灯设计(源程序+原理图+PCB+设计说明书+PPT)
原理图:Altium Designer
程序编译器:keil4/keil 5
编程语言:C语言
编号Y001
4 v4 s1 v$ s, g" H& R
设计说明:
  课题主要研究语音识别、按键识别、PWM波调节亮度、OLED屏幕显示四个模块,目前市面上语音识别的台灯大多仅是控制灯的亮灭,采用的是普通LED节能灯进行照明,相比较于市场上已有的产品,本课题所研究设计的台灯采用的主控芯片是性能较高的STM32F103C8T6单片机芯片,采用中断方式对台灯进行按键控制,并通过基于LD332O语音识别模块,利用非特定人语音识别技术对台灯的工作状态进行语音控制,同时实现了语音控制和按键控制台灯的工作状态,采用输出波形比较输出PWM波,利用PWM波来控制光照的亮度及达到柔光照射的目的,并采用OLED屏幕显示台灯的工作状态灯信息,因此使用者可以快速的指导台灯目前的工作状态,根据自身的实际需求通过语音或者按键对台灯的工作状态进行调节,这样就能够更好的帮助这些弱势群体,如老人、儿童、孕妇等行动不便的人,由于采用的是柔光台灯照明,在一定程度上减缓青少年近视发病率持续上升的趋势,并且LED灯能够缓解资源消耗过大、污染物排放量的现状。

  T/ B) z" Y$ |
实现功能如下:
1.语音识别部分:采用市面上流行的基于LD3320语音识别模块,利用非特定人语音识别(ASR)技术,调试语音模块使其满足台灯所需要的特定词汇。词汇包括:唤醒词、开灯、关灯、亮一点、变暗等。采用主控芯片STM32F103C8T6与LD3320语音识别模块进行串口通信,主控芯片接收数据后处理该消息命令。
2.按键控制部分:利用按键中断机制来控制灯的亮度,以及控制灯的开和关。
3.PWM波控制LED柔光灯亮度部分:采用STM32F103C8T6内部自带定时器输出PWM功能,接上外围电路,控制多个LED灯。
4.显示模块部分:主控芯片通过SPI协议驱动0.96寸OLED屏幕,在128*64个像素点的屏幕上显示灯的亮度级数及其他信息。
& h/ ?% I2 p/ k9 u
640 (5).png

2 W: P1 V5 R$ O
640.jpg
$ m8 O, g- X6 V, p
640 (4).png

& D/ c( S/ A# R* Z; Z9 j: G
原理图(提供源文件):
640 (3).png
" h: J- I' W2 l
PCB图(提供源文件):
640 (2).png

6 l1 d- ~% N0 ~3 v* V
源程序(提供源文件)
640 (1).png
) e1 h  z( z# W* L+ d3 X( w
以下为部分程序,完整程序可在下载链接获取:

  1. 4 Z! ?. L  _- J
  2. int lighter=0;   
    1 C3 M$ p( V7 ?7 w: D7 k
  3. int main(void)
    : A. K- y9 {# O
  4. {  1 ~( ?- I4 k* _& r
  5.     delay_init();   //延时函数初始化    % |& g5 Z, a' b% Y% c/ @
  6.     NVIC_Configuration();  //设置NVIC中断分组2:2位抢占优先级,2位响应优先级   LED_Init();  7 @" y  V% u* P" }2 F
  7.     OLED_Init();  //初始化OLED  & f- v& p  T  V/ [% G! `
  8.     OLED_Clear();  //OLED清屏6 `- R3 L: ~' d; o" q# W
  9.     TIM1_PWM_Init();  //TIM1 PWM波输出初始化,并使能TIM1 PWM输出   
    : U! s: _+ z- Y4 o* A( |
  10.     usart2_Init(9600);  //初始化串口2
    0 I7 C. Y, s3 }, y) j( _& W
  11.     EXTIX_Init();    //外部中断初始化:中断线,IO,设置中断优先级(抢占优先级,响应优先级),触发方式  ) y  p% t/ C- e6 Q7 f  O7 W. \5 _/ |
  12.     int j;6 s; |& K& s! \& Z. ]" B6 j1 @, ?
  13.     show_name();" [; O' h  D" S5 D* ]- i
  14.   + c0 F7 l0 i9 B
  15.     while(1) . @# c; e6 u( g1 z
  16.     {        
    + Q- M! |% C! I  X
  17.     j=ld3320_uart_receive();      //得到接受函数的字符串buff
    ) a6 w3 [: C+ \9 i9 V" k' Y
  18.     pwm_led_out_test(lighter);    //设置PWM波占空比,以此控制台灯亮度      % U  W1 W% b! a& a
  19.     switch(j)
    + o8 B0 r0 p) N; G
  20.     {
    9 S( P. y" G- [. L
  21.       case 1:             //一级口令:小陈  - `4 t6 u/ S5 O5 M' R  [# x  u
  22.       show_name();  " t8 s  M  k# |- P+ ?& W
  23.       break;  $ D, c0 ~( H- j/ O1 ^" f+ R
  24.       case 2:    //亮一点; n( m1 d+ b0 X8 |
  25.       if(lighter<5)        //亮度还不满5
    5 F4 L* y. \' i6 p# b, s
  26.       {9 J/ x- ~0 k. ?
  27.         lighter++;) Q. x* Q- o5 ]8 S- F1 n- f, [5 ~
  28.         show_light(lighter);  //显示亮度6 {- S3 [2 F$ r/ ^* e% Y  }
  29.       }  
    3 N7 Z: L, C7 l) ~3 |# ?  f0 I! l
  30.       else  
    ' P0 N+ B3 C& c6 K# Q7 R
  31.       show_zuida();  
    9 E; e8 W' w# |8 k. e2 M+ G, a+ Y0 u  m
  32.       break;      //显示已达最大亮度      " ^: u/ h( E  \
  33.       case 3:   //变暗
    - N$ U1 X1 q( ^: K6 a
  34.       if(lighter>0), ]$ [. i; x1 A1 h9 i0 V: V
  35.       {% R5 y; T' [: c$ |6 M
  36.         lighter--;! J7 ?7 ~$ N( C/ `4 J9 b
  37.         show_light(lighter);  //显示亮度      
    5 z3 P# }$ i1 k! N1 n
  38.       }- O& k1 B9 T: O1 S0 K- j& ?
  39.       else  
    & u, {: S. [1 x% `* w& S; Z
  40.       show_zuidi();  
    ; c  `: c( P7 {1 Q3 d
  41.       break;  //显示已达最低亮度               
    5 f5 A  g  n" \9 J# [9 p4 i+ a3 D
  42.       case 4:              //开灯(默认亮度等级3,60)
    8 @1 Q2 c( B1 h! |  z2 h, A/ l
  43.         lighter = 3;
    7 r, j) q5 z, y$ z: ?& z8 Z0 d& ~
  44.         show_light(lighter);
    $ Q. k4 C! r: B+ a0 A
  45.       break;     
    0 o' `' l8 L: ^- W" u
  46.       case 5:              //关灯5 ~0 A8 i) c$ B, k( H$ N0 E
  47.       lighter = 0;
    ( v" A$ U' N0 j( E
  48.       show_ling();         ! t" v+ n2 y: h5 L
  49.       break;      1 X2 |* U5 J9 [0 D
  50.       case 6:              //亮度20
    / i, j9 T6 U; @  Y8 d+ l; c! Y8 J. H
  51.       lighter = 1;
    & ]3 c8 \/ F; ]
  52.       show_ershi();        & ^$ D# h' b8 [8 Z. A6 R, x+ A
  53.       break;     - P0 K& w* w. g0 ~
  54.       case 7:              //亮度60
    # p; v; c2 v/ e# Y. p
  55.       lighter = 3;
    . u" c! a9 ?  S% h# j
  56.       show_liushi();            
    7 _9 d( f0 ^' K/ t
  57.       break;      ) B* o! a" c* V! W- y9 j* L/ B
  58.       case 8:               //亮度100
    3 t" e2 `8 m. K! T, o! H+ i/ A% j
  59.       lighter = 5;! r; Q" D7 \. D" _
  60.       show_yibai();         
    ( w6 u# `) o9 f3 q
  61.       break;      : ?  f5 A+ O# L5 [$ g$ w4 [1 D
  62.       case 9:              //显示请重新发口令 : F9 v8 G7 n" B  i/ p
  63.       show_chongfa();      , D! F& `' w+ t) O9 e2 ^
  64.       break;   
    9 `7 l; Q5 r% |' P9 S
  65.       case 10:             //显示请重新发口令  9 H3 \# G/ D4 w6 B" A" o
  66.       show_chongfa();      
    2 R/ |3 ~8 l4 N( o, d9 R2 A
  67.       break;
    ' _# u. N# v6 N6 V2 E/ ^
  68.       default:break;
    8 q! N/ B/ ~+ [0 D" l
  69.     }, u: W# D; H! D5 l; ?
  70.   }   
    & g) V/ W/ `, ?
  71. }
复制代码
设计说明书:
640.png

$ w0 W: f3 i* |6 ^& C- M' g
收藏 评论0 发布时间:2022-5-30 10:54

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版