Скетч Sim 800l
- Войдите на сайт для отправки комментариев
Вс, 22/11/2020 - 21:59
Всем привет, что нужно дописать в этом скетче ,что бы модуль реагировал только на один номер телефона?
/*
Тестировалось на Arduino IDE 1.8.5
Дата тестирования 14.06.2019г.
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2); // Выводы SIM800L Tx & Rx подключены к выводам Arduino 3 и 2
char incomingByte;
String inputString;
int relay_1 = A0; // Вывод управления реле 1
int relay_2 = A1; // Вывод управления реле 2
void setup()
{
pinMode(relay_1, OUTPUT); // Установим вывод как выход
digitalWrite(relay_1, HIGH); // Устанавливаем высокий уровень
pinMode(relay_2, OUTPUT); // Установим вывод как выход
digitalWrite(relay_2, HIGH); // Устанавливаем высокий уровень
Serial.begin(9600);
mySerial.begin(9600);
while(!mySerial.available()){ // Зацикливаем и ждем инициализацию SIM800L
mySerial.println("AT"); // Отправка команды AT
delay(1000); // Пауза
Serial.println("Connecting…"); // Печатаем текст
}
Serial.println("Connected!"); // Печатаем текст
mySerial.println("AT+CMGF=1"); // Отправка команды AT+CMGF=1
delay(1000); // Пауза
mySerial.println("AT+CNMI=1,2,0,0,0"); // Отправка команды AT+CNMI=1,2,0,0,0
delay(1000); // Пауза
mySerial.println("AT+CMGL=\"REC UNREAD\"");
}
void loop()
{
if(mySerial.available()){ // Проверяем, если есть доступные данные
delay(100); // Пауза
while(mySerial.available()){ // Проверяем, есть ли еще данные.
incomingByte = mySerial.read(); // Считываем байт и записываем в переменную incomingByte
inputString += incomingByte; // Записываем считанный байт в массив inputString
}
delay(10); // Пауза
Serial.println(inputString); // Отправка в "Мониторинг порта" считанные данные
inputString.toUpperCase(); // Меняем все буквы на заглавные
if (inputString.indexOf("ON_1") > -1){ // Проверяем полученные данные, если ON_1 включаем реле 1
digitalWrite(relay_1, LOW);
sms(String("Relay 1 - ON"), String("+7xxxxxxxxxx"));} // Отправка SMS
if (inputString.indexOf("OFF_1") > -1){ // Проверяем полученные данные, если OFF_1 выклюем реле 1
digitalWrite(relay_1, HIGH);
sms(String("Relay 1 - OFF"), String("+7xxxxxxxxxx"));}// Отправка SMS
if (inputString.indexOf("ON_2") > -1){ // Проверяем полученные данные, если ON_2 включаем реле 2
digitalWrite(relay_2, LOW);
sms(String("Relay 2 - ON"), String("+7xxxxxxxxxx"));} // Отправка SMS
if (inputString.indexOf("OFF_2") > -1){ // Проверяем </code> <code>полученные</code> <code> данные, если OFF_2 выключаем реле 2
digitalWrite(relay_2, HIGH);
sms(String("Relay 2 - OFF"), String("+"));} // Отправка SMS
delay(50);
if (inputString.indexOf("OK") == -1){
mySerial.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);}
inputString = "";}
}
void sms(String text, String phone) // Процедура Отправка SMS
{
Serial.println("SMS send started");
mySerial.println("AT+CMGS=\"" + phone + "\"");
delay(500);
mySerial.print(text);
delay(500);
mySerial.print((char)26);
delay(500);
Serial.println("SMS send complete");
delay(2000);
}
что нужно дописать в этом скетче ,что бы модуль реагировал только на один номер телефона?
Нужно дописать сравнение номера абонента входящего вызова с "одним номером" и реагировать только если они совпали.