MyTetra Share
Делитесь знаниями!
Время создания: 23.02.2023 22:20
Автор: alensav
Текстовые метки: sms arduino
Раздел: ARDUINO
Запись: alensav/MyTetra2/main/base/1677180055l7m16uvhl6/text.html на raw.githubusercontent.com

// подключение библиотек

#include <SoftwareSerial.h>

#include "DHT.h"

// создание объектов

SoftwareSerial gsm(7, 8);

DHT sensorDHT(2, DHT22);

// переменные

String phone = ""

String str1 = ""; //

boolean isSMS = false;

void setup() {

   // подключение последовательного порта

   Serial.begin(9600);

   // запуск датчика DHT

   dht.begin();

   // запуск SoftwareSerial

   gsm.begin(9600);

   // Настройка приёма сообщений

   gsm.print("AT+CMGF=1\r");

   delay(500);

   gsm.print("AT+IFC=1, 1\r");

   delay(500);

   gsm.print("AT+CPBS=\"SM\"\r");

   delay(500);

   gsm.print("AT+CNMI=1,2,2,1,0\r");

   delay(500);

}  

void loop() {

   if (gsm.available()) {

      char c = gsm.read();

      if ('\r' == c) {

         if (isSMS) { // текущая строка - sms-сообщение,

            if (!str1.compareTo("tmp")) { // текст sms - tmp

               // отправить sms на приходящий номер

               // получение данных

               int t = dht.readTemperature();

               // AT-команда установки text mode

               gsm.print("AT+CMGF=1\r");

               delay(100);

               // номер телефона получателя

               gsm.println("AT + CMGS = \"");

               gsm.println(phone);

               gsm.println("\"");

               delay(50);

               // сообщение – данные температуры

               gsm.println(t);

               delay(50);

               // окончание передачи

               gsm.println((char)26);

               delay(50);

               gsm.println();

            }

            Serial.println(currStr);

            isSMS = false;

         }

         else {

            if (str1.startsWith("+CMT")) {

               Serial.println(str1);

               // выделить из сообщения номер телефона

               phone=str1.substring(7,19);

               Serial.println(phone);

               // если текущая строка начинается с "+CMT",

               // то следующая строка является сообщением

               isSMS = true;

            }

         }

         str1 = "";

      }

      else if ('\n' != c) {

         str1 += String(c);

      }

   }

}

Так же в этом разделе:
 
MyTetra Share v.0.64
Яндекс индекс цитирования