时光留声机”从名字来看就具有浪漫的气息。虽然在智能手机满天飞的当代,留声机似乎显得有点过时,但是偶尔的复古气息不是一样会带给人不一样的惊喜感受吗?下面小编教你如何制作一个留声机,让它作为未来你的一个神秘礼物吧,相信未来的你一定会很喜欢!
像是很多人小时候都幻想拥有哆啦A梦的道具一样,这个灵感也来源于此。我们也制造了这个设备——时光留声机。它的功能简单说来,像是一台带有网络和蓝牙功能的录音机,又因为它只有一个按钮,所以我们又起了个名字给它——One Button。
留声机的功能介绍:
在生活中有这样的情景:家里只有一辆摩托车,有人有急事要骑车出门,又不必告诉家中的每一个人。离开前,他只要对着盒子录一段话,盒子的颜色就从蓝色变成了红色。别人看到后,点一点按钮就知道了原因。用灯光来提醒不同时间到来的人,这是留声机的第一个功能。
留声机的第二个功能是通过蓝牙来遥控发声,它的应用场景或许是开不了口的道歉。文字通过手机发送到盒子,合成语音来帮你说出那句说不出口的抱歉,或许会让你轻松一些,也少一些尴尬。
留声机的第三个功能是可以通过网络来留言,我们希望它变成一个礼物,在送出去以后,你还可以源源不断的送上祝福。WiFi模块可以帮助设备从网络上获取微信信息。微信客户端可以通过向该设备留言,将数据发送到网络,同时会返回哪些发出的信息已被读取,而哪些尚未被读到。 留声机的制作:我们是这样完成它的制作的!
使用的材料有:
Arduino UNO;
ISD1820录音模块;
SYN6658TTS语音模块;
蓝牙模块;
WiFi模块;
RGB LED灯带及其它。
首先,是将Arduino和录音模块连接起来,使用数字端口8号来播放声音,使用9号端口来录制声音,再单独制作按钮连接在12号端口上。因为TTS语音模块是通过串口通讯的,所以我们把它的RX和TX分别连接在Arduino的2、3号端口,蓝牙模块的RX和TX连接在4、5号端口。因为RGB LED灯带的三色要使用PWM控制,所以红绿蓝三色的控制分别连接在了6、10、11号端口。串口的WiFi模块可以连接在7、13号端口。
电路连接的部分结束后,我们使用3D打印制作了留声机的外壳,并将电路部分固定在了里面。关于通过android端手机蓝牙控制的发声过程,首先发现蓝牙设备,并且连接上去。
输入你要说的话,点击发送就可以让发声模块发声。还可以通过点击男声和女生来变换声音的语调。
蓝牙连接流程:
下面是蓝牙的连接原理图,首先通过界面GUI点击连接按钮通过连接按钮的事件hitConnectButton()来发出连接命令,命令ACTION_CONNECT发送给后台服务Background Service通过checkAddressFormat来检查地址格式,然后通过initBuletoothDevice()来调用蓝牙连接库BlueTooth Library来初始化蓝牙连接。当蓝牙连接库返ready()的时候Background Service开始启动连接线程startConnectThread(),接着打开蓝牙连接socket,当返回socketOpen时启动socket连接池管理socket。然后Background Service返回给GUI命令ACTION_CONNECTED,表示连接成功。同时通过updateButtonState()来更新界面的显示状态。
数据格式生成代码:
下面是从android手机端发送给发声模块的数据帧结构。下面的代码就是怎么样在android上用java代码生成这样的数据格式。经调试该发声模块目前能接受的是GBK的数据编码格式,所以我们用message.getBytes(“GBK”)来生成该编码格式。Msg_byte_len是数据帧总长度,byteHead代表帧头,byteLen代表数据区长度,byteType代表命令字和命令参数,然后将这些数据组合在destArray中,发送到发声模块上,发声即可。
稍加调试,留声机就基本能工作起来了。对我们最具挑战的第三个功能——网络留言功能,也使用微信的API测试成功。当它被作为礼物送给对方的时候,你还可以在后面的日子里访问它,很喜欢为它设计的广告语:每一份爱都应该得到礼物,每一份礼物都应该持续不断地得到祝福。