本产品是一款具有GSM(全球移动通信系统)和GPRS(通用分组无线服务)功能的树莓派扩展板。 具有体积小巧、功耗低等优点,可轻松实现打电话,发短信,无线上网等功能。
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休眠模式 |
用户在使用R800C模块前除了micro USB线、GSM/蓝牙天线外,还需要另外准备以下东西:
硬件连接操作:
下表列举一些常用AT指令,可以简单快速地检测R800C的AT串口通信和网络连接是否正常。进行下文演示的联网通信实验前建议都先做简单联网测试,确认网络连接正常再操作。
相关的AT指令详细说明可参阅:R800C Series_AT Command Manual。
命令 | 说明 | 返回值 |
AT | AT测试指令 | OK |
ATE | ATE1设置回显,ATE0关闭回显 | OK |
AT+CSQ | 网络信号质量查询,返回信号值 | OK |
AT+CGMR | 查询固件版本 | OK |
AT+CREG? | 查询网络注册状态 | OK |
AT+CGATT? | 检查GPRS附着状态 | OK |
测试步骤:
测试步骤:
测试步骤:
R800系列模块的 TCP/IP应用有两种连接模式,可以通过命令AT+CIPMUX=<n>来设置。当AT+CIPMUX=0时,是单链路模式;当AT+CIPMUX=1时,是多链路模式。默认设置是单链路模式。
当在单链路模式下,R800系列模块可以工作在透传模式和非透传模式。这两种传输模式下,模块可以被配置为TCP/UDP客户端或TCP服务器。
当在多链路模式下,R800系列模块只工作在非透传模式。
在这种模式下,模块可以作为一个绝对的TCP/UDP连接的客户端,它总共可以建立6路连接;它也可以被配置为一个TCP服务器,另外还可以配置5路TCP/UDP的客户端。R800C TCP/IP默认是多路client架构,共支持5路sockets,包括TCP或者UDP。
下文将侧重演示R800C在单链路非透传模式和透传模式下的客户端通信。
TCP/IP通信相关的详细使用说明请见:R800C 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) 重启模块。
本章节主要介绍R800C模块HTTP通信功能,主要分HTTP GET和HTTP POST。
HTTP和FTP通信功能详细使用说明请见:R800C Series_IP_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+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 |
相关指令:
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 |
R800C GSM GPRS HAT板载树莓派GPIO接口,可直接插入各版本树莓派使用; 下表为树莓派管脚与模块引脚连接情况(树莓派三代B+):
R800C GSM/GPRS HAT | Raspberry Pi |
5V | 5V |
GND | GND |
RXD | TXD (对应BCM的14) |
TXD | RXD (对应BCM的15) |
PWR | P7 (对应BCM的P4) |
模块出厂默认PWR引脚是通过跳线帽跳选到树莓派的P4引脚,为确保R800C GSM/GPRS HAT接入树莓派后能正常工作,才需要初始化树莓派引脚的电平输出。
参考操作如下:
chmod 777 pi_gpio_init.sh
sudo nano /etc/rc.local
sh /home/pi/SIM800C/pi_gpio_init.sh
由于树莓派串口默认用于终端调试,如需使用串口,则需要修改树莓派设置。
sudo raspi-config
enable_uart=1
将模块插入树莓派中,安装minicom,minicom是linux平台串口调试工具:
sudo apt-get install minicom
执行minicom -D /dev/ttyS0 可进入minicom串口调试界面
默认波特率为115200,ttyS0为树莓派3B/3B+的串口,Zero/2B为ttyAMA0
在树莓派Raspbian系统,R800C支持通过串口进行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(这里用nano打开举例)
5、运行命令后台启动拨号
pppd call gprs &
6、运行ifconfig命令可以看到ppp0网卡
Ifconfig
7、此时若无法正常上网,提示dns解析不了,可增加如下命令配置路由表
route add -net 0.0.0.0 ppp0
使用过minicom与拓展板串口通信后,需要先重启拓展板,反之亦然。
下载例程,解压后,进入R800C_python下的目录:
cd R800C_GSM_GPRS_HAT_Code/bcm2835/bcm2835 chmod +x configure && ./configure && sudo make && sudo make install #等待bcm2835库编译并安装完成
如果编译安装过程出现问题,可参考FAQ。
输入基本AT指令,接收拓展板回复。
make clean && make sudo ./main
运行程序后,程序会先检查与模块之间的串口信是否正常,通信正常后会自动发送一系列指令检查模块状态;完成检查即可根据提示自行输入AT指令控制模块。
检查拓展板通讯状态正常后,在拓展板上插入耳机,运行此例程,完成拨号,一段时间之后会自动挂断电话,拨打的电话号码和挂断前时间可以在程序文件中自行设置。
make clean && make sudo ./main
检查拓展板通讯状态正常后,运行此例程,程序会根据提预先设置好的短信收件人号码和英文短信内容,发送成功后返回成功标志。短信收件人和英文短信内容可在程序中自行修改。
make clean && make sudo ./main
使用过minicom与拓展板串口通信后,需要先重启拓展板,反之亦然。
下载例程,解压后,进入python的目录:
cd R800C_GSM_GPRS_HAT_Code/python
输入基本AT指令,接收拓展板回复。
python AT.py
发送一系列检查拓展板状态指令,获取拓展板连接信息。
python check.py
检查拓展板通讯状态正常后,在拓展板上插入耳机,运行此例程,根据提示输入正确电话号码,完成拨号;使用ctrl+C挂断电话并终止程序。
python call.py
检查拓展板通讯状态正常后,运行此例程,根据提示先后输入短信收件人号码和英文短信内容,发送成功一段时间后程序自动结束。
python send_message.py
若拓展板通讯状态检查结果正常,但短信发送失败,可尝试更换短信中心号码(非必要不要修改)
nano send_message.py #这里用nano举例,也可使用其它编辑器