Goouuu Tech IOT-GA6 не видит команды по смс
- Войдите на сайт для отправки комментариев
Пт, 16/11/2018 - 12:01
Доброго дня!
Я начинающий. Поэтому прошу сильно не пинать, так как спросить не у кого.
Решил собрать устройство для управления реле по смс. Нужно максимально просто, вкл/выкл, не более.
Нашел скетч для примера, переписал и поправил, но ничего не получается. Объявляю управляющий пин для реле, после заливки на этот пин приходит сигнал и реле сразу замыкается. Далее. Настроил gsm-модуль, подключил к arduino nano, в мониторе всё вижу, как включается модуль, как приходят смс, но реле не реагирует. Подсказали что нет функции парсинга смс. Как и куда её поставить? Подскажите что делаю не так? Буду благодарен за пример кода и объяснение что да как.
Пример кода:
#include <SoftwareSerial.h> SoftwareSerial mySerial(2,3); // (Rx,Tx > Tx,Rx) char incomingByte; String inputString; int relay = 13; // Выход для управления реле void setup() { pinMode(relay, OUTPUT); digitalWrite(relay, LOW); // Исходное состояние реле Serial.begin(9600); mySerial.begin(9600); while(!mySerial.available()){ mySerial.println("AT"); delay(1000); Serial.println("Connecting..."); } Serial.println("Connected!"); mySerial.println("AT+CMGF=1"); // Установка SMS в текстовый режим delay(1000); mySerial.println("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(); inputString += incomingByte; } delay(10); Serial.println(inputString); inputString.toUpperCase(); // включить или выключить реле if (inputString.indexOf("ON") > -1){ digitalWrite(relay, HIGH); } if (inputString.indexOf("OFF") > -1){ digitalWrite(relay, LOW); } delay(50); // Удалить сообщения и сохранить память if (inputString.indexOf("OK") == -1){ mySerial.println("AT+CMGDA=\"DEL ALL\""); delay(1000);} inputString = ""; } }
Программа всегда работает в точности так, как она написана. Но не всегда это совпадает с тем, как автор хотел ее написать.
Чтобы привести в соответствие одно с другим, существует такой процесс - отладка.
В процессе отладки мы выясняем, как именно работает программа, и пытаемся изменить ее поведение, если оно не отвечает нашим желаниям.
Т.е. один из основных моментов отладки - получение информации о том, как работает программа.
А у Вас всей диагностики - 3 строки, причем в процессе получения и обработки сообщения - вообще всего одна.
Выведите на печать хотя бы строку после приведения к верхнему регистру, а потом поставьте печать в обеих ветках проверки условия совпадения с "ON" и "OFF".
Я начинающий. Поэтому прошу сильно не пинать
Вот скажите, пожалуйста, а кого пинать, если не начинающих? Заслуженных ветеранов, что-ли?
Как начинающему, Вам надо радоваться, что Вас пинают - это Ваш шанс научиться! Гораздо хуже, когда игнорируют.
Я имел ввиду не так пинать, как некоторые. Типа "лошара! куда ты полез! выучи то, выучи это, только потом бери паяльник в руки!" Поверьте, таких "учителей" очень много )) Пинать в плане что, куда да как можно, даже нужно )) поэтому и прошу помочь да подсказать.
Программа всегда работает в точности так, как она написана. Но не всегда это совпадает с тем, как автор хотел ее написать.
Чтобы привести в соответствие одно с другим, существует такой процесс - отладка.
В процессе отладки мы выясняем, как именно работает программа, и пытаемся изменить ее поведение, если оно не отвечает нашим желаниям.
Т.е. один из основных моментов отладки - получение информации о том, как работает программа.
А у Вас всей диагностики - 3 строки, причем в процессе получения и обработки сообщения - вообще всего одна.
Выведите на печать хотя бы строку после приведения к верхнему регистру, а потом поставьте печать в обеих ветках проверки условия совпадения с "ON" и "OFF".
Тогда подскажите в какой последовательности должны идти команды.
Опираясь на мои неглубокие познания полагаю что сначала определяются пины для реле, потом устанавливается скорость для общения модуля и arduiono, затем на модуль отдаются команды для настройки, далее устанавливаются правила при получении смс-сообщений и выполнения команд. Полагаю что команды из смс дожны как-то выдергиваться, то есть парсинг. Следовательно "ON" и "OFF" должны распознаваться и включать или выключать реле. Всё верно я понял?
djkohr, знаете же, что всегда существует выбор, что дать человеку - "рыбу" или "удочку". От меня Вы можете получить только удочку. В данном случае - понимание того, как самостоятельно отлаживать программы. Если Вас это заинтересовало, то следует сначала сделать то, что я посоветовал, потом, если еще не сумели добиться желаемого, показать новый вариант кода и выводимый в монитор порта пртокол, и только потом задавать новые вопросы. IMHO нет смысла в новых вопросах, пока не найдены ответы на старые.
djkohr, знаете же, что всегда существует выбор, что дать человеку - "рыбу" или "удочку". От меня Вы можете получить только удочку. В данном случае - понимание того, как самостоятельно отлаживать программы. Если Вас это заинтересовало, то следует сначала сделать то, что я посоветовал, потом, если еще не сумели добиться желаемого, показать новый вариант кода и выводимый в монитор порта пртокол, и только потом задавать новые вопросы. IMHO нет смысла в новых вопросах, пока не найдены ответы на старые.
Спасибо конено за наставления, но я по большей части электронику собираю, чем программлю. Поэтому и прошу добрых людей научить и объяснить.
Спасибо конено за наставления, но я по большей части электронику собираю, чем программлю. Поэтому и прошу добрых людей научить и объяснить.
так вам же обьяснили в сообщении #1, что нужно сделать. Непонятно? - переспросите. Сделали? - покажите результат.
А вы вместо этого пускаетесь в рассуждения о программе. Это никому не интересно.