Text 如何使用GSM模块SIM800和Arduino Uno发送短信?
我正试图通过SIM800 GSM模块从Arduino发送一条短信。消息到达给定的数字,但格式不正确。 它显示“不支持消息格式” 我在这里包括我的代码和一个快速的答复是非常感谢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波特率的串行端口。 连载打印(“我准备好
#包括
软件串行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循环(){
//如果您希望连续发送文本,请在此处添加代码
}