GSM Сигнализация ищу помощи!

JECK CARTER

✩✩✩✩✩✩✩
28 Янв 2021
9
0
Привет Всем! Ищу помощи в разработке GSM сигнализации, суть заключается в том что бы настроить аналоговый датчик высокого давления , и откалибровать так его что бы при уровне давления 30 например отсылалось сообщение владельцу что малый уровень давления!
 

xof

★✩✩✩✩✩✩
24 Окт 2020
123
44
Берём сим800л, датчик давления, соединяем всё с любимым мк, пишем код, радуемся.
Не благодарите :)
 

xof

★✩✩✩✩✩✩
24 Окт 2020
123
44
Ну помощи просят когда есть что-то, с чем помогать, а у Вас только идея результата и Вы просите сделать всё за вас.
Правильно было бы писать какие компоненты есть, как соединили, начинать писать прошивку, что будет не получаться, спрашивать вопросы.
Если ничего нету, спрашивать совета в выборе комплектующих приводя примеры.
В противном случае Вам дорога в платный раздел.
 

JECK CARTER

✩✩✩✩✩✩✩
28 Янв 2021
9
0
Не знаю как правильно откалибровать датчик , что бы показывал как манометр

Вот как то так
 

Вложения

xof

★✩✩✩✩✩✩
24 Окт 2020
123
44
Из Вас клещами всё тянуть ?
Прошивку что есть выкладывайте.
 

JECK CARTER

✩✩✩✩✩✩✩
28 Янв 2021
9
0
#include <Wire.h>
#include<LiquidCrystal_I2C.h>
float druck =0;

// поэтому число с запятой и 2-мя цифрами после запятой
float DRUCK=0; // поэтому число с запятой и 2-мя цифрами после запятой
LiquidCrystal_I2C lcd(0x27, 16, 2); //+ to +, - to -, SDA to A4, SCL to A5 ,,,, 0x3F adress I2C

void setup()
{

pinMode(A0, INPUT); // А0 на вход для датчика
lcd.begin(); // стартуем дисплей
lcd.clear();
analogReference(INTERNAL);
/* на пин AREF будет подано внутреннее опорное напряжение 1,1 вольт (INTERNAL ).
с ним будет сравниваться напряжение на А0 с датчика
Вместо"INTERNAL" написав "EXTERNAL" нужно подать {{{обязательно}}} на пин AREF
любое опорное напряжение максимум до 5,5 вольт,
если эту строчку закомментировать или убрать вообще, то опорным будет напряжение
которое подходит к пину Vin , то-есть напряжение питания. */

// the setup routine runs once when you press reset:

// initialize serial communication at 9600 bits per second:
Serial.begin(9600);


// the loop routine runs over and over again forever:



lcd.backlight(); // подсветка дисплея
//lcd.setCursor(7, 0); // садим начало курсора на 7-й слева в верхнем ряду (7, 0)
//lcd.print("OK!"); // выводим на дисплей OK
//delay(1500); // задержка, чтобы так долго смотря на ОК, все думали, что всё в порядке
}
void loop() // начинаем циклить
{

float druck = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage =druck * (5.0 / 1023.0);
// print out the value you read:


druck = analogRead(A0); // снимаем показания со входа A0 от 0 до 1023, в нашем случае 1023 - это 1,1 вольт,
// 400 - это 1,1/1024*400 = 0,4296875 вольт и т. д.
//sprintf(s," %2.2f- %2.2f %2.2f- %2.2f", Fr_min,Fr_max,Ps_min,Ps_max);
// printf(druck,"%2.2f",voltage);
druck = map(druck,0,1023,0,250); // С помощью map превращаем 1023 в 600 и вниз до 0 так же пропорционально
if (druck<20)druck=0; // это, дабы дисплей не дёргался при U<0.2 volt. следующим шагом мы разделим 20 на 100 что даст 0,2в
DRUCK = druck; //делим на 100 дабы получить переменную с запятой (в map можно было прописать 0, 1023, 0, 6)
//и наши показатели были бы целым числом и все вычисления округяются в этом случае по законам математики 3,4 =3, а 3,5 =4.

lcd.setCursor(2, 0); // садим начало курсора на 2-й слева в верхнем ряду (2, 0)
lcd.print("P");
lcd.setCursor(3,0); // садим начало курсора на 2-й слева в верхнем ряду (2, 0)
lcd.print("R"); // выводим на дисплей Oil pressure
lcd.setCursor(4,0); // садим начало курсора на 2-й слева в верхнем ряду (2, 0)
lcd.print("E");
lcd.setCursor(5,0); // садим начало курсора на 2-й слева в верхнем ряду (2, 0)
lcd.print("S");
lcd.setCursor(6,0); // садим начало курсора на 2-й слева в верхнем ряду (2, 0)
lcd.print("S");
lcd.setCursor(7,0); // садим начало курсора на 2-й слева в верхнем ряду (2, 0)
lcd.print("U");
lcd.setCursor(8,0); // садим начало курсора на 2-й слева в верхнем ряду (2, 0)
lcd.print("R");
lcd.setCursor(9,0); // садим начало курсора на 2-й слева в верхнем ряду (2, 0)
lcd.print("E");
lcd.setCursor(10, 0); // сдвигаем каретку на 10-ю слева в нижнем ряду (10, 1)
lcd.print("");
lcd.setCursor(11,0); // сдвигаем каретку на 10-ю слева в нижнем ряду (10, 1)
lcd.print("O");
lcd.setCursor(12,0); // сдвигаем каретку на 10-ю слева в нижнем ряду (10, 1)
lcd.print("2");

lcd.setCursor(1,1);
Serial.print( "Pressure:");// садим начало курсора на 3-й слева уже в нижнем ряду (3, 1)
Serial.println(DRUCK);

Serial.print("voltage:");
Serial.println(voltage);
delay(1000);
lcd.print(DRUCK);
lcd.setCursor(10, 1);
lcd.print(voltage);// выводим на дисплей результат переменной DRUCK
lcd.setCursor(14, 1);
lcd.print("V");
// lcd.setCursor(8, 1); // сдвигаем каретку на 10-ю слева в нижнем ряду (10, 1)
// lcd.print("m"); // выводим на дисплей BAR
lcd.setCursor(5, 1); // сдвигаем каретку на 10-ю слева в нижнем ряду (10, 1)
lcd.print("B");
lcd.setCursor(6, 1); // сдвигаем каретку на 10-ю слева в нижнем ряду (10, 1)
lcd.print("A");
lcd.setCursor(7, 1); // сдвигаем каретку на 10-ю слева в нижнем ряду (10, 1)
lcd.print("R");
delay(250); // задержка, чтобы не часто мелькал дисплей при каждом новом цикле
}

I2c работает только так )

Вот обощначение проводов датчика , можете не так подключил ,я подключав так s+на вход А0 S- на gnd

Когда подключав переменный резистор , на ком порте значения меняться а на экране нет , как будто неправильно отображает , только вольты правильно показывает !
 

Вложения

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
А вот тут все нормально ?
C++:
float druck = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage =druck * (5.0 / 1023.0);
// print out the value you read:
druck = analogRead(A0); // снимаем показания со входа A0 от 0 до 1023, в нашем случае 1023 - это 1,1 вольт,
Почему в одном случае показания с А0 конвертируются на 5 вольт. а в другом на 1.1 ?
 

JECK CARTER

✩✩✩✩✩✩✩
28 Янв 2021
9
0
Это для оцыфровки датчика ! Ну может что то не правильно сделал , вот и прошу помощи
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
Ну как бы если с него сначала снимать показания в диапазоне 0-1023 и считать что 1023 это 5в, то почему несколькими строками ниже с этого же входа считается что 1023 это 1.1 в ?
 

JECK CARTER

✩✩✩✩✩✩✩
28 Янв 2021
9
0
Дело в том что когда переменный резистор ставлю то работает все и отображается в ком порте а датчик не реагирует
 

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
@JECK CARTER, у вас похоже промышленный датчик? Если так, то он выдает на выход ток, а не напряжение. Перед тем, как подключить его к аналоговому входу, его нужно шунтировать резистором на землю, а потом в верхней точке измерять падение напряжения. Без шунта у него на выходе всегда напряжение равное питанию.
 

JECK CARTER

✩✩✩✩✩✩✩
28 Янв 2021
9
0
Я понял уже это , я думаю просто подберу какой то другой датчик с питание 0-5 в
 

JECK CARTER

✩✩✩✩✩✩✩
28 Янв 2021
9
0
Найдется , попробую если не получиться то другой датчик буду подбирать