Не работает автономно

Тема в разделе "Arduino & Shields", создана пользователем Tony Sexton, 26 мар 2020.

  1. Tony Sexton

    Tony Sexton Нуб

    Здравствуйте товарищи! Нигде не могу найти решения задачи.

    Собрал простую схемку на ардуино нано, (управление питанием реле по GSM каналу), залил скаченный из инета скетч, все скомпилировано. Все подключено через mini usb, от порта ПК. Открываю монитор порта, все работает, на смс команды реагирует, on/off.

    Отключаю от ПК, подсоединяю через блок питания 5v 3A, и через разные другие пробовал, ардуино включается, модем ловит сеть, в общем как по нотам, но на смс команды не реагирует.

    Включаю обратно на ПК, все работает.

    Соответственно скетч на месте.

    В чем проблема?


    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(10,11); // (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 = "";
    }
    }
     
  2. Airbus

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

  3. Tony Sexton

    Tony Sexton Нуб

    Код (C++):

    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(10,11); // (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 = "";
    }
    }
     
  4. да все просто, от усб проваливается напруга и модем ее переваривает, а когда подается честные 5 вольт, он ругается на овервольтаж и устраивает забастовку.

    ... хрустальный шар починил, ес что.
     
    Airbus нравится это.
  5. Tony Sexton

    Tony Sexton Нуб

    Сеть же ловит.
    Модем SIM800l EVB, написано что питается от 5v, не как SIM800L который от 4v.
    То есть подать питание через резистор?
     
  6. ага, через реостат...
     
  7. Tony Sexton

    Tony Sexton Нуб

    А если серьёзно, помогите.
     
  8. Airbus

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

    Через DC-DC конвертер.С током 3 ампера минимум.На выходе установи 4вольта
     
  9. Tony Sexton

    Tony Sexton Нуб

    Спасибо господа! При 4 вольтах все заработало. Бред конечно, но работает.
    Другие проекты, делал сигнализацию, работали нормально без DC-DC конвертора.