_SKU_DFR0355_SIM808_with_Leonardo_mainboard - jimaobian/DFRobotWikiCn GitHub Wiki
SIM808 with Leonardo mainboard是DFRobot最新开发的一款具备GSM/GPRS/GPS功能的Arduino兼容的多功能型控制板。板载SIM808模块是一个完整的四频GSM/GPRS以及卫星GPS导航技术相结合的通信模块。采用4层PCB板布线设计,使得主板的尺寸得以更加紧凑,大小仅与一张信用卡相当。所有的原件,包括麦克风,耳机接口,外接电源,GSM & GPS功能集中在一个标准的Arduino板中,能够为您节约大量的开发周期和材料成本。并且对尺寸上的限制也会大大减小。 SIM808主控板同时支持多种供电方式,包括USB,外接电源,3.7V锂电池供电,板载锂电池充电电路,可以在外接供电的同时为锂电池充电。此外,SIM808主板支持低功耗睡眠模式,可以极大地延长了待机时间。这些特性对实际的应用开发有着非常大的帮助,特别是在车辆追踪,安保安防和将来的物联网使用。 SIM808 主控板采用SIMCOM最新版SIM808模块,与市面上现有的SIM808模块相比,新版的模块具有更好的稳定性。(注意GPS部分的AT指令与老版的SIM808模块无法兼容,请参考下方;更多中的AT指令集)。
-
AVR Arduino 微控制器:ATmega32u4(Bootloader:Arduino Leonardo)
-
工作电压:5V
-
输入电压:5V(USB)/ 7~23V(外接电源)/ 3.5~4.3V(电池)
-
数字I/O管脚:20(7个PWM:3, 5, 6, 9, 10, 11, 13)
-
模拟输入管脚:12
-
Flash内存:32 KB (4 KB 用于bootloader)
-
SRAM:2.5 KB
-
EEPROM:1 KB
-
Clock Speed:16 MHz
-
GSM芯片:SIM808 四频GSM/GPRS+GPS模块
-
四频 850/900/1800/1900MHz
-
GPRS multi-slot class 12/10
-
GPRS mobile station class B
-
符合 GSM phase 2/2+
-
Class 4 (2 W @ 850/900MHz)
-
Class 1 (1 W @ 1800/1900MHz)
-
-
Bluetoot协议h:3.0+EDR (当前固件不支持蓝牙)
-
支持低功耗模式:100mA@7V-GSM模式
-
通过AT指令控制(3GPP TS 27.007,27.005 和 SIMCOM enhanced AT Commands)
-
支持GPS卫星导航技术
-
支持LED状态显示:显示电源供应状态,网络状态和工作模式
-
工作环境:-40℃ ~85℃
-
大小:73*54mm
序号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
*9 |
10 |
11 |
*12 |
13 |
14 |
15 |
16 |
*17 |
18 |
- 模块开/关机控制引脚
数字口“D12”已内部连接至SIM808模块开/关引脚,可用于SIM808模块开/关机控制。
- BOOT按钮
SIM808模块开关,短按Boot开机,长按3s关机
| 注意:当模块通过外接电源供电的时候(VIN端接入7~23V直流电源,非锂电池供电),模块会自动开机(即使处在关机状态下),“D12”引脚及BOOT按钮此时将无法使模块开机,此问题受限于模块的充电功能,可通过复位Arduino重新开机 |
- NO BAT? 3.7V锂电池供电切换跳帽
若使用3.7V锂电池供电时(接入BAT接口),请将接在下图黄色箭头所指“NO BAT?”的2-Pin排针上的跳线帽拔掉(若跳线帽存在)。
- 跳帽切换说明
SIM808主板支持3.7V锂电池供电,当你外接3.7V锂电池至“BAT”口时,请将“A”、“B”两点断开(即拔掉跳帽)。其它情况将A、B点通过跳线连接起来。(接入锂电池的时候,即使外接USB,也请将跳帽断掉)
注意:若用户操作不当,即:VIN电源及BAT同时接在主板上,且“NO BAT?”口接上了跳线帽,虽然不会造成主板的损坏,但有可能会使得接入BAT接口的锂电池寿命减少。 |
- JP2信号输出接口
JP2接口为SIM808模块RI引脚及DTR引脚的控制口,两个功能引脚可通过跳线帽进行切换(主板背面有详细的标注)。RI及DTR控制口介绍如下:
- RI端口
RI端口是用来检测模块的通话状态,具体如下:
- 在通话时,如果模块作为被呼叫一方,当有收到来电时RI电平会被拉低,当呼叫方或被呼叫方挂断又或者模块接通来电之后RI电平又会返回高电平状态,如下图所示。
- 在接收短信或串口主动上报(URC)时,RI电平将会产生一个120ms的低脉冲,之后恢复到高电平状态,如下图所示。
-
在通话时,如果模块作为主呼出一方,RI端口将一直保持高电平,不会有任何变化。
-
DTR端口
DTR端口为SIM808模块休眠唤醒使用的端口,未操作时DTR为高电平。当模块进入休眠,拉低DTR大概50ms后,模块会被唤醒。(即睡眠唤醒功能引脚)
您需要做以下准备工作。
1. SIM卡安装
将一张可用的SIM卡插在板子背面。
2. 将天线插在板子上
如果您需要继续做GPS功能,也可以将GPS模块连上。
3. 供电并与电脑连接
- 插入外部供电,可通过外部供电插口或VIN管脚输入7-23V DC电源,也可以将**NO BAT?**接口上的跳帽拔掉,用3.7V锂电池供电。
- 插上USB线,并连接到电脑,如果您已经安装Arduino软件,会自动为板子安装Leonardo的驱动,设备管理器里可以看到COM串口。
注意:模块工作时一定要接外部供电(VIN或者BAT接口都可以) |
4. 启动SIM808
按住BOOT键,启动SIM808模块,然后观察板子,Net指示灯开始闪烁,快速闪烁代表在寻找网络,慢速闪烁(约3S一次)代表已经找到网络。
5. 下载串口AT指令调试代码
| 注意:SIM808主控板采用与Leonardo主板,共有两个串口,其中Serial(Serial0)与USB通信; Serial1与SIM808通信,鉴于USB和SIM808无法直接通信,需要烧入一段调试代码 |
将下面的代码下载到我们的主板上,之后便可以通过USB口调试SIM808模块了。
|
void setup() {
Serial.begin(115200); //初始化Serial(即USB串口)
Serial1.begin(115200);//初始化Serial1
}
void loop() {
while (Serial1.available()) {
Serial.write(Serial1.read());//如果Serial1收到数据则通过Serial输出
}
while (Serial.available()) {
Serial1.write(Serial.read());//如果Serial收到数据则通过Serial1输出
}
delay(1);//短暂延时,避免USB-COM不稳定
}
|}
**串口助手选择:**网络上的串口助手种类很多,调试过程可以在任意的串口工具上实现,也可以直接在Arduino IDE的串口监视器上完成。
| NOTE: 对于用AT指令发短信的功能,Arduino串口窗不能发送结束符。推荐串口工具Coolterm 或DF Serial Debugger by Lisper。 |
下面将以图文方式演示教大家最基本的AT指令使用。指令具体参数含义及更多的AT指令介绍请参照本页末尾中“更多”中的AT指令手册。
| 注意:GPS天线必须置于室外,才可以获得稳定的GPS定位数据输出。 |
1. 硬件连接
DC2.1 VIN接口接入(7-23V)外接电源。(注意板上NO BAT提示,没有接锂电池时请将跳线帽接上。)
下载先前的**“串口AT指令调试代码”**到主板,通过Micro USB线将计算机与主板连接,通过串口调试助手调试SIM808模块。
注意: 将GSM天线及GPS天线接在板上对应的接口上。
2. 开机
可编程通过Leonardo控制D12控制开机,也可以按住Boot按钮开机。(当Net灯开始闪烁表示模块已经启动)
3. 打开串口助手软件发送AT命令控制GPS通信
- 发送AT+CGNSPWR=1命令(打开GPS电源)
- 发送AT+CGNSTST=1命令 (开始从串口接收GPS数据)
如果GPS天线已经放置露天位置并收到GPS数据,等待几分钟后,会有正确的GPS定位数据输出。
- 当想暂停GPS数据输出,可发送AT+CGNSTST=0命令可暂停GPS数据输出。
- 当想关闭GPS,可发送AT+CGNSPWR=0命令关断GPS电源。
- 发送AT+CPOWD=1,将模块关机。
- 想重新开机再次按下RST按键。
SIM808 with Leonardo mainboard在BAT供电的情况下,我们在硬件设计上已经尽量为用户考虑——降低功耗。SIM808模块包含两种省电模式: 休眠模式和最小功能模式。当模块被设置为最小功能模式并且进入休眠模式后,模块的电流消耗值会达到最低。 参考数据:实际测试中使用4V电源接入VBAT,板上未接其它电源的情况下,使SIM808模块进入休眠模式,电流约为15mA。
1 休眠模式
用户可以通过命令"AT+CSCLK=1"使模块进入休眠模式(AT命令的使用方式,请参考章节6)。在休眠模式下,模块的电流消耗会变得非常小。设置"AT+CSCLK=1"后,如果模块处于待机状态并且DTR是高电平,没有其它中断产生(来电,短信等),模块将自动进入休眠模式。在这种模式下,模块仍然能接收来自网络的呼叫和短息。
| 注意:在休眠模式下,串口将不可使用。 |
当模块处于休眠模式下,可以通过以下几种方式唤醒模块:
- 接收到外部中断信号(DTR信号);
- 接收到语音或数据呼叫;
- 接收到短信消息(SMS);
- 拉低DTR引脚;
2 最小功能模式
最小功能模式就是将模块功能减小到最少,所以也使得模块的电流消耗减小到最少。可以通过命令"AT+CFUN="把模块设置到该模式下,这条命令提供三种选择,用于设置不同功能。
- AT+CFUN=0:最小功能模式。这种模式下,串口仍然可以继续使用,但是与射频和SIM卡相关的功能以及部分AT命令不能使用。
- AT+CFUN=1:全功能模式(默认)。
- AT+CFUN=4:飞行模式。这种模式下,模块仍然可以使用串口,但是与射频相关以及部分AT指令不能使用。
SIM808模块集成了3.7V锂电池充电功能,最大充电电流为1A。下面将介绍如何使用SIM808 with Leonardo mainboard主板为3.7V锂电池充电:
- 将3.7V锂电池接入BAT接口,锂电池购买链接,请注意将“NO BAT?”处的跳线帽去掉。
- USB口通过MicroUSB线连接到电脑上,下载调试代码。
- 短按BOOT按钮,让模块开机。
- 通过串口助手发送命令"AT+ECHARGE=1"控制模块进入充电模式。
- VIN电源接口接入7-23V外接直流电源。(如之前已经接入VIN,请断开后重新接入)
上述五个步骤完成之后通过发送"AT+CBC"指令可查询电池电量及充电状态。关于指令的详细介绍请参考AT指令手册(详见本页尾"更多")。
更多功能,请参考下方更多资料的AT指令表。
本案例通过AT命令的方式实现打电话的功能,请先开机!并注意替换代码中的电话号码。
|
void setup() {
serialInit();
}
void loop() {
Serial1.println("AT");
delay(2000);
Serial1.println("ATDxxxxxxxxxxx;");//xxxxxxxxxxx为电话号码
while(1);
}
void serialInit(void)
{
Serial.begin(115200); //初始化Serial(即USB串口)
Serial1.begin(115200);//初始化Serial1
}
|}
本案例通过AT命令的方式实现发短信的功能,请先开机!并注意替换代码中的电话号码。
|
void setup() {
serialInit();
}
void loop() {
Serial1.println("AT");
updateSerial();
//发送短信
Serial1.println("AT+CMGF=1");
updateSerial();
Serial1.println("AT+CMGS=\"xxxxxxxxxxx\"");//xxxxxxxxxxx为电话号码
updateSerial();
Serial1.print("Hello, this is a test"); //短信内容
updateSerial();
Serial1.write(26);
while(1);
}
void serialInit(void)
{
Serial.begin(115200); //初始化Serial(即USB串口)
Serial1.begin(115200);//初始化Serial1
}
void updateSerial()
{
delay(2000);
while (Serial.available()) {
Serial1.write(Serial.read());//如果Serial收到数据则通过Serial1输出
}
while(Serial1.available()) {
Serial.write(Serial1.read());//如果Serial1收到数据则通过Serial输出
}
}
|}
以上两个测试代码非常的简单,也非常地容易理解。只需要往串口中输入对应的AT 命令,就可以实现对应的功能。适合二次开发
| 问: 板子上的板载天线是蓝牙的天线吗?怎么使用蓝牙的功能? |
- 答: 您好,是蓝牙的天线。但由于新的SIM808芯片中,固件对蓝牙的支持不稳定,很可能造成芯片固件擦除,故目前蓝牙功能还不开放使用。如果需要使用蓝牙功能,请购买蓝牙模块或带BLE功能的主板。
| **问:**为什么插上USB线,调试没有反应 |
- 答: 您好,需要接入外部电源。
| **问:**为什么拨打电话还没有回应 |
- 答: 需要在号码后面添加“;”
| **问:**为什么烧程序时烧不进去,提示串口占用了 |
- 答: 可能把调试软件关掉就可以了
| **问:**为什么用代码测试打电话的时候出现“Not connected” |
- 答: 需要等一会
| **问:**用Arduino IDE串口调试的话如下图 |
- 答: 需要调到“Both NL&CR”,而且需要点击发送按钮
| 更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖! |