Здравствуйте формучане, питаю в гараже незначительные 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");
Датчик вольтметра измеряет количество вольтметров на неком расстоянии от датчика. Вы имели в виду вольтметр. Вам нужно обратиться в ветку "закажу проект" - там опишите что у вас есть и что вы хотите и за денюшку сделают. В остальных ветках форума расчитывают в первую очередь на себя. Можем помочь советом/консультацией, но за вас никто писать программу не будет.
Ничего, кроме ерунды, не выйдет. Начинать надо с проработки схемотехники. Если на шальную, то надо ставить аккум от грузовика - возможно, что на неделю хватит.
Да ничего сложного.В лупе измеряем напряжение каждую минуту.И если ниже определенного значения отправляем СМС.Просто пулять СМС каждую минуту с напряжением разоритесь да и за@бет СМС спам.Либо по СМС запросу измеряем напряжение и пуляем ответную СМС с напряжением.
Спасибо всем кто откликнулся, но схемотехника не нужна, измерять напряжение на аккумуляторе тупо через делитель напряжения. Был бы благодарен, за помощь в этом направлении.
Да, согласен. СМС и неудобно и накладно! И опять же графики неудобно строить. Именно поэтому, постепенно все, что слало уведомления через СМС, перетаскиваю на MQTT.
Это лучший вариант.Если совсем упростить то blynk с графиками или всякими показометрами.Но как я понял в гараже нет Вайфая а только Гсм.Пороюсь вечером в скетчбуке что то похожее вроде было.
Спасибо огромное уважаемый). Да Wi-Fi нету, просто для моей задачи, оно того не стоит поднимать еще Wi-Fi сеть.
Это уже совсем другая история.Вот скетч. Код (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); //ждём следующего замера } }