查看: 1469|回复: 0

【NB-IoT模组EC系列AT指令】连接TCP服务器,实现远程收发数据

[复制链接]
  • TA的每日心情
    开心
    2022-5-31 10:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2022-8-1 11:50:24 | 显示全部楼层 |阅读模式
    分享到:
    【安信可NB-IoT模组EC系列AT指令应用笔记①】连接TCP服务器,实现远程收发数据
    一、前期准备
    1.硬件准备
    本文选用的测试硬件有:
    EC-01-Kit 开发板 x1出厂固件(AT固件),接入天线
    物联网卡 x1
    Micro-USB数据线 x1
    2.TCP服务器
         因为EC系列属于NB-IoT,无法像ESP8266ESP32WiFi模组一样可以使用局域网,因此本文就要使用远程云TCP服务器进行测试,我们的 “安信可透传云” 正适合,安信可透传云链接地址:http://tt.ai-thinker.com:8000/ttcloud
    1.png
    二、连接网络
    一切准备就绪,将SIM(物联网卡)插进开发板,接上天线,即可开始测试。
    1.查看SIM卡是否正常
    AT指令:
    AT+ECICCID\r\n:查看SIM ID
    返回:
    成功:+ECICCID: xxxxxxxxxxxx(SIMID)        失败:+CME:ERROR:<err>
    查询成功示例:
    2.png

    2.附着网络
    在附着网络之前,需要满足以下条件:
    物联网卡有流量余额
    天线为NB-IoT天线
    能够查询到SIM卡的ID
    条件都满足之后使用AT指令:
    AT指令:
    AT+CGATT=<state>
    返回:
    成功:OK        失败:+CME:ERROR:<err>
    参数
    state= 1:附着       0:去附着(取消附着)
    附着成功示例:
    3.png
    3.注册APNID
        网络附着成功之后,其实就具备了上网的条件,证明SIM卡可以正常接入网络,此时还需要再设置一个重要参数——APNID,就可以上网了。
    AT指令:
    AT+CGDCONT=<cid>,<PDP_tyoe>,<APN>,…    (这个指令参数太多,一般只用前三个参数即可)
    返回:
    成功:OK        失败:+CME ERROR: <err>
    参数:
    cid0~10,一般用1,指向特定的PDP上下文索引
    PDP_typeIPIPV6IPV4V6Non-IP,通常使用 IP
    APN:用来选择GGSN或外部数据包数据网络的逻辑名,常用 CMNET
    注意
    这个指令需要先附着网络
    注册成功示例:
    4.png
    4.激活网络
    成功注册之后,可以直接激活网络,正式连接互联网。
    AT指令:
    AT+CGACT=<state>
    返回:
    成功:OK        失败:+CME:ERROR:<err>
    参数
    state1:激活       0:去激活(取消激活)
    同样的,网络的激活需要组测APNID成功后才可行。
    激活成功示例:
    5.png
    5.测试网络连接情况
         网络激活成功之后,可以使用ping 来测试网络是否正常。
    AT指令:
    AT+ECPING=<ipaddr/Url>/<mode>[,<count>,…   这个指令同样也有很多参数,我们只用前两个
    返回:
    成功:OK       失败:+SOCKET ERROR: <err>
    参数
    ipaddr/Url/modeIP地址或者url,当为0时则是停止PING
    countPING的次数,默认为 4
    测试成功示例:
    6.png
    三、连接TCP服务器
         连接服务器需要确保EC能够上网,就是可以PING远程URL无丢包。
    1.创建socketTCP协议
    AT指令:
    AT+SKTCREATE=<domain>,<type>,<protocol>
    返回:
    正确:+SKTCREATE: <fd> \n OK       失败:+SOCKET ERROR: <err>
    参数:
    domain1IPV4        2IPV6
    type1TCP方式        2UDP方式
    protocol6IPPROTO_TCP TCP协议定义       17IPPROTO_UDP UDP协议定义
    创建成功示例:
    7.png
    2.发起连接
        成功配置好socket TCP客户端之后,就可以发起连接,这时候就需要用到TCP服务器了,在发起连接之前,需要刷新一下 “安信可透传云”,因为这个端口服务器3分钟内无连接的话会自动关闭。
    AT指令
    AT+SKTCONNECT=<fd>,<addr>,<port>
    返回:
    成功:OK        失败:+SOCKET ERROR: <err>
    参数
    fd: 创建socket 时返回的fd
    addr: 服务器的ip地址,字符串类型
    port: 服务器的端口号,长整型
    成功连接示例:
    8.png
    3. 接收数据
         当成功连接服务器之后,EC会自动检测服务器下发的数据,当有数据来临,会以16进制的格式实时打印到串口:
    9.png
    4.发送数据
         TCP数据的发送也是以十六进制的方式进行发送,比如发送"3456",对应的16进制则是:33343536
    AT指令:
    AT+SKTSEND=<fd>,<datalen>,<data>,…   这个指令也有比较多的参数,常用的是前三个。
    返回:
    成功:OK       失败:+SOCKET ERROR: <err>
    参数:
    fdsocket描述符,创建socket时的返回值 fd
    datalen: 需要发送数据的长度
    data: 需要发送的数据,十六进制字符表示
    发送成功示例:
    10.png
    四、常见问题
    1. 附着网络时:+CME ERROR: 308
         308为终端错误码,导致错误的原因主要有以下几点:
    物联网卡没流量;
    SIM卡没插好,建议先查询SIMID
    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
    这是因为端口错误造成的,刷新一下服务器重新设置端口号即可。

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 15:30 , Processed in 0.129575 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.