SIM800L + Arduino Uno не отправляет SMS

arduino-uno sim800 sms

Я пытаюсь настроить Arduino на отправку SMS-сообщений с помощью SIM800L и AT-команд, но по какой-то причине это сообщение никогда не отправляется. Я так долго пробовал различные исходные коды с разных сайтов, что купил и попробовал 3 разных чипа SIM800L и даже попробовал чип SIM808, но проблема всегда одна и та же...

Я могу подтвердить, что у меня есть сетевое соединение с чипом, и он будет получать сообщения.

Я использую приведенный ниже код для отправки сообщения. Я вставил свой номер телефона. Когда появляется сообщение на последовательном мониторе, оно останавливается именно там, что наводит меня на мысль, что это может быть как-то связано с отправкой символа 26 по последовательному каналу для завершения сообщения. Предполагается, что на этом этапе будет возвращен идентификатор сообщения, чтобы показать, что сообщение было отправлено, но оно не отображается.

Я также пытался преобразовать символ 26 следующим образом: (char(26)), но этот символ может быть отвлекающим маневром - я не знаю.

#include <SoftwareSerial.h>

//Создание программного последовательного объекта для связи с SIM800L
SoftwareSerial mySerial(11, 10); //SIM800L Tx & Rx is connected to Arduino #3 & #2

void setup()
{
  //Начать последовательную связь с Arduino и Arduino IDE (последовательный монитор)
  Serial.begin(9600);
  
  //Начните последовательную связь с Arduino и SIM800L
  mySerial.begin(9600);

  Serial.println("Initializing..."); 
  delay(1000);

  mySerial.println("AT"); //После успешного теста рукопожатия он вернется к ОК
  updateSerial();

  mySerial.println("AT+CMGF=1"); // Настройка ТЕКСТОВОГО режима
  updateSerial();
  mySerial.println("AT+CMGS=\"+44mynumberwithout0\"");//изменить ZZ с кодом страны и xxxxxxxxxxx с номером телефона на sms
  updateSerial();
  mySerial.print("Last Minute Engineers | lastminuteengineers.com"); //text content
  updateSerial();
  mySerial.write(26);
}

void loop()
{
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Переадресация полученных последовательных сообщений на Последовательный порт программного обеспечения
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Переслать то, что Последовательное программное обеспечение получило на последовательный порт
  }
}

, 👍0

Обсуждение

в чем причина отправки 26?, @jsotola

@jsotola "Введенное текстовое сообщение, за которым следует символ "Ctrl+z", рассматривается как SMS. "Ctrl+z’ на самом деле является 26-м непечатаемым символом, описанным как" замена’ в таблице ASCII. Итак, нам нужно отправить 26DEC (1AHEX), как только мы отправим сообщение"., @connersz