GSM/GPRS модем NEOWAY M590, звоним, принимаем звонки, отправляем SMS, код из видео

примеры из видео, что по этой ссылки

Примеры не тестированы, не является готовым проектом и написаны для демонстрации работы с модемом.

для общения с модемом через Arduino UNO, в неё был залит измененный скетч из примеров работы с библиотекой SoftwareSerial.h под названием «SoftwareSerialExample»

#include <SoftwareSerial.h>

SoftwareSerial mySerial(7, 8); // RX, TX

void setup(){  
  Serial.begin(9600);
  mySerial.begin(9600);   
}

void loop() {
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}


 

а этот пример звонит по событию

// звоним по событию
#include <SoftwareSerial.h>

SoftwareSerial gsm(7, 8); // RX, TX

void setup() {
  Serial.begin(9600);
  gsm.begin(9600);

  pinMode(6, INPUT_PULLUP);

}

void loop() {
   if(!digitalRead(6)){     // если нажали кнопку
      while(1){             // проверяем готовность модема
        gsm.println("AT+CPAS");
        if (gsm.find("0")) break;
        delay(100);  
      }
      gsm.println("ATD+79990000000;"); // звоним по указаному номеру
      delay(100);
      if (gsm.find("OK")) Serial.println("OK!");
      else Serial.println("error");
    } 

}

 

пример принимает звонки и инвертирует состояние 13 выхода (включает или выключает светодиод на плате)

// реагируем на звонок
#include <SoftwareSerial.h>

SoftwareSerial gsm(7, 8); // RX, TX

void setup() {
  Serial.begin(9600);
  gsm.begin(9600);

  pinMode(13, OUTPUT);
    
}

void loop() {
 
    if(gsm.find("RING")){                    // если нашли RING
      Serial.println("RING!");
      gsm.println("AT+CLIP=1");              // включаем АОН, 
            
      while(1){                              // в цикле
       if (gsm.find("79990000000")){         // ищим номер телефона, если нашли
         digitalWrite(13, !digitalRead(13)); // инвертируем 13 выход
         Serial.println("!!!");
         break;                              // и выходим
       }  
       else{                                 // иначе 
         gsm.println("AT+CPAS");             // спрашиваем состояние модема   
         delay(100);
         if (gsm.find("+CPAS: 0")) break;    // и если он в "готовности", выходим из цикла
       }                                     // если звонок в процессе, возвращает +CPAS: 3
      }                                      // и крутимся дальше
       
        gsm.println("AT+CLIP=0");            // выключаем АОН, 
        delay(100);
        gsm.println("ATH0");                 // сбрасываем вызов  
   
    }

}

 

а этот по событию отправляет SMS


// sms по собынию
#include <SoftwareSerial.h>

SoftwareSerial gsm(7, 8); // RX, TX

void setup() {
  Serial.begin(9600);
  gsm.begin(9600);

  pinMode(6, INPUT_PULLUP); 
 
  gsm.println("AT+CMGF=1");  
  delay(100);
  gsm.println("AT+CSCS=\"GSM\"");   
  delay(100);

}

void loop() {
   if(!digitalRead(6)){     // если нажали кнопку
      while(1){             // проверяем готовность модема
        gsm.println("AT+CPAS");
        if (gsm.find("0")) break;
        delay(100);  
      }
      gsm.println("AT+CMGS=\"+79990000000\""); // даем команду на отправку смс
      delay(100);
      gsm.print("analogPing A0:");  // отправляем текст
      gsm.print(analogRead(A0));    // и переменную со значением
      gsm.print((char)26);          // символ завершающий передачу
       Serial.println("ok");
    }
    
     while (gsm.available() > 0) {  // останавливаем программу и смотрим что ответили
    Serial.write(gsm.read()); 
  }

}

даташиты на модем Neoway M590 Hardware Design Manual V1.1  Neoway M590 AT Command Sets_V3.0