Arduino通訊協議設計

2021-07-10 06:07:15 字數 859 閱讀 2898

最近在一直在研究arduino

硬體平台的東西,先從做乙個簡單的東西入手,比如說,我通過android端向arduino硬體傳送指令,控制電機的正轉、反轉。其中乙個必不可少的問題就是這兩個端裝置之間的通訊問題。它們之間的通訊可以通過藍芽模組來完成,此外,還需要自己設計通訊協議。

從最簡單的模組開始,需求就是控制電機的旋**反轉和正轉。再考慮最實際的硬體裝置情況:

arduino開發板包含四個埠,每個埠都有標號,1-4。可以將電機連線在這四個埠的其中乙個埠。上位機通過藍芽模組向底層的硬體裝置傳送控制命令。比如說:讓某個埠上的某個電機正轉或者反轉。

上位機實際傳送的資料格式如下,主要包含4個字段:

協議首部

指令長度

控制指令

校驗和

其中,「協議首部」就是資料報的開始部分,比如說統一指定為0xaa;「指令長度」表示「控制指令」欄位的長度;「控制指令」就是上位機實際傳送的對底層硬體裝置的控制命令;「校驗和」是「控制指令」各個資料位進行異或計算的結果。比如說:乙個合法的資料報可以是這樣的」aa 03 d1 d2 d3 d4」,其中,d4是校驗和,d4=d1^d2^d3。

對於「控制指令」需要進一步設計。對於電機來說,控制指令可以設計成如下格式:

裝置型別

裝置號埠號

其中,「裝置型別」就是指定是哪一種裝置,比如說,電機,led,蜂鳴器等;「裝置號」就是裝置的標號,可以為1,2,3,等;「埠號」就是指該裝置連線在哪個埠上面。

arduino是串列埠傳送的,也就是說資料報是一位一位地傳送的,因此需要先將接收的資料儲存起來,然後按位進行解析。解析出各個欄位的含義以後就可以按照arduino硬體平台的類c語言進行程式設計控制硬體裝置了。剩下的問題就是寫**的問題了,so easy!

Arduino自定義通訊協議解析

給出了通訊協議的設計。通訊協議的格式如下 協議首部 指令長度 控制指令 校驗和 控制指令 設計成如下格式 裝置型別 裝置號埠號 比如說上位機傳送如下的格式的資料 aa0305020106,意思就是協議的首部為aa,指令長度為03,控制指令為050201 實際意義就是裝置型別為05,裝置號為02,埠為...

網路通訊 協議設計

2 tlv 2.5 解析步驟 3 上下位機常用自定義協議 4 socket常用自定義協議 參考應用層的資料解析,目前博主涉及工業領域的上下位機串列埠通訊和客戶端服務端socket通訊,都是資料量不大的場景。在串列埠傳輸不穩定時,需要加上crc進行校驗。在socket通訊中,目前通訊丟包的可能性很小,...

通訊協議設計分析

幾乎任何專案都會涉及到通訊,那麼通訊協議的設計就顯得十分關鍵,目前就我個人來說串列埠 網口為從位元組流中取到正確的資料必須要開始通訊協議的設計。轉義字元 幾乎能保證99 的傳輸正確,除非硬體丟包太嚴重。對於很多裝置之間的通訊,經常需要自己設計一套通訊協議。當然此處的通訊協議一般都是建立在tcpip協...