国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于嵌入式的水上VHF自動播報系統(tǒng)的設(shè)計

2016-05-14 01:38董濤
中國水運 2016年7期
關(guān)鍵詞:嵌入式

董濤

摘要:水上VHF通信系統(tǒng)是全球通用的具有國際標準的通信方式,本文針對海事管理中航行信息發(fā)布需求來設(shè)計的一套基于嵌入式的VHF自動播發(fā)系統(tǒng),本設(shè)計在類似非預(yù)制語音自動播放應(yīng)用上具有一定的參考意義。

關(guān)鍵詞:嵌入式;VHF;TTS;自動播發(fā)

中圖分類號:U644 文獻標識碼:A 文章編號:1006-7973(2016)07-0031-03

VHF通信是保障長江航行安全必不可少的通信手段,因其具有統(tǒng)一的國際標準,主要應(yīng)用于船與船、船與岸之間進行的船舶會讓、遇險報警、海事救助等方面的通信聯(lián)絡(luò),特別是由于其廣播的性質(zhì),在岸臺的水文氣象、航行通告等信息的發(fā)布上起到了不可替代的作用。但在當(dāng)前常用的需要定時播出的航行通告等信息的播發(fā)中,操作人員一般需要提前錄制好語音文件或者操作TYS軟件將文本轉(zhuǎn)為語音文件,再將該文件上傳給播發(fā)系統(tǒng)定時播出,該操作需要操作人員具備熟練的普通話能力和相關(guān)軟件操作能力,實際應(yīng)用中具有一定的難度。

本設(shè)計就是在需要通過VHF進行航行通告等信息播發(fā)的單位、站點設(shè)置一臺基于嵌入式系統(tǒng)的播發(fā)主機與VHF船(岸臺)機相連,操作人員通過內(nèi)部網(wǎng)絡(luò)使用瀏覽器訪問該主機,在頁面上提交播發(fā)任務(wù)和文本播發(fā)內(nèi)容,該主機會按照任務(wù)列表進行自動播發(fā)。

1 系統(tǒng)設(shè)計方案

1.1 系統(tǒng)需求

要實現(xiàn)VHF自動播報系統(tǒng),需要搭建一臺主機系統(tǒng)與VHF船(岸)臺機相連,實現(xiàn)以下功能:1.該主機能夠?qū)⒉髢?nèi)容以音頻的方式發(fā)送給VHF船(岸)臺機,并控制其播發(fā);2.該主機能存儲并管理播發(fā)內(nèi)容,實現(xiàn)定時按需播發(fā);3.該主機能夠接入內(nèi)部網(wǎng)絡(luò)中并實現(xiàn)遠程訪問,用戶僅需提交文字版的播發(fā)內(nèi)容并可以對其進行增、刪、改等操作;4.該主機要能專用并小型化,系統(tǒng)工作穩(wěn)定。

1.2 系統(tǒng)方案

根據(jù)系統(tǒng)需求,一臺基于嵌入式系統(tǒng)的主機系統(tǒng)方案能滿足需要,其系統(tǒng)架構(gòu)如圖1所示,采用安裝了Linux系統(tǒng)的嵌入式平臺作為控制主機,在該主機上搭建web服務(wù)器和數(shù)據(jù)庫系統(tǒng)并設(shè)計播報軟件。遠程用戶通過瀏覽器訪問該控制主機,在管理頁面上提交需要發(fā)布的航行信息(文本),播報系統(tǒng)會在預(yù)定的時間將該內(nèi)容通過硬件TTS模塊轉(zhuǎn)換為語音信號輸出至VHF船(岸)臺機并向附近水域播發(fā)。

2 硬件選型

系統(tǒng)硬件架構(gòu)如圖2,由主機模塊、電源模塊和VHF模塊組成。主要硬件設(shè)備選型如下:

2.1 控制主機

控制主機選用樹莓派2代。樹莓派是樹莓派基金會發(fā)布的卡片式電腦,具有900MHz主頻的4核ARM Cortex-A7 CPU、1G內(nèi)存、10/100M以太網(wǎng)接口的主機系統(tǒng),主板上載有40針的GPIO(General Purpose Input Output通用輸入輸出)接口,連接實現(xiàn)外部控制和串行通信功能。利用MicroSD卡作為存儲,安裝和運行基于Linux的Raspbian或Win10 IoT等操作系統(tǒng)。該主機完全性能可以滿足本項目的主機硬件平臺需求。

2.2 硬件TTS模塊

硬件TTS模塊選擇宇音天下公司出品的最新一代SYN6658中文語音合成芯片模塊。該語音芯片通過UART和上位機通信,直接接收待合成的文本數(shù)據(jù),實現(xiàn)文本到語音(TYS,TextTo Speech)的轉(zhuǎn)換功能。該模塊支持任意中文文本(<4K字節(jié))的合成,智能識別區(qū)分數(shù)值、時間、度量衡、姓氏、多音字等各式文本,內(nèi)置多種提示音可選,并能實現(xiàn)男女聲、語速、語調(diào)、音量調(diào)整。該模塊接線簡單,僅需連接供電、UART輸入,提供一路單聲道語音輸出,該模塊控制簡單、功能強大,輸出語音柔和自然。

2.3 VHF船臺機

VHF船臺機選用建伍(KENWOOD)公司的TM-271A型VHF調(diào)頻對講機,該型VHF調(diào)頻對講機可以調(diào)整為水上專用VHF頻道。選用該型VHF船臺機的主要原因是該機型麥克風(fēng)接口使用的是標準的RJ45接頭,接線標準明晰,后期改裝簡單。接線線序如圖3所示,6針為麥克風(fēng)輸入、5針為麥克風(fēng)地,將兩針與TTS模塊的語音輸出直接連接實現(xiàn)語音的輸入;4針為PTT(PushToTalk)腳、3針為地,將4/3針導(dǎo)通實現(xiàn)麥克風(fēng)手柄的PIT按鈕按下功能,其他接線腳懸空不用處理。

2.4 其他模塊

電源模塊直接利用VHF專用的13.6V直流電源給建伍VHF船臺機供電;樹莓派電源使用LM2596S直流可調(diào)降壓模塊,該模塊輸入3-40V、輸出1.5-35V(3A)可調(diào),使用時接入VHF電源,輸出調(diào)整為5V即可。

PIT控制使用1路繼電器模塊,該模塊驅(qū)動電壓為5V,采用光耦隔離,低電平觸發(fā)。常開端與VHF接口第4/3針PTY/GND相連,通過觸發(fā)實現(xiàn)PTT按下功能。

由于樹莓派沒有實時時鐘,斷電之后時間會歸零。可以使用外接基于DS3231芯片的實時時鐘模塊在樹莓派啟動時進行校時以保證運行時間準確。也可以在系統(tǒng)啟動之后連接內(nèi)網(wǎng)的NTP服務(wù)器實現(xiàn)授時及校時功能。

3 軟件設(shè)計

系統(tǒng)軟件的總體設(shè)計思路是基于任務(wù)表驅(qū)動系統(tǒng)運行。播報系統(tǒng)每分鐘讀取一次數(shù)據(jù)庫中的任務(wù)表,任務(wù)表中任務(wù)時間以分鐘為單位,將表中的任務(wù)時間與系統(tǒng)時間相比對,如果時間相符則播出該條播報信息,播放完成后將播放內(nèi)容保存至已播放表。系統(tǒng)運行流程圖如圖4所示:

要實現(xiàn)系統(tǒng)設(shè)計目標,需要完成以下系統(tǒng)及軟件的設(shè)計:

3.1 操作系統(tǒng)搭建

樹莓派使用主板上的bootload來引導(dǎo)燒錄在MicroSD卡上的操作系統(tǒng)鏡像來啟動系統(tǒng)。在本設(shè)計中使用的是Raspbian系統(tǒng),Raspbian是基于Debian GNU/Linux的免費操作系統(tǒng),它面向Raspberry Pi硬件(armhf處理器架構(gòu))做了優(yōu)化,內(nèi)置了多個常用的軟件包和預(yù)編譯軟件,非常適合于常用的web服務(wù)器、物聯(lián)網(wǎng)設(shè)備控制等系統(tǒng)設(shè)計和開發(fā)。

Raspbian系統(tǒng)安裝:首先從Raspbian官方或者國內(nèi)鏡像下載Raspbian系統(tǒng)包,然后在windows系統(tǒng)下使用Win32DiskImag-er將.img文件寫人MicroSD卡;再將卡插入樹莓派MicroSD插槽,上電后Raspbian會自動啟動。在完成系統(tǒng)安裝之后,通過SSH登陸樹莓派設(shè)置好靜態(tài)lP地址并安裝VNC Server,方便后期使用vnc客戶端遠程登陸至樹莓派x desktop上進行操作。

本設(shè)計使用Linux+Nginx+SQLite+Python+Django架設(shè)服務(wù)器來取代常用的LAMP(Linux+Apache+Mysql+PHP)的方式來架設(shè)Web服務(wù),因為該方式較LAMP來說資源消耗低,開發(fā)起來也比較便捷。樹莓派上安裝Nginx/Django/SQLite/Python的方法網(wǎng)上較多,此處不贅述了。

3.2 數(shù)據(jù)庫設(shè)計

本設(shè)計使用SQLite作為數(shù)據(jù)庫系統(tǒng),SQLite是一款輕量化的數(shù)據(jù)庫系統(tǒng),其設(shè)計目標就是使用在嵌入式系統(tǒng)中,資源占用小但功能強大,它獨立、開源并支持多種開發(fā)語言,是輕量級嵌入式開發(fā)較為合適的數(shù)據(jù)庫系統(tǒng)。

SQLite數(shù)據(jù)庫為單文件數(shù)據(jù)庫,本設(shè)計數(shù)據(jù)庫名為playlist.db,其中包含兩個主要的表:tasklist(播放任務(wù))、complist(已播放)表。其中,tasklist表主要有以下字段:

playtime TEXT//計劃播報時間

freq

INTEGER//播報頻率

num

INTEGER//播報次數(shù)

title TEXT//播報內(nèi)容標題

text TEXT//播報內(nèi)容

其中playtime為播報時間,格式為YYYYMMDDHHMM,如201601011330;freq播報頻率指間隔多少分鐘播出一次(根據(jù)實際播出要求,該頻率一般為5-120分鐘);nun指一共播出多少次;title限定20漢字以內(nèi);text限定200漢字以內(nèi)。

eomplist表用于保存已播放內(nèi)容,僅需playtime、title和text字段。

根據(jù)日常使用經(jīng)驗,系統(tǒng)主要是針對tasklist表中的內(nèi)容進行增、刪、改操作,即向播放列表中加入播放條目、播放完成后刪除播放條目、對未播放內(nèi)容進行修改,數(shù)據(jù)紀錄條數(shù)較少,檢索方便。complist表主要是增加數(shù)據(jù)紀錄操作,由于該表是每次播放完成后將已播放內(nèi)容加入,數(shù)據(jù)紀錄天然按照播放時間(playtime)字段增序排列,不需要進行額外排序工作。

3.3 WEB服務(wù)器設(shè)計

WEB服務(wù)框架采用Django。Django是一個開放源代碼的Web應(yīng)用框架,由Python寫成,采用了MVC(Model View Control-ler,模型、視圖、控制器)的軟件設(shè)計模式。選用Django的原因是使用框架封裝了控制層,數(shù)據(jù)調(diào)用等操作只需調(diào)用相應(yīng)的方法即可完成,另外有大量的第三方插件可以使用,大大的提高開發(fā)的效率。

WEB服務(wù)器采用Nginx。Nginx是一款輕量級的Web服務(wù)器,占用內(nèi)存僅幾兆,非常適合于樹莓派上構(gòu)建WEB服務(wù)。Django通過Nginx+uWSGI來部署,Nginx作為服務(wù)器最前端,它將接收WEB的所有請求,統(tǒng)一管理請求。Nginx把所有靜態(tài)請求自己來處理,非靜態(tài)請求通過uWSGI傳遞給Django,由Django來進行處理,從而完成一次WEB請求。

WEB頁面設(shè)計比較簡單,直接借用一個基礎(chǔ)的論壇發(fā)布頁面,簡單修改后調(diào)用數(shù)據(jù)庫內(nèi)容顯示在頁面上,可以對每個條目進行增、刪、改操作。

3.4 播報軟件設(shè)計

播報軟件使用Python軟件開發(fā),Python是一種面向?qū)ο?、解釋型計算機程序設(shè)計語言,該語言簡潔、易用和可擴展,比較方便使用于WEB開發(fā)應(yīng)用中。

播報軟件主要由數(shù)據(jù)庫訪問和文本TYS輸出組成:

3.4.1 數(shù)據(jù)庫訪問

系統(tǒng)運行中正常的數(shù)據(jù)庫訪問涉及tasklist表的增加、刪除和更新及complist表的增加操作。系統(tǒng)上電運行之后,每分鐘查詢一次tasklist表,比對是否存在playtime與當(dāng)前時間相符的記錄,如果相符則將該條記錄中text字段內(nèi)容(播發(fā)內(nèi)容)輸出,播發(fā)完成之后,將該條記錄復(fù)制進complist表,表明該條播發(fā)任務(wù)已經(jīng)完成。然后查看nun字段是否大于1(需要多次播發(fā)),如果不大于則表明需要多次播發(fā)的任務(wù)已經(jīng)完成,刪除該條記錄;如果沒有完成則將nun字段內(nèi)容減一,將playtime字段時間加上freq內(nèi)容(構(gòu)成下一次播發(fā)時間);最后重新更新該條記錄,形成一條新的播發(fā)任務(wù)記錄。

3.4.2 文本TTS輸出

通過將text字段內(nèi)容(文本)向串口輸出至SYN6658芯片實現(xiàn)文字到語音的轉(zhuǎn)換后從VHF船臺機播出主要由以下兩個過程完成:

3.4.2.1 FFF按鈕的按下

根據(jù)樹莓派GPIO定義,使用GPIO 0(第11腳)作為控制腳,與繼電器模塊IN腳相接。

GPIO.setmode(GPIO.BOARD)//使用GPIO.BOARD模式

GPIO.setup(11,GPIO.OUT)//將11腳(GPIO 0)設(shè)為輸出模式

吸合繼電器時使用:GPIO.output((11,GPIO.LOW),此時VHF船臺機FFF與GND導(dǎo)通,相當(dāng)于PTT按鈕按下,VHF船臺機處于發(fā)送模式。

釋放繼電器時使用:GPIO.output(11,GPIO.HIGH),此時VHF船臺機PTT與GND斷開,相當(dāng)于PTY按鈕釋放,VHF船臺機處于接收模式。

3.4.2.2 串口文本輸出

樹莓派原生有一個串口,為GPIO 14(TXD)和GPIO 15(RXD),但該串口默認為調(diào)試口,需要在樹莓派配置界面中將串口調(diào)試功能關(guān)閉。將GPIO 14與SYN6658模塊RXD連接,GPIO 15與SYN6658模塊TXD連接,波特率默認為9600bps。

樹莓派與SYN6658之間通信使用數(shù)據(jù)幀的方式,數(shù)據(jù)幀格式如下表:

樹莓派向串口輸出控制播發(fā)的過程為:

ser=serial.Serial("/dev/uyAMA0",9600)

ser.write('\xFD')//輸出固定幀頭0xFD

ser.write('\x00\x66')//數(shù)據(jù)區(qū)長度為102字節(jié)(發(fā)送50個漢字)

ser.write('\x01\x00')//以GB2312編碼格式合成播放

ser.write(data)//輸出待發(fā)送文本

通過輸出不同的命令字可以控制芯片播發(fā)、停止、暫停、恢復(fù)等合成文本操作。

輸出0xFD 0x00 0x01 0x21命令可以查詢芯片工作狀態(tài),芯片收到查詢指令后,返回0x4E表明仍在合成過程中,返回0x4F表明處于空閑狀態(tài)。

合成工作完成后表明所有待發(fā)送的文本已經(jīng)全部提交合成完畢,如果系統(tǒng)工作正常,那么該條航行信息應(yīng)該通過VHF船臺機向附近水域播發(fā)完成,此時將FTT按鈕釋放,整個播發(fā)過程結(jié)束,系統(tǒng)進入下一次播發(fā)的準備狀態(tài)中。

猜你喜歡
嵌入式
慕課嵌入式翻轉(zhuǎn)課堂在雙語教學(xué)中的應(yīng)用研究
嵌入式系統(tǒng)技術(shù)及其應(yīng)用
嵌入式計算機技術(shù)及其應(yīng)用研究
JG/T136—2016單層網(wǎng)殼嵌入式轂節(jié)點
嵌入式LINUX操作系統(tǒng)的研究
嵌入式的特點及發(fā)展機遇
嵌入式組件技術(shù)的研究及應(yīng)用
基于嵌入式系統(tǒng)的游戲程序設(shè)計
“嵌入式系統(tǒng)概論”課程設(shè)計
AItera推出Nios?。桑上盗熊浐颂幚砥?/a>