国产一级在线_欧美一日本频道一区二区三区_久久精品视频9_欧美性生交大片

 
 

制作炫酷的多彩LED留聲機(jī)

放大字體  縮小字體 發(fā)布日期:2014-09-04 來(lái)源:雷鋒網(wǎng)瀏覽次數(shù):24









       在創(chuàng)客馬拉松深圳站,來(lái)自SZDIY社區(qū)的just4fun團(tuán)隊(duì)打造一款多彩LED留聲機(jī),具有本地錄音和“網(wǎng)絡(luò)傳音”功能。比較悲催的是,當(dāng)時(shí)他們把發(fā)音芯片燒壞了,所以評(píng)選當(dāng)天未能拿個(gè)好名次。這個(gè)炫酷的東西是怎么打造出來(lái)的呢?來(lái)看看just4fun團(tuán)隊(duì)的分享。

       像是很多人小時(shí)候都幻想擁有哆啦A夢(mèng)的道具一樣,這個(gè)靈感也來(lái)源于此。我們也制造了這個(gè)設(shè)備——時(shí)光留聲機(jī)。它的功能簡(jiǎn)單說(shuō)來(lái),像是一臺(tái)帶有網(wǎng)絡(luò)和藍(lán)牙功能的錄音機(jī),又因?yàn)樗挥幸粋€(gè)按鈕,所以我們又起了個(gè)名字給它——One Button。

       在生活中有這樣的情景:家里只有一輛摩托車(chē),有人有急事要騎車(chē)出門(mén),又不必告訴家中的每一個(gè)人。離開(kāi)前,他只要對(duì)著盒子錄一段話,盒子的顏色就從藍(lán)色變成了紅色。別人看到后,點(diǎn)一點(diǎn)按鈕就知道了原因。用燈光來(lái)提醒不同時(shí)間到來(lái)的人,這是留聲機(jī)的第一個(gè)功能。

       留聲機(jī)的第二個(gè)功能是通過(guò)藍(lán)牙來(lái)遙控發(fā)聲,它的應(yīng)用場(chǎng)景或許是開(kāi)不了口的道歉。文字通過(guò)手機(jī)發(fā)送到盒子,合成語(yǔ)音來(lái)幫你說(shuō)出那句說(shuō)不出口的抱歉,或許會(huì)讓你輕松一些,也少一些尷尬。

       留聲機(jī)的第三個(gè)功能是可以通過(guò)網(wǎng)絡(luò)來(lái)留言,我們希望它變成一個(gè)禮物,在送出去以后,你還可以源源不斷的送上祝福。WiFi模塊可以幫助設(shè)備從網(wǎng)絡(luò)上獲取微信信息。微信客戶端可以通過(guò)向該設(shè)備留言,將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò),同時(shí)會(huì)返回哪些發(fā)出的信息已被讀取,而哪些尚未被讀到。

       我們是這樣完成它的制作的:

       使用的材料有:

       Arduino UNO

       ISD1820錄音模塊

       SYN6658TTS語(yǔ)音模塊

       藍(lán)牙模塊

       WiFi模塊

       RGB LED燈帶及其它

       首先,是將Arduino和錄音模塊連接起來(lái),使用數(shù)字端口8號(hào)來(lái)播放聲音,使用9號(hào)端口來(lái)錄制聲音,再單獨(dú)制作按鈕連接在12號(hào)端口上。因?yàn)門(mén)TS語(yǔ)音模塊是通過(guò)串口通訊的,所以我們把它的RX和TX分別連接在Arduino的2、3號(hào)端口,藍(lán)牙模塊的RX和TX連接在4、5號(hào)端口。因?yàn)镽GB LED燈帶的三色要使用PWM控制,所以紅綠藍(lán)三色的控制分別連接在了6、10、11號(hào)端口。串口的WiFi模塊可以連接在7、13號(hào)端口。

       實(shí)際的制作過(guò)程中,我們是一個(gè)部分一個(gè)部分調(diào)試成功后再進(jìn)行整合。部分代碼如下:

       //端口定義

       int buttonPin = 12;

       int recordPin = 9;

       int playPin = 8;

       #define REDPIN 6

       #define GREENPIN 10

       #define BLUEPIN 11

       #include

       SoftwareSerial portOne(2, 3);

       SoftwareSerial portTwo(4, 5);

       ........

       //TTS字符處理

       void parser(unsigned char c)

       {

       unsigned int len;

       if (gSerialBufIndex == 0)

       {

       if (c == 0xFD)

       {

       gSerialBuf[0] = 0xFD;

       gSerialBufIndex = 1;

       } else {

       return;

       }

       } else if (gSerialBufIndex < 3)

       {

       gSerialBuf[gSerialBufIndex ] = c;

       } else if (gSerialBufIndex >= 3)

       {

       len = gSerialBuf[1] << 8 | gSerialBuf[2];

       if (len > 200)

       return;

       if ((gSerialBufIndex - 3 1 ) <= len)

       {

       gSerialBuf[gSerialBufIndex ] = c;

       if ((gSerialBufIndex - 3 1 ) > len)

       {

       gSerialBuf[gSerialBufIndex] = '\0';

       portOne.write(gSerialBuf[0]);

       portOne.write(gSerialBuf[1]);

       portOne.write(gSerialBuf[2]);

       portOne.write(gSerialBuf 3);

       gSerialBufIndex = 0;

       return;

       }

       }

       }

       }

       .......

       //藍(lán)牙數(shù)據(jù)轉(zhuǎn)發(fā)TTS模塊

       while (portTwo.available() > 0) {

       analogWrite(GREENPIN,255);

       delay(50);

       analogWrite(GREENPIN,0);

       char inByte = portTwo.read();

       parser(inByte);

       電路連接的部分結(jié)束后,我們使用3D打印制作了留聲機(jī)的外殼,并將電路部分固定在了里面。

       關(guān)于通過(guò)android端手機(jī)藍(lán)牙控制的發(fā)聲過(guò)程,首先發(fā)現(xiàn)藍(lán)牙設(shè)備,并且連接上去。

       輸入你要說(shuō)的話,點(diǎn)擊發(fā)送就可以讓發(fā)聲模塊發(fā)聲。還可以通過(guò)點(diǎn)擊男聲和女生來(lái)變換聲音的語(yǔ)調(diào)。

       藍(lán)牙連接流程:

       下面是藍(lán)牙的連接原理圖,首先通過(guò)界面GUI點(diǎn)擊連接按鈕通過(guò)連接按鈕的事件hitConnectButton()來(lái)發(fā)出連接命令,命令A(yù)CTION_CONNECT發(fā)送給后臺(tái)服務(wù)Background Service通過(guò)checkAddressFormat來(lái)檢查地址格式,然后通過(guò)initBuletoothDevice()來(lái)調(diào)用藍(lán)牙連接庫(kù)BlueTooth Library來(lái)初始化藍(lán)牙連接。當(dāng)藍(lán)牙連接庫(kù)返ready()的時(shí)候Background Service開(kāi)始啟動(dòng)連接線程startConnectThread(),接著打開(kāi)藍(lán)牙連接socket,當(dāng)返回socketOpen時(shí)啟動(dòng)socket連接池管理socket。然后Background Service返回給GUI命令A(yù)CTION_CONNECTED,表示連接成功。同時(shí)通過(guò)updateButtonState()來(lái)更新界面的顯示狀態(tài)。

       數(shù)據(jù)格式生成代碼:

       下面是從android手機(jī)端發(fā)送給發(fā)聲模塊的數(shù)據(jù)幀結(jié)構(gòu)。下面的代碼就是怎么樣在android上用java代碼生成這樣的數(shù)據(jù)格式。經(jīng)調(diào)試該發(fā)聲模塊目前能接受的是GBK的數(shù)據(jù)編碼格式,所以我們用message.getBytes(“GBK”)來(lái)生成該編碼格式。Msg_byte_len是數(shù)據(jù)幀總長(zhǎng)度,byteHead代表幀頭,byteLen代表數(shù)據(jù)區(qū)長(zhǎng)度,byteType代表命令字和命令參數(shù),然后將這些數(shù)據(jù)組合在destArray中,發(fā)送到發(fā)聲模塊上,發(fā)聲即可。

       稍加調(diào)試,留聲機(jī)就基本能工作起來(lái)了。對(duì)我們最具挑戰(zhàn)的第三個(gè)功能——網(wǎng)絡(luò)留言功能,也使用微信的API測(cè)試成功。當(dāng)它被作為禮物送給對(duì)方的時(shí)候,你還可以在后面的日子里訪問(wèn)它,很喜歡為它設(shè)計(jì)的廣告語(yǔ):每一份愛(ài)都應(yīng)該得到禮物,每一份禮物都應(yīng)該持續(xù)不斷地得到祝福。

 
【版權(quán)聲明】本網(wǎng)站所刊原創(chuàng)內(nèi)容之著作權(quán)為「中國(guó)半導(dǎo)體照明網(wǎng)」網(wǎng)站所有,如需轉(zhuǎn)載,請(qǐng)注明文章來(lái)源——中國(guó)半導(dǎo)體照明網(wǎng);如未正確注明文章來(lái)源,任何人不得以任何形式重制、復(fù)制、轉(zhuǎn)載、散布、引用、變更、播送或出版該內(nèi)容之全部或局部。
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 關(guān)閉窗口 ]

 
0條 [查看全部]  相關(guān)評(píng)論

 
推薦圖文
點(diǎn)擊排行
關(guān)于我們 | 聯(lián)系方式 | 使用協(xié)議 | 版權(quán)隱私 | 誠(chéng)聘英才 | 廣告服務(wù) | 意見(jiàn)反饋 | 網(wǎng)站地圖 | RSS訂閱