GSM отправка данных вольтметра *помогите

Тема в разделе "Проводная и беспроводная связь", создана пользователем LordLevel, 28 окт 2018.

  1. LordLevel

    LordLevel Нуб

    Здравствуйте формучане, питаю в гараже незначительные 12 вольтовые приборы. Возникла проблема, с разрядкой аккумулятора. То есть не всегда успеваю рассчитать время, или вовсе забуду заменить севший аккумулятор новым. Так вот в чем суть поста, есть у меня Arduino Uno + GSM/GPRS шилд на А6 чипе, датчик вольт метра.
    Нужна система смс оповещения степени разряда аккумулятора, на просторах интернета накопал малость информации (сам в программировании, не очень силен). Помогите собрать из каши скетчей, что то рабочее, или ткните носом если где то есть такое. Буду благодарен за любую помощь, всем добра.

    Код вольтметра:
    Код (C++):

    counst float R1 = 30000;
    counst float R1 = 7500;
    counst float Uref = 5;
    int sensorPin = 0;
    float sensorValue = 0;
    float outputValue = 0;
    float Uin = Uref * ((R1+R2)/R2);
    void setup() {
    Serial.begin(9600);
    }
    void loop() {
    sensorValue = analogRead(sensorPin);
    outputValue = (sensorValue *Uin) / 1024.00;
    Serial.print("Voltage = ");
    Serial.print(outputValue);
    Serial.print("B");
    delay(1000);
    }
     
    Код отправки смс шилдом :
    Код (C++):
       
    #include <iarduino_GSM.h>
    iarduino_GSM gsm;
    iarduino_GSM.
    #include <softwareserial.h>
    SoftwareSerial softSerial(7,8);
    void setup(){
     Serial.begin(9600);
     Serial.print( "Initialization, please wait ... " );
    gsm.begin(softSerial);
     while(gsm.status()!=GSM_OK){Serial.print("."); delay(1000);} Serial.println(" OK!");
     gsm.TXTsendCodingDetect("п");
     if( gsm.SMSsend("Это короткое SMS сообщение", "70123456789") )
      { Serial.println("Sent!"); }else{ Serial.println( "Error!" ); }
    }
    void loop (){
    }                            
     
    Код перевода заряда в %
    Код (C++):

    static float A_y; //Выходное значение
    y = A_y / 12.60 * 100;
      chargeLevel_procents = y;
      chargeLevel = z;
    if(chargeLevel_procents >= 0 && chargeLevel_procents < 33) {
        z = 1; // 1/3 заряда
      }
      else if(chargeLevel_procents >= 33 && chargeLevel_procents < 66) {
        z = 2; // 2/3 заряда
      }
      else if(chargeLevel_procents >= 66 && chargeLevel_procents <= 100) {
        z = 3; // Полный заряд
      }
    Serial.print("\t Voltage: ");
        Serial.print(A_y);
        Serial.print(" V ");
        Serial.print("\t Charge: ");
        if(z == 1) {
          Serial.print("■");
        }
        else if(z == 2) {
          Serial.print("■■");
        }
        else if(z == 3) {
          Serial.print("■■■");
        }
        else {
          Serial.print("ERROR");
        }
        Serial.print("\r\n");  
     
     
  2. Daniil

    Daniil Гуру

    Датчик вольтметра измеряет количество вольтметров на неком расстоянии от датчика. Вы имели в виду вольтметр.
    Вам нужно обратиться в ветку "закажу проект" - там опишите что у вас есть и что вы хотите и за денюшку сделают.
    В остальных ветках форума расчитывают в первую очередь на себя. Можем помочь советом/консультацией, но за вас никто писать программу не будет.
     
    parovoZZ нравится это.
  3. Airbus

    Airbus Радиохулиган Модератор

    Зачем в проценты переводить?Не лучше сигнализировать о разряде до определенного значения?
     
  4. parovoZZ

    parovoZZ Гуру

    Ничего, кроме ерунды, не выйдет. Начинать надо с проработки схемотехники. Если на шальную, то надо ставить аккум от грузовика - возможно, что на неделю хватит.
     
  5. Airbus

    Airbus Радиохулиган Модератор

    Да ничего сложного.В лупе измеряем напряжение каждую минуту.И если ниже определенного значения отправляем СМС.Просто пулять СМС каждую минуту с напряжением разоритесь да и за@бет СМС спам.Либо по СМС запросу измеряем напряжение и пуляем ответную СМС с напряжением.
     
  6. LordLevel

    LordLevel Нуб

    Спасибо всем кто откликнулся, но схемотехника не нужна, измерять напряжение на аккумуляторе тупо через делитель напряжения.
    Был бы благодарен, за помощь в этом направлении.
     
  7. SergeiL

    SergeiL Оракул Модератор

    Да, согласен.
    СМС и неудобно и накладно!
    И опять же графики неудобно строить.
    Именно поэтому, постепенно все, что слало уведомления через СМС, перетаскиваю на MQTT.
     
  8. Airbus

    Airbus Радиохулиган Модератор

    Это лучший вариант.Если совсем упростить то blynk с графиками или всякими показометрами.Но как я понял в гараже нет Вайфая а только Гсм.Пороюсь вечером в скетчбуке что то похожее вроде было.
     
  9. LordLevel

    LordLevel Нуб

    Спасибо огромное уважаемый). Да Wi-Fi нету, просто для моей задачи, оно того не стоит поднимать еще Wi-Fi сеть.
     
  10. parovoZZ

    parovoZZ Гуру

    Да, да, да))) а потом каждый раз менять аккум, ибо гсм шилд его будет высасывать в ноль)))
     
  11. Airbus

    Airbus Радиохулиган Модератор

    Это уже совсем другая история.Вот скетч.
    Код (C++):
    int tempo = 12;//заданное напряжение
    int flag = 1; //флаг отправки
    void setup()
    {
    analogReference(INTERNAL);
    Serial.begin(9600);
    delay(5000); //ждём регистрации в сети GSM
    }

    void loop() {
        float Vbat = (analogRead(A1) * 1.1) / 1024.0;//читаем и измеряем напругу на А1
        float Vin = Vbat / (89.8 / (783.0 + 89.8)); // R2/(R1+R2)
        //Serial.println(Vin); //печатаем напряжение если надо
        if (Vin < tempo && flag==1) // если напруга меньше заданной
           { //и флаг установлен то отправляем СМС
        delay(100);// Ждём
        Serial.println("AT+CMGF=1"); // Режим работы текст
        Serial.println("AT+CMGS = \"+79212724752\"");//и пуляем тревожную СМС
        delay(100);
        // Пишем текст сообщения
        Serial.print("Battery low!");//тревога!
        delay(100);
        // Отправляем Ctrl+Z, обозначая, что сообщение готово
        Serial.print((char)26);
        flag = 0;//сбрасываем флаг чтоб больше не спамить
        delay(2000); //ждём следующего замера
                  }
               }
     
    Последнее редактирование: 28 окт 2018
    LordLevel нравится это.
  12. LordLevel

    LordLevel Нуб

    Спасибо вам огромнейшее)))) Завтра буду пробовать, всем удачи.
     
  13. Airbus

    Airbus Радиохулиган Модератор

    Вольтметр стырил отсюда-у Звера Пушного.

     
  14. LordLevel

    LordLevel Нуб