отправка температуры по смс

Тема в разделе "Arduino & Shields", создана пользователем molodoy_a, 23 дек 2017.

  1. molodoy_a

    molodoy_a Нуб

    Ткните носом братцы. в кодинге не соображаю, пишу по примерам.

    Не могу реализовать отправку температуры само значение и текст в одном смс. помогите пожалста
    Код (C++):
    #include "SIM900.h"
    #include <SoftwareSerial.h>
    #include "sms.h"
    #include "call.h"
    SMSGSM sms;
    CallGSM call;

    #define B 3950 // B-коэффициент
    #define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм
    #define THERMISTOR_R 10000 // номинальное сопротивления термистора, 10 кОм
    #define NOMINAL_T 25 // номинальная температура (при которой TR = 10 кОм)

    //=================Пины 2 и 3 для Подключения GSM модуля

    const byte tempPin = A0; //пин температуры
    int flag=0;
    boolean started=false;
    char smsbuffer[160];
    char n[20];
    String n1 = "+7136396089"; //номер для отправки СМС
    String input_string = "";
    String smsContent = "";

    char smsstart[] ="WEBASTO START!"; //массив с командой
    char smsstop[] ="WEBASTO STOP!";   //массив с командой
    char smsstatus[] ="STATUS OK!";  //массив с командой
    char pos;
    char sendsms[160];

    void setup() {

    pinMode(7, OUTPUT);              //pin реле
    digitalWrite(7,HIGH);           //назначение 7 pin по умолчанию выключено
    Serial.begin(115200);          //скорость обмена uart
    pinMode( tempPin, INPUT );    //температура


           if (gsm.begin(4800))
                {
              Serial.println("\nstatus=READY");
              started=true;
                 }
           else Serial.println("\nstatus=IDLE");
                 }
         
    void loop()  {
                                                                                                                              //БЛОК ИЗМЕРЕНИЯ ПОКАЗАНИЙ ДАТЧИКА А0
        int t = analogRead( tempPin );
        float tr = 1023.0 / t - 1;
        tr = SERIAL_R / tr;
       
        Serial.print("Temperature - ");              //вывод названия
        float steinhart;
        steinhart = tr / THERMISTOR_R;
        steinhart = log(steinhart);
        steinhart /= B;
        steinhart += 1.0 / (NOMINAL_T + 273.15);
        steinhart = 1.0 / steinhart;
        steinhart -= 273.15;
        Serial.print(steinhart);                          //вывод самого значения
        Serial.println("°C");                            //вывод знака температуры
        delay(100);
      char temp[20];                            //создаем массив под значение температуры
      dtostrf(steinhart,5, 1, temp);                   //конвертируем массив float  в  char

    String temper="Temperature:" + String(temp) + "C";
    Serial.println(temper);



          pos = sms.IsSMSPresent(SMS_UNREAD);  // смотрим непрочитанные СМС
          if (pos) {                          // Если непрочитанные СМС есть, то...
          getsms();                           // получаем непрочитанную СМС
     

    if (input_string=="START"){Serial.println("Komanda START!"); //если текст START, пишем в порт                                   БЛОК START

    sms.SendSMS(n, smsstart); //отправляем смс
    sms.DeleteSMS(1); //удаляем смс
    memset(n,0,20);
    input_string="";
    char smsbuffer[160]="";
    digitalWrite(7,LOW); //включаем реле
    delay(1000); //ждем
    digitalWrite(7,HIGH);//выключаем реле
    sms.DeleteSMS(pos); // удаляем СМС  из симки

    }
    }

    if (input_string=="STOP"){Serial.println("Komanda STOP!");//если текст STOP, пишем в порт                                        БЛОК STOP

    sms.SendSMS(n, smsstop); //отправляем смс
    sms.DeleteSMS(1); //удаляем смс
    memset(n,0,20);
    input_string="";
    char smsbuffer[160]="";
    digitalWrite(7,LOW);//включаем реле
    delay(1000);//ждем
    digitalWrite(7,HIGH);//выключаем реле
    sms.DeleteSMS(pos); // удаляем СМС  из симки

    }

    if (input_string=="STATUS"){Serial.println("Komanda STATUS!");//если текст STATUS, пишем в порт                                  БЛОК STATUS

    sms.SendSMS(n,smsstatus ); //отправляем смс
    sms.DeleteSMS(1);//удаляем смс
    memset(n,0,20);
    input_string="";
    char smsbuffer[160]="";
    sms.DeleteSMS(pos); // удаляем СМС  из симки

    }

    if (input_string=="TEMP"){Serial.println("Komanda TEMP!");//если текст TEMP, пишем в порт                                                 БЛОК TEMP

    //sms.SendSMS(n,"Temperature:" + char(temp) + "C");
    sms.DeleteSMS(1);//удаляем смс
    memset(n,0,20);
    input_string="";
    char smsbuffer[160]="";
    sms.DeleteSMS(pos); // удаляем СМС  из симки
    }
    }

    void getsms()
    {
    sms.GetSMS(pos,n,20,smsbuffer,160);
    input_string =String(smsbuffer);
    }
     
  2. b707

    b707 Гуру

    а где вы это хотя бы пытаетесь сделать в коде? - не вижу.
    Сам код содержит просто кучу ошибок и примерно два-три десятка совершенно бессмысленных операторов, которые совершенно спокойно можно выбросить.
    И вообще, я где-то это код уже видел.... в каком-то видео. Зря вы этот код взяли за основу. автор мало понимает в программировании.
     
  3. Airbus

    Airbus Оракул

    Видимо здесь
    Код (C++):
    sms.SendSMS(n, smsstart); //отправляем смс
    Раскоментируйте строку
    Код (C++):
    //sms.SendSMS(n,"Temperature:" + char(temp) + "C");
    и попробуйте.
     
  4. ИгорьК

    ИгорьК Давно здесь

    Модная тенденция заключается вот в чем: берется ЛЮБОЙ код, выдается за "я старался как умел" и на эту хрень ловятся доброхоты.
    Подход прост. Опытный человек, пытаясь разобраться, сразу видит бред и думает: "да проще свой написать, чем эту фигню разбирать" и выдает жулику решение. Все просто и красиво.
     
    issaom, vvr и DIYMan нравится это.
  5. molodoy_a

    molodoy_a Нуб

    я не программист. поэтому и взял за основу код чужой и начал его дополнять и изменять.что смог то сделал
    для чего сразу писать такие вещи мол не бери и не делай чужое, не бери и не делай раз не понимаешь.
     
  6. ostrov

    ostrov Гуру

    В этом форуме есть ветка на эту тему. Рабочий пример и рекомендации по запуску даются буквально на первой странице. Просто добавь свой номер.
     
  7. Airbus

    Airbus Оракул

    Так он работает?Пробовали сделать как я сказал-раскоментировать строку?Что получилось?Код и правда жуткий особенно измерение температуры.
     
  8. DetSimen

    DetSimen Гуру

    +100500