这个东西是18年做的一个小玩意,当时在学习32就做了一个小玩意,放到B站上有很多人要资料,所以今天抽空就把这个作品的原理和过程来写一写。这个东西虽然科技含量不高,但是还是具有可玩性,看完你也可以做一个。
所需材料:STM32F103C8T6+SYN7318语音识别芯片+SIM800C模块。
1 、系统整体架构
系统主要由语音模块 SYN7318、蓝牙模块 HC-05、 GSM 传感器 SIM800C 模块组成,利用串口通讯与非特定语言识别芯片 SYN7318 以及 GSM 传感器模块进行指令传输。系统上电后首先通过唤醒指令“小艾同学”激活该模块。接着进入语音识别状态,然后通过“主人”发送的相关指令从而执行一系列的动作。模块在接受到指令之后首先与模块本身事先预定好的词汇进行对比 ,相一致则通过串口通讯的方式向单片机发送指令,然后单片机在接受到指令后随即发生相应的操作做向单片机外设发送特定的指令(开关电器、拨打电话、发送短信、天气播报等),从而实现智能语音识别,智能家居控制。整体框架设计如下图所示。
2 系统硬件设计
2.1 SYN7318 语音模块
该系统的核心内容语音模块采用的是宇音天下公司最新的语音控制芯片。SYN7318 中文语音交互模块集成了语音识别、语音合成和语音唤醒功能 ,SYN7318 通过 UART 接口通讯方式接收命令帧。如控制命令帧、待合成的文本数据,实现文本到语音、语音到文本的转换以及语音唤醒功能。在语音识别方面,SYN7318 可以支持 10000 条词条的语音识别,可实现语义理解,大大满足了人机交互领域对交互内容丰富程度的强烈需求。另外 SYN7318 还可以支持识别词条的分类反馈能力。可以灵活的对语义相似词条根据用户指定的语义类别进行词条 ID 和命令 ID 的对应。同时模块内部还集成了 MP3 音频文件的播放功能。
2.2 智能家居控制模块
智能家居的控制部分主要采用的是蓝牙模块,通过系统的蓝牙模块和终端的蓝牙模块实现主从双向控制,就可以通过单片机来无线控制智能家居。如实现开关灯、开关空调、开关电视等一系列的操作,另外还可以通过继电器来有线控制,通讯方式同样采用串口通讯的方式。连接方式如图所示。
2.3 SM 传感器 SIM800C 模块
本系统采用GSM传感器SIM900模块控制来拨打电话、发送短信,用户不仅可以通过语音指令来拨打电话、发送短信。还可以在异地通过发送短信的方式来控制家用电器。从而实现正真意义上的远程智能家居控制,具有很强的可操作性。此模块与单片机的通讯方式同样是串口通讯,通过 AT 指令集来发送相应的命令,大大减轻了程序设计是的难度。
3 软件设计
3.1语音模块相关配置
为了确保各个模块之间数据传输的准确性,设置语音模块与单片机之间串口通讯的波特率为 9600bps。模块内读的词汇和预设的命令词都是由上位机下载到模块内部,上位机发送给 SYN7318 模块的所有命令和数据都需要用“帧” 的方式进行封装后传输。上位机发送启动语音识别或语音唤醒功能的命令给语音模块,模块把从麦克风采集到的语音数据,通过内部的识别模块进行转换成相应的识别结果,通过通讯接口回传给控制器模块。
3.2 蓝牙、继电器的配置
继电器模块采用的是市面上通用的带光耦隔离的继电器,通讯方式为串口通讯(TTL 电平),IO 口高电平为 3 3V,供电电压为 5V, 用户可以根据个人需要自定义控制模式,即几点起的开关与闭合。蓝牙模块采用广州汇承的 HC-05,模块通讯简单,在系统上电之前可单独的对模块进行配置,模块与单片机连接最少只需要 4 根线即可:VCC、GND、 TXD、RXD,VCC 和 GND 用于给模块供电,模块 TXD 和 RXD 则连接单片机的 RXD 和 TXD 即可。
3.3 GSM传感器SIM800C配置
四频 GSM/GPRS 模块 SIM800C 通过 AT 指令可进行拨号 / 接听 / 短信 /GPRS 通讯,供电电压为直流 5V, 模块自带咪口和扬声器接口,但本系统只需将电源正负极和 TX、RX与单片机接入即可[7]。SYN7318 模块接收语音信息通过比对向单片机发送指令,然后单片机通过 SWITCH 语句进行判断向 SIM800C 发送拨号与短信的 AT 指令,就可以实现语音拨打电话和发送短信的功能,GSM工作状态如图3所示。
4 系统实物
注:因为当时是一遍焊接一边加东西的,所以没有电路图。