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

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

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

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

. J4 F& \6 G$ h+ E
640 (4).png
9 r( V# v& M  N4 o
原理图(提供源文件):
640 (3).png

5 O+ ~4 n) h4 D& v! d0 G
PCB图(提供源文件):
640 (2).png
$ r9 ^: x" k- `, s
源程序(提供源文件)
640 (1).png

; g9 r2 ]' Y  A7 @9 q8 R
以下为部分程序,完整程序可在下载链接获取:

  1. 4 [( a) n( b( |3 W8 k' ]
  2. int lighter=0;   
    $ ?' r# }" Q1 p& |6 S
  3. int main(void)
    / S6 z( f. v# Q
  4. {  4 \) b. q. J2 b9 _$ U* n
  5.     delay_init();   //延时函数初始化   
    * x2 j: F. b/ G3 _! N$ L! [5 b
  6.     NVIC_Configuration();  //设置NVIC中断分组2:2位抢占优先级,2位响应优先级   LED_Init();  , `" Z! `$ u9 Y/ `; ]
  7.     OLED_Init();  //初始化OLED  
    - \2 @& {9 }& P( c
  8.     OLED_Clear();  //OLED清屏+ J5 b. e. }4 h: A1 L
  9.     TIM1_PWM_Init();  //TIM1 PWM波输出初始化,并使能TIM1 PWM输出    . [* N- u. R7 v* g$ ?* h& U' Y
  10.     usart2_Init(9600);  //初始化串口2
    & ?# x7 I; _  R9 w
  11.     EXTIX_Init();    //外部中断初始化:中断线,IO,设置中断优先级(抢占优先级,响应优先级),触发方式  8 ?  H$ |; N9 n$ n+ z
  12.     int j;6 Y$ u7 [# K1 `2 H* L) r! W1 \! X) U
  13.     show_name();6 L/ C1 D* V% i+ h2 j. i2 F& d3 o
  14.   ; q: P$ U6 w# `( ^1 e& T& D1 V
  15.     while(1)
    9 F( C! h( ?9 o
  16.     {        & y7 N# t. c3 }' C: q/ |; [
  17.     j=ld3320_uart_receive();      //得到接受函数的字符串buff
    % H9 C9 H5 f# B& w
  18.     pwm_led_out_test(lighter);    //设置PWM波占空比,以此控制台灯亮度      6 ^( {1 P# Z8 q
  19.     switch(j)  F/ D( r0 _+ }3 s9 u7 v9 M( j
  20.     { 6 @# ~3 u/ h# y" c- T, w
  21.       case 1:             //一级口令:小陈  $ G) b0 e2 S8 a( |  s0 T# |
  22.       show_name();  
    " s% Y% C5 M, T0 h0 Y1 a! i7 T
  23.       break;  
    9 `% @4 p2 Y6 }) u" R5 ]  g3 n4 y
  24.       case 2:    //亮一点
    1 r5 _# k% c$ t7 `
  25.       if(lighter<5)        //亮度还不满5
    ) F# u5 a' W, Y( V0 Z$ d
  26.       {. {3 }: q( E/ C5 M! {
  27.         lighter++;6 U  \6 t9 W1 k) q. C
  28.         show_light(lighter);  //显示亮度
    2 v0 g2 Q8 A! W
  29.       }  & }: E) O( q% R( S" n8 k/ D7 J
  30.       else  ' z7 X, Y: l# W' d( a' X
  31.       show_zuida();  
    # u; C$ X5 j, {( l
  32.       break;      //显示已达最大亮度      5 A* y& X  `9 R3 R/ w$ V
  33.       case 3:   //变暗
    : g* O% p/ r* m0 x0 T1 Z
  34.       if(lighter>0)
    8 q# ~; v6 F9 `1 n& A. O/ _
  35.       {/ P' r7 v( Y& n5 g. I
  36.         lighter--;. |2 U4 P# G) Y* i9 G" {
  37.         show_light(lighter);  //显示亮度      + p( \, D  J6 B
  38.       }
    # [' e; _+ a: n  U
  39.       else  . t7 p  x4 R" `/ u& \
  40.       show_zuidi();  1 D. Z7 C! N6 Q& q2 S7 a! l5 v) v
  41.       break;  //显示已达最低亮度               # Q6 M. s% n+ m( C1 w9 h
  42.       case 4:              //开灯(默认亮度等级3,60)* v, C2 b3 s7 E. {. i
  43.         lighter = 3;
    5 R8 c+ F$ @* o/ s: k+ W
  44.         show_light(lighter);
    7 t3 m: Y- c  R9 f& ]0 \
  45.       break;     ! N4 a4 U2 U% c6 u; M) o$ _! [
  46.       case 5:              //关灯+ @; m0 u; K! ]9 c& {) i$ o
  47.       lighter = 0;- Z1 P" H% `; \' \
  48.       show_ling();         
    . W  ~8 c6 }  K9 a9 w
  49.       break;      5 S' u' C" d+ U5 E) G0 ~
  50.       case 6:              //亮度20, R# _# B0 z+ I- y- @. v+ G
  51.       lighter = 1;$ C5 Q; U; M% o! C
  52.       show_ershi();        2 x# Q% u, v7 ~& Z- P) Q, [
  53.       break;     : W; b1 O* T$ ?9 @: |! N' [+ |
  54.       case 7:              //亮度60+ P" W% \6 u: i6 X/ C
  55.       lighter = 3;
    , A: o  \8 y" R0 z2 }
  56.       show_liushi();            - l9 C2 b# z5 c/ y
  57.       break;      
    9 f8 C, a' \' O. N3 \
  58.       case 8:               //亮度100- `& Y; b- ^8 a, f- w  v
  59.       lighter = 5;3 l( m% A! a0 H$ k- |
  60.       show_yibai();         
    7 Q0 Z" r1 p8 v0 S
  61.       break;      & `" g0 u" G: s% j$ L7 i
  62.       case 9:              //显示请重新发口令   ~5 ?4 _0 J; ^; o
  63.       show_chongfa();      . S. U  f5 r2 A) s; k  t
  64.       break;   
    + x3 [8 @2 t* z! }  U9 q
  65.       case 10:             //显示请重新发口令  * T; T& V! N3 c
  66.       show_chongfa();      
    2 `0 y* M$ R- m/ J7 B' k  T  Q7 _
  67.       break;
    9 K! E8 R* }% h* M
  68.       default:break;4 [# b8 q% u( a
  69.     }
    2 G! |# d7 I' k+ u  o" p
  70.   }   
    & ~  n& c3 G! a5 Q6 D2 ?+ c* g) p
  71. }
复制代码
设计说明书:
640.png

* S! V# i' X: [- q2 H. W5 }
收藏 评论0 发布时间:2022-5-30 10:54

举报

0个回答

所属标签

相似分享

官网相关资源

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