не работает? Neoway m590

Potok11
Offline
Зарегистрирован: 14.11.2017

Short Circuit пишет:

4В нужно подавать. не верьте китайцам, что 5В через диод.

Спасибо, попробую поставить стабилизатор напряжения на вход неовея. 

А не подскажите почему у меня происходит перезагрузка ардуинки, когда она питается от БП, а я подключаю к ней ноутбук по USB. Ноут в тот момент работает от батареи? Это не особо мешает, просто интересно почему так происходит. 

b707
Offline
Зарегистрирован: 26.05.2017

Potok11 пишет:

[

А не подскажите почему у меня происходит перезагрузка ардуинки, когда она питается от БП, а я подключаю к ней ноутбук по USB.

Сериал монитор открываете на ноуте?

Potok11
Offline
Зарегистрирован: 14.11.2017

b707 пишет:

Potok11 пишет:

[

А не подскажите почему у меня происходит перезагрузка ардуинки, когда она питается от БП, а я подключаю к ней ноутбук по USB.

Сериал монитор открываете на ноуте?

Да, именно для этого и подключаюсь

Potok11
Offline
Зарегистрирован: 14.11.2017

b707 пишет:

Potok11 пишет:

[

А не подскажите почему у меня происходит перезагрузка ардуинки, когда она питается от БП, а я подключаю к ней ноутбук по USB.

Сериал монитор открываете на ноуте?

Да, именно для этого и подключаюсь

b707
Offline
Зарегистрирован: 26.05.2017

При запуске Сериал-монитора происходит ресет ардуины. Всегда. Не только на вашем ноуте, а на других компах тоже. Это штатное поведение.

dark_angel411
Offline
Зарегистрирован: 13.08.2015

Помогите с моулем M590 На АТ команды отвичает но когда на него звониш в не зоны  запитан 18650 подключён лчерез usb ttl конвертер. Диод выкинул  поставил електроли по питанию. Но всети не появляетса на команду AT+CREG?  отвичает +CREG: 2,3 пин с симки снят. Операторов видит. Потрибление 0,2А - 0,03А то  что видел максимум. 

 

 

dark_angel411
Offline
Зарегистрирован: 13.08.2015

Разобралса заменил SIM - ку и всё заработало  

Skaballanovich
Offline
Зарегистрирован: 14.02.2018

Поделюсь своим опытом использования М590.
По-работе необходимо было сделать реле времени, управляемое с помощью GSM-модуля. Использовал NEOWAY M590. Блок питания 12 В 1 А. Питание на модуль - 5 В, понижал от БП с помощью LM7805. Мозги - Arduino Pro Mini. Плата на которой все это распаивал своя, не из набора модуля. Сделал 20 штук. Больше года работают в щитках автоматики на улице. Сбои бывают редко и только лишь в местах плохой связи, далеко от вышек, в низинах. Приходилось перезапускать в ручном режиме. Сделал автоматическую проверку через каждые полчаса с принудительной перезагрузкой в случае потери связи или зависания.

yarus
Offline
Зарегистрирован: 17.06.2017

У меня вот какая проблема: модуль м590е включается, стартует, а на AT-команды отвечает не на все.

Конкретно не хочет работать с симками и сетями: при вводе команд, связаных с симкой выдает ошибку, на команду AT+CSQ выдает 99,99; на at+cpas (если не ошибаюсь), вместо вразумительных ответов (0, 2, ...) выдает 1 (то, чего в описании нет)... Пробовал с 4 симками - результат один - никакой. Для экперимента вставлял те же симки в модуль sim900 и они все работали. Кто подскажет как с этим бороться?

Питание модуля пробовал от БП планшета (5в 2А) и от 2х параллельных аккумуляторов 18650 на 3400мач каждый. Подвес параллельно танталу емкости 1000мкф*16в не помог.

VLeshka
Offline
Зарегистрирован: 13.11.2017

yarus пишет:

на at+cpas (если не ошибаюсь), вместо вразумительных ответов (0, 2, ...) выдает 1 (то, чего в описании нет)...

такое  Neoway m590 выдаёт, когда он не смог инициализироваться.

Такое можно получить и на моём исправном Neoway m590, например, когда сразу после включения хочу прочитать данные о сим-карте; чтобы такое не было, надо выжидать паузу в несколько секунд.

yarus
Offline
Зарегистрирован: 17.06.2017

Все дело в том, что это мы видим и через час работы...

А как насчет всего остального???

Skaballanovich
Offline
Зарегистрирован: 14.02.2018

Явно нет связи симкарты с модулем. Попробуйте зачистить контакты лотка симкарты и на самой симкарте.

yarus
Offline
Зарегистрирован: 17.06.2017

А почему сети не видит?! Их-то он должен видеть и без симки!

Я же уже писал, что на все запросы, связанные с сетями и симкой он отвечает "ERROR"

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

Прошу помощи

скейтч

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); 

byte led = 13;

void setup() {
  delay(2000);  
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  Serial.begin(9600);  
  mySerial.begin(9600);
  Serial.println("GSM NEOWAY promote site istarik.ru");
  Serial.println();
  Serial.println("Turn on AOH:");
  mySerial.println("AT+CLIP=1");  //включить АОН
  delay(300);
  Serial.println("Text format sms:");
  mySerial.println("AT+CMGF=1"); // текстовый формат SMS
  delay(300);
  Serial.println("Mode GSM:");
  mySerial.println("AT+CSCS=\"GSM\"");  // кодировка текста - GSM
  delay(300);
  Serial.println("SMS to terminal:");
  mySerial.println("AT+CNMI=2,2,0,0,0"); // вывод смс в консоль
  delay(300);
  
}

void loop() 
{
 if(mySerial.available()) //если модуль что-то послал
  {  
    char ch = ' ';
    String val = "";
    
    while(mySerial.available()) 
     {  
       ch = mySerial.read();
       val += char(ch); //собираем принятые символы в строку
       delay(3);
     }

    Serial.print("Neo send> ");
    Serial.println(val);
    
    if(val.indexOf("+CMT") > -1) //если есть входящее sms
     { 
      if(val.indexOf("money") > -1) // смотрим, что за команда
       {  
         delay(3000);
         mySerial.println("AT+CUSD=1,\"#102#\"");
       }     
     } 


    if(val.indexOf("+CUSD") > -1) //если есть входящее sms
     { 
      if(val.indexOf("Balance") > -1) // смотрим, что за команда
       {  
         delay(3000);
       
         val = val.substring(val.indexOf("Balance"),val.indexOf("r")); 
         sms(String(val), String("+79111111111")); // ВПИШИТЕ ВАШ НОМЕР
       }     
     }         
  }
}


void sms(String text, String phone)  //отправка СМС с балансом модема
{
  Serial.println("Start SMS send");
  mySerial.println("AT+CMGS=\"" + phone + "\"");
  delay(500);
  mySerial.print(text);
  delay(500);
  mySerial.print((char)26);
  delay(500);
  Serial.println("SMS send OK");
  delay(2000);
}

Должен отработать так - на посылку смс с указанного номера на модем со словом money должен в ответ прислать каков баланс на симке модема

что бы не пробовал

идет вот такое или похожее

Neo send> AT+CUSD=1,"#102#"

Neo send>
+CUSD: 0,"??????: ????? 1?. ??????? ?? ??: ??? ?? 2 ???. ?????????:##960",72

Оператор "Мотив" у него USSD *102#
 

b707
Offline
Зарегистрирован: 26.05.2017

В USSD запросах и ответах своя кодировка, эти сообщения надо сначала раскодировать. Код в инете есть, ищите

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

удивительное дело, но порой опсос возвращает в транслите, порой идут знаки "??????"

у опсос Мотив есть USSD запрос поддержки транслита *100*1# но особо ничего не дало

Борьба окончилась тем, что вылавливаю цифры баланса

Но есть гараздо серьезнее беда - попробую описать...

Опросил баланс и отправляю смс на свой номер с ответом баланса - и идет трижды отправка смс :(

и на других примерах также выполнение через SoftwareSerial приводит к нескольким исполнениям в терминал

все перепробовал - ничего не помагает - поможете?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

что бы не мучаться, я бы рекомендовал всегда в UDF получать данные, да, сложнее запрограммировать, но всегда работает корректно.

b707
Offline
Зарегистрирован: 26.05.2017

vworld пишет:

Опросил баланс и отправляю смс на свой номер с ответом баланса - и идет трижды отправка смс :(

и на других примерах также выполнение через SoftwareSerial приводит к нескольким исполнениям в терминал

все перепробовал - ничего не помагает - поможете?

В чудеса не верю. Если приходят 3 СМС - значит три раза отправляете, других вариантов нет.

показывайте код.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011
#include <SoftwareSerial.h>                     // Библиотека програмной реализации обмена по UART-протоколу
SoftwareSerial SIM800(2, 3);                    // RX, TX

String _response = "";                          // Переменная для хранения ответа модуля
void setup() {
  Serial.begin(9600);                           // Скорость обмена данными с компьютером
  SIM800.begin(9600);                           // Скорость обмена данными с модемом
  Serial.println("Start!");

  sendATCommand("AT", true);                    // Отправили AT для настройки скорости обмена данными

  // Команды настройки модема при каждом запуске
  //_response = sendATCommand("AT+CLIP=1", true);  // Включаем АОН
  //_response = sendATCommand("AT+DDET=1", true);  // Включаем DTMF
  //_response = sendATCommand("AT+CMGF=1", true);  // Включаем текстовый режим SMS (Text mode)
  _response = sendATCommand("AT+CUSD=1,\"*102#\"", true); // Здесь необходимо указать свой USSD-запрос
}

String sendATCommand(String cmd, bool waiting) {
  String _resp = "";                            // Переменная для хранения результата
  Serial.println(cmd);                          // Дублируем команду в монитор порта
  SIM800.println(cmd);                          // Отправляем команду модулю
  if (waiting) {                                // Если необходимо дождаться ответа...
    _resp = waitResponse();                     // ... ждем, когда будет передан ответ
    // Если Echo Mode выключен (ATE0), то эти 3 строки можно закомментировать
    if (_resp.startsWith(cmd)) {                // Убираем из ответа дублирующуюся команду
      _resp = _resp.substring(_resp.indexOf("\r", cmd.length()) + 2);
    }
    Serial.println(_resp);                      // Дублируем ответ в монитор порта
  }
  return _resp;                                 // Возвращаем результат. Пусто, если проблема
}

String waitResponse() {                         // Функция ожидания ответа и возврата полученного результата
  String _resp = "";                            // Переменная для хранения результата
  long _timeout = millis() + 10000;             // Переменная для отслеживания таймаута (10 секунд)
  while (!SIM800.available() && millis() < _timeout)  {}; // Ждем ответа 10 секунд, если пришел ответ или наступил таймаут, то...
  if (SIM800.available()) {                     // Если есть, что считывать...
    _resp = SIM800.readString();                // ... считываем и запоминаем
  }
  else {                                        // Если пришел таймаут, то...
    Serial.println("Timeout...");               // ... оповещаем об этом и...
  }
  return _resp;                                 // ... возвращаем результат. Пусто, если проблема
}

void loop() {
  if (SIM800.available())   {                   // Если модем, что-то отправил...
    _response = waitResponse();                 // Получаем ответ от модема для анализа
    _response.trim();                           // Убираем лишние пробелы в начале и конце
    Serial.println(_response);                  // Если нужно выводим в монитор порта
    //....
    if (_response.startsWith("+CUSD:")) {       // Пришло уведомление о USSD-ответе
      if (_response.indexOf("\"") > -1) {       // Если ответ содержит кавычки, значит есть сообщение (предохранитель от "пустых" USSD-ответов)
        String msgBalance = _response.substring(_response.indexOf("\"") + 2);  // Получаем непосредственно текст
        msgBalance = msgBalance.substring(0, msgBalance.indexOf("\""));
        Serial.println("USSD: " + msgBalance);  // Выводим полученный USSD-ответ
        float balance = getFloatFromString(msgBalance);       // Извлекаем информацию о балансе
        Serial.println("\r\nBalance: " + (String)balance );   // Выводим информацию о балансе
        sendSMS("+792211111111", (String)balance);
      }
    }
  }
  if (Serial.available())  {                    // Ожидаем команды по Serial...
    SIM800.write(Serial.read());                // ...и отправляем полученную команду модему
  };
}

void sendSMS(String phone, String message)
{
  String _result = "";
  sendATCommand("AT+CMGF=1", true);             // Включаем текстовый режима SMS (Text mode)
  sendATCommand("AT+CMGS=\"" + phone + "\"", true); // Переходим в режим ввода текстового сообщения
  _result = sendATCommand(message + (String)((char)26), true); // После текста отправляем перенос строки и Ctrl+Z
}

float getFloatFromString(String str) {            // Функция извлечения цифр из сообщения - для парсинга баланса из USSD-запроса
  bool   flag     = false;
  String result   = "";
  str.replace(",", ".");                          // Если в качестве разделителя десятичных используется запятая - меняем её на точку.
  for (int i = 0; i < str.length(); i++) {
    if (isDigit(str[i]) || (str[i] == (char)46 && flag)) {        // Если начинается группа цифр (при этом, на точку без цифр не обращаем внимания),
      if (result == "" && i > 0 && (String)str[i - 1] == "-") {   // Нельзя забывать, что баланс может быть отрицательным
        result += "-";                            // Добавляем знак в начале
      }
      result += str[i];                           // начинаем собирать их вместе
      if (!flag) flag = true;                     // Выставляем флаг, который указывает на то, что сборка числа началась.
    }
    else  {                                       // Если цифры закончились и флаг говорит о том, что сборка уже была,
      if (str[i] != (char)32) {                   // Если порядок числа отделен пробелом - игнорируем его, иначе...
        if (flag) break;                          // ...считаем, что все.
      }
    }
  }
  return result.toFloat();                        // Возвращаем полученное число.
}

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

после или перед 60 строкой очистить буфер приема _response

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

делаю следующей строкой

String _response = "";

скейтч не отрабатывает

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

vworld пишет:

делаю следующей строкой

String _response = "";

скейтч не отрабатывает

без слова String

вы вообще с областью видимости переменных дружите?

Upd: лучше даже до 60 строки очистить буфер.

b707
Offline
Зарегистрирован: 26.05.2017

vworld пишет:

делаю следующей строкой

String _response = "";

скейтч не отрабатывает

где делаете? - укажите номер строки. В скетче не нашел.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011
#include <SoftwareSerial.h>                     // Библиотека програмной реализации обмена по UART-протоколу
SoftwareSerial SIM800(2, 3);                    // RX, TX

String _response = "";                          // Переменная для хранения ответа модуля
void setup() {
  Serial.begin(9600);                           // Скорость обмена данными с компьютером
  SIM800.begin(9600);                           // Скорость обмена данными с модемом
  Serial.println("Start!");

  sendATCommand("AT", true);                    // Отправили AT для настройки скорости обмена данными

  // Команды настройки модема при каждом запуске
  //_response = sendATCommand("AT+CLIP=1", true);  // Включаем АОН
  //_response = sendATCommand("AT+DDET=1", true);  // Включаем DTMF
  //_response = sendATCommand("AT+CMGF=1", true);  // Включаем текстовый режим SMS (Text mode)
  _response = sendATCommand("AT+CUSD=1,\"*102#\"", true); // Здесь необходимо указать свой USSD-запрос
}

String sendATCommand(String cmd, bool waiting) {
  String _resp = "";                            // Переменная для хранения результата
  Serial.println(cmd);                          // Дублируем команду в монитор порта
  SIM800.println(cmd);                          // Отправляем команду модулю
  if (waiting) {                                // Если необходимо дождаться ответа...
    _resp = waitResponse();                     // ... ждем, когда будет передан ответ
    // Если Echo Mode выключен (ATE0), то эти 3 строки можно закомментировать
    if (_resp.startsWith(cmd)) {                // Убираем из ответа дублирующуюся команду
      _resp = _resp.substring(_resp.indexOf("\r", cmd.length()) + 2);
    }
    Serial.println(_resp);                      // Дублируем ответ в монитор порта
  }
  return _resp;                                 // Возвращаем результат. Пусто, если проблема
}

String waitResponse() {                         // Функция ожидания ответа и возврата полученного результата
  String _resp = "";                            // Переменная для хранения результата
  long _timeout = millis() + 10000;             // Переменная для отслеживания таймаута (10 секунд)
  while (!SIM800.available() && millis() < _timeout)  {}; // Ждем ответа 10 секунд, если пришел ответ или наступил таймаут, то...
  if (SIM800.available()) {                     // Если есть, что считывать...
    _resp = SIM800.readString();                // ... считываем и запоминаем
  }
  else {                                        // Если пришел таймаут, то...
    Serial.println("Timeout...");               // ... оповещаем об этом и...
  }
  return _resp;                                 // ... возвращаем результат. Пусто, если проблема
}

void loop() {
  if (SIM800.available())   {                   // Если модем, что-то отправил...
    _response = waitResponse();                 // Получаем ответ от модема для анализа
    _response.trim();                           // Убираем лишние пробелы в начале и конце
    Serial.println(_response);                  // Если нужно выводим в монитор порта
    //....
    if (_response.startsWith("+CUSD:")) {       // Пришло уведомление о USSD-ответе
      if (_response.indexOf("\"") > -1) {       // Если ответ содержит кавычки, значит есть сообщение (предохранитель от "пустых" USSD-ответов)
        String msgBalance = _response.substring(_response.indexOf("\"") + 2);  // Получаем непосредственно текст
        msgBalance = msgBalance.substring(0, msgBalance.indexOf("\""));
        Serial.println("USSD: " + msgBalance);  // Выводим полученный USSD-ответ
        float balance = getFloatFromString(msgBalance);       // Извлекаем информацию о балансе
        Serial.println("\r\nBalance: " + (String)balance );   // Выводим информацию о балансе
        sendSMS("+79221111111", (String)balance);
        String _response = "";
      }
    }
  }
  if (Serial.available())  {                    // Ожидаем команды по Serial...
    SIM800.write(Serial.read());                // ...и отправляем полученную команду модему
  };
}

void sendSMS(String phone, String message)
{
  String _result = "";
  sendATCommand("AT+CMGF=1", true);             // Включаем текстовый режима SMS (Text mode)
  sendATCommand("AT+CMGS=\"" + phone + "\"", true); // Переходим в режим ввода текстового сообщения
  _result = sendATCommand(message + (String)((char)26), true); // После текста отправляем перенос строки и Ctrl+Z
}

float getFloatFromString(String str) {            // Функция извлечения цифр из сообщения - для парсинга баланса из USSD-запроса
  bool   flag     = false;
  String result   = "";
  str.replace(",", ".");                          // Если в качестве разделителя десятичных используется запятая - меняем её на точку.
  for (int i = 0; i < str.length(); i++) {
    if (isDigit(str[i]) || (str[i] == (char)46 && flag)) {        // Если начинается группа цифр (при этом, на точку без цифр не обращаем внимания),
      if (result == "" && i > 0 && (String)str[i - 1] == "-") {   // Нельзя забывать, что баланс может быть отрицательным
        result += "-";                            // Добавляем знак в начале
      }
      result += str[i];                           // начинаем собирать их вместе
      if (!flag) flag = true;                     // Выставляем флаг, который указывает на то, что сборка числа началась.
    }
    else  {                                       // Если цифры закончились и флаг говорит о том, что сборка уже была,
      if (str[i] != (char)32) {                   // Если порядок числа отделен пробелом - игнорируем его, иначе...
        if (flag) break;                          // ...считаем, что все.
      }
    }
  }
  return result.toFloat();                        // Возвращаем полученное число.
}

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

и? работает? три СМСки уже не шлет?

и кстати я писал - поменяйте 60 и 61 строку

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

andycat пишет:

и? работает? три СМСки уже не шлет?

и кстати я писал - поменяйте 60 и 61 строку

не важно в какой строке указано String _response = "";

код не отрабатывает отправку

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

vworld пишет:

andycat пишет:

и? работает? три СМСки уже не шлет?

и кстати я писал - поменяйте 60 и 61 строку

не важно в какой строке указано String _response = "";

код не отрабатывает отправку

беда :(

значит нужно глубже разбираться (я тут туповат),

но мне кажеться или вы читать не умеете или специально троллите,

писали же что строка должна без слова String, а вы как упрямец воткнули целиком.

во вторых если я правильно понял код у вас запрос баланса сразу после включения, соотвественно при каждом нажатии "Загрузить" в Arduino IDE МК сбрасывается и шлет СМС, если ошибкак компиляции, сброс все равно происходит. Я например вчера таким образом заказчику вместо одной СМС послал 3 штуки по роуминговым тарифам из ЦФО в Калининград.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

_response = "";

и это тоже не помогает

я не троллю, просто не силен в программировании

код отрабатывает когда запускаю монитор порта - посомтреть, как идет исполнение

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

vworld пишет:

_response = "";

и это тоже не помогает

я не троллю, просто не силен в программировании

код отрабатывает когда запускаю монитор порта - посомтреть, как идет исполнение

А запускаете сразу после компиляции? :)

вот и ответ - при запуске монитора аналогично МК перезапускается.

Попробуйте при запущенном окне монитора нажать "Загрузить" и посмотреть что получится.

b707
Offline
Зарегистрирован: 26.05.2017

vworld пишет:

код отрабатывает когда запускаю монитор порта - посомтреть, как идет исполнение

а можно подробнее, что значит "не отрабатывает" без монитора порта и как он отрабатывает с монитором.

Непонятно.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

не отрабатывает

вот что в мониторе порта

Start!
AT

OK

AT+CUSD=1,"*102#"

OK

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

А дальше должно быть сообщение от оператора, или вы даже не подождали секунд 30

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

а дальше ничего нет, и даже если подождать более 30 секунд

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

как говорится чудес не бывает, другую команду пробовали? *100# *105#

или модем с проблемой (как например у меня с А6 было - аналогично баланс не давал),

или оператор тупо ничего не возвращает.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

пробовал другие коды USSD - нет эффекта

НО если убрать строку _response = "";

все работает, НО несколько раз исполняется отправка смс

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

vworld пишет:

если убрать строку _response = "";

при включенном мониторе, нажать "Загрузить" - три раза отправится СМС?

покажите вывод в монитор порта.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

видимо друзья переклинило опсос от моих запросов - не отвечает

а скейтч взаимодействия с модулем - звонок на модуль и блин - отрабатывает

NST
Offline
Зарегистрирован: 04.06.2016

Добрый день! Столкнулся с проблемой: M590E (rev.1.30e) видит SIM, но не регистрируется в сети и не потребляет больше 0,14 А. Перечитал всю тему, гуглил, бесполезно.

Ответы из гипертерминала:

  • Регистрация в сети (+CREG: 0,4 т.е статус неизвестен, иногда бывает 0,3 но никогда 0,2 или 0,1)
  • Сигнал (+CSQ: 20,1 периодически меняется)
  • Список сетей (+COPS: (1,"MegaFon RUS","MegaFon ","25002"),(1,"MOTIV","MOTIV","25020"),(1,"Beeline","Beeline","25099"),(1,"MTS-RUS","MTS","25001") как по мне это главный признак что плата не труп).
  • Информация об операторе (+COPS: 2 других вариантов не было).
  • Проверка CCID SIM-карты (показывает 18 цифр).
  • Попытка позвонить на другой тел. (ответ NO CARRIER).

Что проверял:

  • Менял БП на разные, всегда использовал мощные на 5В 2-3А, подпаивался к контактам на плате толстыми проводами. Плата никогда не потребляла больше 0,14 А (даже при поиске сети по команде AT+COPS=? хотя список сетей в итоге показывает). Перезагрузки из-за нехватки питания не наблюдал.
  • Менял симки (3 разных оператора), все заведомо рабочие, ничего не меняется.
  • Добавлял конденсатор 1000 мкФ по питанию, без разницы. На 2 пин VBAT приходит как должно 4,5 В.
  • Припаивал провод как антенну, пропаивал все контакты, прозванивал контакты до SIM, проблем нет. Питание SIM 1,8 В.

Фото платы:
(крепление на слоте SIM было отломано, но прижим проверял, нормально).

UPD. Приобрел SIM800L, заработал с первого раза. +CREG выдает 0,1. +COPS: 0,0,"MegaFon", звонки проходят. Либо M590E попался бракованным, либо я его повредил при пайке.

b707
Offline
Зарегистрирован: 26.05.2017

NST пишет:

Либо M590E попался бракованным, либо я его повредил при пайке.

либо на плате непропай или сопля. Я бы начал с проверки всех соединений...

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

NST пишет:

Добрый день! Столкнулся с проблемой: M590E (rev.1.30e) видит SIM, но не регистрируется в сети и не потребляет больше 0,14 А. Перечитал всю тему, гуглил, бесполезно.

 да вы не гуглили...    здесь я неединижды писал - китайцы шлют битые 590.. короткое замыкание по питанию. точка..

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

NST пишет:

Добрый день! Столкнулся с проблемой: M590E (rev.1.30e) видит SIM, но не регистрируется в сети и не потребляет больше 0,14 А. Перечитал всю тему, гуглил, бесполезно.

 да вы не гуглили...    здесь я неединижды писал - китайцы шлют битые 590.. короткое замыкание по питанию. точка..

VLeshka
Offline
Зарегистрирован: 13.11.2017

Short Circuit пишет:

оффтоп: вы - тот самый, который с ixbt?

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

я здесь писал..

NST
Offline
Зарегистрирован: 04.06.2016

b707 пишет:
либо на плате непропай или сопля. Я бы начал с проверки всех соединений...
Как я уже писал:
NST пишет:
Припаивал провод как антенну, пропаивал все контакты, прозванивал контакты до SIM, проблем нет. Питание SIM 1,8 В.
Проверил и перепаял еще разок, не помогло.

Short Circuit пишет:
да вы не гуглили...    здесь я неединижды писал - китайцы шлют битые 590.. короткое замыкание по питанию. точка..
Гуглил и прекрасно понимал, что риск получить бракованный модуль высокий, раз китайцы выпаивают их с БУ устройств. Попадалась даже фотка со снятой защитой модуля, так там половина деталий не на своих местах из-за перегрева.

Но КЗ по питанию означет полный "труп", не так ли? А в моем случае он выводит список сетей и данные симки.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

МОЖЕТЕ СНЯТЬ КРЫШКУ И ПОПРАВИТЬ кз по питаннию. думаю разберетесь.

sjakjajsak23
Offline
Зарегистрирован: 14.11.2018

Ктото сталкивался с подобной проблемой:

ADT - звонит нормально

но при чтении/удалении смс: +CMS ERROR: memory failure, смски также не приходят.

На телефоне на сим-карту смс приходят, на модуле - нет

 

at+getvers
1103_C6C30000_V0130d

OK
at+CSQ
+CSQ: 16,3
AT+CMGL
+CMS ERROR: memory failure
AT+CMGR=1
+CMS ERROR: memory failure
AT+CMGD=0,4
+CMS ERROR: memory failure
AT+CPMS=?
+CPMS: ("MT","ME","SM","BM"),("MT","ME","SM"),("MT","ME","SM","BM")

OK
AT+CPMS?
+CMS ERROR: operation not supported
AT+CPMS="SM","SM","SM"
+CMS ERROR: operation not supported

 

mod3m
Offline
Зарегистрирован: 17.05.2016

Short Circuit, приветствую. а есть идеи почему так.

собрал модуль стандартный, все без особых плясок подключилось. подпаял кондер на вход, поставил 12в блок 2а, через лмку выставил 4.4в (на 4.3 и ниже упорно в сети регистрироваться не хотел), через резисторы и диод развел рх тх, залил скетч, гонял пару дней на макетках (словил пару зависаний по смс, при чем модуль по звонку был доступен), через неделю, после очередного ребута по питанию, модуль сеть ловить перестал, диод горит просто красным (до этого мигал). Начал копать, почему так. думал уже спалил может, упорно выдавал +CSQ: 99.99, +CPAS: 1 по всем симптомам, как у парня с 5ой страницы этой темы и не хотел не в какую региться.

Ну вот сегодня в итоге, докрутил лмку, что начал работать на 5.2в. Из обвеске кондер на входе по питанию 10в 1500 uf. На выводе vbat мерю - 3.9в (с 3.8-3.7, не региться собственно). Китайская магия?:)

да, на 4.4в плата вобще холодная, не грелась асболютно. выше 4.7 на лмке когда выворачиваешь - теплая. 38 градусов пирометр в пике показывает.

Emer
Offline
Зарегистрирован: 02.11.2016

Личные наблюдения про модуль:

Те, кто пишет, что ему надо 2А на вход, тоже не все даташит конечно читали. Это только когда кондер на 10. Установка 1000 мкф, снижает пиковое потребление до 0.6, по даташиту. Опытно проверено. Подтверждено.

Второе. Атенна в комплекте, проводок  платой,неизвестно как рассчитана. В 80% случаях у меня модем с антенной теряется. Без нее-только при сильных провалах питания. И то, из-за макетных проводов, которые тонкие.

 

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);
void setup() {
  Serial.begin(9600);
  Serial.println("Start!");
  SIM800.begin(9600); 
  SIM800.println("AT");
}

void loop() {
  if (SIM800.available()) 
    Serial.write(SIM800.read()); 
  if (Serial.available()) 
    SIM800.write(Serial.read());
}

В мониторе порта:

Start!
B⸮B⸮B⸮⸮B⸮B⸮B⸮B⸮B⸮

На RX ставила делитель из резисторов, результат  тот же. В чем дело может быть?

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Разобралась. Работает на скорости 115200