• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Android手機(jī)的智能家居語音控制系統(tǒng)設(shè)計(jì)

      2018-01-15 06:18:12
      關(guān)鍵詞:下位調(diào)用藍(lán)牙

      (1.成都理工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 610059;2.上海艾能電力工程有限公司)

      引 言

      智能家居不僅為人們提供了安全的、便利的、舒適的基礎(chǔ)生活設(shè)施,而且還能保證人們的居住環(huán)境環(huán)保節(jié)能。但在國(guó)內(nèi),目前智能家居還只是處于技術(shù)推廣階段,并未實(shí)際應(yīng)用于百姓的日常生活中,造成這種狀況的原因有很多方面,比如軟件操作復(fù)雜、人機(jī)交互性差、價(jià)格昂貴等。

      Android系統(tǒng)于2007年11月5日由谷歌公司公布以來,其憑借開源、自由的優(yōu)勢(shì),面世以后就受到了移動(dòng)終端生產(chǎn)商的青睞。Android開發(fā)環(huán)境所需的開發(fā)工具包括Java SDK、Eclipse、Android SDK、Android ADT。其中,Android SDK是Android的專屬軟件開發(fā)包。百度語音SDK Android版(簡(jiǎn)稱BDVRClient)是運(yùn)行在Android 平臺(tái)的一體化語音識(shí)別解決方案。百度語音合成客戶端Android版SDK(簡(jiǎn)稱BDTTSClient)是面向Android移動(dòng)設(shè)備的語音合成解決方案。STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS 8位微控制器,具有8 KB在系統(tǒng)可編程Flash存儲(chǔ)器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供了高靈活、超有效的解決方案。

      本設(shè)計(jì)將采用BDVRClient和BDTTSClient方案。系統(tǒng)將人類語音發(fā)送至云端引擎進(jìn)行處理,返回計(jì)算機(jī)可讀的字符串輸入,對(duì)字符串進(jìn)行處理,采用TTS技術(shù)實(shí)現(xiàn)智能應(yīng)答,結(jié)合藍(lán)牙實(shí)現(xiàn)數(shù)據(jù)(指令)無線傳輸,使用嵌入式技術(shù)實(shí)現(xiàn)對(duì)家居系統(tǒng)的控制、定時(shí)等功能。

      1 上位機(jī)APP開發(fā)

      1.1 界面設(shè)計(jì)

      本設(shè)計(jì)包括主界面、藍(lán)牙管理界面、指令管理界面三個(gè)界面,分別使用嵌套布局、相對(duì)布局、線性布局,使用的控件有Button、TextView、EditText、ListView、togglebutton等。界面設(shè)計(jì)如圖1所示。

      圖1 界面設(shè)計(jì)

      1.2 程序邏輯設(shè)計(jì)

      1.2.1 語音識(shí)別模塊

      (1) 權(quán)限聲明

      (2) 創(chuàng)建對(duì)話框

      mDialog=new BaiduASRDigitalDialog(context,params);

      (3) 設(shè)置回調(diào)

      mRecognitionListener=newDialogRecognitionListener(){

      publicvoidonResults(Bundle results){

      ArrayListrs=results !=null?results.getStringArrayList(RESULTS_RECOGNITION):null;

      if(rs!=null){ } } };

      mDialog.setDialogRecognitionListener(mRecognitionListener);

      (4) 調(diào)用mDialog.show()開始識(shí)別

      BDVRClient在開始識(shí)別后,會(huì)啟動(dòng)錄音、預(yù)處理、上傳到服務(wù)器并獲取識(shí)別結(jié)果。

      1.2.2 語音合成模塊

      (1) 權(quán)限聲明

      (2) Tts初始化與授權(quán)等參數(shù)設(shè)置

      speechSynthesizer = SpeechSynthesizer.getInstance();

      speechSynthesizer.setContext(Context);

      speechSynthesizer.setSpeechSynthesizerListener(SpeechSynthesizerListener);

      AuthInfo authInfo = speechSynthesizer.auth(TtsMode);

      speechSynthesizer.initTts(TtsMode);

      (3) 參數(shù)設(shè)置

      設(shè)置PARAM_VOLUME、PARAM_SPEED、PARAM_PITCH、PARAM_SPEAKER、PARAM_AUDIO_ENCODE、PARAM_AUDIO_RATE等參數(shù)。

      (4) 授權(quán)驗(yàn)證接口

      AuthInfo authInfo=speechSynthesizer.auth(TtsMode ttsMode);

      (5) Tts初始化接口

      int initTts(TtsMode ttsMode);

      (6) 合成并播放

      調(diào)用speak()即可實(shí)現(xiàn)合成并播放。

      1.2.3 藍(lán)牙模塊

      (1) 打開/關(guān)閉藍(lán)牙

      獲得藍(lán)牙適配器:

      blueadapter=BluetoothAdapter.getDefaultAdapter();

      調(diào)用blueadapter.enable()和blueadapter.disable()打開或者關(guān)閉藍(lán)牙。

      (2) 搜索藍(lán)牙

      調(diào)用diblueadapter.startDiscovery( )發(fā)送廣播搜索藍(lán)牙,在發(fā)送廣播之前需要注冊(cè)藍(lán)牙搜索廣播接收者、定義廣播接收,當(dāng)廣播的事件是注冊(cè)的事件時(shí)就會(huì)觸發(fā)廣播接收器,然后觸發(fā)廣播接收的onReceiver(),從Intent中獲取設(shè)備對(duì)象:

      BluetoothDevice device=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

      通過listview控件顯示遠(yuǎn)端設(shè)備列表。

      (3) 藍(lán)牙配對(duì)

      藍(lán)牙首次配對(duì)之后,隨后的通信連接就不必每次都要做確認(rèn)。

      (4) 建立connect線程完成連接并發(fā)送socket連接完成的廣播事件

      部分代碼如下:

      socket=this.device.createRfcommSocketToServiceRecord(this.myUID);

      socket.connect();

      Intent tent=new Intent(MainActivity.CONNECT_FINAL_ACTION);

      MainActivity.this.sendBroadcast(tent);

      (5) 指令發(fā)送

      廣播接收onReceiver()中,獲得blueSocket對(duì)象:

      blueSocket=MainActivity.this.connect_thread.getSocket();

      通過blueSocket對(duì)象獲取輸出流:

      tmpOut=blueSocket.getOutputStream();

      通過調(diào)用tmpOut.write(bytes[])發(fā)送指令。

      1.2.4 SQLite數(shù)據(jù)庫模塊

      (1) 創(chuàng)建zhiling表

      使用SQLiteOpenHelper抽象類創(chuàng)建一個(gè)ZHILING.db的數(shù)據(jù)庫,然后在代碼中執(zhí)行db.execSQL(CREATE_ZHILING)創(chuàng)建一張zhiling表。

      (2) 添加數(shù)據(jù)

      獲取SQLiteDatabase對(duì)象:

      SQLiteDatabase db=dbHelper.getWritableDatabase();

      然后使用ContentValues來對(duì)要添加的數(shù)據(jù)進(jìn)行組裝,最后調(diào)用db.insert()將數(shù)據(jù)添加到zhiling表中。

      (3) 顯示列表

      通過SimpleCursorAdapter類與數(shù)據(jù)綁定,借助listview顯示數(shù)據(jù)。

      (4) 數(shù)據(jù)庫查詢

      使用db.query()遍歷數(shù)據(jù)庫進(jìn)行查詢,獲取單字節(jié)指令。

      1.3 Toast提示

      Toast可以反映當(dāng)前控制端的變化,提醒用戶當(dāng)前應(yīng)用的狀態(tài)。Toast 提示的內(nèi)容如下:藍(lán)牙連接狀態(tài)改變提示、查詢指令成功提示和指令發(fā)送成功提示等。

      2 下位機(jī)的設(shè)計(jì)

      2.1 下位機(jī)硬件設(shè)計(jì)

      下位機(jī)以單片機(jī)STC89C52為核心控制器,通過串口與HC-06藍(lán)牙模塊連接,接收來自上位機(jī)的指令;P1^7 I/O口與P3^2 I/O連接,可產(chǎn)生外部中斷,用于LED照明系統(tǒng)的定時(shí);P1^0、P1^1、P1^2 I/O口通過限流電阻與LED燈連接構(gòu)成LED照明系統(tǒng);與LCD1602顯示模塊的連接構(gòu)成液晶顯示電路;與紅外發(fā)射管和相應(yīng)的保護(hù)電路構(gòu)成紅外發(fā)射電路等;下位機(jī)硬件原理圖(藍(lán)牙模塊、LCD1602液晶顯示模塊以相應(yīng)的接口形式體現(xiàn))如圖2所示。

      圖2 下位機(jī)硬件原理圖

      下位機(jī)實(shí)物圖如圖3所示。

      圖3 下位機(jī)實(shí)物圖

      2.2 下位機(jī)軟件設(shè)計(jì)

      下位機(jī)軟件的主要功能包括接收來自上位機(jī)的指令、對(duì)指令進(jìn)行判斷、或控制LED照明系統(tǒng)、或產(chǎn)生中斷進(jìn)行定時(shí)、或控制紅外發(fā)射、或控制液晶顯示。

      對(duì)于中斷服務(wù)程序,首先對(duì)指令進(jìn)行判斷,調(diào)用顯示子程序,然后程序延時(shí)2分鐘,熄滅對(duì)應(yīng)的LED燈,中斷返回。對(duì)于紅外發(fā)送部分,采用定時(shí)方式0產(chǎn)生中斷的方式產(chǎn)生載波,使用定時(shí)方式1延時(shí)的方式實(shí)現(xiàn)引導(dǎo)碼、“1”、“0”的發(fā)送。

      對(duì)于液晶顯示部分,其操作時(shí)序?yàn)椋?/p>

      ① 讀狀態(tài):輸入RS=L,RW=H,E=H;輸出D0~D7=狀態(tài)字。

      ② 寫指令:輸入RS=L,RW=L,D0~D7=指令碼,E=高脈沖; 輸出無。

      ③ 讀數(shù)據(jù):輸入RS=H,RW=H,E=H;輸出D0~D7=數(shù)據(jù)。

      ④ 寫數(shù)據(jù):輸入RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖;輸出無。

      下位機(jī)軟件程序流程圖如圖4所示。

      圖4 下位機(jī)軟件程序流程圖

      3 系統(tǒng)測(cè)試

      將smarthome.apk發(fā)送至Android手機(jī)進(jìn)行安裝,編輯指令列表,將xiaweiji.hex燒寫至單片機(jī),連接電路,接通電源,連接藍(lán)牙,部分測(cè)試用例和測(cè)試記錄見表1。

      表1 部分測(cè)試用例和測(cè)試記錄

      結(jié) 語

      [1] 張濤.基于Android的智能家居系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].合肥:安徽大學(xué),2015.

      [2] 韓迪,李建慶.Android實(shí)例詳解項(xiàng)目實(shí)訓(xùn)開發(fā)[M].北京:北京郵電大學(xué)出版社,2016.

      [3] 侯殿有.單片機(jī)C語言程序設(shè)計(jì)[M].北京:人民郵電出版社,2010.

      [4] David Kammer.藍(lán)牙應(yīng)用開發(fā)指南近程互聯(lián)解決方案[M].李靜,等譯.北京:科學(xué)出版社,2003.

      [5] 王玉鳳.基于紅外、無線通信和語音識(shí)別的智能家電網(wǎng)絡(luò)控制系統(tǒng)[D].長(zhǎng)沙:長(zhǎng)沙理工大學(xué),2005.

      [6] 北京百度網(wǎng)訊科技有限公司.百度語音識(shí)別SDK Android版開發(fā)手冊(cè)[EB/OL].[2017-09].http://yuyin.baidu.com/docs/asr/166.

      [7] 百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司.百度語音合成SDK Android版開發(fā)手冊(cè)[EB/OL].[2017-09].http://yuyin.baidu.com/docs/tts.

      [8] 鄧奕.Altium Designer原理圖與PCB設(shè)計(jì)[M].武漢:華中科技大學(xué)出版社,2015.

      猜你喜歡
      下位調(diào)用藍(lán)牙
      藍(lán)牙音箱的直線之美
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      發(fā)射機(jī)房監(jiān)控系統(tǒng)之下位機(jī)
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      簡(jiǎn)單、易用,可玩性強(qiáng)Q AcousticsBT3藍(lán)牙音箱
      適合自己的才是最好的 德生(TECSUN) BT-50藍(lán)牙耳機(jī)放大器
      緊急:藍(lán)牙指尖陀螺自燃!安全隱患頻出
      玩具世界(2017年8期)2017-02-06 03:01:38
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      景洪電廠監(jiān)控系統(tǒng)下位機(jī)數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
      圍觀黨“下位”,吐槽帝“登基”
      珲春市| 芜湖县| 都兰县| 永年县| 仙游县| 开封县| 略阳县| 象州县| 彰化市| 通州区| 沽源县| 亳州市| 当涂县| 光山县| 乌什县| 天柱县| 永平县| 临高县| 昆明市| 绵阳市| 平南县| 龙陵县| 团风县| 荆州市| 灌阳县| 巫山县| 全南县| 宁晋县| 从江县| 临西县| 南平市| 泽普县| 突泉县| 保山市| 砀山县| 海晏县| 邹城市| 杭州市| 大渡口区| 临安市| 广水市|