примеры из видео, что по этой ссылки
Примеры не тестированы, не является готовым проектом и написаны для демонстрации работы с модемом.
для общения с модемом через 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