arduino (3) 控制sim900A发送短信

狗屎佳世通旗舰店,卖的什么破玩意sim900a芯片,不支持联通卡,还生明模块支持双卡的

之前买的esp8266-07都是内存偷工减料

买的液体浊度传感器给的原理图也不给基本接线。

差评垃圾店,你敢卖就别怪我吐槽。耽误我这么多时间。

 

1 只能发送英文

 

arduino (3) 控制sim900A发送短信_第1张图片

 

arduino (3) 控制sim900A发送短信_第2张图片

 

 

#include
SoftwareSerial softSerial1(4,5);//软串口RXD4、TXD5,与短信模块通信


 int sendMeg(String phonenum,String text)//发送信息的函数,直接调用即可,无需修改
  {
        char comdata=0;//判断接收到的最后一位是否对
        String phone="";//电话号码存储
        phone="AT+CMGS=\""+phonenum+'\"';   
         while (softSerial1.available() > 0){
        comdata = softSerial1.read();  //每次读一个char字符,并相加
        delay(2);
        }    
        softSerial1.println("AT");//对GSM发送AT,看响应
        delay(1000);
        while (softSerial1.available() > 2){
        comdata = softSerial1.read();  //每次读一个char字符,并相加
        Serial.print(comdata);//错误
        delay(2);
        }
        if(comdata!='K')//判断没有收到OK
        {
        Serial.println("error1");//错误
//        return  0;
        }
        comdata=0;     
        softSerial1.println("AT+CMGF=1");//设置GSM文本模式
        delay(500);
        while (softSerial1.available() > 2){
        comdata = softSerial1.read();  //每次读一个char字符,并相加
        delay(2);
        }
        
        if(comdata!='K')//没有收到OK
        {
        Serial.println("error2");
//        return  0;
        } 
        comdata=0;
        softSerial1.println(phone);//发送的目标号码
        delay(1000);
        while (softSerial1.available() > 1){
        comdata = softSerial1.read();  //每次读一个char字符,并相加
        delay(2);
        }
        
        if(comdata!='>')//没有收到>
        {
        Serial.println("error3");
//        return  0;
        }
        comdata=0;
        softSerial1.print(text);//发送所写内容
        delay(500);
        softSerial1.write(0x1A); //结束输入文本,并发送
        Serial.println("success");  //成功   
    
 }

// for循环若收不到消息会卡死 暂时用来看逻辑
int sendsim2(String phone_num,String text,SoftwareSerial &p_serial)
{
  p_serial.println("AT");
  delay(500);
  p_serial.println("AT+CSCS=\"GSM\"");
  delay(500);
  p_serial.println("AT+CMGF=1");
  delay(500);
  p_serial.print("AT+CMGS=\"");
  p_serial.print(phone_num);
  p_serial.println("\"");
 // Serial.println("1");
 //for(;p_serial.read()!='>';) ;
 // Serial.println("1");
  p_serial.print(text);
  delay(500);
  p_serial.write(0x1A);
  delay(500);
  p_serial.flush();
  delay(100);
  
  }

 
void setup(){
//硬串口 
Serial.begin(9600);
//监听软串口通信
softSerial1.begin(9600);
softSerial1.listen(); 

}
  
void loop(){
  
 sendMeg("15529672865","Water logging alarm of No.2 well of 110kV gold lead cable tunnel, please handle it quickly");//给15147300333  发送信息
// sendsim2("15529672865","ddd",softSerial1);
 delay(5000);
}

  

 

从单片机串口拿数据,然后转发

32有各种各样的问题

 

#include

#define phonenum_call "15529672865"


SoftwareSerial softSerial1(4,5);//软串口RXD4、TXD5,与短信模块通信
 int sendMeg(String phonenum,String text)//发送信息的函数,直接调用即可,无需修改
  {

        softSerial1.println("AT");//对GSM发送AT,看响应
        char comdata=0;//判断接收到的最后一位是否对
        String phone="";//电话号码存储
        phone="AT+CMGS=\""+phonenum+'\"';   
         while (softSerial1.available() > 0){
        comdata = softSerial1.read();  //每次读一个char字符,并相加
        delay(2);
        }    
        softSerial1.println("AT");//对GSM发送AT,看响应
        delay(1000);
        while (softSerial1.available() > 2){
        comdata = softSerial1.read();  //每次读一个char字符,并相加
        Serial.print(comdata);//错误
        delay(2);
        }
        if(comdata!='K')//判断没有收到OK
        {
        Serial.println("error1");//错误
//        return  0;
        }
        comdata=0;     
        softSerial1.println("AT+CMGF=1");//设置GSM文本模式
        delay(500);
        while (softSerial1.available() > 2){
        comdata = softSerial1.read();  //每次读一个char字符,并相加
        delay(2);
        }
        
        if(comdata!='K')//没有收到OK
        {
        Serial.println("error2");
//        return  0;
        } 
        comdata=0;
        softSerial1.println(phone);//发送的目标号码
        delay(1000);
        while (softSerial1.available() > 1){
        comdata = softSerial1.read();  //每次读一个char字符,并相加
        delay(2);
        }
        
        if(comdata!='>')//没有收到>
        {
        Serial.println("error3");
//        return  0;
        }
        comdata=0;
        softSerial1.print(text);//发送所写内容
        delay(500);
        softSerial1.write(0x1A); //结束输入文本,并发送
        Serial.println("success");  //成功   
    
 }


 
void setup(){
//硬串口 
Serial.begin(9600);
//监听软串口通信
softSerial1.begin(9600);
softSerial1.listen(); 
delay(5000);
}
  
void loop(){
    
    if(Serial.available()>0){
      delay(1);//影响读取速度
      String  comdata = Serial.readString();
       // Serial.print("Serial.readString:"); 
       // Serial.println(comdata);
      comdata = "";
      sendMeg(phonenum_call,comdata);//给15147300333  发送信息
      delay(5000);      
      }
    
}

  

你可能感兴趣的:(arduino (3) 控制sim900A发送短信)