Arduino+SIM900A+继电器

Arduino+SIM900A+继电器

#include<Arduino.h>
#include<String.h>
#define SERIAL_RX_BUFFER_SIZE 256 //修改串口发送缓冲区大小为2048
#define SERIAL_TX_BUFFER_SIZE 256 //修改串口接收缓冲区大小为2048
//char teststring;//定义文本数据类型
//String information;
int pinRelay = 4; //管脚D3连接到继电器模块的信号脚
void setup() {
pinMode(pinRelay, OUTPUT); //设置pinRelay脚为输出状态
Serial.begin(115200);
//Serial.begin(9600);
Set_Message();//初始化短信设置
}
void Set_Message(){
Serial.print(“AT+CNMI=2,1”);
Serial.print("\r\n");
// Serial.print(“AT+CSCS=“GSM””);//读取短信指令
}
void loop() {
String information="";
while(Serial.available()>0){
char teststring=Serial.read();
//Serial.println(teststring);
information+=(char)teststring;
delay(1000);
}
//Serial.println(information);//将短信打印出来,边缘检测
delay(1000);

if(information.indexOf(“CMTI”)!=-1) {
delay(1000);
Read_Message();//执行读短信函数
delay(1000);
}
information="";
}
void Read_Message(){
Serial.print(“AT+CMGR=1”);//读取短信指令
Serial.print("\r\n");
//Serial.print("");
//Serial.print(1);
//Serial.print("\n\r");
delay(10000);
String inString="";
while(Serial.available()>0){
char inChar=Serial.read();
inString+=(char)inChar;
delay(60000);
}
//Serial.println(inString);//将短信打印出来,边缘检测
delay(5000);

if(inString.indexOf(“8856”)!=-1){
digitalWrite(pinRelay, HIGH);
}
if(inString.indexOf(“OFF”)!=-1){
digitalWrite(pinRelay, LOW);
}
inString="";
Serial.print(“AT+CMGD=1”);
Serial.print("\r\n");
delay(10000);
Serial.print(“AT+CMGD=1”);
Serial.print("\r\n");
}

测试环境下,逻辑已经调通了,但是在实际环境下,SIM900A发送的描述性字段很长,大概128字节以上,串口无法读取到短信信息。

//delay(2000000);
//digitalWrite(pinRelay, HIGH);//输出HIGH电平,继电器模块闭合
//delay(2000000); //等待5000毫秒
//digitalWrite(pinRelay, LOW);//输出LOW电平,继电器模块断开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值