(SKU:TEL0089)SIM800C GPRS/GSM Shield V2.0通信模块

来自DFRobot Product Wiki
跳转至: 导航搜索
SIM800C GPRS/GSM Shield V2.0通信模块

目录

简介

这是DFRobot研发的一款GPRS/GSM Arduino扩展板。它及GPRS、DTMF、TTS语音播报等功能于一身的shield模块,工作频率为EGSM 900MHz/DCS 1800MHz和GSM850 MHz/PCS 1900MHz.它是通过AT指令来控制的,您能直接通过电脑串口和Arduino主板来启动它的功能。这款SIM800C GPRS Shield板内嵌有SIMCom公司的SIM800C芯片,具有良好的稳定性。我们这里提供一些样例代码 更多好玩的功能 请参考sim800c使用手册。



产品参数

  • 供电电源<Vin>:DC 7-23V
  • 四频 850/900/1800/1900MHz
  • GPRS multi-slot class 12/10
  • GPRS mobile station class B
  • GSM 2/2+标准
  • Class 4 (2 W @ 850/900 MHz)
  • Class 1 (1 W @ 1800/1900MHz)
  • 通过AT指令控制(3GPP TS 27.007, 27.005和SIMCOM 增强AT命令集)
  • 使用温度范围: -40 ~+85 ℃
  • 串口波特率自适应
  • 支持实时时钟(RTC)
  • 支持SMS短信
  • 支持彩信
  • 支持电子邮箱
  • 支持DTMF
  • 支持TTS
  • 支持蓝牙3.0
  • 尺寸 70.0x53.3(mm)

接口说明



Jiekou.png























注:除了按Boot按钮可实现开关机之外,也可以通过拉高D12引脚2秒实现模块的开关机。

使用教程

通过下面的教程,使小伙伴们会使用该通信模块的,软件开关机、接打电话、收发短信、蓝牙等功能。让小伙伴们轻松的进入到 sim800系列模块的通信殿堂。


准备

  • 硬件
    • 1 x UNO控制板
    • 1 x SIM800C GPRS/GSM Shield V2.0通信模块
    • 1 x 为UNO下载程序的USB线
    • 1 x 12V直流电源
  • 软件



启动模块


按住boot键2秒或者下载下面程序启动模块。

    void setup()
    {
        //设置引脚为输出模式
        pinMode(12,OUTPUT);
        //GSM开机时序 
        digitalWrite(12,HIGH);
        delay(2000);
        digitalWrite(12,LOW); 
    }
    void loop()    
    { 
    }

结果


程序上传成功后,用跳线帽将串口连接成用串口 按下rest键 会观察到Net(:网络状态指示)灯——闪烁:

打电话


 /***************************************************
  SIM800C GPRS/GSM  Shield V1.0
  
  ***************************************************
  This example show you how to use SIM800C GPRS/GSM  Shield V1.0 to make a call.
  
 * @author Dongzi(1185787528@qq.com)
 * @version  V1.0
  * @date  2016-9-1
 * All above must be included in any redistribution
 *This code is tested on SIM800C GPRS/GSM Shield V1.0.
 ****************************************************/
 #define power_key 12       //power key is connected to digital pin 12
 void inint();
 void power_on();
 void setup() {     
     inint();      
      }
 void loop() { 
   Serial.println("ATD10086;"); //对方电话号码为10086,别漏了最后的分号“;”
     while(1);
 }
 void inint()
  {  pinMode(power_key, OUTPUT); 
     Serial.begin(115200);
      power_on(); 
      delay(500);
    }
  void power_on() 
     { 
      digitalWrite(power_key,HIGH);
         delay(1500);     
      digitalWrite(power_key, LOW);          
        Serial.println("AT");
           delay(300);           
             Serial.println("AT");
               delay(8000);              
        }
                   
 
注:语音通话时 请注意天线的朝向 否则会影响语音通话质量

结果


{1.这段程序结合前面的软件开机程序,用arduino 串口发送AT指令来控制模块 实现打电话功能,代码中“10086”为中国移动通信运营商 “中国移动”客服电话 。这里你可以修改任何你想要拨打的电话(只要它是有效的)。
2.在烧录程序时 需要将模块上的 “跳线帽”拔掉。
3.程序烧录成功后,按“rest”键 几秒后耳机里会传出 移动客服语音通话声……

蓝牙串口

  • 准备:手机端需下载蓝牙串口助手


 /***************************************************
 SIM800C GPRS/GSM  Shield V2.0
  
 ***************************************************
 This example show you how to use SIM800C GPRS/GSM  Shield V2.0 BT-SPP.
  
 * @author Dongzi(1185787528@qq.com)
 * @version  V2.0
 * @date  2016-9-1
 * All above must be included in any redistribution
 *This code is tested on SIM800C GPRS/GSM Shield V2.0.
 ****************************************************/
 #include <SoftwareSerial.h>
    SoftwareSerial bt_cmd(2,3); 
    
     void blue_spp();
     void splitString_t(char *data); 
     #define power_key 12
                    /*0*******1************2**************3***************4*****************5*****/  
    String cmd[6]={"AT","AT+BTHOST?","AT+BTPOWER=1","AT+BTPAIR=1,1","AT+BTACPT=1","AT+BTSPPSEND"}; 
      char buffer[50],power_mark=0;    // Serialbuffer and power flag
     
      void setup()      
      { pinMode(power_key,OUTPUT);
        Serial.begin(9600);    
        bt_cmd.begin(9600);
          blue_spp(); 
          delay(800);
         bt_cmd.println(cmd[4]); 
         delay(800); 
         bt_cmd.println(cmd[3]); 
         delay(800);                            
      }
      void loop()
      {     
         data_R1();
         data_R();
      }
 void data_R1()  {
    if(bt_cmd.available() > 0)      
        {
        int index = 0;
        delay(100);             //wait data end
        int numChar = bt_cmd.available(); 
        if(numChar >50)          
        {
          numChar =50;
        }
        while(numChar--)
        {
          buffer[index++] = bt_cmd.read();  
        }
        splitString(buffer);            
        }      
    }          
 void blue_spp()
     { 
          bt_cmd.println(cmd[0]);
          delay(20);
          data_R1();
           delay(20);       
            bt_cmd.println(cmd[2]);            
             delay(200);
            bt_cmd.println(cmd[1]);   
              data_R1();    
               if(bt_cmd.find("ERROR"))
               {               
                bt_cmd.println(cmd[1]);         
                 Serial.println("start again");    
              }
              else
            Serial.println("bt_power_on");           
              
      }
 
  void splitString(char *data)
      {
        Serial.print("Data entered:");
        Serial.println(data);      
         for(int x = 0; x < 50; x++)     
        {
        buffer[x] = '\0';
        }        
  }        
 void data_R()  {
    if(Serial.available() > 0)     
        {
        int index = 0;
        delay(100);            
        int numChar = Serial.available(); 
        if(numChar >50)         
        {
          numChar =50;
        }
        while(numChar--)
        {
          buffer[index++] = Serial.read();  
        }
        splitString_t(buffer);        
        }      
    }                    
 void splitString_t(char *data)
      {
          bt_cmd.println(cmd[5]);
           delay(5);
          bt_cmd.print(data);
          bt_cmd.write(0x1a);
          delay(5);      
         for(int x = 0; x < 50; x++)     
        {
        buffer[x] = '\0';
        }        
  }

结果

    • 这个例程 采用的是arduino的软串口 用2号和3号数字脚分别做串口的RX\TX 程序烧录后 手机端的 “spp”蓝牙串口可以通过模块的蓝牙实现和电脑端的串口助手间的无线通讯。
1335.png
238.png




常用AT指令说明

1、“AT\r\n”
   返回:AT\r\n OK\r\n   
   说明:AT指令测试,可以用于检测模块时候启动

2、“ATE0\r\n”

   返回:ATE0\r\n OK\r\n  
   说明:关闭回显

3、“AT+CNMI=2,1,0,1,0\r\n”

   返回:OK\r\n
   说明:设置新短消息URC上报格式 此命令要在SMS ready后才能设置,即当SIM800C模块告知Arduino“SMS ready”后才能设置,收到短信后URC上报,1为短信息在存储器中的序号,+CMTI:"SM",1

4、“AT+CSCS="UCS2"\r\n”

   返回:OK\r\n
   说明:设置短消息使用UCS2编码

5、“AT+CSQ\r\n”

   返回:+CSQ:<rssi>,<ber>  OK\r\n
                <rssi>
                      0 小于等于-115dBm
                      1 -111dBm
                      2...30 -110... -54dBm
                      31 大于等于-52dBm
                      99 未知或者不可测
                <ber> (百分比):
                     0...7 表中的RXQUA值,参考GSM 05.08 [20] 章节7.2.4
                     99 未知或者不可测


6、“ATA\r\n”

   返回:OK\r\n       
   说明:接听电话

7、“ATH0\r\n”

   返回:OK\r\n       
   说明:挂掉电话

8、“AT+CLIP=1\r\n”

   返回:OK\r\n       
   说明:开启来电显示

9、“ATD15982373181;\r\n”

   返回:OK\r\n 
   说明:拨打电话

10、“AT+DDET=1\r\n”

   返回:OK\r\n 
   说明:开启DTMF功能

11、“AT+CMGS="00310038003600310036003300360036003500340037"\r\n”

   返回:>
   说明:引号内为手机号码的UCS2-BIG编码。发送短信,当返回“>”字符后,输入要发送的短信内容,内容编码为UCS2编码(前面设置的),然后勾选HEX发送,发送“1a”,表示以CTRL+Z(0x1A)结束。

12、“AT+CMGR=1\r\n”

   返回:+CMTI:........
   说明:读取短信,返回为短信的内容
   参数说明:“1”为短信在SIM800H模块中存储的序号

13、“AT+CMGD=1\r\n”

   返回:OK\r\n 
   说明:删除存储器中序号为1的短消息

注意:更多的AT指令请参考AT指令表



更多

  • [[1]] [SIM800C资料下载]

DFshopping car1.png [Link DFRobot商城购买链接]

个人工具
名字空间

变换
操作
导航
工具箱