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