一、前期準備 1.硬件準備 本文選用的測試硬件有: EC-01-Kit 開發板 x1:出廠固件(AT固件),接入天線 物聯網卡 x1 Micro-USB數據線 x1 2.TCP服務器 因為EC系列屬于NB-IoT,無法像ESP8266、ESP32等WiFi模組一樣可以使用局域網,因此本文就要使用遠程云TCP服務器進行測試,我們的 “安信可透傳云” 正適合,安信可透傳云鏈接地址:http://tt.ai-thinker.com:8000/ttcloud ![]() 二、連接網絡 一切準備就緒,將SIM卡(物聯網卡)插進開發板,接上天線,即可開始測試。 1.查看SIM卡是否正常 AT指令: AT+ECICCID\r\n:查看SIM ID號 返回: 成功:+ECICCID: xxxxxxxxxxxx(SIM卡ID) 失敗:+CME:ERROR: 查詢成功示例: ![]() 2.附著網絡 在附著網絡之前,需要滿足以下條件: 物聯網卡有流量余額 天線為NB-IoT天線 能夠查詢到SIM卡的ID 條件都滿足之后使用AT指令: AT指令: AT+CGATT= 返回: 成功:OK 失敗:+CME:ERROR: 參數 state= 1:附著 0:去附著(取消附著) 附著成功示例: ![]() 3.注冊APNID 網絡附著成功之后,其實就具備了上網的條件,證明SIM卡可以正常接入網絡,此時還需要再設置一個重要參數——APNID,就可以上網了。 AT指令: AT+CGDCONT= 返回: 成功:OK 失敗:+CME ERROR: 參數: cid:0~10,一般用1,指向特定的PDP上下文索引 PDP_type:IP、IPV6、IPV4V6及Non-IP,通常使用 IP APN:用來選擇GGSN或外部數據包數據網絡的邏輯名,常用 CMNET 注意 這個指令需要先附著網絡 注冊成功示例: ![]() 4.激活網絡 成功注冊之后,可以直接激活網絡,正式連接互聯網。 AT指令: AT+CGACT= 返回: 成功:OK 失敗:+CME:ERROR: 參數 state: 1:激活 0:去激活(取消激活) 同樣的,網絡的激活需要組測APNID成功后才可行。 激活成功示例: ![]() 5.測試網絡連接情況 網絡激活成功之后,可以使用ping 來測試網絡是否正常。 AT指令: AT+ECPING= 返回: 成功:OK 失敗:+SOCKET ERROR: 參數 ipaddr/Url/mode: IP地址或者url,當為0時則是停止PING count: PING的次數,默認為 4 測試成功示例: ![]() 三、連接TCP服務器 連接服務器需要確保EC能夠上網,就是可以PING遠程URL無丟包。 1.創建socket為TCP協議 AT指令: AT+SKTCREATE= 返回: 正確:+SKTCREATE: 參數: domain: 1為IPV4 2為IPV6 type: 1為TCP方式 2為UDP方式 protocol: 6為IPPROTO_TCP TCP協議定義 17為IPPROTO_UDP UDP協議定義 創建成功示例: ![]() 2.發起連接 成功配置好socket TCP客戶端之后,就可以發起連接,這時候就需要用到TCP服務器了,在發起連接之前,需要刷新一下 “安信可透傳云”,因為這個端口服務器3分鐘內無連接的話會自動關閉。 AT指令 AT+SKTCONNECT= 返回: 成功:OK 失敗:+SOCKET ERROR: 參數 fd: 創建socket 時返回的fd addr: 服務器的ip地址,字符串類型 port: 服務器的端口號,長整型 成功連接示例: ![]() 3. 接收數據 當成功連接服務器之后,EC會自動檢測服務器下發的數據,當有數據來臨,會以16進制的格式實時打印到串口: ![]() 4.發送數據 TCP數據的發送也是以十六進制的方式進行發送,比如發送"3456",對應的16進制則是:33343536。 AT指令: AT+SKTSEND= 返回: 成功:OK 失敗:+SOCKET ERROR: 參數: fd: socket描述符,創建socket時的返回值 fd datalen: 需要發送數據的長度 data: 需要發送的數據,十六進制字符表示 發送成功示例: ![]() 四、常見問題 1. 附著網絡時:+CME ERROR: 308 308為終端錯誤碼,導致錯誤的原因主要有以下幾點: 物聯網卡沒流量; SIM卡沒插好,建議先查詢SIM卡ID; SIM卡被綁定,無法使用其他的設備。 2. TCP連接時:+SOCKET ERROR: NO FIND CLIENT 這個是因為沒有創建socket TCP客戶端,需要創建socket 3. TCP連接時:+SKTERR: 0,104 這個錯誤通常伴隨著: +SOCKET ERROR: SOCKET ACCOR ERROR SOCK_EVENT_CONN_ERROR 這是因為端口錯誤造成的,刷新一下服務器重新設置端口號即可。 |