Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text 如何使用GSM模块SIM800和Arduino Uno发送短信?_Text_Arduino_Sms_Gsm - Fatal编程技术网

Text 如何使用GSM模块SIM800和Arduino Uno发送短信?

Text 如何使用GSM模块SIM800和Arduino Uno发送短信?,text,arduino,sms,gsm,Text,Arduino,Sms,Gsm,我正试图通过SIM800 GSM模块从Arduino发送一条短信。消息到达给定的数字,但格式不正确。 它显示“不支持消息格式” 我在这里包括我的代码和一个快速的答复是非常感谢 #包括 软件串行GPRS(11,12)//11=TX,12=RX 无符号字符缓冲区[64]//港口 整数计数=0; int i=0//如果i=0,发送短信。 无效设置(){ GPRS.begin(9600);//GPRS波特率 Serial.begin(9600);//Arduino波特率的串行端口。 连载打印(“我准备好

我正试图通过SIM800 GSM模块从Arduino发送一条短信。消息到达给定的数字,但格式不正确。 它显示“不支持消息格式”

我在这里包括我的代码和一个快速的答复是非常感谢

#包括
软件串行GPRS(11,12)//11=TX,12=RX
无符号字符缓冲区[64]//港口
整数计数=0;
int i=0//如果i=0,发送短信。
无效设置(){
GPRS.begin(9600);//GPRS波特率
Serial.begin(9600);//Arduino波特率的串行端口。
连载打印(“我准备好了”);
Serial.print(“你好?”);
}
void循环(){
如果(GPRS.available()){
//如果数据来自软件串口==>数据来自GPRS屏蔽
while(GPRS.available()){
//将数据读入字符数组
buffer[count++]=GPRS.read();
//将数据写入数组
如果(计数=64)
打破
}
串行写入(缓冲区、计数);
//如果没有数据传输结束,则将缓冲区写入硬件串行端口
clearBufferArray();
//调用clearBufferArray函数从数组中清除存储的数据
count=0;//将while循环的计数器设置为零
}
if(Serial.available())
//如果硬件上有数据,串行端口==>数据来自PC或笔记本电脑
GPRS.write(Serial.read());//将其写入GPRS屏蔽
如果(i==0){
GPRS.write(“AT+CMGF=1\r”);//以文本模式发送短信
延迟(1000);
Serial.println(“AT+CMGF=1\r”);
GPRS.write(“AT+CMGS=\”+91XXXXXXXXX\“\r”);//电话号码
延迟(1000);
Serial.println(“AT+CMGS=\”+91xxxxxxxxx\“\r”);
GPRS.write(“你好吗?\r”);//留言
延迟(1000);
Serial.println(“你好吗?\r”);
延迟(1000);
GPRS.write(0x1A);
//发送Ctrl+Z(消息结尾)
延迟(1000);
Serial.println(“短信发送成功”);
i++;
}   
}
void clearBufferArray(){
//清除缓冲区数组的函数

对于(int i=0;i请尝试通过向调制解调器发送以下AT命令将调制解调器字符集设置为“GSM”:AT+CSCS=“GSM”。添加此命令后,您的代码如下所示:

if(i == 0){
    GPRS.write("AT+CMGF=1\r"); //sending SMS in text mode
    delay(1000);
    Serial.println("AT+CMGF=1\r");
    GPRS.write("AT+CSCS=\"GSM\"\r"); //set modem character set to 'GSM'
    delay(1000);     
    GPRS.write("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // phone number
    delay(1000);

简单的方法是通过进入arduino IDE->Sketch->library->Manage Libraries为arduino添加grps库,然后键入gprs,您将获得库并安装它 请尝试此示例代码来测试它

    #include <gprs.h>
    #include <SoftwareSerial.h>

   GPRS gprs;

   void setup() {
     Serial.begin(9600);
     while(!Serial);
     gprs.preInit();
     delay(5000);  //wait for 5 seconds
     while(0 != gprs.init()) {
     delay(1000);
     Serial.print("Not connected,try again\r\n");
    }  
    Serial.println("Sending SMS");
    gprs.sendSMS("844******8","Testing the Module"); //Enter your phone number 
   and text
   }

   void loop() {
    //If you want the to send the Text continuously then add the code here
   }
#包括
#包括
GPRS;
无效设置(){
Serial.begin(9600);
而(!串行);
gprs.preInit();
延迟(5000);//等待5秒
而(0!=gprs.init()){
延迟(1000);
Serial.print(“未连接,请重试\r\n”);
}  
Serial.println(“发送短信”);
gprs.sendSMS(“844*******8”,“测试模块”);//输入您的电话号码
和文本
}
void循环(){
//如果您希望连续发送文本,请在此处添加代码
}