摘 要:介绍了一种基于Arduino的语音报警系统。文中描述了语音系统的实现原理和具体功能,该系统通过接收以太网上的UDP报文,解析成文本并进行语音朗读,实现智能化的语音报警。本设计硬件部分选用了开放式的硬件平台Arduino和文本语音转换(TTS)模块;软件部分给出了控制器中具体的程序逻辑实现;最后对系统的控制方法作了说明。 关键词:Arduino;语音报警系统 当前市场上常用的语音报警系统分两种。一种是带录音功能的语音报警器,内置通用的多种报警语音,按条件触发播放。这种语音报警系统声音自然,易于使用。但是如果需要修改语音,或是需要播报的语音条目太多时,需要做的工作量非常大,且难以实现智能化的语音报警(如在语音中自动插入报警的设备号)。近年来,随着语音文字转换技术(TTS)的发展,另一种采用此种技术的语音报警系统开始普及,极大的提高了工业报警系统的自动化和智能化程度。 本文介绍一种以SYN6658 TTS语音模块、W5100以太网模块以及开源Arduino平台实现的基于以太网的语音报警系统。该系统可方便的与工厂中常用的多种PLC直接对接。系统从以太网接收GBK编码的UDP报文,将其以指定语速及音色朗读。具有扩展性好,网络负载低、易于实现等多种优点,为相关语音系统的构建提供了参考。 一、硬件设计 本设计采用了Arduino Nano 控制板、W5100以太网模块、SYN6658语音模块及有源音箱、稳压电源等构成。系统的组成如图所示。 系统通过W5100接收报文,经过Arduino解析并再次封装,发送给SYN6658模块,模块将编码转换为语音并驱动音箱播放。 Arduino是一种基于Atmel的微控制器的开源软硬件平台,近年来随着智能硬件的普及得到了广泛应用,这种控制板细分为众多型号,本次设计中使用的是基于ATmega328的Arduino Nano版本。该版本体积比标准板更小,采用更友好的MiniUSB供电接口,提供14个数字输入输出引脚和8个模拟输入引脚,32KB 闪存,2KB SRAM和1KB EEPROM。 W5100是一款多功能的单片网络接口芯片,内部集成了10/100M以太网控制器,主要用于各种高集成、高稳定、高性能和低成本的嵌入式系统中。W5100内部集成了全硬件的TCP/IP协议栈。 SYN6658是一款优秀的语音合成芯片,芯片通过UART接口或SPI接口通讯方式接收待合成的文本数据,实现文本到语音的转换,主要应用于公交语音报站、自动售货机、排队机等领域。芯片支持文本智能分析、多音字处理、中文姓氏处理、语音语调切换等多种功能。 Arduino Nano与W5100间使用SPI对接,可以实现以太网数据的读取和写入,同时与SYN6658间使用TTL串口通讯,实现语音报文的发送。 二、软件设计 软件部分采用Arduino1.6.8编程软件平台完成,该平台使用了一种类C的语言进行编程序编制。程序通过Socket通讯机制接收UDP报文,然后通过串口发送文本信息。 简化后的主要程序逻辑如下: void setup() { Ethernet.begin(mac, ip); //初始化网络模块 Udp.begin(localPort); //开始监听端口 Serial.begin(9600);} void loop() { int packetSize = Udp.parsePacket(); //接收报文 if (packetSize) { Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE); unsigned char head[packetSize+5]; //封装文本数据 head[0] = 0xFD; head[1] = 0x00; head[2] = packetSize+2; head[3] = 0x01; for(int i=0; i<=packetSize; i++){ head[i+2] = packetBuffer[i];} for(int i=0; iSerial.write(head[i]);}}} //发送给语音模块 三、系统控制方法 本语音系统的报警可使用任意支持以太网Socket连接的设备触发。调试时可使用PC上的Socket测试助手进行连接,也可使用高级语言编写控制端软件进行控制。实际工业现场中,由于现在大部分PLC都支持Socket连接,可直接将该语音报警系统连入现场以太网,通过在PLC中编写程序与报警系统进行对接。 四、结语 经测试,该语音报警系统能够根据现场发送的文本进行报警,硬件可靠性,搭配的放大电路及有源音箱的功率也足够,满足可用性要求。但本方案中并未考虑现场电磁屏蔽保护,如果现场电磁干扰较强,需要设计防护外壳为系统屏蔽电磁干扰,同时选用TCP连接协议进一步增加数据可靠性。另外,该系统也可设计为使用如串口、数字量等其他方式进行控制,以适应不兼容以太网的其他工业现场。 参考文献: [1]王满利,张涛.基于单片机的语音报警系统[J].2014(11). [2]BANZIM.Getting started with Arduino[M].California:O`REILLY,2009. [3]蔡睿妍.Arduino的原理及应用[J].电子设计工程,2012(8).