作者:青岛新侨妙妙 | 来源:互联网 | 2023-07-29 09:55
1.环境准备
1.1. 硬件准备
Air724UG官方开发板+一条USB线:
Air724UG/Air723UG 支持多种开发方式,如USB上网、标准AT、 Lua脚本二次开发等。
使用串口AT开发的接法如下:
① 使用USB线连接开发板下方标识UART字样的USB口;
② 将旁边的拨动开关拨到UART1一侧;
③ 按下开机键,直至左下角红色LED亮起;
查看电脑设备管理器,可以看到端口即为连接正常:
使用USB连接PC的接法如下:
① 使用USB线连接开发板上方标识USB字样的USB口;
② 将旁边的拨动开关拨到ON一侧;
③ 按下开机键,直至左下角红色LED亮起;
如果正确安装了驱动,查看电脑设备管理器,则可以看到端口:
还可以使用USB转串口直接连接到开发板的UART1,注意只能连接GND、TXD、RXD,供电还是使用USB供电:
1.2. 软件准备
- QCOM串口助手
- Air724UG模组测试AT命令脚本(Air724UG.ini)
- Windows USB 驱动
1.3. 文档准备
- 上海合宙Luat 模块 Air724开发板 入门指南(1)
- Luat 4G模块AT命令手册V4.1.6.pdf
2. 模组信号查询与网络查询AT指令
AT
指令:AT
功能:测试AT指令功能是否正常
示例:
ATOK
AT+CPIN?
指令:AT+CPIN?
功能:查询SIM卡是否正常,返回ready则表示SIM卡正常
示例,如果SIM卡插入成功,则返回结果为:
AT+CPIN?+CPIN: READYOK
如果未插入SIM卡,则返回结果为:
AT+CPIN?+CME ERROR: 10
AT+CSQ
指令:AT+CSQ
功能:查询模组的信号强度,第一个值为0-31则正常,99为不正常,第二个参数是信道误码率 bit error rate, 只有通话建立后, 才能获知该值。
示例:
AT+CSQ+CSQ: 19,99OK
AT+CREG?
指令:AT+CREG?
功能:查询模组是否注册上GSM网络,+CREG:0,1 表示已注册上本地网,+CREG:0,5表示注册上漫游网。
示例:
AT+CREG?+CREG: 0,1OK
AT+CGREG?
指令:AT+CERGE?
功能:查询模组是否注册上GPRS网络,+CGREG:0,1 表示已注册上本地网,+CGREG:0,5表示注册上漫游网。
示例:
AT+CGREG?+CGREG: 0,1OK
3. 激活移动场景
必须在查询GPRS网络已正常注册网络的情况下进行本节实验!
AT+CIPMUX=0
指令:AT+CIPMUX=0
功能:设置为单路连接
示例:
AT+CIPMUX=0OK
AT+CIPMODE=0
指令:AT+CIPMUX=0
功能:设置为非透传模式
示例:
AT+CIPMUX=0OK
此命令只能在AT+CIPMUX=0的状态下(单链路模式)设置。
AT+CSTT=“CMNET”
指令:AT+CSTT=“CMNET”
功能:设置GPRS的APN,移动CMNET,联通UNINET
示例:
AT+CSTT="CMNET"OK
AT+CIPHEAD
指令:AT+CIPHEAD=1
功能:设置接收到消息时显示IP头,格式为:"+IPD,data length:"
示例:
AT+CIPHEAD=1OK
AT+CIPSHUT
指令:AT+CIPSHUT
功能:关闭移动场景
示例:
AT+CIPSHUTSHUT OK
AT+CIICR
指令:AT+CIICR
功能:激活移动场景
示例:
AT+CIICROK
AT+CIFSR
指令:AT+CIFSR
功能:查询本机IP地址
示例:
AT+CIFSR10.152.75.128
4. 基于 TCP 协议连接远程服务器通信实例
4.1. 搭建远程TCP服务器
首先我们需要搭建一个TCP服务器,有两种方式:
- 在服务器上使用Python、Java、C#等语言自行编写服务器程序;
- 在本地PC上使用网络调试助手开启TCP服务器;
因为Air724模组直接注册的是公网ip地址,所以这里我们使用第一种方式,在Linux服务器上运行一个Python编写的tcp测试服务器:
本地PC使用的是局域网,公网不可以直接根据ip地址访问到本PC,需要进行内网穿透,不推荐使用。
这里的Python程序如下:
from socket import *host = ''
port = 8902
server_socket = socket(AF_INET,SOCK_STREAM)
server_addr = (host,port)
server_socket.bind(server_addr)
server_socket.listen(5)
try:while True:print('waiting for connect...')client_socket, client_addr = server_socket.accept()print('a client connnect from:', client_addr)while(True):client_socket.send('Hello, client!'.encode())data = client_socket.recv(1024)print('recv data is ', data.decode())if "quit" in data.decode():breakclient_socket.close()server_socket.close()print("socket closed.")break
except:client_socket.close()server_socket.close()print("socket closed.")
运行:
python3 tcp-server.py
效果如下:
4.2. 模组连接服务器
使用AT命令连接TCP服务器,其中第一个参数是协议类型,“TCP”则表示使用TCP协议,第二个参数是TCP服务器ip地址,也可以使用域名,最一个参数是TCP服务器开启监听的端口:
AT+CIPSTART=,,
示例:
AT+CIPSTART="TCP",117.50.111.72,8902OK+CSCON: 1CONNECT OK
连接之后,在服务器端也可以看到:
在多链路模式下(+CIPMUX=1),AT指令为:
AT+CIPSTART=,,,
返回结果为:
AT+CIPSTART=0,TCP,117.50.111.72,8902OK0, CONNECT OK
4.2. 模组接收消息
模组连接到服务器后,服务器会自动发送消息,所以接收到后打印出了:
+CSCON: 1
+IPD,14:Hello, client!
4.3. 模组主动发送消息
使用如下的命令即可向TCP服务器发送消息,首先设置要发送数据的字节数,等待模组返回>
后,输入要发送的数据即可,如果发送的数据超过了设置的n个字节,则只发送前n个字节,后面的数据被认为是无效数据,不会发送:
AT+CIPSEND=
示例:
AT+CIPSEND> helloSEND OK
发送成功看服务器上运行的TCP服务器是否收到:
4.4. 关闭TCP连接
通信完毕之后,可以使用下面的命令关闭TCP连接:
AT+CIPCLOSE=
示例:
AT+CIPCLOSECLOSE OK
接收更多精彩文章及资源推送,欢迎订阅我的微信公众号:『mculover666』。