SIM800l не отвечает на arduino micro

Я хочу, чтобы мой Arduino Micro взаимодействовал с моим модулем SIM 800 L. Но, к сожалению, ничего не происходит, помогите мне понять, где я допустил ошибку. Вот моя проводка:

Плата Arudino

SIM-модуль

Кратко о моей проводке:

  • Внешняя батарея ---> 800 л
  • плюс ---> 5VIN
  • минус ---> GND (как в POWER, так и в TTL-разделе UART)

  • Ардуино ---> 800 л
  • RX ---> RXD
  • TX ---> TXD

С этой настройкой я использую следующий код:

#include <SoftwareSerial.h>
#include<Arduino.h>

//Ардуино Микро
//СИМ 800л


SoftwareSerial mySerial(1, 0); // прием, передача

void setup()  
{
  // Открыть последовательную связь
  Serial.begin(9600);

  // устанавливаем скорость передачи данных для порта SoftwareSerial
  mySerial.begin(9600);

  Serial.println("Setup finished");

}

void loop() // запускаем снова и снова
{
  Serial.println("Sending AT command");
  mySerial.write("AT"); // OK должно быть возвращено
  delay(1000);
  //читаем ответ sim-модуля
  Serial.println("Response: ");
  while( mySerial.available() )
  {
    char c = mySerial.read();
    Serial.print(c);
  }

  mySerial.write("at+cmee=2"); // переводим сим-модуль в режим отладки

  delay(1000);

  mySerial.write("at+cpin?"); //проверяем, нужен ли пин


  //читаем ответ sim-модуля
  while( mySerial.available() )
  {
    char c = mySerial.read();
    Serial.print(c);
  }

}

Но это дает мне следующий вывод в виде цикла:

 Sending AT command
 Response:
 Sending AT command
 Response:
 Sending AT command
 Response:

И я заметил, что желтый светодиод на Arduino мигает во время работы программы, поэтому я предполагаю, что должен быть какой-то ввод от SIM800, но я не могу прочитать данные в данный момент. На самой плате 800L также есть светодиод, который мигает с интервалом около одной секунды, что говорит вам об отсутствии связи (я живу в относительно удаленном районе), но даже если связи нет, не должен ли он все равно возвращаться OK при отправке АТ?

Если вам нужна дополнительная информация, не стесняйтесь спрашивать. Буду признателен за каждую вашу идею :)

Редактировать: на фото провод идет от Arduino напрямую к 800L, но я изменил его, так что теперь питание 800L поступает от батареи.

, 👍0


1 ответ


1

Вот некоторые изменения в вашем коде

#include <SoftwareSerial.h>
#include<Arduino.h>

//Ардуино Микро
//СИМ 800л


SoftwareSerial mySerial(9,10); // прием, передача

void setup()  
{
  // Открыть последовательную связь
  Serial.begin(9600);

  // устанавливаем скорость передачи данных для порта SoftwareSerial
  mySerial.begin(9600);

  Serial.println("Setup finished");

}

void loop() // запускаем снова и снова
{
  Serial.println("Sending AT command");
  mySerial.write("AT\r\n"); // OK должно быть возвращено
  delay(1000);
  //читаем ответ sim-модуля
  Serial.println("Response: ");
  while( mySerial.available() )
  {
    String c = mySerial.readString();
    Serial.println(c);
  }

  mySerial.write("at+cmee=2\r\n"); // переводим сим-модуль в режим отладки

  delay(1000);

  mySerial.write("at+cpin?\r\n"); //проверяем, нужен ли пин


  //читаем ответ sim-модуля
  while( mySerial.available() )
  {
    String c = mySerial.readString();
    Serial.println(c);
  }

}

Измените контакты UART на 9,10, так как 0,1 уже используются в обычном последовательном порте. Во-вторых, измените Seria.read() на Serial.readString(), потому что, насколько я знаю, ответом является строка.

,

Спасибо за совет, но мне все равно ничего не вернули. Только светодиод RX на моем Arduino мигает, но на tx ничего не приходит. Я попытался сопоставить rxd с txd, поместил его в порт 9,10, а затем обратно в порты RX, TX, но ничего не получил., @Cowboy_Patrick

извините, я пропустил вещь. Возврат каретки и символ EOD являются наиболее важной частью AT-команд. Я просто вижу, что их не хватает., @Vaibhav

Большое спасибо, повторная попытка некоторых положений проводки и возврат каретки сделали свою работу, теперь она проснулась :), @Cowboy_Patrick