简介
随着物联网概念的普及,越来越多的人开始制作自己的物联网产品。而传统的物联网大多基于WiFi技术开发,对于本地网络有一定要求,并且无法移植到户外场景。随着摩拜,ofo等共享单车的盛行,人们开始考虑使用GSM作为移动物联网的解决方案。
DFRobot新一代物联网力作,Gravity UART A6 GSM & GPRS无线通信模块。仅需一张支持GSM的电话卡,即可打电话,发短信,GPRS无线数据传输。体积小巧,方便携带;模块采用5V供电,串口电平2.8V,完美兼容Arduino,树莓派等5V和3.3V控制器。模块拥有一个3.5mm耳机接口,可以制作一台DIY手机。
注意:
- 模块采用标准SIM卡,也就是俗称的大卡,Micro-SIM和Nano-SIM卡用户,请使用SIM卡卡套。
- 选择SIM卡时,请注意SIM的信号制式,仅支持GSM制式(移动、联通)。
技术规格
- 工作电压:5-12V
- 待机电流:<3mA
- 接口方式:UART (TTL)
- 工作温度:-30℃~+80℃
- 安装孔尺寸:内径3.1mm/外径6mm
- GSM/GPRS频段:850/900/1800/1900 MHz
- 灵敏度:<-105 dBm
- GPRS Class 10
- 支持语音通话
- 支持SMS短信
- 支持GPRS数据业务,最大数据速率,下载85.6Kbps,上传42.8Kbps
- AT命令支持标准AT和TCP/IP命令接口
- 支持数字音频和模拟音频,支持HR,FR,EFR,AMR语音编码
- 模块尺寸:45x37 mm
- 安装孔位置:25x30 mm
- 重量:34 g
引脚说明
| | |
| ---------------------------------------------------------------- | |
|
| |
标号 | 名称 | 功能描述 |
1 | TX | UART发送引脚(2.8V) |
2 | RX | UART接收引脚 |
3 | GND | 电源负 |
4 | VCC | 电源正 |
5 | RST | 复位 |
6 | INT | 休眠/唤醒 |
7 | MIC+/- | 麦克风 |
8 | REC+/- | 扬声器 |
9 | VIN | 外部电源 |
引脚说明图
Arduino使用教程
目标:通过Arduino UNO R3的软串口,连接并使用模块的GSM和GPRS功能
注意:
Arduino控制器和模块同时使用时需要外接电源或充足的USB供电。在使用语音通话功能时,若仅以PC的usb接口供电,模块将出现功能无法使用的情况。 |
准备
- 硬件
- 1 x UNO R3
- 1 x Gravity UART A6 GSM & GPRS Module
- 1 x PC
- 1 x 耳机(带麦)
- 若干 杜邦线
- 软件
- Arduino IDE 点击下载Arduino IDE
接线图
- 将模块与Arduino UNO控制板按照如下图的方式连接
- 将耳机完全插入预留耳机孔
GSM教程
1.模块初始化检查
|
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 10); // TX-Pin11, RX-Pin10
void updateSerial()
{
delay(2000);
while (Serial.available()) {
mySerial.write(Serial.read());//如果Serial收到数据则通过mySerial输出
}
while(mySerial.available()) {
Serial.write(mySerial.read());//如果mySerial收到数据则通过Serial输出
}
}
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
mySerial.println("AT"); //握手测试,成功则返回OK
updateSerial();
mySerial.println("AT+CSQ"); //信号质量测试,值为0-31,31表示最好
updateSerial();
mySerial.println("AT+CCID"); //读取SIM,可以检测是否有SIM卡或者是否接触良好
updateSerial();
mySerial.println("AT+CREG?"); //检测是否注册网络
updateSerial();
mySerial.println("AT+SNFS=0"); //调整为耳机模式(AT+SNFS=1 表示扬声器模式)
updateSerial();
mySerial.println("AT+CRSL=2"); //调整音量,值为0-15,15表示音量最大
updateSerial();
while(1)
{
if(mySerial.available())
{
Serial.write(mySerial.read());//如果mySerial收到数据则通过Serial输出
}
if(Serial.available())
{
mySerial.write(Serial.read());//如果Serial收到数据则通过mySerial输出
}
}
}
|} 2.语音通话
- 通过Ardunio串口发送AT指令拨打和接听电话
- ATD+拨打号码; //拨打指定号码
- eg. ATD10086;
- Ring //有来电
- ATA //接听来电
- ATH //挂断当前通话
- ATD+拨打号码; //拨打指定号码
3.短信发送
|
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 10); // TX-Pin11, RX-Pin10
void updateSerial()
{
delay(2000);
while (Serial.available()) {
mySerial.write(Serial.read());//如果Serial收到数据则通过mySerial输出
}
while(mySerial.available()) {
Serial.write(mySerial.read());//如果mySerial收到数据则通过Serial输出
}
}
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
mySerial.println("AT"); //握手测试,成功则返回OK
updateSerial();
mySerial.println("AT+CMGF=1"); //配置短信模式为TEXT模式,只能发送英文短信!
updateSerial();
mySerial.println("AT+CMGS=\"xxxxxxxxxxx\"");//xxxxxxxxxxx为电话号码
updateSerial();
mySerial.print("Hello, this is a test"); //短信内容
updateSerial();
mySerial.write(26);
while(1)
{
if(mySerial.available())
{
Serial.write(mySerial.read());//如果mySerial收到数据则通过Serial输出
}
if(Serial.available())
{
mySerial.write(Serial.read());//如果Serial收到数据则通过mySerial输出
}
}
}
|}
GPRS教程
|
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 10); // TX-Pin11, RX-Pin10
void updateSerial()
{
delay(2000);
while (Serial.available()) {
mySerial.write(Serial.read());//如果Serial收到数据则通过mySerial输出
}
while(mySerial.available()) {
Serial.write(mySerial.read());//如果mySerial收到数据则通过Serial输出
}
}
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
mySerial.println("AT"); //握手测试,成功则返回OK
updateSerial();
mySerial.println("AT+CGATT=1 ");//附着网络,如果需要上网,这条指令是必选的
updateSerial();
mySerial.println("AT+CGDCONT=1,\"IP\",\"CMNET\"");//设置PDP参数
updateSerial();
mySerial.println("AT+CGACT=1,1");//激活PDP,正确激活以后就可以上网了
updateSerial();
mySerial.println("AT+CIFSR");//获得本地IP地址
updateSerial();
mySerial.println("AT+CIPSTART=TCP, https://www.baidu.com,80");//连接服务器,该服务器是百度的测试服务器
updateSerial();
updateSerial();
delay(2000);
updateSerial();
mySerial.println("AT+CIPSEND");//向服务器发送数据请求
updateSerial();
mySerial.print("TEST");//向服务器发送数据内容
updateSerial();
mySerial.write(26);//结束符
while(1)
{
if(mySerial.available())
{
Serial.write(mySerial.read());//如果mySerial收到数据则通过Serial输出
}
if(Serial.available())
{
mySerial.write(Serial.read());//如果Serial收到数据则通过mySerial输出
}
}
}
|}
AT指令使用教程
准备
- 硬件
- 1 x USB转串口模块
- 1 x Gravity UART A6 GSM & GPRS Module
- 1 x PC
- 1 x 耳机(带麦)
- 若干 杜邦线
- 软件
- 串口调试工具
- 注意
- 调试时若出现电话通讯异常,可考虑usb供电不足的情况,可选择将模块VCC与GND外接5V电源。
接线图
- 将模块通过USB转串口模块,与PC相连接,按照如下图的方式连接
- 将耳机完全插入预留耳机孔
GSM教程
- 下图为串口调试软件界面
1.模块初始化检查
- 模块连接后,会自动与基站连接,通过串口读取基站下发信息
- 通过以下三个命令查看模块是否正常初始化
- AT+CCID //用于查询SIM的CCID,也可以用于查询SIM是否存在或者插好
- eg. AT+CCID +CCID:898602A02216719D7171
- AT+CSQ //查询模块信号质量
- eg. AT+CSQ=? +CSQ: (0-31,99),(0-7,99)(31表示信号质量最好)
- AT+CREG? //查询网络注册情况
- eg. AT+CREG? +CREG: 1,1 //网络已注册,本地模式
- AT+CCID //用于查询SIM的CCID,也可以用于查询SIM是否存在或者插好
2.语音通话
- 通过两个命令切换到耳机模式
- AT+SNFS=0 //切换耳机模式(AT+SNFS=1 表示扬声器模式)
- AT+CRSL=2 //调整音量(值为0-15,15表示音量最大)
- 拨打和接听电话
- ATD+拨打号码; //拨打指定号码
- eg. ATD10086;
- Ring //有来电
- ATA //接听来电
- ATH //挂断当前通话
- ATD+拨打号码; //拨打指定号码
3.短信发送
- TEXT短信模式
- AT+CMGF=1 //配置短信模式为TEXT模式,只能发送英文短信!
- AT+CMGS=13548199303 //配置发送的对象
- 配置完成后会弹出输入指示符 > ,即可输入发送的英文内容;点击发送。
- 勾选串口调试软件“HEX发送”选项发送一个“1A”,或者将光标移动到串口显示界面英文内容末尾并键入Ctrl+Z,两种操作均相当于输入一个指示符→。随即发送短信,返回OK则表示发送成功。
- 整个TEXT短信发送格式为 >xxxx→
- PDU短信模式
- PDU在线转换网址 https://www.multisilicon.com/blog/a22201774~/pdu.htm
- 图中红线标注部分为区号为“021”,实际使用中应替换为当地区号
-
- AT+CMGF=0 //配置短信模式为PDU模式,中英文都可发送
- AT+CMGS=31 //PDU码长(网址转换的为 AT+CMGW=31 是编写PDU到存储,我们使用 AT+CMGS 直接将短信发送)
- 配置完成后会弹出输入指示符 > ,输入已经转换的PDU码, 取消发送新行后再点击发送
- 勾选串口调试软件“HEX发送”选项发送一个“1A”,或者将光标移动到串口显示界面PUD码末尾后键入Ctrl+Z,两者都相当于输入一个指示符→。随即发送短信,返回OK则表示发送成功。
GPRS教程
- AT+CGATT=1 //附着网络,如果需要上网,这条指令是必选的
- AT+CGDCONT=1,"IP","CMNET" //设置PDP参数
- AT+CGACT=1,1 //激活PDP,正确激活以后就可以上网了
- AT+CIFSR //获得本地IP地址
- AT+CIPSTART=TCP,www.baidu.com,80 //连接服务器,该服务器是果云的测试服务器,会返回发送的数据
- AT+CIPSEND //向服务器发送数据,输入命令后会弹出输入指示符 > ,输入要发送的内容,点击发送
- 以“HEX发送”方式发送一个0X1A,或者在串口显示界面上将光标移动到信息内容末尾并键入Ctrl+Z,返回OK则发送成功
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |