Скетч 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); }
что нужно дописать в этом скетче ,что бы модуль реагировал только на один номер телефона?
Нужно дописать сравнение номера абонента входящего вызова с "одним номером" и реагировать только если они совпали.