【技能大賽真題】2019年物聯網國賽任務三題1-無線通信系統

【題目要求】:無線通信系統

    Zigbee通訊擁有短距離無線通訊的能力,選用一個Zigbee節點盒(藍色),一個Zigbee模塊(黑色),實現點對點的數據傳輸通訊,考覈選手Zigbee點對點知識的掌握,利用給定的工程實現任務。

要求如下:
    <1> Zigbee網絡號PAN ID、信道號Channel ID請參考紙質附件給定的值。
    <2> 程序開始運行Zigbee節點盒LED1、LED2燈亮,Zigbee模塊D4、D3、D6、D5燈亮;
    <3> 單擊Zigbee節點盒SW1後,板上的LED1、LED2燈進入交替亮滅狀態(如LED1亮則LED2滅,LED2亮則LED1滅);同時發送一個信息給Zigbee模塊,當Zigbee模塊收到這個信息後Zigbee模塊板上的D4、D3、D6、D5燈進入流水燈狀態。
    <4> 單擊Zigbee模塊上的SW1後,板上的D5、D6、D3、D4燈進入流水狀態;同時發送一個信息給Zigbee節點盒,當Zigbee節點盒收到這個信息後Zigbee節點盒板上的LED1、LED2進入呼吸燈狀態;
    <5> 單擊Zigbee模塊上的SW2後,重置兩個Zigbee板上的燈,Zigbee模塊D4、D3、D6、D5燈亮;Zigbee節點盒LED1、LED2燈亮。
    <6> 能重複實現以上步驟。
    <7> Zigbee節點盒要實現與PC端串口的通訊功能,以便接收PC端軟件由串口發送過來的數據後,通過無線通訊轉發給Zigbee模塊,再由Zigbee模塊將這個數據通過串口發送給Android端軟件。
    <8> Zigbee模塊要實現與Android端串口的通訊功能,以便接收Android端軟件由串口發送過來的數據後,通過無線通訊轉發給Zigbee節點盒,再由節點盒將這個數據通過串口發送給PC端軟件。

補充說明:
    <1> 在兩塊Zigbee板上的小辣椒(天線)上貼上“任務三題1”標籤紙,Zigbee節點盒通過USB轉串口線接入開發機電腦,Zigbee模塊通過公母直連串口線接入到移動互聯終端,兩個Zigbee板都要接上電源待裁判評判。
    <2> Zigbee節點盒與PC端連接的串口爲COM8、波特率爲115200,Zigbee模塊與移動互聯終端連接的串口爲COM2,波特率爲115200,要求編譯後的工程軟件直接運行就能讀取到相應的信息。

    任務三題1的第<7>和<8>項功能,還是任務五題1第<3>和第<4>的實現基礎,也就是說,這個RF無線數據透傳功能無法實現,任務五題1的部分功能也無法得分。
任務五題1:點對點聊天系統。
    <3> 當在輸入消息文本框裏輸入相應的文本之後,點擊發送按鈕,將這條文本信息顯示在現實文本框的最後一行,同時把這條消息通過串口發送給任務三題1提供的Zigbee模塊,由模塊轉發給Zigbee節點盒最終由PC端接收並顯示該信息。
    <4> Android端接收到從Zigbee模塊串口發送過來相應的信息,則直接把該信息顯示在現實文本框的最後一行。

【硬件資源】Zigbee模塊與Zigbee節點盒的電路對照

注:關於Zigbee模塊的詳細資料,可詳見:XMF09B國賽Zigbee模塊資料彙總

【解題關鍵】:五個知識技能要點

    這是一道非常優秀的BasicRF綜合應用題目,僅僅掌握BasicRF點對點無線通信相關的內容是很難在一個小時左右完成題目的。這道題目的重要知識點至少包括:
    <1> 基於BasicRF點對點通信的無線數據收發。
    <2> 基於BasicRF點對點通信的串口數據收發。
    <3> 基於BasicRF點對點通信的I/O端口控制。 
    <4> 呼吸燈的是程序現實。
    <5> 簡單通信協議的設計。
    <6> 多狀態切換的系統框架設計。


    <參考資料01>:基於BaiscRF點對點通信的燈光控制

    <參考資料02>:基於BaiscRF點對點通信的串口收發

    <參考資料03>:Zigbee模塊XMF09B國賽兼容版資料彙總

    <參考資料04>:BasicRF點對點無線通信的應用開發核心要點

    <參考資料05>:BasicRf點對點與Z-Stack組網國賽官方提供API函數彙總

    <參考資料06>:十大傳感器模塊的接口電路與API函數資料彙總


【解題參考思路】:大約歸爲七個步驟。

    <1> 認真閱讀題目,至少三遍以上, 把題目中的要點摘錄至草稿紙上。

    <2> 頭腦中要初步形成總體的設計思路和清晰的實現步驟,最好能把基本的系統結構和應用邏輯勾勒過來,不然很難在短時間內完全解答該題目。
    <3> 先設計一個單獨的程序,實現呼吸燈的功能。呼吸燈的實現跟BasicRF點對點通信沒有關係,但應該是本題的一個難點,你可以選擇用定時器來實現PWM信號,也可以用普通延時函數來實現。用定時器會涉及一些寄存器的設置和中斷的處理,所以,我採用了普通延時函數來實現,這也是一個比較快捷的方法。
    <4> 再設計一個單獨的程序,實現串口與RF無線之間的數據透傳功能。也就是利用串口助手等工具在PC端通過串口向A節點發送數據,A節點收到後通過RF無線發送到B節點,B節點收到數據後,再通過串口發送給PC端並在另一個串口助手中顯示出來。反之亦然。 
注:看起來這裏雖然多寫了2個測試程序,但這是爲了掃除題目中最大的兩個技術障礙,使後面的應用程序開發的道路更順暢平臺。如果你對這兩部分內容很熟練的話,這個2個測試程序就免了。
    <5> 根據應用的具體要求和實現環境 設計點對點的通信協議。在這裏我選擇了32字節的數組作爲無線傳輸的數據幀,其結構定義如下:
    第0字節:系統命令字。
    第1字節:數據域的有效長度。
    第2字節~第31字節:數據域。
    <6> 定義通信協議中系統命令字。本題選擇狀態機作爲系統應用邏輯處理的基本思路,在這個步驟中實際上也把系統的具體切換狀態確定了。 具體的命令字定義,大家可以參考後面的源碼與註釋。
    <7> 按照系統設計思路和通信協議,設計具體的應用程序,並調試。

【其他資源】

    <1> 參考代碼詳見:核心關鍵源碼與註釋

    <2> HEX燒寫代碼下載:2019年國賽任務三題1-Zigbee節點盒

    <3> HEX燒寫代碼下載:2019年國賽任務三題1-Zigbee模塊

廣東職業技術學院 歐浩源】: [email protected] 
小蜜蜂筆記網】:www.xmf393.com 
技術微信】:gzyohy

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章