arduino (3) 控制sim900A發送短信


狗屎佳世通旗艦店,賣的什么破玩意sim900a芯片,不支持聯通卡,還生明模塊支持雙卡的

之前買的esp8266-07都是內存偷工減料

買的液體濁度傳感器給的原理圖也不給基本接線。

差評垃圾店,你敢賣就別怪我吐槽。耽誤我這么多時間。

 

問題

使用arduino nano板子以及其擴展板子經常因為電流不足短信無法正常工作

需要額外供電,l例如一個單獨的usb-ttl(5v)或者 220v-5v或220v-12v插在擴展板子供電

如果用arduino nano板子(店家不同質量不同)自帶供電 USB線很可能電流有限制

導致功率過低發不出短息

這個時候單獨用一個USB-ttl來個5V供電就解決了

 

1 只能發送英文

 

 

 

 

#include<SoftwareSerial.h>
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","msg to phion");//給15147300333  發送信息
// sendsim2("15529672865","ddd",softSerial1);
 delay(5000);
}

  

 

從單片機串口拿數據,然后轉發

32有各種各樣的問題

 

#include<SoftwareSerial.h>

#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);      
      }
    
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM