模板: SIM800C-GSM-GPRS-HAT Manual
产品概述
本产品是一款具有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供电时亮起 |
NET | 64ms亮/800ms熄灭——未注册上网络 64ms亮/3000ms熄灭——已注册上网络 64ms亮/300ms熄灭——数据传输时 熄灭——关机或PSM休眠模式 |
接入电脑调试
硬件连接
用户在使用SIM800C模块前除了micro USB线、GSM/蓝牙天线外,还需要另外准备以下东西:
- 一张GPRS专用卡(移动或联通2G/4G卡)
- 串口模块(推荐用CP2102 USB UART Board)
硬件连接操作:
- 将GPRS卡安装到模块背面卡槽,并连接好LTE天线。(使用时须把 LTE天线 旋转到板子外侧,如右图所示)
- 把CP2102模块引脚对应接到SIM800C的串口1(或串口2),再用USB线连入电脑。
- 给SIM800C模块供电,此时PWR灯亮红灯,NET灯不亮状态。
- 按PWRKEY按键约1s松开,等待2秒左右,看到NET灯开始闪烁,则模块开机成功。
- 使用配套的串口助手打开,选择对应的串口端口和波特率115200,勾选加回车换行,打开扩展可看到实现录入的AT指令,点击对应的指令即可直接发送。
简单联网测试
下表列举一些常用AT指令,可以简单快速地检测SIM800C的AT串口通信和网络连接是否正常。进行下文演示的联网通信实验前建议都先做简单联网测试,确认网络连接正常再操作。
相关的AT指令详细说明可参阅:SIM800C Series_AT Command Manual。
命令 | 说明 | 返回值 |
AT | AT测试指令 | OK |
ATE | ATE1设置回显,ATE0关闭回显 | OK |
AT+CSQ | 网络信号质量查询,返回信号值 | OK |
AT+CGMR | 查询固件版本 | OK |
AT+CREG? | 查询网络注册状态 | OK |
AT+CGATT? | 检查GPRS附着状态 | OK |
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。
【非透传模式下的客户端通信】
相关指令:
AT指令 | 指令说明 | 返回值 |
AT+CGATT? | 检查GPRS附着状态 | OK |
AT+CSTT="CMNET" | 设置APN | OK |
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 |
【透传模式下的客户端通信】
相关指令:
AT指令 | 指令说明 | 返回值 |
AT+CGATT? | 检查GPRS附着状态 | OK |
AT+CIPMODE=1 | 设置为透传模式 | OK |
AT+CSTT="CMNET" | 设置APN | OK |
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】
相关指令:
AT指令 | 指令说明 | 返回值 |
AT+SAPBR=3,1,"Contype","GPRS" | 配置承载场景1 | OK |
AT+SAPBR=3,1,"APN","CMNET" | 配置承载场景APN | OK |
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=0 | GET会话开始 | OK |
AT+HTTPREAD | 读取HTTP服务器的数据 | OK |
AT+HTTPTERM | 结束HTTP服务 | OK |
【HTTP POST】
相关指令:
AT指令 | 指令说明 | 返回值 |
AT+SAPBR=3,1,"Contype","GPRS" | 配置承载场景1 | OK |
AT+SAPBR=3,1,"APN","CMNET" | 配置承载场景APN | OK |
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=1 | GET会话开始 | 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" | 配置承载场景1 | OK |
AT+SAPBR=3,1,"APN","CMNET" | 配置承载场景APN | OK |
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" | 配置承载场景1 | OK |
AT+SAPBR=3,1,"APN","CMNET" | 配置承载场景APN | OK |
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>来设置。
【发送英文短信】
测试步骤:
- AT+CMGF=1 :设置短信模式为TEXT
- AT+CMGS="phone number"<回车> ,设置接收方手机号 ,然后会返回:“>”
- 发送需要的内容,如“Send massage test!”,结尾不需要回车
- 编辑完短信后以十六进制的格式发送1A发信息发送
(1A是“CTRL+Z”的键值,用于告诉模块执行发送操作,也可以发送1B即“ESC”取消操作) - 发送成功后模块返回+CMGS:15 确认发送成功
【接收英文短信】
测试步骤:
- 手机上发送一条:“This is a receive test for SIM7600X!”到试验模块上
- 接受到信息时,串口会制动上报信息,“SM”, 20,代表存在 SM 里面有20条信息了,刚刚发的信息就是第 20 条
- 读取信息:AT+CMGR=20 读取第20条信息(AT+CMGL="ALL" 为读取所有信息)
- 删除信息:AT+CMGD=20,如下图所示
- 将显示的信息通过编码转换器转换成文本。
【发送中文短信】
测试步骤:
- AT+CMGF=1 ,设置为文本模式
- AT+CSCS="UCS2" , 设置信息文本为UCS2编码集
- AT+CSMP=17,167,2,25 //设置文本模式参数。
- AT+CMGS="00310033003400330032003100310039003100300031",设置接收方手机号的UCS2集;
- 等待返回>,此时发送进过转换的信息内容(00530049004D003700360030003000584E2D658777ED4FE16D4B8BD5)
- 结尾不需要回车,编辑完短信后以十六进制的格式发送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 |
测试步骤:
- 准备一台安卓系统手机,安装蓝牙串口APP:Serial Bluetooth
- 模块发送AT指令打开蓝牙电源:AT+BTPOWER=1
- 查询模块自身的蓝牙名称和地址:AT+BTHOST?
- 打开手机蓝牙,搜索附近的蓝牙设备,找到模块的蓝牙名称和地址,发起连接请求
- 此时模块串口会收到提示(+BTPAIRING:”手机蓝牙名称”,地址,配对码),则发送确认配对:AT+BTPAIR=1,1
- 打开Serial Bluetooth(或扫描下图二维码),切换到Device,选择连接SIM800蓝牙
- 此时模块串口会收到提示(+BTCONNECTING:”地址”,”SPP”),则发送接受连接请求:AT+BTACPT=1
- 模块发送数据:AT+BTSPPSEND,返回> 即可发送数据内容,发送16进制”1A”结束发送
- 蓝牙通信完毕后,断开蓝牙电源:AT+BTPOWER=0
接入树莓派使用
硬件连接
SIM800C GSM GPRS HAT板载树莓派GPIO接口,可直接插入各版本树莓派使用;下表为树莓派管脚与模块引脚连接情况(树莓派三代B+):
SIM800C GSM/GPRS HAT | Raspberry Pi |
5V | 5V |
GND | GND |
RXD | TXD (对应BCM的14) |
TXD | RXD (对应BCM的15) |
PWR | P7 (对应BCM的P4) |
软件配置
【引脚初始化】
模块出厂默认PWR引脚是通过跳线帽跳选到树莓派的P4引脚,为确保SIM800C GSM/GPRS HAT接入树莓派后能正常工作,才需要初始化树莓派引脚的电平输出。
参考操作如下:
- 下载树莓派代码,把SIM800C整个文件夹复制到/home/pi/ 路径下,
- 命令行进入到/home/pi/目录下,执行指令
chmod 777 pi_gpio_init.sh
- 设置开机初始化脚本,运行命令:
sudo nano /etc/rc.local
- 在exit 0前面加入 (如下图所示):
sh /home/pi/SIM800C/pi_gpio_init.sh
【串口配置】
由于树莓派串口默认用于终端调试,如需使用串口,则需要修改树莓派设置。
- 执行如下命令进入树莓派配置:
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
树莓派pppd拨号上网
在树莓派Raspbian系统,SIM800C支持通过串口进行pppd拨号上网,操作步骤如下:
1、安装ppp
sudo apt-get install ppp
2、切换到root用户
sudo su
3、进入/etc/ppp/peers目录,复制provider文件并命名为gprs
cd /etc/ppp/peers cp provider gprs
4、打开并编辑gprs
5、运行命令后台启动拨号
pppd call gprs &
6、关闭网卡
ifconfig eth0 down ifconfig wlan0 down
7、运行ifconfig命令可以看到ppp0网卡
Ifconfig
8、此时若无法正常上网,提示dns解析不了,可增加如下命令配置路由表
route add -net 0.0.0.0 ppp0
树莓派BCM2835例程
下载示例程序,把BCM2835整个文件夹拷贝到树莓派上,比如放到/home/pi/下,并改名为SIM800C。
【bcm2835安装】
进入SIM800C下的bcm2835目录,编译安装bcm2835库,执行指令:
./configure & make & sudo make check & sudo make install
说明:如果编译出现问题,请参考FAQ的说明操作。
【编译和运行】
下面以编译和运行AT示例程序为例:
cd /home/pi/SIM800C/bcm2835/examples/AT sudo make clean && sudo make && sudo ./main
- 示例程序测试截图:
树莓派python例程
【python示例演示】
进入SIM800C下的python目录,执行相应的示例程序,如send_message.py:
python send_message.py
接入Arduino使用
硬件连接
硬件连接到开发板UNO PLUS / Arduino UNO:
SIM800C GSM/GPRS HAT | UNO PLUS / Arduino UNO |
---|---|
5V | 5V |
GND | GND |
TX1 | 2 |
RX1 | 3 |
Arduino示例演示
接入Jetson Nano使用
硬件连接
Jetson Nano板载40Pin GPIO接口,SIM800C GSM/GPRS HAT可直接接入使用,Jetson Nano的终端访问串口不影响与SIM800C GSM/GPRS HAT(即Pin10和Pin8)串口通信。
SIM800C GSM/GPRS HAT | Jetson Nano |
---|---|
5V | 5V |
GND | GND |
TXD | 10 (Board编码) |
RXD | 8 (Board编码) |
PWRKEY | 7(Board编码) |
Jetson Nano minicom串口调试
1、将SIM800C GSM/GPRS 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指定文件夹,复制下面命令
mkdir -p ~/Documents/SIM800C_GSM_GPRS wget -P ~/Documents/SIM800C_GSM_GPRS/ http://www.waveshare.net/w/upload/9/96/SIM800C_GSM-GPRS_HAT_Code.7z
进入刚创建并下载了源码的目录,使用p7zip工具解压到当前目录
cd ~/Documents/SIM800C_GSM_GPRS/ sudo p7zip --uncompress SIM800C_GSM-GPRS_HAT_Code.7z sudo chmod 777 -R Jetson\ Nano
AT
SIM800C GSM/GPRS HAT接入Jetson Nano,接入天线,按住PWRKEY按键两秒开机,退出时按下Ctrl+C。 进入Jetson Nano/AT目录,执行命令:
cd ~/Documents/SIM800C_GSM_GPRS/Jetson\ Nano/AT/ sudo python3 AT.py
SMS
SIM800C GSM/GPRS HAT接入Jetson Nano,接小辣椒天线,例程使用了软件开机关机,无需按下按键进行开关机。本例程发送信息www.waveshare.com给指定号码后,会自动软件关机。用户使用SMS例程时,须先使用vim等工具更改SMS.py文件中第10行的号码,将*替换成数字,保留 ' 符号,vim使用请点击此句参考。
进入Jetson Nano/SMS目录,执行命令:
cd ~/Documents/SIM800c_GSM_GPRS/Jetson\ Nano/SMS/ sudo python3 SMS.py
TCP
SIM800C GSM GPRS HAT接入Jetson Nano,接入小辣椒天线,例程使用了软件开机关机,无需按下按键进行开关机。
进入Jetson Nano/TCP目录,执行命令:
cd ~/Documents/SIM800C_GSM_GPRS/Jetson\ Nano/TCP sudo python3 TCP.py
说明:更多示例程序持续更新中… …