Neoway m590, ступор и т.п.

Тема в разделе "Arduino & Shields", создана пользователем matic, 4 янв 2020.

Метки:
  1. matic

    matic Нуб

    Доброго времени суток.
    Написал (ну как написал, где-то там, где-то тут, где-то сам) программу, типа "сигнализация".
    Arduino Mega 2560r3 + куча датчиков + neoway m590. Сам m590 такой:
    [​IMG]
    Не паял. В магазине продавался уже собранный, спаянный.
    Прога робит. Отсылает смс, при превышении установленных порогов датчиков; принимает команды "отключения/включения" геркона. Принимает по смс команды и адекватно реагирует (присылает: температуру, влажность, баланс на симке, обычный текст). При получении смс от меня выводит сообщение в монитор, мол получил от владельца.

    Проблема вот в чём, иногда он как будто впадает в ступор. Может работать 5, 10, 30 минут, может больше, а потом всё...
    В чём проявляется. Мои смс не детектит (в монитор не пишет), при отправке смс от сработавшего датчика пишет ERROR. Судя по монитору он ребутнуля (MODEM:STARTUP и +PBREADY). Сам при этом прозванивается, в мониторе RING есть. Подключил через uart, ждал час пока поймает ступор и напишет стартап и реди. Отправлял at+cmgs="+7нмер телефона". Ентер и ctrl+z, так же пишет ERROR (при первом подключении всё отсылал)
    1) Почему не детектит мои смс, а при отправке пишет "ERROR", хотя до ступора работает нормально?
    2) Можно его подопнуть (командами ребутнуть) если поймал ступор?
    P.S.: Извеняюсь за нубство(возможно), но сил моих больше нет
     
  2. parovoZZ

    parovoZZ Гуру

    Сбрасывай питание через ключ от МК.
     
  3. matic

    matic Нуб

    Код (C++):
    if (mySerial.available()) {Serial.println("-------------------Трассер начало");          //Если есть данные от GSM модуля
        comm=0;val="";delay(200);//Обнуляем переменную команд и строку val. Подождём, чтобы строка успела попасть в порт целиком раньше чем будет считана
        while (mySerial.available()) {      //Cохраняем входную строку в переменную val
                  soobshenie = mySerial.read();   //Читаем символы сообщения
                  val += char(soobshenie);  //Cобираем принятые символы в строку
                  delay(10);
                                    }TimePrint();Serial.println(val);//ТРАССИРОВКА СООБЩЕНИЙ
                                    Serial.println("-------------------Трассер Конец");
                                    if (val.indexOf("ERROR") > -1) {String valiferr=val;//Если модем сообщил ошибку, помещаем сообщение в временную переменную
                                                                     errmodem();//Функция перезагрузки модема
                                                                     val=valiferr;
                                                                    }
                                }
    Т.е. в функции ребута модема errmoedm() (которая пока что пуста)?
    Думал копать в сторону Arduino и юзал ребут двумя способами, один из которых watchdog, но оба варианта не помогли.
    Можно подробнее, пожалуйста?
     
  4. Airbus

    Airbus Радиохулиган Модератор

  5. matic

    matic Нуб

    Благодарю за ответ. Видел, читал, дело в том, что у меня на m590 нету пина boot и как следствие не могу использовать функции включения/выключения. Плата немного другая (на видео как у меня, но не пойму откуда идут провода с модема и куда). У меня есть пины I, T, R, U, K,G, которые расписали на одном сайте как:
    I — При поступлении входящего вызова на линии появляются импульсы с низким логическим уровнем длительностью 30 мс
    T — TX
    R — RX
    U — + напряжение питания 3,3 – 4,5В
    K — Включение модуля при соединении с землей
    G — Земля
    Как там написано пины K и G замкнуты джампером, без этого не стартует.
    И ещё, по ссылке, в коде, ожидание включения - команда +PBREADY, которая у меня в мотниторе Arduino и отдельно в Terminal'е v1.9b показывалась после MODEM:STARTUP, но дело в том что модем как будто висит. Звонок идёт, AT команда идёт, но не отправка, не принятие смс не происходит. При отправке только ERROR.
     
  6. parovoZZ

    parovoZZ Гуру

    а это не оно
     
  7. matic

    matic Нуб

    Хотите сказать что K - это и есть boot? И тогда получается можно использовать код выше через пин K подключенный к arduino?
    Ладно, но тогда, даже если сбросить модем, он будет говорить MODEM:STARTUP и +PBREADY и так же не реагировать (т.к. отдельно отключал его питание и включал обратно, результат - 0)