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