Micropython加速物联网开发6 - 通过串口使用2G模组短信功能

集成2G通信、定位模组,赋予物联网特性。本例使用M6220,它是一款基于eSIM技术的2G模组,支持GSM/GPRS,提供GPS+北斗双模定位功能,并具备一定的数据处理能力,其2G工作频段有GSM850、GSM900、DCS1800和PCS1900,内置32Mb Flash、32Mb RAM,提供GPRS数据传输、GSM短信业务,导航部分以UART或者I2C输出,可提供NMEA0183协议输出,支持A-GNSS。M6220是面向物联网领域的非常强悍的模组之一。

Micropython串口

通过Micropython串口操作2G模组,本例使用UART4,将X1、X2接口短接,在REPL中通过如下指令测试自身收发功能。

>>> from pyb import UART
>>> u4 = UART(4,115200)
>>> u4.init(115200, bits=8, parity=None, stop=1)
>>> u4.write('UART4 send&receive test')
23
>>> u4.readall()
b'UART4 send&receive test'
>>> 
首先导入UART模块,通过UART(4, )定义串口4,使用init初始化 波特率为115200,数据位8,奇偶校验None,停止位1。

执行u4.write('UART4 send&receive test')发送测试数据,然后通过u4.readall()读取到UART4发送的数据,回环测试成功。

操作M6220

M6220需要3.8V电源供电,和TPYBoard的串口相连,并且共地。

Micropython加速物联网开发6 - 通过串口使用2G模组短信功能_第1张图片

查看模组状态

使用串口发送AT指令操作M6220 2G模组。

首先发送AT测试模组和TPYBoard通信是否正确,如果正确模组会返回OK。

>>> u4.write('AT\r\n')
4
>>> u4.readall()
b'AT\r\n\r\nOK\r\n'
注意AT指令的发送末尾跟'\r\n'表示回车换行确认。

发送短信

指令AT+CPIN? 查看SIM卡状态,如果一切正常返回READY:
>>> u4.write('AT+CPIN?\r\n')
10
>>> u4.readall()
b'AT+CPIN?\r\n\r\n+CPIN:READY\r\n\r\nOK\r\n'
指令AT+CGREG?查看SIM卡是否欠费,欠费返回1,0 ...,否则返回1,1...
>>> u4.write('AT+CGREG?\r\n')
11
>>> u4.readall()
b'AT+CGREG?\r\n\r\n+CGREG: 1,1,"8109","22e2",0\r\n\r\nOK\r\n'
指令 AT+CMGF=1设置短信格式为文本模式:
>>> u4.write('AT+CMGF=1\r\n')
11
>>> u4.readall()
b'AT+CMGF=1\r\n\r\nOK\r\n'
指令 AT+CSDH=1显示结果码的值:
>>> u4.write('AT+CSDH=1\r\n')
11
>>> u4.readall()
b'AT+CSDH=1\r\n\r\nOK\r\n'
发送'test'到手机号的AT指令如下:
AT+GMGS="手机号"

>test

因此REPL中操作流程如下:

1. 发送AT+GMGS="手机号",等待模组返回>提示符:

>>> u4.write('at+cmgs="手机号"\r\n')
23
>>> u4.readall()
b'at+cmgs="手机号"\r\n\r\n> '
2. 发送短信内容'test':

>>> u4.write('test')
3. 调用writechar()发送ctrl-Z的十六进制数0x1a:

>>> u4.writechar(0x1a)
此时,手机成功收到短信,内容为'test'。

读取短信

通过指令AT+CPMS=设置短信存储位置,M6220短信存储位置分为SIM卡和mem1。
设置所有短信均存储在mem1中:
>>> u4.write('AT+CPMS="ME","ME","ME"\r\n')
读取索引为1的短信,内容为'hello':
>>> u4.write('AT+CMGR=1\r\n')
11
>>> u4.readall()
... hello ...

删除短信

指令AT+CMGD=1删除索引为1的短信:

>>> u4.write('AT+CMGD=1\r\n')

指令AT+CMGD=0删除所有短信:

>>> u4.write('AT+CMGD=0\r\n')


你可能感兴趣的:(MicroPython)