SIM7020C NB-IoT HAT
说明
| |||||||||||||||||||||
| |||||||||||||||||||||
产品概述
本产品是一款具有NB-IoT(窄带物联网)功能的树莓派扩展板,具有低功耗、低成本、广覆盖等优点,适用于新型的智能仪表和远程控制等物联网应用。
产品特性
- 适用于Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+
- 支持TCP、UDP、LWM2M、HTTP、MQTT等功能
- 板载USB接口,可用于软件调试等
- 板载两路UART接口,可用于AT指令收发和更新固件(仅UART2)
- 引出控制引脚,可接入Arduino/STM32等主控板
- 板载电平转换电路,默认为3.3V工作,可通过跳线帽设置成5V
- 板载SIM卡槽,支持NB-IoT专用卡
- 板载2个LED指示灯,方便查看模块运行状态
- 支持串口波特率范围300bps ~ 921600bps (默认115200bps)
- 支持AT命令控制(3GPP TS 27.007,27.005和SIMCOM增强型AT命令集)
- 支持SIM应用工具包(SAT Class 3、GSM 11.14 Release 98、USAT)
- 提供完善的配套资料手册(Raspberry/Arduino/STM32等示例程序)
通信参数
- 支持频段
- B1/B3/B5/B8 (支持电信/联通/移动的NB-IoT卡)
- 传输功率
- Class 3 (0.25W@LTE)
- 数据传输
- 上行:≤62.5Kbps
- 下行:≤26.15Kbps
- 短消息
- 文本和PDU模式(须SIM卡本身支持)
其他参数
- 供电电压:5V
- 逻辑电压:5V / 3.3V (默认为3.3V)
- 休眠模式电流:1.2mA(@DRX=2.56s)
- 省电模式电流:9uA
- 工作温度:-40°C ~ 85°C
- 存储温度:-45°C ~ 90°C
- 产品尺寸:30.2mm x 65mm
接口说明
5V |
电源正(5V电源输入) |
GND |
电源地 |
RX1 |
串口1数据接收 |
TX1 |
串口1数据发送 |
DTR |
休眠控制引脚拉高休眠,拉低唤醒(须设置“AT+CSCLK=1”) |
RI |
中断唤醒引脚默认高电平,当收到短信息或URC上报会有120ms低电平脉冲(须设置“AT+CFGRI=1”) |
RX2 |
串口2数据接收 |
TX2 |
串口2数据接收 |
PWR |
开关机控制引脚 |
RESET |
复位引脚开机状态拉低电平可复位,关机状态无效 |
跳线帽说明
VCCIO |
:可通过跳线帽设置工作电平为3.3V或5V |
PWR |
:开关机控制引脚,默认接到树莓派的P4引脚 |
指示灯说明
PWR |
给模块的5V和GND供电时亮起 |
NET |
64ms亮/800ms熄灭——未注册上网络 |
接入电脑调试
硬件连接
用户在使用SIM7020模块前除了micro USB线、LTE天线外,还需要另外准备以下东西:
- 一张NB-IoT专用卡(电信、移动或联通)
- 串口模块(推荐用CP2102 USB UART Board)
接线说明:
SIM7020C-NB-IoT HAT | CP2012或其他串口模块 |
---|---|
5V | 5V |
GND | GND |
RX1 | TXD |
TX1 | RXD |
硬件连接操作:
- 将NB-IoT卡安装到模块背面卡槽,并连接好LTE天线。(使用时须把 LTE天线 旋转到板子外侧,如右图所示)
- 把CP2102模块引脚对应接到SIM7020X的串口1(或串口2),再用USB线连入电脑。
- 给SIM7020模块供电,此时PWR灯亮红灯,NET灯不亮状态。
- 按PWRKEY按键约1s松开,等待2秒左右,看到NET灯开始闪烁,则模块开机成功。
- 使用配套的串口助手打开,选择对应的串口端口和波特率115200,勾选加回车换行,
- 打开扩展可看到实现录入的AT指令,点击对应的指令即可直接发送。
简单联网测试
下表列举一些常用AT指令,可以简单快速地检测SIM7020的AT串口通信和网络连接是否正常。
进行下文演示的联网通信实验前建议都先做简单联网测试,确认网络连接正常再操作。
相关的AT指令详细说明可参阅:SIM7020 Series_AT Command Manual。
命令 |
说明 |
返回值 |
AT |
AT测试指令 |
OK |
ATE |
ATE1设置回显,ATE0关闭回显 |
OK |
AT+CSQ |
网络信号质量查询,返回信号值 |
OK |
AT+CGMR |
查询固件版本 |
OK |
AT+CGREG? |
查询网络注册状态 |
OK |
AT+CGACT? |
查询PDP状态 |
OK |
AT+COPS? |
查询网络信息 |
OK |
AT+CGCONTRDP |
查询网络状态 |
OK |
AT+CFUN=0 |
关闭RF |
OK |
AT*MCGDEFCONT |
配置APN,如:AT*MCGDEFCONT="IP","3GNET" |
OK |
AT+CFUN=1 |
开启RF |
OK |
TCP/IP通信
本文主要介绍SIM7020模块TCP/IP通信功能。
SIM7020模块不支持透传,不支持 server 模式。
SIM7020 TCP/IP默认是多路client架构,共支持5路sockets,包括TCP或者UDP。
TCP/IP通信前,先根据上文“硬件配置”和“简单联网测试”操作,确保模块联网正常。
SIM7020模块TCP、UDP通信以及DNS解析和Ping功能。
说明:AT指令详细说明可参阅:SIM7020 系列_TCPIP协议_应用文档_V1.01,后续模组固件升级,对应的AT指令有可能更新。
【TCP Client】
相关指令:
AT指令 |
指令说明 |
返回值 |
AT+CSOC=1,1,1 |
创建 TCP socket, <socket_id>=0 |
OK |
AT+CSOCON=0,2317,"118.190.93.84" |
连接远端server |
OK |
AT+CSOSEND=0,0,"Hello World" |
发送数据 |
OK |
AT+CSOCL=0 |
关闭socket |
OK |
AT+CSOSENDFLAG |
使能发送ACK 回执 |
OK |
AT+CSORCVFLAG |
使能接收ACK 回执 |
OK |
AT+CSOCON? |
检查通信端口和类型 |
OK |
【UDP Client】
相关指令:
AT指令 |
指令说明 |
返回值 |
AT+CSOC=1,2,1 |
创建 UDP socket, <socket_id>=0 |
OK |
AT+CSOCON=4,524,"116.247.119.165" |
连接远端server |
OK |
AT+CSOSEND=4,0,"Waveshare" |
发送数据 |
OK |
AT+CSOCL=0 |
关闭socket |
OK |
AT+CSOSENDFLAG |
使能发送ACK 回执 |
OK |
AT+CSORCVFLAG |
使能接收ACK 回执 |
OK |
AT+CSOCON? |
检查通信端口和类型 |
OK |
【多路sockets】
本例演示SIM7020模块同时使用5路SOCKETS通信,相关指令参考TCP Client和UDP Client。
【DNS解析和Ping功能】
模块须正常注册上网络后,才能使用DNS解析和Ping功能,相关AT指令如下:
AT指令 |
指令说明 |
返回值 |
AT+CIPPING |
Ping指令,如:AT+CIPPING="61.135.169.121" |
OK |
AT+CDNSGIP |
解析服务器,如:AT+CDNSGIP="www.baidu.com" |
OK |
HTTP通信
本文主要介绍SIM7020模块HTTP通信功能,主要分HTTP GET和HTTP POST。
相关的AT指令详细说明可参阅:SIM7020 Series_HTTP_Application_Note。
【HTTP GET】
相关指令:
AT指令 |
指令说明 |
返回值 |
AT+CHTTPCREATE="https://www.waveshare.com/" |
创建HTTP Host示例 |
OK |
AT+CHTTPCON=0 |
连接 server |
OK |
AT+CHTTPSEND=0,0,"/index.html" |
发送 http 请求 |
OK |
AT+CHTTPDISCON=0 |
断开连接 |
OK |
AT+CHTTPDESTROY=0 |
释放销毁 HTTP 示例 |
OK |
AT+CHTTPCREATE? |
检查HTTP连接状态 |
OK |
说明:测试HTTP相关指令时,因NB-IoT网络问题,AT应答时间相对较长,请耐心等候。
【HTTP POST】
相关指令:
AT指令 |
指令说明 |
返回值 |
AT+CHTTPCREATE="http://139.217.9.49:8080/" |
创建 HTTP 服务器端 |
OK |
AT+CHTTPCON=0 |
连接 server |
OK |
AT+CHTTPSEND=0,0,"/index.html" |
发送 http 请求 |
OK |
AT+CHTTPDISCON=0 |
断开连接 |
OK |
AT+CHTTPDESTROY=0 |
释放销毁 HTTP 示例 |
OK |
AT+CHTTPCREATE? |
检查HTTP连接状态 |
OK |
说明:测试HTTP相关指令时,因NB-IoT网络问题,AT应答时间相对较长,请耐心等候。
MQTT通信
本文主要介绍SIM7020模块MQTT通信功能。
相关的AT指令详细说明可参阅:File:SIM7020系列_MQTT(S)协议_应用文档_V1.05.pdf
MQTT订阅主题和发布消息
下文为方便演示MQTT通信功能,下文以连接阿里云为例进行测试。
相关指令:
AT指令 |
指令说明 |
返回值 |
AT+CMQNEW="productKey.iot-as-mqtt.cn-shanghai.ali yuncs.com","1883",12000,1024 |
创建 MQTT 连接 |
+CMQNEW: 0 |
AT+CMQALICFG=0,"productKey","deviceName", "deviceSecret" |
设置阿里云设备参数 |
OK |
AT+CMQALICON=0,600,1 |
发送 MQTT 请求,连接阿里云 |
OK |
AT+CMQSUB=0,"/productKey/deviceName/TEST1 ",1 |
订阅主题 |
OK |
AT+CMQPUB=0,"/productKey/deviceName/TEST1", 1,0,0,16,"3132333435363738" |
发布主题和消息 |
OK |
AT+CMQUNSUB=0,"/productKey/deviceName/TEST1" |
取消订阅主题 |
OK |
AT+CMQDISCON=0 |
断开 MQTT 连接 |
OK |
说明:测试MQTT相关指令时,因NB-IoT网络问题,AT应答时间相对较长,请耐心等候。详细过程请参考:SIM7020X NB-I0T HAT 通过MQTT携手阿里云
接入树莓派使用
硬件连接
SIM7020X NB-IoT HAT板载树莓派GPIO接口,可直接插入各版本树莓派使用;下表为树莓派管脚与模块引脚连接情况(树莓派三代B+):
SIM7020X NB-IoT HAT |
Raspberry Pi |
5V |
5V |
GND |
GND |
RXD |
TXD (对应BCM的14) |
TXD |
RXD (对应BCM的15) |
PWR |
P7 (对应BCM的P4) |
软件配置
【引脚初始化】
模块出厂默认PWR引脚是通过跳线帽跳选到树莓派的P4引脚,为确保SIM7020X NB-IoT HAT接入树莓派后能正常工作,才需要初始化树莓派引脚的电平输出。
参考操作如下:
- 下载树莓派代码,放到/home/pi路径下,
wget https://www.waveshare.net/w/upload/2/25/SIM7020X-NB-IoT-HAT-DEMO.7z
- 命令行进入到/home/pi/SIM7020X-NB-IoT-HAT-Demo-Code/Raspberry 目录下,执行指令
chmod 777 sim7020_nbiot_hat_init
- 设置开机初始化脚本,运行命令:
sudo nano /etc/rc.local
- 在exit 0前面加入 (如下图所示):
sh /home/pi/SIM7020X/sim7020_nbiot_hat_init
【串口配置】
由于树莓派串口默认用于终端调试,如需使用串口,则需要修改树莓派设置。
- 执行如下命令进入树莓派配置:
sudo raspi-config
- 选择Interfacing Options ->Serial ->no -> yes,关闭串口调试功能。
- 打开/boot/config.txt文件,找到如下配置语句使能串口,如果没有,可添加在文件最后面:
enable_uart=1
- 重启生效。
树莓派minicom调试
将模块插入树莓派中,安装minicom,minicom是linux平台串口调试工具:
sudo apt-get install minicom
执行minicom -D /dev/ttyS0 可进入minicom串口调试界面
默认波特率为115200,ttyS0为树莓派3B/3B+的串口,Zero/2B为ttyAMA0
树莓派示例程序演示
下载示例程序,把BCM2835整个文件夹拷贝到树莓派上,比如放到/home/pi/下,并改名为SIM7020X。
【bcm2835安装】
- 安装BCM2835, 打开树莓派终端,并运行以下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.70.tar.gz tar zxvf bcm2835-1.70.tar.gz cd bcm2835-1.70/ sudo ./configure sudo make && sudo make check && sudo make install # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
【编译和运行】
树莓派示例程序结构图参考下图:
下面以编译和运行AT示例程序为例:
cd /home/pi/SIM7020X/examples/AT sudo make clean && sudo make && sudo ./main
- 示例程序测试截图:
接入STM32使用
硬件连接
SIM7020X NB-IoT HAT引出了串口控制引脚,可用于接入STM32单片机使用;下表为STM32F103R管脚与模块引脚连接情况(微雪Open103V):
SIM7020X NB-IoT HAT |
STM32F103 |
5V |
5V |
GND |
GND |
RXD |
PA2 (对应USART2的TX) |
TXD |
PA3 (对应USART2的RX) |
STM32示例程序演示
- 说明:测试TCP例程还需要额外的串口通信模块接入到开发板的USART1接口,以获取程序运行后打印输出的提示信息。
接入Jetson Nano使用
Jetson Nano板载类似RaspberryPi 40Pin GPIO接口,SIM7020C NB -IoT HAT可直接接入使用,Jetson Nano的终端访问串口不影响与SIM7020C NB -IoT HAT(即Pin14和Pin15)串口通信。
SIM7020C-NB-IoT HAT | Jetson Nano |
---|---|
5V | 5V |
GND | GND |
TXD | 14 (BCM编码) |
RXD | 15 (BCM编码) |
PWR | 4(BCM编码) |
Jetson Nano minicom串口调试
1、将SIM7020X NB-IoT HAT接入Jetson Nano中,按下PWRKER键两秒后开机
2、使用SERIAL登录Jetson Nano终端,安装minicom,在终端下输入:
sudo apt-get install minicom
3、运行minicom进行串口调试,在终端下输入
sudo minicom -D /dev/ttyTHS1 -b 115200
4、 发送AT指令测试,退出时按下PWRKEY按键三秒后开始关机,退出minicom先按Ctrl+A,再按X,最后按ENTER
Python例程
安装函数库
sudo apt-get python3-pip sudo pip3 install pyserial sudo apt-get install p7zip
使用wget工具下载源码到Jetson Nano指定文件夹,复制下面命令
wget -P ~/Documents/ http://www.waveshare.net/w/upload/3/3d/SIM7020X-NB-IoT-HAT-Demo-Code.7z
进入刚创建并下载了源码的目录,使用p7zip工具解压到当前目录,并更改读写执行权限
cd ~/Documents sudo p7zip --uncompress SIM7020X-NB-IoT-HAT-Demo-Code.7z sudo chmod 777 -R SIM7020X-NB-IoT-HAT-Demo-Code
AT
SIM7020C NB-IoT HAT接入Jetson Nano,按PWRKEY键两秒开机
进入JetsonNano/AT目录,执行命令:
cd ~/Documents/SIM7020X-NB-IoT-HAT-Demo-Code/JetsonNano/AT/ sudo python3 AT.py
TCP
SIM7020C NB-IoT HAT接入Jetson Nano,若SIM7020C NB-IoT HAT未开机,按PWRKEY键两秒开机
cd ~/Documents/SIM7020X-NB-IoT-HAT-Demo-Code/JetsonNano/TCP/ sudo python3 TCP.py
UDP
SIM7020C NB-IoT HAT接入Jetson Nano,若SIM7020C NB-IoT HAT未开机,按PWRKEY键两秒开机
cd ~/Documents/SIM7020X-NB-IoT-HAT-Demo-Code/JetsonNano/UDP/ sudo python3 UDP.py
Arduino例程
硬件连接
SIM7020C NB-IoT HAT连接到开发板UNO PLUS / Arduino UNO和CP2102 USB UART Board。其中UNO的PIN10(RX)和PIN11(TX)为软件模拟串口,硬件连接和测试结果如下如图所示:
安装Arduino库
下载解压示例程序,
把Waveshare_SIM7020X_Arduino_Library文件夹复制到Arduino IDE安装路径下的Library目录下
打开Arduino IDE --> File -->Examples -->Waveshare_SIM7020X_Arduino_Library,然后选择运行对应的示例程序:
Arduino示例演示
资料
文档
程序
软件
数据手册
- File:SIM7020 Series_AT Command Manual_V1.03.pdf
- File:SIM7020 Hardware Design_V1.02.pdf
- File:SIM7020 Series_HTTP_Application Note_V1.02.pdf
- File:SIM7020 Series_TCPIP_Application_Note_V1.02.pdf
- File:SIM7020 Series_MQTT(S)_Application Note_V1.05.pdf
相关应用案例
SIM7020X NB-I0T HAT 通过MQTT携手阿里云
相关教程
FAQ
- 确认SIM卡是否接入;
- 确认SIM卡的网络运营商的频段是否支持SIM7020X;
- 确认当地是否覆盖了运营商的NB-IOT网络。
不可以的,SIM7020X板载的USB仅用来供电,使用时外接DC 5V供电。
- 按下PWRKET按键3-5秒进入睡眠模式
- 发送以下AT指令进入睡眠模式,进入睡眠模式后可将DTR引脚拉高3-5秒开机
AT+CPOWD=1
- 发送以下AT指令进入睡低功耗模式和退出低功耗模式
AT+CPSMSTATUS=1 AT+CPSMSTATUS=0
{{{5}}}