Отправить SMS Arduino Uno + плата SIM900A

Я работаю над модулем для отправки сообщений. Я пишу сообщение на последовательный монитор + номер телефона, и я должен отправить сообщение на линию.

Вопрос:

Как отправлять сообщения через экран SIM900A?

Проблема: Что я делаю неправильно в своем коде? Потому что я не получаю ошибку, но не отправляет смс с помощью щита.

Попробуйте:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 7);
char msg;

void setup() {
  mySerial.begin(9600); // Установка скорости передачи GSM-модуля
  Serial.begin(9600); // Установка скорости передачи Serial Monitor (Arduino)
  delay(100);
}

void loop() {
  if (Serial.available()>0)
    switch(Serial.read()) {
      mySerial.println("AT+CMGF=1"); // Устанавливает модуль GSM в текстовый режим
      delay(1000); // Задержка 1000 миллисекунд или 1 секунда
      mySerial.println("AT+CMGS=\"+XXXXXXXXX\"\r"); // номер мобильного телефона
      delay(1000);
      mySerial.println("sim900a sms");// Текст SMS, который вы хотите отправить
      delay(100);
      mySerial.println((char)26);// ASCII-код CTRL+Z
      delay(1000);
    }
  if (mySerial.available()>0) Serial.write(mySerial.read());
}

Это мой щит Это мой щит

Другая попытка:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 7);
char msg;

void setup() {
  mySerial.begin(9600);  // Установка скорости передачи GSM-модуля
  Serial.begin(9600); // Установка скорости передачи Serial Monitor (Arduino)
  delay(100);
}

void loop() {
  mySerial.println("AT+CMGF=1"); // Устанавливает модуль GSM в текстовый режим
  delay(1000);  // Задержка 1000 миллисекунд или 1 секунда
  mySerial.println("AT+CMGS=\"+XXXXXXXXX\"\r"); // номер мобильного телефона
  delay(1000);
  mySerial.println("sim900a sms");// Текст SMS, который вы хотите отправить
  delay(100);
  mySerial.println((char)26);// ASCII-код CTRL+Z
  delay(1000);
}

, 👍-1

Обсуждение

И вопрос/проблема?, @gre_gor

Вопросов по-прежнему нет., @gre_gor

сейчас? Помоги мне, пожалуйста, @R. Fernandez


1 ответ


1

На самом деле вопроса не было, но я заметил, что в вашем операторе switch нет регистра..

пример из здесь

// делаем что-то другое в зависимости от значения диапазона:
  switch (range) {
    case 0:    // ваша рука на датчике
      Serial.println("dark");
      break;
    case 1:    // ваша рука находится близко к датчику
      Serial.println("dim");
      break;
    case 2:    // ваша рука находится в нескольких дюймах от сенсора
      Serial.println("medium");
      break;
    case 3:    // ваша рука не находится рядом с датчиком
      Serial.println("bright");
      break;
  }
  delay(1);        // задержка между чтениями для стабильности
,

нужно отправить сообщение щиту, @R. Fernandez

Хотите ли вы отправлять все эти команды при получении ЛЮБОГО байта от Serial.read()?, @Chad G

переключатель - посмотреть есть данные или нет в серийнике, вопрос. Как отправить СМС с помощью щита?, @R. Fernandez

@R.Fernandez Это не то, как работает оператор switch., @gre_gor

println() также добавляет новую строку ( \n ) в конец того, что вы отправляете, не уверен, ожидает ли ваш модуль этого или нет, но у вас также есть возврат ( \r ) в одном из ваших сообщений, необходимо проверить посмотреть, что именно ожидает модуль, @Chad G