編制人 | Sean | 審核人 | | | | 產品名稱 | | 產品型號 | | | | 會簽日期 | | 版本 | 0.9.0 |
GizWits
修訂記錄 修改時間 | 修改內容 | 版本 | 修改人 | 備注 | 2014-09-30 | 創建 | 0.9.0 | Sean | | | | | | | | | | | | | | | | |
目錄 1. 開發GoKit 1
1.1. 開發過程(思路) 1
1.2. 了解GoKit 1
1.3. 定義新產品 1
1.4. 選擇產品模板 1
1.5. 調整產品參數 2
1.6. 生成MCU協議 3
1.7. 生成虛擬設備 3
1.8. GoKit工程與調試 4
1.9. 協議細節 4
1.9.1. WIFI模塊獲取MCU基本信息 4
1.9.2. WIFI讀取MCU屬性 5
1.9.3. 設定LED的R值 5
1.9.4. 設定LED的G值 6
1.9.5. 設定電機轉速 7
1.9.6. MCU主動上報狀態 7
2. 以GoKit為例,開發新產品 8
1.開發GoKit1.1.開發過程(思路)1)了解GoKit - 了解GoKit能夠支持的硬件功能 2)定義新產品 - 基于這些硬件功能設計一個簡單產品 3)選擇產品模板 - 選擇一個已有的類似產品作為模板快速定義產品 4)調整產品參數 - 根據自己產品的需要對模板中的各屬性字段(數據點)進行添加、刪除或修改 5)生成MCU協議與示例代碼 - 產品數據點保存后,立即生成完成的MCU開發協議以及對應的示例代碼 6)生成虛擬設備 - 如果您沒有GoKit開發板,不需要再做任何的MCU開發,生成的虛擬設備已經具備你所設計的產品功能 7)GoKit工程與調試 - 在您創建的GoKit工程中,添加示例代碼,即可完成MCU協議數據的解析和組包,您只需完成對IO口的操作即可 8)協議細節 - 當然,如果您想詳細了解MCU協議,我們會給您一一介紹 1.2.了解GoKit GoKit能夠提供的硬件功能為: 1)一顆STM32F103C8T6芯片,LPFQ封裝,提供JTAG編程接口; 2)一個紅外探測器,可以探測是否有阻擋; 3)一個R、G、B可編程全彩LED燈; 4)一個可編程電機; 5)一個溫濕度傳感器; 6)一個復位按鍵和四個自定義按鍵,可以根據需要自行設定,比如按鍵改變電機轉速、按鍵改變LED顏色等; 此外,GoKit提供USB串口,可以更方便的對MCU進行調試或者升級。 1.3.定義新產品 基于GoKit提供的以上功能,我們可以設計一些簡單且實用的產品,比如小狗寵物屋,我們設計這款產品功能如下: 1)當小狗在屋里的時候,LED亮綠色,當小狗不在屋的時候,LED亮紅色,當小狗連續一個小時不在屋的時候,上報一條報警給主人; 2)當溫度達到或者超過28度的時候,打開寵物屋的排風扇(電機),當溫度降到28以下的時候,關閉寵物屋的排風扇(電機); 以上兩個功能就可以很好的完成一個智能產品,當然,你也可以定義很多有趣的產品,比如兒童玩具之類的。 接下來我們可以以一個已有的產品模型為基礎進行快速開發; 1.4.選擇產品模板 我們選擇GoKit開發模板,會自動出現已經定義好的數據點,如下圖所示: 1.5.調整產品參數小狗寵物屋這個產品中,我們需要關心的屬性有: 1)LED的顏色R值(紅色) 2)LED的顏色G值(綠色) 3)環境溫度 4)電機轉速 5)紅外探測 這五個屬性值保留,并使用默認的配置,其余的屬性可以刪除; 如下圖所示: 五個屬性分別可以進行更詳細的編輯: 1)LED的R值(紅色),用RGB表示發,一共有0-254種紅色(數據范圍為0-254),所以,我們用一個字節就可以描述(數據類型為uint8),這個屬性是可以設定也可以讀取的(讀寫類型為可寫),由于沒有負數,也沒有浮點,MCU可以直接用一個字節描述這個屬性,所以不需要做修正,所以分辨率為1,增量為0; 2)LED的G值定義同上; 3)環境屬性,我們定義溫度范圍為0-50度,用一個字節可以表示(數據類型是數據,uint8),這個屬性僅能讀取,不能設置(讀寫屬性是只讀),同樣不需要修正(k=1,m=0); 4)紅外探測屬性,可以探測是否有阻擋(是一個布爾類型),僅能讀取(讀寫類型為只讀); 5)電機轉速我們定義范圍0-1000,0表示停止,用兩個字節描述,不用修正; 1.6.生成MCU協議數據點保存后,會生成如下的MCU協議,協議在下文有詳細解釋: FF FF 00 05 01 01 00 00 07 FF FF 00 47 02 01 00 00 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 31 64 36 39 61 66 35 39 65 33 38 63 37 31 31 65 34 61 32 39 64 35 32 35 34 30 30 35 32 38 37 36 64 01 2C CA FF FF 00 06 03 02 00 00 02 0d FF FF 00 10 04 02 00 00 03 55 aa bb cc 80 00 80 23 00 00 42 FF FF 00 0d 03 04 00 00 01 02 00 CC 00 00 00 00 e3 FF FF 00 05 04 04 00 00 0d FF FF 00 0d 03 05 00 00 01 04 00 00 BB 00 00 00 d5 FF FF 00 05 04 05 00 00 0e FF FF 00 0d 03 07 00 00 01 10 00 00 00 00 e0 00 08 FF FF 00 05 04 07 00 00 10 FF FF 00 10 05 01 00 00 04 55 aa bb cc 80 00 80 23 01 03 c7 FF FF 00 05 06 01 00 00 0c 1.7.生成虛擬設備產品屬性(數據點)定義好以后,就會自動生成虛擬設備,即使沒有GoKit開發板,您也可以使用虛擬設備進行調試,虛擬設備的使用,可以參考文檔中心的快速開始; 虛擬設備操作頁面如下圖所示: 1.8.GoKit工程與調試到此,可以進行代碼開發了,在后期,我們會提供根據產品定義自動生成的代碼片段,您可以創建一個標準的MCU工程,在您的工程中添加我們為您的產品生成的代碼片段,這部分代碼片段,完成了協議的解析,命令的組包,校驗和的計算等各種問題,您只需要傳入屬性值就可以輸出完成的狀態包,您收到命令后,可以方便的進行命令拆分;具體的試用方法,參見代碼片段中的注釋說明。 通過這些協議,可以方便的管理GoKit上的各個硬件,只需要在MCU中對響應IO口進行操作即可。 1.9.協議細節1.9.1.WIFI模塊獲取MCU基本信息完整協議包: FF FF 00 05 01 01 00 00 07 拆分: FF FF 包頭 00 05 長度,表示后面還有5個字節 01 wifi要獲取mcu基本信息的命令 01 序列號 00 00 標志位,保持0即可 07 校驗值,從長度到校驗和前的字節相加值 MCU給WIFI模塊返回基本信息: 完整協議包:FF FF 00 47 02 01 00 00 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 31 64 36 39 61 66 35 39 65 33 38 63 37 31 31 65 34 61 32 39 64 35 32 35 34 30 30 35 32 38 37 36 64 01 2C CA 拆分: FF FF 包頭 00 47 長度,表示后面有71個字節(47為16進制) 01 mcu給wifi返回基本信息的命令 01 序列號,需要和上述wifi的查詢包中的sn相同 00 00 標志位,保持0即可 30 30 30 30 30 30 30 34 機智云協議版本號 30 30 30 30 30 30 30 32 P0協議版本號 30 30 30 30 30 30 30 31 MCU硬件版本號 30 30 30 30 30 30 30 31 MCU軟件版本號 64 36 39 61 66 35 39 65 33 38 63 37 31 31 65 34 61 32 39 64 35 32 35 34 30 30 35 32 38 37 36 64 產品的product_key 01 2C 綁定超時時間 CA 校驗值,從長度到校驗和前的字節相加值 1.9.2.WIFI讀取MCU屬性完整的協議包:FF FF 00 06 03 02 00 00 02 0d 拆分: FF FF 包頭 00 06 長度,后面有6個字節 03 wifi向mcu發送數據的命令 02 序列號 00 00 標志位,保持0即可 02 查詢狀態命令 0d 校驗值,從長度到校驗和前的字節相加值 MCU返回當前屬性值 完整的協議包:FF FF 00 10 04 02 00 00 03 55 aa 80 00 01 23 BC 拆分: FF FF 包頭 00 10 長度,后面有16個字節 04 mcu向wifi發送數據的命令 02 序列號 00 00 標志位,保持0即可 03 mcu響應wifi的查詢狀態命令 55 LED的R值 aa LED的G值 80 00 電機轉速 01 紅外探測結果(最低位一位表示紅外探測結果,0:探測無,1:探測有) 23 溫度值 BC 校驗值,從長度到校驗和前的字節相加值 1.9.3.設定LED的R值完整的協議包:FF FF 00 0d 03 04 00 00 01 01 CC AA 00 00 00 00 8C 拆分: FF FF 包頭 00 0d 長度 03 wifi向mcu發送數據的命令 04 序號 00 00 標志位,保持0即可 01 控制類命令 01 控制屬性標志組合,01表示第一個屬性值有效 CC AA 00 00 00 00 屬性數據 8C 校驗值,從長度到校驗和前的字節相加值 說明: 1)wifi給mcu發送控制指令時,會含有mcu所有的屬性信息,這個屬性信息和mcu給wifi上報的屬性信息格式以及順序完全相同(在定義產品的時候就確定了),wifi可以根據需要設定控制屬性標志組合,用位表示,最右為第0位,最左為最高位,屬性順序和位順序對應,將想控制的屬性對應的位置1,表示要控制該屬性; 2)本產品中,可以控制的屬性依次有:LED R值、LED G值、電機轉速三個屬性; 3)可以單獨控制一個屬性,比如單獨設定LED R值,此時為0x01, 用位描述是0000 0001; 4)也可以一次控制多個屬性,比如同事設定LED R值和G值,此時為03,用位描述是0000 0011; 5)或者同時設定LED R值、G值以及電機轉速,此時為0x07,用位描述是0000 0111; 6)此字段的長度根據定義產品時的可寫屬性個數自動確定,本產品共有3個可寫屬性,一個字節即可表示,若定義9個可寫屬性,則自動用2個字節表示,依次類推; MCU收到控制命令后的響應 完整的數據包:FF FF 00 05 04 04 00 00 0d 拆分: FF FF 包頭 00 05 長度 04 mcu響應wifi的命令 04 序號,與wifi發出的數據包中的sn相同 00 00 標志位,保持0即可 0d 校驗碼 1.9.4.設定LED的G值完整的協議包:FF FF 00 0d 03 04 00 00 01 02 CC AA 00 00 00 00 8C 拆分: FF FF 包頭 00 0d 長度 03 wifi向mcu發送數據的命令 04 序號 00 00 標志位,保持0即可 01 控制類命令 02 控制屬性標志組合,02表示第二個屬性值有效 CC AA 00 00 00 00 屬性數據 8D 校驗值,從長度到校驗和前的字節相加值 MCU收到控制命令后的響應 同上 1.9.5.設定電機轉速完整的協議包:FF FF 00 0d 03 04 00 00 01 03 00 00 00 10 00 00 28 拆分: FF FF 包頭 00 0d 長度 03 wifi向mcu發送數據的命令 04 序號 00 00 標志位,保持0即可 01 控制類命令 03 控制屬性標志組合,03表示第三個屬性值有效 00 00 01 00 00 00 屬性數據 28 校驗值,從長度到校驗和前的字節相加值 MCU收到控制命令后的響應 同上 1.9.6.MCU主動上報狀態完整的協議包:FF FF 00 10 05 01 00 00 04 AA BB 00 01 01 23 A4 拆分: FF FF 包頭 00 0C 長度 05 mcu主動給wifi發送數據的命令 01 序號 00 00 標志位,保持0即可 04 mcu上報狀態 AA BB 00 01 01 23 完整的屬性數據 A4 校驗值,從長度到校驗和前的字節相加值 WIFI收到后的響應 完整的協議包:FF FF 00 05 06 01 00 00 0c 拆分: FF FF 包頭 00 05 長度 06 wifi響應mcu的數據命令 01 序號,和mcu發出的數據包中sn相同 00 00 標志位,保持0即可 0c 校驗碼 2.以GoKit為例,開發新產品如果您想做自己的更復雜的產品,可以仿照小狗寵物屋的方法,先確定產品功能,再依靠某個模板建立數據模型,然后用虛擬設備或者實體設備進行調試,協議和寵物屋類似;只要您定義清楚了設備,就自動生成了虛擬設備和測試APP,并且可以連接M2M平臺進行調試;當然如果您有硬件并且試用了我們Gagent模塊,馬上就可以用SDK以及demo App進行實體設備的配置、發現、大小循環控制。
|