SIM800C GSM/GPRS HAT教程

产品概述

本产品是一款具有GSM(全球移动通信系统)、GPRS(通用分组无线服务)和Bluetooth(蓝牙)功能的树莓派扩展板。 具有体积小巧、功耗低等优点,可轻松实现发短信,无线上网,蓝牙数据传输等功能。

产品特性

  • 适用于Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+/4B
  • 支持短信、GPRS、DTMF、HTTP、FTP、彩信、邮件等功能
  • 支持蓝牙3.0,可进行蓝牙数据传输
  • 板载2个LED指示灯,方便查看模块运行状态
  • 板载SIM卡槽,支持1.8V和3V SIM卡
  • 支持自动识别波特率(1200bps ~115200bps)
  • 支持AT命令控制(3GPP TS 27.007,27.005和SIMCOM增强型AT命令集)
  • 支持SIM应用工具包:GSM 11.14 Release 99
  • 提供完善的配套资料手册(Raspberry/Arduino/STM32等示例程序)

GSM/GPRS参数

  • 频段
    • GSM 850/EGSM 900/DCS 1800/PCS 1900 MHz
    • 支持自动搜索4个频段
    • 满足GSM phase 2/2+ 标准
  • 发射功率
    • Class 4 (2W @ GSM 850/EGSM 900 MHz)
    • Class 1 (1W @ DCS 1800/PCS 1900 MHz)
  • GPRS连接特性
    • GPRS multi-slot class 12 (默认)
    • GPRS multi-slot class 1~12 (可配置)
  • GPRS 数据特性
    • 上行/下行传输速率:≤85.6kbps
    • 支持分组广播控制信道(PBCCH)
    • 编码格式:CS-1、CS-2、CS-3、CS-4
    • 支持用于PPP连接的PAP协议(密码验证协议)
    • 支持非结构化补充数据业务(USSD)
  • 短信(SMS)
    • 支持类型:MT、MO、CB、Text、PDU
    • 短信存储设备:SIM卡

Bluetooth参数

  • 集成AT指令控制
  • 符合蓝牙specification3.0 + EDR
  • 支持SPP、OPP、HFP/HSP等功能

其他参数

  • 供电电压:5V
  • 工作温度:-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供电时亮起
NET64ms亮/800ms熄灭——未注册上网络
64ms亮/3000ms熄灭——已注册上网络
64ms亮/300ms熄灭——数据传输时
熄灭——关机或PSM休眠模式

接入电脑调试

硬件连接

通过串口模块接入电脑连接图

用户在使用SIM800C模块前除了micro USB线、GSM/蓝牙天线外,还需要另外准备以下东西:

硬件连接操作:

  1. 将GPRS卡安装到模块背面卡槽,并连接好LTE天线。(使用时须把 LTE天线 旋转到板子外侧,如右图所示)
  2. 把CP2102模块引脚对应接到SIM800C的串口1(或串口2),再用USB线连入电脑。
  3. 给SIM800C模块供电,此时PWR灯亮红灯,NET灯不亮状态。
  4. 按PWRKEY按键约1s松开,等待2秒左右,看到NET灯开始闪烁,则模块开机成功。
  5. 使用配套的串口助手打开,选择对应的串口端口和波特率115200,勾选加回车换行,打开扩展可看到实现录入的AT指令,点击对应的指令即可直接发送。

简单联网测试

简单联网测试截图

下表列举一些常用AT指令,可以简单快速地检测SIM800C的AT串口通信和网络连接是否正常。进行下文演示的联网通信实验前建议都先做简单联网测试,确认网络连接正常再操作。
相关的AT指令详细说明可参阅:SIM800C Series_AT Command Manual。

命令说明返回值
ATAT测试指令OK
ATEATE1设置回显,ATE0关闭回显OK
AT+CSQ网络信号质量查询,返回信号值OK
AT+CGMR查询固件版本OK
AT+CREG?查询网络注册状态OK
AT+CGATT?检查GPRS附着状态OK

TCP/IP通信

TCP/IP应用程序的结构

SIM800系列模块的 TCP/IP应用有两种连接模式,可以通过命令AT+CIPMUX=<n>来设置。当AT+CIPMUX=0时,是单链路模式;当AT+CIPMUX=1时,是多链路模式。默认设置是单链路模式。

当在单链路模式下,SIM800系列模块可以工作在透传模式和非透传模式。这两种传输模式下,模块可以被配置为TCP/UDP客户端或TCP服务器。

当在多链路模式下,SIM800系列模块只工作在非透传模式。

在这种模式下,模块可以作为一个绝对的TCP/UDP连接的客户端,它总共可以建立6路连接;它也可以被配置为一个TCP服务器,另外还可以配置5路TCP/UDP的客户端。SIM800C TCP/IP默认是多路client架构,共支持5路sockets,包括TCP或者UDP。

下文将侧重演示SIM800C在单链路非透传模式和透传模式下的客户端通信。

TCP/IP通信相关的详细使用说明请见:SIM800C Series_TCPIP_Application_Note。

【非透传模式下的客户端通信】

非透传模式TCP Client测试截图

相关指令:

AT指令指令说明返回值
AT+CGATT?检查GPRS附着状态OK
AT+CSTT="CMNET"设置APNOK
AT+CIICR建立无线链路OK
AT+CIFSR获得本地IP地址OK
AT+CIPSTART="TCP","118.190.93.84",2317建立TCP客户端链接OK
AT+CIPSTART="UDP","118.190.93.84",2317建立UDP客户端链接OK
AT+CIPSEND=<字符长度>发送指定长度字符串OK
AT+CIPCLOSE关闭链路通信OK
AT+CIPSHUT关闭PDP上下文连接OK

【透传模式下的客户端通信】

透传模式TCP Client测试截图

相关指令:

AT指令指令说明返回值
AT+CGATT?检查GPRS附着状态OK
AT+CIPMODE=1设置为透传模式OK
AT+CSTT="CMNET"设置APNOK
AT+CIICR建立无线链路OK
AT+CIFSR获得本地IP地址OK
AT+CIPSTART="TCP","118.190.93.84",2317建立TCP客户端链接OK
AT+CIPSTART="UDP","118.190.93.84",2317建立UDP客户端链接OK
AT+CIPSEND=<字符长度>发送指定长度字符串OK
AT+CIPCLOSE关闭链路通信OK
AT+CIPSHUT关闭PDP上下文连接OK

通过下面的方法可以在透传模式和命令模式间自由切换。

(1) 如果AT+CIPCCFG 的第四个参数是1,那么支持通过转义序列退出透传模式。 默认的转义序列是 +++,要正确使用该序列,必须保证该序列前有 1000ms 空闲,在该序列之后有1000ms的空闲。还需要注意的是,每个+之间的间隔不要超过1000ms,否则它有可能被当做TCP/IP 数据。

(2) 可以使用串口的DTR 脚。要使用这个方法, 首先要设置AT&D1, DTR 脚至少接地 1 秒然后拉高。这个方法可以从数据模式切换到命令模式。上报字串“OK” 表示模块当前处于命令模式。

(3) 对于TCP客户端链接,如果远端服务器断开了链接,模块会自动切换到命令模式。

(4) 对于TCP服务器链接,如果远端客户端断开了链接,模块也会自动切换到命令模式。

(5) 重启模块。

HTTP通信

本章节主要介绍SIM800C模块HTTP通信功能,主要分HTTP GET和HTTP POST。

HTTP和FTP通信功能详细使用说明请见:SIM800C Series_IP_Application_Note。

【HTTP GET】

HTTP GET测试截图1

相关指令:

AT指令指令说明返回值
AT+SAPBR=3,1,"Contype","GPRS"配置承载场景1OK
AT+SAPBR=3,1,"APN","CMNET"配置承载场景APNOK
AT+SAPBR=1,1激活一个 GPRS 上下文OK
AT+SAPBR=2,1查询 GPRS 上下文OK
AT+SAPBR=0,1关闭 GPRS 上下文.OK
AT+HTTPINIT检查HTTP连接状态OK
AT+HTTPPARA="CID",1设置HTTP会话参数OK
AT+HTTPPARA="URL","www.sim.com"设置HTTP会话参数OK
AT+HTTPACTION=0GET会话开始OK
AT+HTTPREAD读取HTTP服务器的数据OK
AT+HTTPTERM结束HTTP服务OK

【HTTP POST】

HTTP POST测试截图
相关指令:

AT指令指令说明返回值
AT+SAPBR=3,1,"Contype","GPRS"配置承载场景1OK
AT+SAPBR=3,1,"APN","CMNET"配置承载场景APNOK
AT+SAPBR=1,1激活一个 GPRS 上下文OK
AT+SAPBR=2,1查询 GPRS 上下文OK
AT+SAPBR=0,1关闭 GPRS 上下文.OK
AT+HTTPINIT检查HTTP连接状态OK
AT+HTTPPARA="CID",1设置HTTP会话参数OK
AT+HTTPPARA="URL","www.sim.com"设置HTTP会话参数OK
AT+HTTPDATA=100,10000上传100字节数据,等待10000毫秒OK
AT+HTTPACTION=1GET会话开始OK
AT+HTTPTERM结束HTTP服务OK

邮件收发

SIM800系列模块的 TCP/IP应用有两种连接模式,可以通过命令AT+CIPMUX=<n>来设置。

【发送邮件】

可发送普通邮件,可设置抄送人,可发送带附件的电子邮件,可发送编码为UTF-8的电子邮件等等,下文简单演示下发送普通邮件的操作。

电子邮件详细使用说明文档请见:SIM800C Series_Email_Application_Note。

发送邮件截图

相关指令:

AT指令指令说明返回值
AT+SAPBR=3,1,"Contype","GPRS"配置承载场景1OK
AT+SAPBR=3,1,"APN","CMNET"配置承载场景APNOK
AT+SAPBR=1,1激活一个 GPRS 上下文OK
AT+SAPBR=2,1查询 GPRS 上下文OK
AT+SAPBR=0,1关闭 GPRS 上下文.OK
AT+EMAILCID=1配置电子邮件参数OK
AT+EMAILTO=30配置电子邮件参数OK
AT+SMTPSRV="smtp.ym.163.com",25设置SMTP服务器地址和端口OK
AT+SMTPAUTH=1,"kaloha@waveshare.net","123456"设置用户名和密码OK
AT+SMTPFROM="kaloha@waveshare.net","kaloha"设置发送方地址和名字OK
AT+SMTPRCPT=0,0,"kallanlw@163.com","kallanlw"设置接受方OK
AT+SMTPRCPT=1,0,"john@sim.com","john"设置抄送方OK
AT+SMTPSUB="Test"设置邮件主题OK
AT+SMTPBODY=19设置邮件正文OK
This is a new Email邮件内容OK
AT+SMTPSEND发送邮件OK

【收取邮件】

收取邮件截图

相关指令:

AT指令指令说明返回值
AT+SAPBR=3,1,"Contype","GPRS"配置承载场景1OK
AT+SAPBR=3,1,"APN","CMNET"配置承载场景APNOK
AT+SAPBR=1,1激活一个 GPRS 上下文OK
AT+SAPBR=2,1查询 GPRS 上下文OK
AT+SAPBR=0,1关闭 GPRS 上下文.OK
AT+EMAILCID=1配置电子邮件参数OK
AT+EMAILTO=30配置电子邮件参数OK
AT+POP3SRV="pop.ym.163.com","kaloha@waveshare.net","123456",110设置 POP3 服务器地址和账户信息OK
AT+POP3IN登录POP3 服务器OK
AT+POP3NUM得到邮件总数和总的大小OK
AT+POP3LIST=1得到第一封邮件的大小OK
AT+POP3CMD=4,1读取第一封邮件OK
AT+POP3READ=1460读取该邮件内容OK

短信收发

SIM800系列模块的 TCP/IP应用有两种连接模式,可以通过命令AT+CIPMUX=<n>来设置。

【发送英文短信】

发送英文短信测试截图

测试步骤:

  1. AT+CMGF=1 :设置短信模式为TEXT
  2. AT+CMGS="phone number"<回车> ,设置接收方手机号 ,然后会返回:“>”
  3. 发送需要的内容,如“Send massage test!”,结尾不需要回车
  4. 编辑完短信后以十六进制的格式发送1A发信息发送
    (1A是“CTRL+Z”的键值,用于告诉模块执行发送操作,也可以发送1B即“ESC”取消操作)
  5. 发送成功后模块返回+CMGS:15 确认发送成功

【接收英文短信】

接收英文短信测试截图

测试步骤:

  1. 手机上发送一条:“This is a receive test for SIM7600X!”到试验模块上
  2. 接受到信息时,串口会制动上报信息,“SM”, 20,代表存在 SM 里面有20条信息了,刚刚发的信息就是第 20 条
  3. 读取信息:AT+CMGR=20 读取第20条信息(AT+CMGL="ALL" 为读取所有信息)
  4. 删除信息:AT+CMGD=20,如下图所示
  5. 将显示的信息通过编码转换器转换成文本。

【发送中文短信】

发送中文短信测试截图

测试步骤:

  1. AT+CMGF=1 ,设置为文本模式
  2. AT+CSCS="UCS2" , 设置信息文本为UCS2编码集
  3. AT+CSMP=17,167,2,25 //设置文本模式参数。
  4. AT+CMGS="00310033003400330032003100310039003100300031",设置接收方手机号的UCS2集;
  5. 等待返回>,此时发送进过转换的信息内容(00530049004D003700360030003000584E2D658777ED4FE16D4B8BD5)
  6. 结尾不需要回车,编辑完短信后以十六进制的格式发送1A发信息发送。


蓝牙调试

SIM800系列模块支持蓝牙3.0,支持SPP、OPP、HFP/HSP等功能。

下文主要演示蓝牙SPP串口通信功能。

蓝牙功能详细使用说明文档请见:SIM800C Series_BT_Application_Note。

【蓝牙串口功能】

蓝牙串口测试截图


手机蓝牙串口发送数据


相关指令:

AT指令指令说明返回值
AT+BTPOWER=1打开蓝牙电源OK
AT+BTHOST?查询蓝牙名称和地址返回蓝牙名称和MAC地址
AT+BTSCAN=1,10搜索蓝牙附近的设备返回搜索到的蓝牙设备信息
AT+BTPAIR=1,1数字确认方式响应配对OK
AT+BTACPT=1接受客户端的连接请求OK
AT+BTSPPSEND发送数据返回>可以开始输入数据,

发送16进制1A结束发送

AT+BTPOWER=0断开蓝牙电源OK

测试步骤:

  1. 准备一台安卓系统手机,安装蓝牙串口APP:Serial Bluetooth
  2. 模块发送AT指令打开蓝牙电源:AT+BTPOWER=1
  3. 查询模块自身的蓝牙名称和地址:AT+BTHOST?
  4. 打开手机蓝牙,搜索附近的蓝牙设备,找到模块的蓝牙名称和地址,发起连接请求
  5. 此时模块串口会收到提示(+BTPAIRING:”手机蓝牙名称”,地址,配对码),则发送确认配对:AT+BTPAIR=1,1
  6. 打开Serial Bluetooth(或扫描下图二维码),切换到Device,选择连接SIM800蓝牙
  7. 此时模块串口会收到提示(+BTCONNECTING:”地址”,”SPP”),则发送接受连接请求:AT+BTACPT=1
  8. 模块发送数据:AT+BTSPPSEND,返回> 即可发送数据内容,发送16进制”1A”结束发送
  9. 蓝牙通信完毕后,断开蓝牙电源:AT+BTPOWER=0

接入树莓派使用

硬件连接

与树莓派引脚连接图

SIM800C GSM GPRS HAT板载树莓派GPIO接口,可直接插入各版本树莓派使用;下表为树莓派管脚与模块引脚连接情况(树莓派三代B+):

SIM800C GSM/GPRS HATRaspberry Pi
5V5V
GNDGND
RXDTXD (对应BCM的14)
TXDRXD (对应BCM的15)
PWRP7 (对应BCM的P4)

软件配置

【引脚初始化】

接入树莓派实物图

模块出厂默认PWR引脚是通过跳线帽跳选到树莓派的P4引脚,为确保SIM800C GSM/GPRS HAT接入树莓派后能正常工作,才需要初始化树莓派引脚的电平输出。

参考操作如下:

  • 下载树莓派代码,把SIM800C整个文件夹复制到/home/pi/ 路径下,
  • 命令行进入到/home/pi/目录下,执行指令
  1. chmod 777 pi_gpio_init.sh
  • 设置开机初始化脚本,运行命令:
  1. sudo nano /etc/rc.local
  • 在exit 0前面加入 (如下图所示):
  1. sh /home/pi/SIM800C/pi_gpio_init.sh


【串口配置】

由于树莓派串口默认用于终端调试,如需使用串口,则需要修改树莓派设置。

  • 执行如下命令进入树莓派配置:
  1. sudo raspi-config
  • 选择Interfacing Options ->Serial ->no -> yes,关闭串口调试功能。
  • 打开/boot/config.txt文件,找到如下配置语句使能串口,如果没有,可添加在文件最后面:
  1. enable_uart=1
  • 重启生效。

树莓派minicom调试

minicom AT指令测试

将模块插入树莓派中,安装minicom,minicom是linux平台串口调试工具:

  1. sudo apt-get install minicom

执行minicom -D /dev/ttyS0 可进入minicom串口调试界面

默认波特率为115200,ttyS0为树莓派3B/3B+的串口,Zero/2B为ttyAMA0

树莓派pppd拨号上网

在树莓派Raspbian系统,SIM800C支持通过串口进行pppd拨号上网,操作步骤如下:

1、安装ppp

  1. sudo apt-get install ppp

2、切换到root用户

  1. sudo su
  2.  

3、进入/etc/ppp/peers目录,复制provider文件并命名为gprs

  1. cd /etc/ppp/peers
  2. cp provider gprs

4、打开并编辑gprs


5、运行命令后台启动拨号

  1. pppd call gprs &

6、关闭网卡

  1. ifconfig eth0 down
  2. ifconfig wlan0 down

7、运行ifconfig命令可以看到ppp0网卡

  1. Ifconfig


8、此时若无法正常上网,提示dns解析不了,可增加如下命令配置路由表

  1. route add -net 0.0.0.0 ppp0


树莓派BCM2835例程

下载示例程序,把BCM2835整个文件夹拷贝到树莓派上,比如放到/home/pi/下,并改名为SIM800C。

【bcm2835安装】

进入SIM800C下的bcm2835目录,编译安装bcm2835库,执行指令:

  1. ./configure & make & sudo make check & sudo make install


【编译和运行】

下面以编译和运行AT示例程序为例:

  1. cd /home/pi/SIM800C/bcm2835/examples/AT
  2. sudo make clean && sudo make && sudo ./main
  • 示例程序测试截图:


          AT                      SMS

树莓派python例程

【python示例演示】

进入SIM800C下的python目录,执行相应的示例程序,如send_message.py:

  1. python send_message.py


         SMS

接入Arduino使用

硬件连接

接入UNO PLUS

硬件连接到开发板UNO PLUS / Arduino UNO:

SIM800C GSM/GPRS HATUNO PLUS / Arduino UNO
5V5V
GNDGND
TX12
RX13

Arduino示例演示


         SMS

接入Jetson Nano使用

硬件连接

Jetson Nano板载40Pin GPIO接口,SIM800C GSM/GPRS HAT可直接接入使用,Jetson Nano的终端访问串口不影响与SIM800C GSM/GPRS HAT(即Pin10和Pin8)串口通信。

SIM800C GSM/GPRS HATJetson Nano
5V5V
GNDGND
TXD10 (Board编码)
RXD8 (Board编码)
PWRKEY7(Board编码)


Jetson Nano minicom串口调试

1、将SIM800C GSM/GPRS HAT接入Jetson Nano中,按下PWRKER键两秒后开机 2、使用SERIAL登录Jetson Nano终端,安装minicom,在终端下输入:

  1. sudo apt-get install minicom

3、运行minicom进行串口调试,在终端下输入

  1. sudo minicom -D /dev/ttyTHS1 -b 115200

4、 发送AT指令测试,退出时按下PWRKEY按键三秒后开始关机,退出minicom先按Ctrl+A,再按X,最后按ENTER

Python例程

安装函数库后

  1. sudo apt-get python3-pip
  2. sudo pip3 install pyserial
  3. sudo apt-get install p7zip

使用wget工具下载源码到Jetson Nano指定文件夹,复制下面命令

  1. mkdir -p ~/Documents/SIM800C_GSM_GPRS
  2. wget -P ~/Documents/SIM800C_GSM_GPRS/ http://www.waveshare.net/w/upload/9/96/SIM800C_GSM-GPRS_HAT_Code.7z

进入刚创建并下载了源码的目录,使用p7zip工具解压到当前目录

  1. cd ~/Documents/SIM800C_GSM_GPRS/
  2. sudo p7zip --uncompress SIM800C_GSM-GPRS_HAT_Code.7z
  3. sudo chmod 777 -R Jetson\ Nano


AT

SIM800C GSM/GPRS HAT接入Jetson Nano,接入天线,按住PWRKEY按键两秒开机,退出时按下Ctrl+C。 进入Jetson Nano/AT目录,执行命令:

  1. cd ~/Documents/SIM800C_GSM_GPRS/Jetson\ Nano/AT/
  2. sudo python3 AT.py


SMS

SIM800C GSM/GPRS HAT接入Jetson Nano,接小辣椒天线,例程使用了软件开机关机,无需按下按键进行开关机。本例程发送信息www.waveshare.com给指定号码后,会自动软件关机。用户使用SMS例程时,须先使用vim等工具更改SMS.py文件中第10行的号码,将*替换成数字,保留 ' 符号,vim使用请点击此句参考
进入Jetson Nano/SMS目录,执行命令:

  1. cd ~/Documents/SIM800c_GSM_GPRS/Jetson\ Nano/SMS/
  2. sudo python3 SMS.py


TCP

SIM800C GSM GPRS HAT接入Jetson Nano,接入小辣椒天线,例程使用了软件开机关机,无需按下按键进行开关机。
进入Jetson Nano/TCP目录,执行命令:

  1. cd ~/Documents/SIM800C_GSM_GPRS/Jetson\ Nano/TCP
  2. sudo python3 TCP.py


TAG: 树莓派原装Camera Module 3 Sensor Assembly IMX708 1190万相机模块传感器组件 自动对焦 树莓派UGV Rover ROS2 四驱六轮 开源AI云台机器人小车OpenCV 树莓派GSM天线 继电器模块 树莓派摄像头 树莓派RP2040 1.14寸LCD Pi5外壳 DTOF激光雷达 激光雷达传感器 网络模块免驱动 USB 3.2 Gen1 转千兆网口 即插即用 树莓派5 AI Kit Hailo8 26Tops PCIE M.2 HAT+ 串口通信激光雷达 树莓派LCD Arducam 2MP 圆形旋钮屏触摸屏1.28寸1.6寸2.1寸液晶屏幕旋钮开关中控智能灯光旋钮串口屏 树莓派5官方PCIE转M.2 HAT+ Compact扩展板NVMe SSD固态硬盘 树莓派CM4-DUAL-ETH-MINI教程 树莓派Pico 2 RP2350-One 迷你开发板Type-A RP2350A ESP32-P4开发板ESP32-P4-NANO RISC-V WiFi6 MIPI DSI 10.1显示屏/CSI摄像头/音频喇叭/POE供电/RJ45 ETH以太网口/USB BPI-M4 Zero