基于PIC32的無線自助點(diǎn)菜系統(tǒng)的實(shí)現(xiàn),包含原理圖及
2)最具性價(jià)比的ZigBee技術(shù)
一般而言,隨著通信距離的增大,設(shè)備的復(fù)雜性、功耗以及系統(tǒng)成本都在增加。相對(duì)于現(xiàn)有的各種無線通信技術(shù),ZigBee技術(shù)是最低功耗和成本的技術(shù)。ZigBee技術(shù)也存在著自身的缺點(diǎn),該技術(shù)的數(shù)據(jù)速率比較低和通信范圍較小。但由于本系統(tǒng)所承載數(shù)據(jù)流量較小,所以ZigBee就非常適合,具有最佳的性價(jià)比。
3)Cerebot 32MX4豐富的外設(shè)接口
本課題所使用的Digilent Cerebot™ 32MX4開發(fā)板是一個(gè)功能強(qiáng)大的微控制器開發(fā)板,它擁有九個(gè)Digilent Pmod™外圍模塊連接器。本課題需要用到的Digilent Pmod模塊有按鍵開關(guān)、字符LCD、以及SD卡插槽,開發(fā)板還可以用來連接H-bridge驅(qū)動(dòng)、模數(shù)和數(shù)模轉(zhuǎn)換器、蜂鳴器、滑動(dòng)開關(guān)、LED指示燈等,其提供了豐富的外設(shè)資源。
3.軟件流程介紹
3.1無線網(wǎng)絡(luò)軟件設(shè)計(jì)
系統(tǒng)中通過簡單的無線星型網(wǎng)絡(luò)實(shí)現(xiàn)了前臺(tái)的PC機(jī)和PIC32點(diǎn)菜節(jié)點(diǎn)的雙向通信。無線網(wǎng)絡(luò)系統(tǒng)初始化時(shí)將各節(jié)點(diǎn)的通信頻率固定在2.48G頻點(diǎn)上,通過中心節(jié)點(diǎn)輪詢各子節(jié)點(diǎn)的方式時(shí)分復(fù)用實(shí)現(xiàn)組網(wǎng)及雙向通信。
中心節(jié)點(diǎn)和子節(jié)點(diǎn)的CC2430均通過中斷接收串口數(shù)據(jù)與無線傳輸?shù)臄?shù)據(jù)。如果PC機(jī)通過串口向中心節(jié)點(diǎn)發(fā)送數(shù)據(jù),則中心節(jié)點(diǎn)首先解析數(shù)據(jù)包(33個(gè)字節(jié),首字節(jié)為地址,其余為數(shù)據(jù)),并根據(jù)地址設(shè)置相應(yīng)的節(jié)點(diǎn)標(biāo)志位。當(dāng)中心節(jié)點(diǎn)對(duì)子節(jié)點(diǎn)進(jìn)行詢問時(shí)首先查詢?cè)摴?jié)點(diǎn)的標(biāo)志位,若沒有數(shù)據(jù)傳輸則將發(fā)送數(shù)據(jù)報(bào)首位設(shè)置為DATA_REQ(0x0F),表明該數(shù)據(jù)報(bào)沒有數(shù)據(jù)內(nèi)容;若有數(shù)據(jù)傳輸則將發(fā)送數(shù)據(jù)報(bào)首位設(shè)置為DATA_TRANS(0xF0),表明該數(shù)據(jù)報(bào)有數(shù)據(jù)內(nèi)容。傳輸結(jié)束后中心節(jié)點(diǎn)進(jìn)入接收狀態(tài),接收子節(jié)點(diǎn)回傳的數(shù)據(jù)報(bào)。接收到的數(shù)據(jù)報(bào)首位為ACK_NO_DATA(0x30)表明數(shù)據(jù)報(bào)中沒有數(shù)據(jù)內(nèi)容,中心節(jié)點(diǎn)不作處理;若數(shù)據(jù)報(bào)首位為ACK_WITH_DATA(0x33),則將子節(jié)點(diǎn)號(hào)和數(shù)據(jù)內(nèi)容通過串口傳給PC機(jī),接開始新的詢問操作。若中心節(jié)點(diǎn)沒有收到相應(yīng)的回傳數(shù)據(jù)報(bào),則中心節(jié)點(diǎn)會(huì)重復(fù)詢問子節(jié)點(diǎn),重復(fù)詢問最高次數(shù)為3次。中心節(jié)點(diǎn)通過對(duì)子節(jié)點(diǎn)地址進(jìn)行計(jì)數(shù)實(shí)現(xiàn)對(duì)各個(gè)子節(jié)點(diǎn)的輪詢。
子節(jié)點(diǎn)的無線模塊一般處于接收狀態(tài),當(dāng)接收到數(shù)據(jù)報(bào)時(shí)首先解析數(shù)據(jù)報(bào)的目的地址字節(jié),若目的地址和自身地址不匹配則不作處理;若目的地址和自身地址匹配則對(duì)接收到的數(shù)據(jù)報(bào)進(jìn)行解析,若包頭為DATA_TRANS(0xF0)則將數(shù)據(jù)內(nèi)容傳給終端的PIC32系統(tǒng),接著查詢串口標(biāo)志位(子節(jié)點(diǎn)串口中斷接收程序在接受到PIC32發(fā)送的數(shù)據(jù)后設(shè)置串口標(biāo)志位),若有數(shù)據(jù)發(fā)送則將數(shù)據(jù)報(bào)首位置為ACK_WITH_DATA(0x33),并將其和數(shù)據(jù)內(nèi)容一起回傳給中心節(jié)點(diǎn);若沒有數(shù)據(jù)發(fā)送則首位標(biāo)志置為ACK_NO_DATA(0x30)。
3.2前臺(tái)人機(jī)交互界面設(shè)計(jì)
點(diǎn)菜系統(tǒng)的前臺(tái)需要構(gòu)建操作友好的人機(jī)交互界面,考慮到CC2430中心節(jié)點(diǎn)板的串口模塊可直接將接收到的數(shù)據(jù)與上位機(jī)通信,選用VC搭建該界面。VC提供了MSComm(microsoft communications control)控件,通過串行口進(jìn)行數(shù)據(jù)傳輸和接收,為應(yīng)用程序提供串行通信功能。MSComm控件通信功能的實(shí)現(xiàn)實(shí)際上是調(diào)用了API函數(shù),而API函數(shù)是由Comm.drv解釋并傳遞給設(shè)備驅(qū)動(dòng)程序進(jìn)行的,即MSComm控件的屬性提供了通信接口的參數(shù)設(shè)置,能實(shí)現(xiàn)串行通信。
終端與前臺(tái)通信遵循一定的協(xié)議格式,頭一個(gè)字節(jié)是節(jié)點(diǎn)號(hào)(即就餐桌號(hào)),緊接著兩個(gè)字節(jié)是傳輸命令,最后才是所傳輸?shù)膬?nèi)容。終端傳到前臺(tái)的命令共有5類:傳送菜單(MENU_CMD)、催菜(HUSH_CMD)、加菜(ADD_CMD)、菜單狀態(tài)(STATE_CMD)和結(jié)賬(CHECK_CMD);前臺(tái)傳回的命令有兩類:操作成功(OK_CMD)和操作失敗(NO_CMD)。
評(píng)論