前言安信可 A9/A9G GPRS(GPS) 模塊因為有GPRS,相比WIFI,它可以隨時隨地聯網,實現24小時穩定在線,不受地理位置限制,而且提供基站定位和GPS定位功能。提供AT固件使用起來也非常簡單,幾條命令就快速配置成功。
另外,AT指令固件集成了機智云接入協議,使用簡單的幾條命令就可以快速接入機智云,從而在非常短的時間內實現M2M應用。
因此這里介紹如何使用A9/A9G模塊快速建立一個簡單的M2M應用。
目標- A9/A9G內部集成了一個應用A9Tracker(定位器),實現手機遠程查看定位器實時位置以及電子圍欄功能,具體使用方法及效果可以看這里(A9/A9G GPRS模塊內部集成應用A9Tracker使用方法)
- 使用串口助手操作A9/A9G模塊,實現模塊接入機智云,實現模塊推送消息到手機、手機發送控制數據到模塊
準備- 一個A9 或者 A9G模塊(建議買A9 pudding開發板,方便開發),可在淘寶購買

A9G

A9

A9/A9G pudding開發板(鏈接稍后放出)
- 流量卡或者電話卡,如果不用短信或者電話功能,建議購買物聯網卡,不需要實名更方便,點擊圖片可以買到

物聯網卡
- USB轉串口模塊
這個開發者一般都有,如果沒有也需要購買,建議使用cilicon CP210x芯片的cp2102 usb轉串口模塊,供電能力比CH34和pl2303好很多。安信可也配套推出了最新的串口模塊,包含了3.3V 4.2V 5V 三種供電電壓,支持硬件流控,使用CP210x芯片,供電能力更好。

USB轉串口模塊
- 電源
可以使用鋰電池(3.7~4.2V)供電,也可以使用USB供電,但是要保證USB能提供足夠的電流(建議峰值>600mA),串口供電也可以,同樣保證峰值電流夠大,有些串口芯片供電能力不足
開發過程- 保證AT固件是最新固件,不是則需要到安信可官網下載并升級固件
使用ATI\r\n查詢固件信息,與最新固件版本對比
固件升級指南
固件發布頁面 - 申請機智云賬號

注冊登錄機智云
- 點擊創建新產品,選擇移動網絡,數據傳輸方式使用定長或者變長,定長就是每次上傳數據需要把所有的數據點上傳,變長就是可以一次只上傳部分數據點,數據量大或者通訊頻繁為了節約流量可以選變長,數據量不大可以選定長,如果你是第一次使用機智云,建議按照我的步驟來,會了之后自己探索。這里 選擇了變長!

產品

產品創建

創建數據點

數據點

應用數據點
- 復制PK和PS

基本信息 - 連接硬件到電腦
注意要保證足夠的供電能力,或者使用鋰電池在VBAT端進行供電也可以

硬件連接 - 下載并打開串口助手
使用安信可串口助手,下載
或者使用其它串口助手都可以,我這里使用的開源的串口助手COMTool(代碼不到1000行哦),下載,版本列表 - 連接A9/A9G模塊,上電等待串口助手顯示READY字樣后,發送AT(回車結尾,即AT\r\n)測試連接以及模塊是否正常工作(可以多發幾次)注意每一個AT命令都是以\r\n(即windows下的換行符)結尾,后面所有命令默認都以\r\n結尾
ATOK

READY AT
- 查詢IMEI是否正確AT+EGMR=2,7,如果不正確,看模塊屏蔽罩上的IMEI,使用AT+EGMR=1,7,"..."寫入

IMEI - 使用AT+GIZSTART=[PK],[PS]注冊登錄模塊到剛剛建立的產品,使用AT+GIZSTOP注銷登錄
!這里值得注意的是:
第一次注冊時這個命令的參數PK、PS是必須的,如果注冊過一次后,后面登錄無需再使用PK和PS參數,直接使用AT+GIZSTART即可登錄。
如果帶參數,模塊則會重新注冊一遍,模塊重新注冊會導致手機App用戶綁定的這個模塊自動解綁!使用時請注意

注冊模塊到機智云產品
這個時候在機智云后臺會看到設備已經在線,點擊查看可以看到更多設備信息

設備在線

上下線信息
- 設備推送消息
使用AT+GIZSEND=<action>,[length],[data]推送數據到云端(/手機客戶端)
這里action代表數據的含義,如下表:
定長產品:
[td]命令 | 數值(十六進制) | 數值(十進制) | 含義 |
|
|
| ACTION_CONTROL | 0x01 | 1 | App控制命令,設備收到手需要根據數據改變狀態,然后上報狀態 | ACTION_READ_STATUS | 0x02 | 2 | App讀取狀態,設備收到后上報狀態 | ACTION_READ_STATUS_ACK | 0x03 | 3 | App讀取狀態后,設備返回狀態 | ACTION_REPORT_STATUS | 0x04 | 4 | 設備主動上報狀態 | ACTION_TRANS_RECV | 0x05 | 5 | 接收到MQTT原始數據 | ACTION_TRANS_SEND | 0x06 | 6 | MQTT原始數據發送 | ACTION_PUSH_OTA | 0xfe | 254 | OTA | 變長產品:
[td]命令 | 數值(十六進制) | 數值(十進制) | 含義 |
|
|
| ACTION_CONTROL | 0x11 | 17 | App控制命令,設備收到手需要根據數據改變狀態,然后上報狀態 | ACTION_READ_STATUS | 0x12 | 18 | App讀取狀態,設備收到后上報狀態 | ACTION_READ_STATUS_ACK | 0x13 | 19 | App讀取狀態后,設備返回狀態 | ACTION_REPORT_STATUS | 0x14 | 20 | 設備主動上報狀態 | ACTION_TRANS_RECV | 0x15 | 21 | 接收到MQTT原始數據 | ACTION_TRANS_SEND | 0x16 | 22 | MQTT原始數據發送 | ACTION_PUSH_OTA | 0xfe | 254 | OTA | 發送數據的方式有三種格式,類似AT+CIPSEND,如下圖,更詳細說明見AT指令文檔

設備推送數據
在后臺可以看到數據已經成功推送

后臺數據記錄
上面的數據推送是隨便推送的,在這里沒有任何含義!
那么如何推送數據點呢,我們創建了一個數據點,且因為是變長產品,根據協議(最后會詳細說明,這里可以先不深入探究),我們需要發送兩個字節的數據,報告燈為開:0x0101,報告燈為關:0x0100;因為是設備主動報告數據而且產品是變長,action為20:

上傳數據點
在后臺可以看到,推送數據點成功

后臺數據
- 下載機智云App (支持二次開發),在手機應用商店搜索機智云下載安裝

機智云App
- 生成設備二維碼
按照機智云官方文檔教程生成這個設備的二維碼,機智云App二維碼生成教程 - App掃描二維碼添加設備

掃描二維碼

已綁定設備
- 查看設備狀態及控制設備
點擊已綁定的設備,進入設備頁面,設備會收到客戶端進入設備頁面的查詢設備狀態的消息

設備頁面

設備收到消息(這里收到ACTION為18的數據即讀取命令,數據內容沒顯示是因為是非ASCII碼)
點擊控制開關,設備會收到控制命令

點擊App中的開關,發送控制命令

設備收到控制命令(這里收到ACTION為17的數據即控制命令,數據內容沒顯示是因為是非ASCII碼)
如果設備推送設備狀態(定長ACTION為4,變長ACTION為20)或者響應App的查詢命令推送狀態(定長ACTION為3,變長ACTION為19),App界面也會實時更新狀態

設備推送數據
在App可以看到數據發生了變化

App燈從關變成了開狀態
在后臺也可以看到數據內容

后臺數據內容
關于機智云的定長數據和變長數據定長定長就是每次傳輸都傳輸所有數據點的信息(相對簡單,如果編程經驗比較少,或者數據量不大或者通信頻率不高建議直接選擇這種方式),比如建了2個數據點,長度分別為4個字節,則每次推送都要推送兩個數據點的數據即8個字節,如圖:

定長傳輸
變長變長相對來說復雜一些!
在推送數據時,由于數據時變長的,服務器需要知道硬件上傳的是哪些數據點的數據,所以需要有標志位來表示傳輸的是哪些數據點,所以在數據的開頭會有數據點標志位,每位代表一個數據點(位數不足8位高位補0補足8位,即傳輸的單位是字節)。舉個例子:
創建了一個數據點,數據點類型為bool類型(1位),則傳輸數據應該為:
0x0100(False) 或者 0x0101(True)
創建了兩個數據點,數據點類型為bool類型,
當只傳輸第一個數據點:
0x0100(False) 或者 0x0101(True)
當只傳輸第二個數據點:
0x0200(False) 或者 0x0201(True)
當傳輸兩個數據點:
0x0300(False False) 或者 0x0301(False True)或者0x0302(True False)或者0x0303(True True)
同理,三個數據點標志位占3位,比如同時傳輸三個數據點數據,且三個數據點的數據都為1,數據為:0x0707
如果數據點不是bool類型,比如有一個bool 類型和一個2個字節的數據

兩個數據
可以使用虛擬設備可以方便地進行調試,:

虛擬設備
實際發送的數據為:

后臺數
|