Запустил на сабже программу позволяющую при помощи смсок включать и выключать определенные реле с подтверждением выполнения. Кроме того можно посмотреть какие реле включены в данный момент, если вдруг запамятовали. Система так же предупреждает о включении и перезапуске в случае зависания или потери связи (на предмет чего периодически пингует модуль). Еще она информирует владельца о срабатывании различных датчиков, о чем в видео не показано. Принимает команды только от конкретного номера (или номеров), что исключает доступ извне. Можно использовать для охранной системы, удаленного управления чем угодно (с учетом инертности в несколько секунд), сборе информации и так далее. В целом шилд понравился, в отличии от NEOWAY запускается сразу без бубнов и работает стабильно даже от питания UNO. Если же обеспечить отдельное питание в районе 2А, то проблем не будет вообще, наверное. Немного инертен, команды выполняются от 0,5 до 10 сек, но общение посредством СМС и не рассчитано на мгновенную реакцию. Минусы: цена и размер. К использованию рекомендую.
Когда то лет 10 назад делал такие штучки на Асме и Тини 2313. В качестве ГСМ модуля использовал старые "Семёны-35" (Siemens C/S/M 35). Ну а так да ГСМ шилд брал по 1000 руб правда до скачка Доллара. А М590 не работает?
Доброго времени суток. А как скажите реализовали "сравнение" .. через switch ( sms_ka ) case "текст_сообщения" ??? Или if' ами баловались. Потому, что char s[] = "текст_смс"; кейс, как-то не очень работает с массивами
Думаю можно и так и так. Но для If/else релюх многовато.Можно дёргать из массива определённый символ(ы) и далее Switch/case.Можно сравнивать строки с исходной-"нулевой" получать число и далее снова Switch/case. Как автор сделал я не знаю.
Если варантов немного, как тут, то можно switch, если десятки, то надо придумывать текстовый массив с командами и ответами, что тоже не сложно.
Очень интересно, не поделитесь кодом? У меня только вот такой работает, нужна смс розетка для управления Wi-Fi станции, и защиты от грозы посредством выключения из розетки. Код (C++): #include <SoftwareSerial.h> SoftwareSerial gprsSerial(2, 3); int powerGSM = 6; // Пин включения GSM int unit1 = 8; // Пин включения реле №1 void setup() { digitalWrite(powerGSM, HIGH); // Включаю GSM модуль delay(1000); digitalWrite(powerGSM, LOW); delay(5000); gprsSerial.begin(19200); delay(300); pinMode(unit1, OUTPUT); // Настраиваем приём сообщений с других устройств // Между командами даём время на их обработку gprsSerial.print("AT+CMGF=1\r"); delay(300); gprsSerial.print("AT+IFC=1, 1\r"); delay(300); gprsSerial.print("AT+CPBS=\"SM\"\r"); delay(300); gprsSerial.print("AT+CNMI=1,2,2,1,0\r"); delay(500); } String currStr = ""; // Переменная принимает значение True, если текущая строка является сообщением boolean isStringMessage = false; void loop() { if (!gprsSerial.available()) return; char currSymb = gprsSerial.read(); if ('\r' == currSymb) { if (isStringMessage) { //если текущая строка - SMS-сообщение, //отреагируем на него соответствующим образом if (!currStr.compareTo("On")) { digitalWrite(unit1, HIGH); gprsSerial.println("AT + CMGS = \"+79XXXXXXXX\""); delay(100); gprsSerial.println("Relay is On"); delay(100); gprsSerial.println((char)26); } else if (!currStr.compareTo("Off")) { digitalWrite(unit1, LOW); gprsSerial.println("AT + CMGS = \"+79XXXXXXXX\""); delay(100); gprsSerial.println("Relay is Off"); delay(100); gprsSerial.println((char)26); } isStringMessage = false; } else { if (currStr.startsWith("+CMT")) { //если текущая строка начинается с "+CMT", //то следующая строка является сообщением isStringMessage = true; } } currStr = ""; } else if ('\n' != currSymb) { currStr += String(currSymb); } }