LiteOS学习笔记-3通信模组之AT指令

  • 一、实验环境
  • 二、ESP8266常用基础指令
  • 三、基于 TCP 协议连接远程服务器通信
  • 1.配置WIFI模式
  • 2.连接路由加入WIFI网络
  • 3.查询模组的IP
  • 4.与TCP服务器通信
  • 5.模组主动发送消息
  • 6.模组接收消息
  • 7.关闭连接
  • 四、NB-IoT基于 UDP 协议连接远程服务器通信
  • 1.禁用IoT平台的注册功能
  • 2.搭建远程UDP服务器


一、实验环境

硬件
任一最小系统开发板
ESP8266通信模组:波特率:115200
NB-IoT通信模组(BC35-G)波特率:9600

软件
串口助手:用来发送AT指令
网络助手:用来查看通信内容
AT指令集:模组厂商提供的详细AT指令用法,使用时查阅
切换开关
将开发板右上角的开关拨到AT-PC一端,则模组直接与PC相连,方便调试。

二、ESP8266常用基础指令

AT
指令:AT
功能:测试AT指令功能是否正常

AT

OK

AT+GMR
指令:AT+GMR
功能:查询模组固件版本信息

AT+GMR

AT version:1.1.0.0(May 11 2016 18:09:56)
SDK version:1.5.4(baaeaebb)
compile time:May 20 2016 15:08:19
OK

AT+RST
指令:AT+RST
功能:软复位模组

AT+RST

OK
WIFI DISCONNECT

 ets Jan  8 2013,rst cause:1, boot mode:(3,7)

load 0x40100000, len 27728, room 16 
tail 0
chksum 0x2a
load 0x3ffe8000, len 2124, room 8 
tail 4
chksum 0x07
load 0x3ffe8850, len 9276, room 4 
tail 8
chksum 0xba
csum 0xba
��n�l��L�
ready
WIFI CONNECTED
WIFI GOT IP

NB-IOT指令用到时再查指令文档。

三、基于 TCP 协议连接远程服务器通信

1.配置WIFI模式

使用下面的命令设置模组的工作模式为 softAP 与 Station 模式共存:

AT+CWMODE=3

softAP模式下,ESP8266模组自身作为一个WIFI热点,允许其他设备连接此热点;Station模式下,ESP8266模组作为一个设备去连接其他的WIFI热点。

2.连接路由加入WIFI网络

使用下面的命令将模组连接到一个可以上网的无线路由器上,或者可以正常上网的手机热点也可以,其中SSID是热点名称,password是热点密码:

AT+CWJAP="SSID","password"

eg:

AT+CWJAP="WIFI332211","12345678"

WIFI CONNECTED
WIFI GOT IP

OK

3.查询模组的IP

连接路由器成功之后,使用下面的命令查询模组获取的ip地址,查询出的ip有两种,APIP是模组自身作为热点提供的网关ip,另一个STAIP就是模组连接路由器自动获取到的ip地址:

AT+CIFSR

eg:

AT+CIFSR

+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,""
+CIFSR:STAIP,"192.168.0.127"
+CIFSR:STAMAC,""

OK

4.与TCP服务器通信

首先我们需要搭建一个TCP服务器,有两种方式:

  • 在服务器上使用Python、Java、C#等语言自行编写服务器程序;
  • 在本地PC上使用网络调试助手开启TCP服务器

这里我们使用第二种方式,使用网络调试助手工具开启一个TCP服务器,具体步骤如下:
1)首先保证PC与模组连接到的是同一台路由器,在cmd命令行中使用Ping命令测试网络是否是通的;
2)确保模组与PC之间可以ping通之后,开启TCP服务器;
3)填写TCP服务器的监听端口,范围0-65535,注意避开21(FTP)、22(SSH)、80(HTTP)、431(HTTPS)端口即可
4)关闭Windows Defender 的网络防火墙,否则模组不能访问到PC。
5)查询PC的ip地址
6)使用AT命令连接TCP服务器,其中第一个参数是协议类型,“TCP”则表示使用TCP协议,第二个参数是TCP服务器ip地址,也可以使用域名,最一个参数是TCP服务器开启监听的端口(注意:没有引号):
示例:

AT+CIPSTART="TCP","192.168.0.102",9999

CONNECT

OK

5.模组主动发送消息

使用如下的命令即可向TCP服务器发送消息,首先设置要发送数据的字节数,等待模组返回>后,输入要发送的数据即可,如果发送的数据超过了设置的n个字节,则只发送前n个字节,后面的数据被认为是无效数据,不会发送:

AT+CIPSEND=5

>hello

6.模组接收消息

当模组接收到消息后会打印出接收到的消息。可在串口助手查看。

7.关闭连接

通信完毕之后,可以使用下面的命令关闭TCP连接:

AT+CIPCLOSE

四、NB-IoT基于 UDP 协议连接远程服务器通信

1.禁用IoT平台的注册功能

由于NB-IoT模组可以直接对接IoT平台,所以在单独测试使用UDP连接时,需要在激活网络成功之后,在获取ip地址之前,关闭IoT平台注册功能。
使用如下命令禁止该功能:

AT+QREGSWT=2

2.搭建远程UDP服务器

因为 NB-IoT 模组直接注册的是公网ip地址,所以需要在Linux服务器上运行一个Python编写的UDP测试服务器:
本地PC使用的是局域网,公网不可以直接根据ip地址访问到本PC,需要进行内网穿透,不推荐使用本地PC搭建服务器。
剩余步骤和WIFI下使用ESP8266模组相同,查询相应指令使用即可。