新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于PIC32的無線自助點菜系統的實現,包含原理圖及

        基于PIC32的無線自助點菜系統的實現,包含原理圖及

        作者: 時間:2016-09-12 來源:網絡 收藏

        2)最具性價比的ZigBee技術

        一般而言,隨著通信距離的增大,設備的復雜性、功耗以及系統成本都在增加。相對于現有的各種無線通信技術,ZigBee技術是最低功耗和成本的技術。ZigBee技術也存在著自身的缺點,該技術的數據速率比較低和通信范圍較小。但由于本系統所承載數據流量較小,所以ZigBee就非常適合,具有最佳的性價比。

        3)Cerebot 32MX4豐富的外設接口

        本課題所使用的Digilent Cerebot™ 32MX4開發板是一個功能強大的微控制器開發板,它擁有九個Digilent Pmod™外圍模塊連接器。本課題需要用到的Digilent Pmod模塊有按鍵開關、字符LCD、以及SD卡插槽,開發板還可以用來連接H-bridge驅動、模數和數模轉換器、蜂鳴器、滑動開關、LED指示燈等,其提供了豐富的外設資源。

        3.軟件流程介紹

        3.1無線網絡軟件設計

        系統中通過簡單的無線星型網絡實現了前臺的PC機和PIC32點菜節點的雙向通信。無線網絡系統初始化時將各節點的通信頻率固定在2.48G頻點上,通過中心節點輪詢各子節點的方式時分復用實現組網及雙向通信。

        中心節點和子節點的CC2430均通過中斷接收串口數據與無線傳輸的數據。如果PC機通過串口向中心節點發送數據,則中心節點首先解析數據包(33個字節,首字節為地址,其余為數據),并根據地址設置相應的節點標志位。當中心節點對子節點進行詢問時首先查詢該節點的標志位,若沒有數據傳輸則將發送數據報首位設置為DATA_REQ(0x0F),表明該數據報沒有數據內容;若有數據傳輸則將發送數據報首位設置為DATA_TRANS(0xF0),表明該數據報有數據內容。傳輸結束后中心節點進入接收狀態,接收子節點回傳的數據報。接收到的數據報首位為ACK_NO_DATA(0x30)表明數據報中沒有數據內容,中心節點不作處理;若數據報首位為ACK_WITH_DATA(0x33),則將子節點號和數據內容通過串口傳給PC機,接開始新的詢問操作。若中心節點沒有收到相應的回傳數據報,則中心節點會重復詢問子節點,重復詢問最高次數為3次。中心節點通過對子節點地址進行計數實現對各個子節點的輪詢。

        子節點的無線模塊一般處于接收狀態,當接收到數據報時首先解析數據報的目的地址字節,若目的地址和自身地址不匹配則不作處理;若目的地址和自身地址匹配則對接收到的數據報進行解析,若包頭為DATA_TRANS(0xF0)則將數據內容傳給終端的PIC32系統,接著查詢串口標志位(子節點串口中斷接收程序在接受到PIC32發送的數據后設置串口標志位),若有數據發送則將數據報首位置為ACK_WITH_DATA(0x33),并將其和數據內容一起回傳給中心節點;若沒有數據發送則首位標志置為ACK_NO_DATA(0x30)。

        3.2前臺人機交互界面設計

        點菜系統的前臺需要構建操作友好的人機交互界面,考慮到CC2430中心節點板的串口模塊可直接將接收到的數據與上位機通信,選用VC搭建該界面。VC提供了MSComm(microsoft communications control)控件,通過串行口進行數據傳輸和接收,為應用程序提供串行通信功能。MSComm控件通信功能的實現實際上是調用了API函數,而API函數是由Comm.drv解釋并傳遞給設備驅動程序進行的,即MSComm控件的屬性提供了通信接口的參數設置,能實現串行通信。

        終端與前臺通信遵循一定的協議格式,頭一個字節是節點號(即就餐桌號),緊接著兩個字節是傳輸命令,最后才是所傳輸的內容。終端傳到前臺的命令共有5類:傳送菜單(MENU_CMD)、催菜(HUSH_CMD)、加菜(ADD_CMD)、菜單狀態(STATE_CMD)和結賬(CHECK_CMD);前臺傳回的命令有兩類:操作成功(OK_CMD)和操作失敗(NO_CMD)。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 石首市| 依兰县| 日照市| 肇庆市| 肇源县| 大田县| 稻城县| 柳江县| 长垣县| 太仓市| 屏东市| 哈密市| 呈贡县| 新昌县| 吴江市| 渝北区| 湖北省| 沙雅县| 东源县| 龙井市| 开江县| 乌兰浩特市| 达拉特旗| 洞头县| 阳曲县| 大兴区| 武宁县| 阳山县| 天长市| 石台县| 抚远县| 东乡族自治县| 安阳县| 蓬安县| 金沙县| 札达县| 武陟县| 吕梁市| 沁源县| 镇远县| 德保县|