Как отправлять сообщения на несколько номеров с помощью модуля Arduino uno и SIM800?
Я использую следующий код для отправки сообщения с помощью Arduino Uno & Модуль SIM800. Но мне нужно отправить одно и то же сообщение на несколько номеров, тогда какие изменения я должен внести в свой код.
const int buttonPin = 8; // Датчик главных ворот 1
const int buttonPin1 = 7; // Датчик главных ворот 2
const int buttonPin2 = 9; // Датчик кладовой 1
const int buttonPin3 = 10; // Датчик кладовой 2
bool i = false;
bool j = false;
bool k = false;
bool l = false;
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
digitalWrite(buttonPin, LOW);
digitalWrite(buttonPin1, LOW);
digitalWrite(buttonPin2, LOW);
digitalWrite(buttonPin3, LOW);
delay(1000);
}
void loop()
{
sensor1();
sensor2();
}
void sensor1()
{
if (digitalRead(buttonPin1)== LOW && digitalRead(buttonPin) == HIGH && i == false)
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91...................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main Gate is Closed");
Serial.write(0x1A);
delay(1000);
i = true;
j = false;
}
if (digitalRead(buttonPin)== LOW && digitalRead(buttonPin1) == HIGH && j == false)
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91........................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main Gate is open");
Serial.write(0x1A);
delay(1000);
j = true;
i = false;
}
}
void sensor2()
{
if (digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin3)==LOW && k == false)
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91....................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Store room is Closed");
Serial.write(0x1A);
delay(1000);
k = true;
l = false;
}
if (digitalRead(buttonPin3) == HIGH &&digitalRead(buttonPin2)== LOW && l == false)
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91....................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Store room is Open");
Serial.write(0x1A);
delay(1000);
l = true;
k = false;
}
}
@Nilesh Surwade, 👍2
Обсуждение3 ответа
Лучший ответ:
@nilesh просто добавьте небольшую задержку между двумя сеансами массажа
Я изменил ваш код, проверьте его
const int Main1 = 8;
const int Main2 = 9;
const int Store1 = 7;
const int Store2 = 10;
bool i = false;
bool j = false;
bool k = false;
bool l = false;
void setup()
{
Serial.begin(9600);
pinMode(Main1, INPUT);
pinMode(Main2, INPUT);
pinMode(Store1, INPUT);
pinMode(Store2, INPUT);
digitalWrite(Main1, LOW);
digitalWrite(Main2, LOW);
digitalWrite(Store1, LOW);
digitalWrite(Store2, LOW);
delay(1000);
}
void loop()
{
sensor1();
sensor2();
}
void sensor1()
{
if (digitalRead(Main1) == HIGH && digitalRead(Main2) == LOW && i == false)
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91-----------");// первое число
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main gate closed");
Serial.write(0x1A);
delay(5000);
Serial.print("AT+CMGS=\"");
Serial.print("+91-----------");// Второе число
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main gate closed");
Serial.write(0x1A);
delay(1000);
i = true;
j = false;
}
if (digitalRead(Main2) == HIGH && digitalRead(Main1) == LOW && j == false)
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91---------------");//первое число
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main gate Open");
Serial.write(0x1A);
delay(5000);
Serial.print("AT+CMGS=\"");
Serial.print("+91--------------"); second number
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main gate Open");
Serial.write(0x1A);
delay(1000);
j = true;
i = false;
}
}
void sensor2()
{
if (digitalRead(Store1) == HIGH && digitalRead(Store2) == LOW && k == false)
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91-----------");// первое число
Serial.print("\"\r\n");
delay(2000);
Serial.print("Store room is closed");
Serial.write(0x1A);
delay(10000);
Serial.print("AT+CMGS=\"");
Serial.print("+91-----------");// второе число
Serial.print("\"\r\n");
delay(2000);
Serial.print("Store room is Closed");
Serial.write(0x1A);
delay(1000);
k = true;
l = false;
}
if (digitalRead(Store2) == HIGH && digitalRead(Store1) == LOW && l == false)
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91-----------");// первое число
Serial.print("\"\r\n");
delay(2000);
Serial.print("Store room is Open");
Serial.write(0x1A);
delay(5000);
Serial.print("AT+CMGS=\"");
Serial.print("+91-----------");// Второе число
Serial.print("\"\r\n");
delay(2000);
Serial.print("Store room is Open");
Serial.write(0x1A);
delay(1000);
l = true;
k = false;
}
}
спасибо
Попробуйте этот. Здесь я сделал код для двух чисел. Просто добавьте новую функцию для каждого нового числа. Я надеюсь, что это поможет вам.
const int buttonPin = 8; // Датчик главных ворот 1
const int buttonPin1 = 7; // Датчик главных ворот 2
const int buttonPin2 = 9; // Датчик кладовой 1
const int buttonPin3 = 10; // Датчик кладовой 2
bool i = false;
bool j = false;
bool k = false;
bool l = false;
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
digitalWrite(buttonPin, LOW);
digitalWrite(buttonPin1, LOW);
digitalWrite(buttonPin2, LOW);
digitalWrite(buttonPin3, LOW);
delay(1000);
}
void loop()
{
sensor1();
sensor2();
}
void sensor1()
{
if (digitalRead(buttonPin1)== LOW && digitalRead(buttonPin) == HIGH && i == false)
{
numOneGateClose();
numTwoGateClose();
i = true;
j = false;
}
if (digitalRead(buttonPin)== LOW && digitalRead(buttonPin1) == HIGH && j == false)
{
numOneGateOpen();
numTwoGateOpen();
j = true;
i = false;
}
}
void sensor2()
{
if (digitalRead(buttonPin2) == HIGH && digitalRead(buttonPin3)==LOW && k == false)
{
numOneRoomClose();
numTwoRoomClose();
k = true;
l = false;
}
if (digitalRead(buttonPin3) == HIGH &&digitalRead(buttonPin2)== LOW && l == false)
{
numOneRoomOpen();
numTwoRoomOpen();
l = true;
k = false;
}
}
void numOneGateClose()
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91...................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main Gate is Closed");
Serial.write(0x1A);
delay(1000);
}
void numTwoGateClose()
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91...................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main Gate is Closed");
Serial.write(0x1A);
delay(1000);
}
void numOneGateOpen()
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91........................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main Gate is open");
Serial.write(0x1A);
delay(1000);
}
void numTwoGateOpen()
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91........................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main Gate is open");
Serial.write(0x1A);
delay(1000);
}
void numOneRoomClose()
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91...................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main Gate is Closed");
Serial.write(0x1A);
delay(1000);
}
void numTwoRoomClose()
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91...................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main Gate is Closed");
Serial.write(0x1A);
delay(1000);
}
void numOneRoomOpen()
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91........................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main Gate is open");
Serial.write(0x1A);
delay(1000);
}
void numTwoRoomOpen()
{
Serial.println("OK");
delay(1000);
Serial.print("AT+CMGF=1\r\n");
delay(500);
Serial.print("AT+CMGS=\"");
Serial.print("+91........................");
Serial.print("\"\r\n");
delay(2000);
Serial.print("Main Gate is open");
Serial.write(0x1A);
delay(1000);
}
Я хотел бы отметить, что действительно должен быть метод SEND MESSAGE, который сделал бы весь скрипт короче и проще в отладке. Основной принцип REUSE в программировании., @Divisadero
он отправляет сообщение только на первый номер, @Nilesh Surwade
@NileshSurwade Вы написали разные числа для обеих функций? означает, что вам нужно добавить разные числа в numOneSensor1()
и numTwoSensor1()
. И то же самое для numOneSensor2()
и numTwoSensor2()
, @Hasan
Подавать пример. Этот код не является хорошим примером. Как говорит @Divisadero, напишите функцию SEND MESSAGE и используйте ее много раз., @Majenko
@ Хасан, сэр, я добавил два разных числа в numOneSensor1() и numTwoSensor1(). И я сделал то же самое для numOneSensor2() и numTwoSensor2(). Но это не работает, это только отправить сообщение на первый номер. Пожалуйста помоги., @Nilesh Surwade
@NileshSurwade Хорошо, позвольте мне снова проверить и обновить мой код., @Hasan
@NileshSurwade Я обновляю свой код. Надеюсь, это поможет., @Hasan
У меня тот же вопрос, но немного другой.
sim.println("AT+CMGS="+91xxxxxxxxxx"\r");
Я не хочу это писать. Я хочу написать номер мобильного телефона на последовательном мониторе в Arduino, и на этот номер я хочу отправить сообщение. как мне быть?
- Проблема с получением SMS - GSM-модуль Arduino Uno и SIM900A
- Мини-модем SIM900a, IMEI 0, помощь с контактами TX RX
- Как получить данные из базы данных моего сервера в переменную в моем Arduino?
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- SIM800L не регистрируется в сети
- Как проверить, работает ли GSM-модуль?
- Клиент MQTT на Arduino + SIM900
- Чтение SMS с помощью Arduino Uno и SIM800L и печать на LCD (16x2 буквенно-цифровых) с использованием последовательного соединения
Напишите функцию, которая отправляет любое сообщение на любой номер, и вызывайте ее несколько раз., @Majenko