- Примерная схема
Код: Выделить всё
#include <SoftwareSerial.h>
#define LEDPOISK 8 // индикатор поиска сети
#define LEDSIGNAL 12 // индикатор нагрузки
#define TELON1 "79999999991" // 1 номен телефона для команды ВКЛ
#define TELON2 "79999999992" // 2 номен телефона для команды ВКЛ
#define TELOFF1 "79111111111" // 1 номен телефона для команды ВЫКЛ
#define TELOFF2 "79111111112" // 2 номен телефона для команды ВЫКЛ
SoftwareSerial mySerial(10, 11);
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
delay(2000); //время на инициализацию модуля
Serial.println("GSM NEOWAY");
pinMode(LEDPOISK,OUTPUT);
pinMode(LEDSIGNAL, OUTPUT);
delay(2000); // нужно дождатся включения модема и соединения с сетью
while(1){ // ждем подключение модема к сети
mySerial.println("AT+COPS?");
if (mySerial.find ("+COPS: 0")) break;
digitalWrite(LEDPOISK, LOW); // мигаем светодиодом индикатор поиска сети
delay(50);
digitalWrite(LEDPOISK, HIGH);
delay(500);
}
digitalWrite(LEDPOISK, LOW); // выключаем индикатор поиска сети
Serial.println();
Serial.println("Turn on AOH:");
mySerial.println("AT+CLIP=1"); // включить АОН
delay(100);
// ПРИ СТАРТЕ, НА КАЖДУЮ КОМАНДУ ДОЛЖНО БЫТЬ ПОДТВЕРЖДЕНИЕ - ОК
}
void loop()
{
if(mySerial.available()) //если модуль что-то послал
{
char ch = ' ';
String val = "";
while(mySerial.available())
{
ch = mySerial.read();
val += char(ch); //собираем принятые символы в строку
delay(5);
}
Serial.print("Neo send> ");
Serial.println(val);
if(val.indexOf("RING") > -1) //если есть входящий вызов, то проверяем номер
{
if(val.indexOf(TELON1) > -1 || (TELON2) > -1) // НОМЕР ВКЛ, с которого Вы будете звонить на модуль
{
Serial.println("Call my phone 1");
mySerial.println("ATH"); //разрываем связь
Serial.println("Disconnection");
delay(3000);
digitalWrite( LEDSIGNAL, HIGH ); //ВКЛ светодиод нагрузки
Serial.println("ВКЛ светодиод");
}
if(val.indexOf(TELOFF1) > -1 || (TELOFF2) > -1) // НОМЕР ВЫКЛ, с которого Вы будете звонить на модуль
{
Serial.println("Call my phone 2");
mySerial.println("ATH"); //разрываем связь
Serial.println("Disconnection");
delay(3000);
digitalWrite( LEDSIGNAL, LOW ); //ВЫКЛ светодиод нагрузки
Serial.println("ВЫКЛ светодиод");
}
else //Если чужой номер
{
Serial.println("NO MI TEL");
mySerial.println("ATH"); //разрываем связь
}
}
}
}
При звонке с одного номера -
TELON1
или TELON2
включается нагрузка, а с другого - TELOFF1
или TELOFF2
выключается. К пин 8 подключен светодиод - индикатор поиска сети.