開發與維運

2個串口指令完成硬件設備的接入和數據上報到阿里雲IoT–米芯信息阿里雲IoT直連模塊介紹

上一篇我簡要的介紹如何使用米芯智能模塊(阿里雲IoT直連模塊)快速開發智能電風扇(原文點這裡)。在社區發表後收到了不少熱心的開發者前來切磋交流。討論比較多的是電控板MCU與模塊對接相關話題。為此我新開篇詳細展開一下內容,老規矩仍舊以電風扇作為例子。

**注意:
因本文內容涉及技術細節,需讀者要有一定的技術功底閱讀內容。

讀完本文內容可能需要您花費1-2個小時以上時間。**

1. 快速開始

請提前整備如下物料,後面需要用到。

1.1 物料清單

名稱 數量 備註
帶TTL串口的電風扇電控板 1 開發者自備
米芯智能模塊樣品小板 1 點擊購買
串口協議文檔 1 向作者索取
USB轉TTL串口工具 1 開發者可以用自己熟悉的串口工具
配網二維碼 1 向作者索取
APP控制面板二維碼 1 向作者索取
安卓智能手機 1 開發者自備
天貓精靈APP 1 開發者自備

1.2 電腦串口與樣品小板電纜連接

請注意,電纜連接前確認USB轉TTL串口工具電平設置與樣品小板上的標識的電壓一致。目前小板有3.3V和5V兩種電壓。

USB轉TTL串口工具實物參考:

566450304.jpg

請使用電纜將電風扇電控板的TX、RX、GND 與 USB轉TTL串口工具上的 TX、RX、GND 接上。

1044221127.jpg

USB轉TTL串口工具沒有特殊要求,使用前先確保串口工具是正常可用的且串口電平插針所插位置的電壓值與樣品小板電壓一致。

請使用外部穩壓電源輸出連接到小板電源插針上(電壓值以小板上的電壓標識為準),請勿使用串口工具上的電源輸出。使用串口工具上的電源可能會導致模塊無法啟動。

1.3 安裝串口調試軟件

請在您開發使用的電腦上安裝串口調試軟件。

20200407154006.jpg

串口軟件無特殊要求,能接收、發送十六進制內容即可。

1.4 使用串口調試軟件調試樣品小板

請參考如下步驟:

  1. 完成前3個步驟後,請在串口調試軟件上“打開”串口端口號(譬如:COM9) 。
  2. 正常情況下串口調試軟件上的“接收區域” 可以看到 十六進制的內容打印出來,每隔3秒打印一次。這是模塊發送的心跳數據包。
  3. “接收區域”能看到心跳包說明模塊已經正常運行。
  4. 請試著在 “發送區域” 輸入“串口協議文檔”裡面的基礎指令,點擊發送。一般情況下模塊會迴應指令, 在 “接收區域”看到模塊回覆的十六進制值。
  5. 重複4這個過程,可以觀察發送和接收的數據。

1.5 在電風扇控制板MCU上實現接口程序

請您在控制板MCU上根據 “串口協議文檔” 裡面的指令要求實現相應的程序接口。

實踐建議:

  1. 指令的格式是固定的。因此建議使用包裝函數來解析、格式化指令輸出和接收;
  2. 控制板MCU發送指令的間隔建議大於100ms;過密集的指令發送會導致模塊和網絡不穩定;
  3. 指令碼存在粘包的情況(即兩條以上指令頭尾連接),請循環解析指令碼;
  4. 在控制板MCU接口程序開發過程中可以使用串口調試軟件調試輸入輸出;
  5. 配網鍵建議使用已有的一個物理按鍵,譬如:長按設置鍵,進入配網

1.6 樣品小板與電風扇控制板電纜連接

完成前5個步驟後,說明軟件對接已經可以了。請使用電纜將樣品小板和控制板兩者的VCC、GND、TX、RX連接起來,加電開機觀察。

實物參考:

945978797.jpg

請注意,電纜連接前確認TTL串口電平與模塊上的標識的電壓一致。目前小板有3.3V和5V兩種電壓。

1.7 天貓精靈APP配網、測試

加電開機情況下,請按“配網鍵”(一般有燈光和聲音提示)模塊進入配網狀態。

請使用一個已經安裝天貓精靈APP的手機。(請到各大手機應用市場下載:天貓精靈app)

打開天貓精靈APP,掃描“配網二維碼”

點擊 “我的" ->"連接設備":

417336062.jpg

右上角,點擊 “掃描ICON" :

273112241.jpg

掃描 “配網二維碼”,填入 WIFI的連接密碼,點擊“下一步”。

1227599502.jpg

選中 “確認以上操作”, 點擊 “開始連接”

598851068.jpg

連接成功後,我的 -> 智能設備 這裡看到設備

888339501.jpg

在開發模式下,點擊 智能設備 圖標,進去後不會顯示 控制面板,請掃描 “控制面板二維碼” 進行操作測試。

2 米芯通訊協議

米芯通訊協議 是一種簡化的串口通訊協議。旨在設備控制板(MCU)可以方便的接入阿里雲AIoT。

設備開發者請參考米芯通訊協議完成設備端MCU程序的對接開發。

  1. 請確保模塊已正確的燒錄了 米芯固件 ;
  2. 模塊 加電能正常運行。 用戶串口收到心跳包 55 AA 00 00 00 00 FF
  3. 初次對接協議,建議安裝米芯工具方便調試。

2.1 串口參數約定

波特率: 9600

數據位: 8

奇偶校驗: 無

停止位: 1

數據流控: 無

2.2 數據類型

hex 類型 長度(byte) 說明
0x00 bool 1 0或1
0x01 int8 1 -128~127
0x02 enum 1 最多定義100個
0x02 uint8 1 0-255
0x05 int 4 32位整型
0x09 float 4
0x0a double 8
0x0b text N 字符串
0x0c date 8 String類型的UTC時間戳,單位:毫秒

2.3 幀格式說明

Head Ver Cmd Payload_len Payload Checksum
2 byte 1 byte 1 byte 2 byte N byte 1 byte
字段 名稱 長度(byte) 說明
Head 幀頭 2 固定為0x55 0xAA
Ver 版本 1
Cmd 命令字 1 具體幀類型
Payload_len 數據長度 2 大端
Payload 數據 xxxx 詳見指令收發表
Checksum 校驗和 1 從幀頭開始按字節求和得出的結果,取低字節

數據傳輸統一使用大端(即高字節在前,低字節在後)字節序。

計算校驗和參考代碼:

uint8_t check_sum(uint8_t *pack, uint16_t pack_len)
{
    uint16_t i;
    uint8_t csum = 0;

    for (i = 0; i < pack_len; i++)
    {
        csum += *pack++;
    }

    return csum;
}

2.4 基礎指令一覽

功能名稱 幀頭 版本 命令字 數據長度 數據 校驗和
*心跳檢測 模塊發送 0x55aa 0x00 0x00 0x0000 - 0xff
MCU上報 0x55aa 0x01 0x00 0x0001 0x00(mcu加電第一次)
0x01(其它)
xx
關閉心跳 MCU上報 0x55aa 0x01 0x25 0x0000 - xx
模塊發送 0x55aa 0x00 0x25 0x0000 - xx
獲取模塊mac地址 MCU上報 0x55aa 0x01 0x2d 0x0000 - xx
模塊發送 0x55aa 0x00 0x2d 0x0006 如: 0xA4CF12BFA186 xx
剩餘內存(heep) MCU上報 0x55aa 0x01 0x0f 0x0000 - xx
模塊發送 0x55aa 0x00 0x0f 0x0004 如: 0x00003E00 xx
當前WiFi信號強度(RSSI) MCU上報 0x55aa 0x01 0x24 0x0000 - xx
模塊發送 0x55aa 0x00 0x24 0x0004 如: 0xFFFFFFB7 xx
獲取時間戳(秒) MCU上報 0x55aa 0x01 0x0c 0x0000 - xx
模塊發送 0x55aa 0x00 0x0c 0x0004 如: 0x5E4A6366 xx
*WiFi工作狀態 模塊發送 0x55aa 0x00 0x03 0x0001 參考 4.2 xx
MCU上報 0x55aa 0x01 0x03 0x0000 - xx
*重置配網 MCU發送 0x55aa 0x01 0x04 0x0000 - xx
模塊上報 0x55aa 0x00 0x04 0x0000 - xx
WiFi
配網方式
MCU上報 0x55aa 0x01 0x05 0x0001 0x00 (smartconfig模式)
0x01 (Ap模式)
xx
模塊發送 0x55aa 0x00 0x05 0x0000 - xx
*MCU狀態查詢 模塊發送 0x55aa 0x00 0x08 0x0000 - xx
MCU上報 0x55aa 0x01 0x07 N 上報所有的功能狀態 xx
WiFi功能產測 MCU上報 0x55aa 0x01 0x0e 0x0000 - xx
模塊發送 0x55aa 0x00 0x0e 0x0002 參考4.7 xx
*產品功能 模塊發送 0x55aa 0x00 0x06 N 參考 "產品功能定義" xx
MCU上報 0x55aa 0x01 0x07 N 參考 "產品功能定義" xx
*產品事件 MCU上報 0x55aa 0x01 0xA7 N 參考 "產品事件定義" xx

2.5 心跳檢測

  • 模塊 上電後,串口不間斷髮送心跳。若未收到回覆,則保持3S心跳發送,若收到回覆,心跳間隔變為15s;
  • 外部MCU也可依據心跳定期檢測 模塊 是否正常工作。

2.6 關閉心跳

調試時可以臨時關閉心跳檢測

  • 退出本指令,請上電重啟模塊。

2.7獲取模塊mac地址

獲取模塊mac地址值。如: A4-CF-12-BF-A1-86

2.8 剩餘內存(heep)

heep值的大小關係到 模塊 的正常運行。heep不足是會導致 模塊 reboot 。

  • heep 值單位為字節。
  • 值為int類型,如:0x00003E30 即 ‭15920‬ 字節

2.9 聯網狀態

  • 模塊 聯網WiFi指示狀態參考:

    • 0x00:smartconfig配網方式 (燈快閃);
    • 0x01:AP配網方式 (燈慢閃);
    • 0x02:WiFi配置成功但未連上路由 (燈熄滅);
    • 0x04:已連上路由 器且連接到雲端 (燈長亮);
  • 當 模塊 檢測到 MCU 重啟或 MCU 斷線再上線的過程,則主動下發 WiFi 狀態至 MCU。
  • 當 模塊 的 WiFi 狀態發生變化,則主動下發 WiFi 狀態至 MCU。
聯網狀態 描述 狀態值
狀態1 smartconfig 配置狀態 0x00
狀態2 AP 配置狀態 0x01
狀態3 WiFi 已配置但未連上路由器 0x02
狀態4 WiFi 已配置且連上路由器 0x03
狀態5 已連上路由器且連接到雲端 0x04
狀態6 WiFi 設備處於低功耗模式 0x05

2.10 重置配網

模塊 進入配網使能狀態。一般在設備上設置一個配網按鈕,譬如:長按設置鍵進入配網。

  • 本指令執行後 模塊 中的WiFi配置會被清除;
  • 執行本指令會軟重啟模塊;

2.11 切換 WiFi 配網方式

smartconfig配網方式和AP配置方式可以相互切換。通過對應協議指令,切換進入該配置狀態。

  • 模塊 已成功聯網的情況下,本指令無效;
  • 模塊 啟動默認是smartconfig配網方式;
  • 阿里雲飛燕平臺部分品類zeroconfig(零配)有效(即支持天貓精靈找隊友配網)。

2.12 WiFi 聯網狀態

模塊已成功聯網的情況下,返回 0x01 ,反之返回 0x00 。

  • 聯網狀態只反應與無線Ap連接狀態,不是雲端的連接狀態;
  • 設備聯網狀態變化會自動發送到設備端。

2.13 當前WiFi信號強度(RSSI)

返回 模塊接收WiFi信號強度。

  • 模塊 已成功聯網的情況下,本指令有效;
  • 信號強度單位 dBm ,一個負數值。
  • 值為int類型,如:0xFFFFFFB3 即 -77 dBm

2.14 獲取Unix時間戳

可實現設備端上時間功能有自動校時等需求。設備端開發者可通過本指令獲取Unix時間戳轉換為本地時間即可。

  • 模塊 已成功聯網的情況下,本指令有效;
  • 時間戳相關知識 點擊這裡
  • 時間戳單位是秒(s);
  • web版的時間戳工具 點擊這裡

2.15 命令下發和狀態上報

針對該產品功能的命令下發和狀態上報協議詳見下方"產品功能部分"指令收發表。

2.16 MCU工作狀態上報條件

  • 08命令字查詢:MCU接收到查詢MCU工作狀態指令後,需要上報所有功能的狀態(開 關,模式等功能);
  • 主動上報:MCU狀態發生變化(非app控制,比如本地控制板按鍵)時,mcu需要主動上報;
  • 定時上報:如有定時功能,MCU需要每分鐘上報倒計時剩餘時間,以分鐘為單位。

2.17 WiFi功能產測

切記,在樣機開發階段務必調試模塊在設備中物理擺放位的信號接收強度。

不合理的擺放位置,會影響WiFi聯網穩定性。

請啟用一個AP作為產測使用,設置AP的SSID: michip_dev_test 密碼:123456789 ,連接成功後,每隔5秒返回信號強度百分比。主要用於產品量產時的WiFi模塊測試。本指令,請等待上電初始化完成,5S以後調用。退出本指令,請上電重啟;

  • 數據長度為2字節:
Data[0] Data[1] Data[1]說明
0x01 0x00-0x64 信號強度: 0x00信號最差,0x64信號最強
0x00 0x00 未掃描到指定的ssid
0x00 0x01 模塊未燒錄祕鑰key

3.0 產品功能指令

功能名稱 功能ID 指令類型 指令長度 指令值 備註
搖頭開關 0x00 0x00 - 0:關閉 1:開啟
風速 0x01 0x02 - 1:低檔 2:中檔 3:高檔
工作模式 0x02 0x02 - 1:正常風 2:自然風 3:睡眠風 4:靜音風
電源開關 0x03 0x00 - 0:關閉 1:開啟

3.1 產品事件指令

3.1.1 故障上報

  • 事件ID:0x00
  • 事件類型:info
參數名稱 參數類型 參數長度 參數值 備註
故障代碼 enum - 0:恢復正常

4.0 結尾總結

直連阿里雲IoT固件模塊及串口協議在不斷的迭代更新中。希望通過本文的介紹能給您帶來更多的啟發,也歡迎各位同仁相互拋磚引玉共同學習進步。

因篇幅及文筆水平有限,本文的文字和圖片可能存在錯誤之處還請讀者多包涵。
歡迎一起探討學習;

481682353 (2).jpg

Leave a Reply

Your email address will not be published. Required fields are marked *