【題目要求】:無線通信系統
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