Neoway 590 (как передать температуру?)
- Войдите на сайт для отправки комментариев
Ср, 28/10/2015 - 03:17
Подскажите, пожалуйста, как правильно передать температуру с ds18b20 по sms через neoway 590. (текст отправляет и передает без проблем). Вот код:
#include <OneWire.h>
OneWire ds(7);
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int ch = 0;
String val = "";
#define MASTER "+77777777777" //укажите телефон хозяина
void setup()
{
Serial.begin(9600); //подключаем порт компьютера
Serial.println("GSM Neoway M590 example");
mySerial.begin(9600); //подключаем порт модема (при других скоростях не отвечает)
mySerial.println("ATI"); //вывести в терминал иноформацию о модеме
delay(100);
mySerial.println("AT+CSQ"); //вывести в терминал уровень сигнала (если 99, то связи нет)
delay(100);
mySerial.println("AT+CLIP=1"); //включаем АОН
delay(100);
mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.)
delay(100);
mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста
delay(100);
mySerial.println("AT+CNMI=2,2");
}
void loop()
{
byte data[2];
ds.reset();
ds.write(0xCC);
ds.write(0x44);
delay(750);
ds.reset();
ds.write(0xCC);
ds.write(0xBE);
data[0] = ds.read();
data[1] = ds.read();
int Temp = (data[1] << 8) + data[0];
Temp = Temp >> 4;
Serial.println(Temp);
if (mySerial.available()) { //есть данные от GSM модуля
delay(200); //выждем, чтобы строка успела попасть в порт целиком раньше чем будет считана
while (mySerial.available()) { //сохраняем входную строку в переменную val
ch = mySerial.read();
val += char(ch);
delay(10);
}
Serial.println(val); // дублируем сообщение в терминал
//----------------------- определение факта приема СМС и сравнение номера(ов) с заданным(и)
if (val.indexOf("+CMT") > -1) { //если обнаружен СМС (для определения звонка вместо "+CMT" вписать "RING", трубку он не берет, но реагировать на факт звонка можно)
if (val.indexOf(MASTER) > -1) { //если СМС от хозяина
Serial.println("--- MASTER SMS DETECTED ---");
} else {
Serial.println("NO MASTER SMS");
}
if (val.indexOf("temp") > -1) { // если обнаружено кодовое слово
Serial.println("send you ok"); // сообщаем об этом в терминал (если нужно)
sms("Temp", MASTER, Temp); // отвечаем смской
} else { // если другое слово или вообще пустое сообщение
Serial.println("no send you");
sms("wrong command", MASTER, Temp);
}
val = "";
}
}
}
void sms(String text, String phone, String Temp) //процедура отправки СМС
{
Serial.println("SMS send started");
mySerial.println("AT+CMGS=\"" + phone + Temp"\"");
delay(500);
mySerial.print(text);
delay(500);
mySerial.print(Temp);
delay(500);
mySerial.print((char)26);
delay(500);
Serial.println("SMS send complete");
delay(2000);
mySerial.println("AT+CMGD=1"); //стираем память смс
delay(100);
}
Я так передаю, с аналогового датчика:
void sms(String text, String phone) //Функция отправки SМS { Serial.println("AT+CMGS=\"" + phone + "\""); delay(500); Serial.print(text); delay(500); Serial.print((char)26); delay(2000); } if (val.indexOf("7xxxxxxxxxx") > -1) { //если номер звонящего наш. Укажите свой номер без "+" Serial.println("ATH0"); //разрываем связь delay(1000); int tempmotor =0; for (int i=0; i<=99; i++){ tempmotor = tempmotor + analogRead(temp_motor); } tempmotor=((tempmotor/100)*0.00488)*100; float akbvoltage =0; for (int i=0; i<=99; i++){ akbvoltage = akbvoltage + analogRead(akb_voltage); //Для усреднения значения делаем 100 измерений } akbvoltage=(((akbvoltage/100)*0.00488)/0.05)*0.2015; //Вычисляем среднее измеренное значение, потом пересчитываем значение из диапазона от 0 до 5 вольт, String sms_string = "Statistic:"+'\n'; sms_string = sms_string + "Motor T= "+tempmotor+'C'+'\n'+"Battery U= "+akbvoltage+'V'; sms(String(sms_string), String("+7xxxxxxxxxx")); //отправляем СМС на номер +7xxxxxxxxxx }А можно весь код от начала до конца, пожалуйста
У Вас цифровой датчик, там все будет иначе. Просто преобразуйте полученное с датчика значение в строку при отправке:
sms(String(текст_SMS_сообщения), String("+7хххххххххх"), String(Temp)); //отправляем СМС на номер +7хххххххххх
Не получается вставить в свой код, ошибки выдает. Если вам не трудно можно по-подробней показать куда правильно вставить, а то у меня руки видимо кривые((
Вот Ваш кусок кода, Вы писали что он работает и отправляет SMS:
69 if (val.indexOf("temp") > -1) { // если обнаружено кодовое слово 70 Serial.println("send you ok"); // сообщаем об этом в терминал (если нужно) 71 sms("Temp", MASTER, Temp); // отвечаем смской 72 } else { // если другое слово или вообще пустое сообщение 73 Serial.println("no send you"); 74 sms("wrong command", MASTER, Temp);Попробуйте заменить строки
sms("wrong command", MASTER, Temp);на
sms("wrong command", MASTER, String(Temp));PS: Мне не жалко своего кода, просто Вы еще больше в нем запутаетесь, я прерывания по звонку аппаратно использую, для вывода из режима сна и сторожевой таймер.
Спасибо ВАМ Большущее!!!! Все заработало!!!
Поздравляю!
Я в своей конструкции нашел баг, пока еще не разобрался в чем причина. На столе все работает, после установки в авто, через несколько дней глухой висяк. Программно зависания обрабатываю сторожевым таймером, с Дуней все ок, она как положено засыпает и просыпается при активации модуля. А вот сам модуль, через несколько дней виснет наглухо. Есть подозрение на левые спам-SMS, вероятно виснет после них.
Несколько дней девайс работал безотказно, сегодня утром решил пополнить счет, смской с другого номера, пополнил и получил висяк модуля. Отключение и включение не принесло результата, телефон абонента выключен и т.д.. Антенну уже заменил. Может и сам модуль глючит, но нужно программно очищать его память от спама. Эту конструкцию лепил наскоряк, для дистанционного запуска котла и отчета, на макетке. Едет второй модуль, с тем уже не спеша буду делать основательно, на нормальной печатке и код доводить до ума, чтоб обрабатывать все возможные ошибки, в том числе и зависания модуля и его автоматическую перезагрузку.
Модуль у вас запитан отдельно? Тоже из китая? У меня тоже глючил, пока от флюса не промыл и не пропаял
Вся конструкция, времянка, накидана на макетке, все питается от DC-DC преобразователя, все пропаяно и отмыто. ХЗ, тестирую пока. Но ошибки программно обрабатывать в любом случае необходимо, иначе ни о какой безотказности устройства и речи быть не может.
Вообще девайс получился очень экономичным и по питанию и по деньгам в эксплуатации. Звонишь на него, он просто сбрасывает звонки, но команды выполняет. То есть я, звоня на него, не трачу средств вообще, а он тратит только при отправке SMS. В режиме сна потребление всей конструкции получилось 12mA, большую часть ест преобразователь, нужно еще поколдовать, хоть аккумулятор и огромный у меня, а побереч его зимой стоит. :)
Желаю победы над этим китайским монстром! Удачи в проектах!
Прошу помощи! Уже 2 недели бьюсь с проблемой отправки sms с neoway m590. Получаю переменную с датчика температуры в переменную "t". В терминал все выводит но строка отправки (разные варианты кода) sms либо выдает ошибку, либо приходит sms в виде TEMP t. Т.е. проблема в преобразовании переменной. Правильно преобразовать не получается. У других, смотрю все работает - не пойму где у меня ошибка.
#include <SoftwareSerial.h> #include "stDHT.h" #define DHTPIN 6 // данные с датчика температуры #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); SoftwareSerial mySerial(2, 3); // RX, TX int ch = 0; char a; char w; int t; int led = 13; int pit = 7; String val = ""; void setup() { //int h = dht.readHumidity(6); int t = dht.readTemperature(6); // pinMode(led, OUTPUT); pinMode(pit, OUTPUT); //пин 7 работает на выход для питания датчика DHT digitalWrite(led, LOW); digitalWrite(pit, HIGH); //включаем питание на DHT11 Serial.begin(115200); //скорость порта Serial.println("GSM tester v1.0"); delay(500); mySerial.begin(115200);//скорость порта общение с модулем GSM delay(500); mySerial.println("AT+CLIP=1"); //включаем АОН delay(500); mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.) delay(500); mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста delay(100); } void loop() { if (mySerial.available()) { //если GSM модуль что-то послал нам, то while (mySerial.available()) { //сохраняем входную строку в переменную val ch = mySerial.read(); val += char(ch); a += char(w); delay(10); } if (val.indexOf("RING") > -1) { //если звонок обнаружен if (val.indexOf("71234567890") > -1) { //если номер совпадает Serial.println("--- MASTER RING DETECTED ---"); mySerial.println("ATH0"); //разрываем связь //digitalWrite(led, HIGH); //включаем светодиод на 3 сек delay(3000); // String a = atoi (t); // попытка преобразовать //sms("TEMP" t, "+71234567890"); // 1 попытка отправить //sms(String("TEMP: " t , String("+71234567890")); //отправляем СМС с температурой мне 2 попытка //digitalWrite(led, LOW); //выключаем светодиод sms(String("TEMP"), String("+71234567890"), String(t)); // 3 попытка } } else Serial.println(val); //печатаем в монитор порта пришедшую строку val = ""; } if (Serial.available()) { //если в мониторе порта ввели что-то while (Serial.available()) { //сохраняем строку в переменную val ch = Serial.read(); val += char(ch); delay(10); } //mySerial.println(val); //передача всех команд, набранных в мониторе порта в GSM модуль if (val.indexOf("sendsms") > -1) { //если увидели команду отправки СМС sms(String("hello world"), String("+71234567890")); //отправляем СМС на номер +71234567890 } val = ""; //очищаем } } void sms(String text, String phone) //процедура отправки СМС { Serial.println("SMS send started"); mySerial.println("AT+CMGS=\"" + phone + "\""); delay(500); mySerial.print(text); delay(500); mySerial.print((char)26); delay(500); Serial.println("SMS send complete"); delay(2000); }строка 56 попробуйте так
sms(String("TEMP: " + t), String("+71234567890")):Пока приходит "TEMP" и далее пусто. Разбираюсь где я ошибся.....
строка 18, температуру вы считываете 1 раз при старте?
Спасибо большое! Увидел ошибку. Исправил. Появилась новая проблема... теперь слово "TEMP" не приходит, выполнение кода перебрасывается на строку 71 и мне приходит сообщение "hello world". Если убираю строку int t = dht.readTemperature(); то работет все как обычно т.е. при звонке в ответ приходит слово "TEMP" но без температуры.
#include <SoftwareSerial.h> #include "DHT.h" #define DHTPIN 6 // данные с датчика температуры #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); SoftwareSerial mySerial(2, 3); // RX, TX int ch = 0; char a; int h; int t; int led = 13; int pit = 7; String val = ""; void setup() { //int h = dht.readHumidity(6); //int t = dht.readTemperature(6); // pinMode(led, OUTPUT); pinMode(pit, OUTPUT); //пин 7 работает на выход для питания датчика DHT digitalWrite(led, LOW); digitalWrite(pit, HIGH); //включаем питание на DHT11 Serial.begin(115200); //скорость порта Serial.println("GSM tester v1.0"); delay(500); mySerial.begin(115200);//скорость порта общение с модулем GSM delay(500); mySerial.println("AT+CLIP=1"); //включаем АОН delay(500); mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.) delay(500); mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста delay(100); } void loop() { int t = dht.readTemperature(); if (mySerial.available()) { //если GSM модуль что-то послал нам, то while (mySerial.available()) { //сохраняем входную строку в переменную val ch = mySerial.read(); val += char(ch); a += char(h); delay(10); } if (val.indexOf("RING") > -1) { //если звонок обнаружен if (val.indexOf("71234567890") > -1) { //если номер совпадает //Serial.println("--- MASTER RING DETECTED ---"); mySerial.println("ATH0"); //разрываем связь //digitalWrite(led, HIGH); //включаем светодиод на 3 сек delay(3000); // String a = atoi (h); sms("TEMP" + t, "+71234567890"); //sms(String("Humidity: " t , String("+71234567890")); //отправляем СМС с влажностью мне //digitalWrite(led, LOW); //выключаем светодиод } } else Serial.println(val); //печатаем в монитор порта пришедшую строку val = ""; } if (Serial.available()) { //если в мониторе порта ввели что-то while (Serial.available()) { //сохраняем строку в переменную val ch = Serial.read(); val += char(ch); delay(10); } //mySerial.println(val); //передача всех команд, набранных в мониторе порта в GSM модуль if (val.indexOf("sendsms") > -1) { //если увидели команду отправки СМС sms(String("hello world"), String("+71234567890")); //отправляем СМС на номер +71234567890 } val = ""; //очищаем } } void sms(String text, String phone) //процедура отправки СМС { Serial.println("SMS send started"); mySerial.println("AT+CMGS=\"" + phone + "\""); delay(500); mySerial.print(text); delay(500); mySerial.print((char)26); delay(500); Serial.println("SMS send complete"); delay(2000); }строка 26, следует умнньшить до 19200, так как софвтварный сериал глючит при скорости больше 38400
и строка 86 увеличить до 5000
Скорость пытался снизить, в мониторе порта какой-то мусор и на звонки не отвечает . Пробовал поиграться скоростями... кроме как на 115200 не работает (хотя и встречаются ошибки, к примеру не спервого раза номер правильно в порт приходит). При этом скорости должны быть одинаковыми что serial что работа с модулем (может особенность neoway). У меня два модуля neoway M590- ведут себя одинаково. По 86 строке - увеличил. К сожалению ничего не изменилось. Изменял строку "sms("TEMP" +t , "+71234567890");" на "sms("TEMP" , "+71234567890") " т.е удаляю отправку переменной, начинает приходить слово "TEMP". что-то видимо с "t" не так....
погуглите как установить скорость М590 в 19200 с помощью АТ команд
Спасибо большое! На одну проблему меньше :-) ! После установки скорости с помощью AT команды (AT+IPR=19200) ошибки в мониторе порта пропали полностью. Теперь на звонок реагирует с первого раза. Но проблема с отправкой температуры осталась..... Подключал разные библиотеки работы с DHT11. С #include "stDHT.h" в монитор порта выдаёт
MODEM:STARTUP
AT+CMGS="+71234567890"
Попрбуйте String smska = String("Temp:") + String(t)); sms(smska, "+71234567890");УРА !!! Всё заработало при :
#define MASTER "+71234567890" //мой телелфон void loop() { int Temp = dht.readTemperature(); . . . . sms("temperatura ", MASTER, String(Temp));в чем разница пока не понимаю! Библиоку использовал #include <DHT.h>. Большое Вам спасибо за помощь!
Здравствуйте форумчане. Вот прочитал я эту ветку и решил повторить как описано. Вот странно - ничего не получилось, постоянно ругается на - sms("temperatura ", MASTER, String(Temp)); Ну никак ... Долго ломал голову поскольку я начинающий в таком деле. Набрался решимости,попытался скомпановать свой код и получилось! Прошу у вас совета по выявлению ошибок и совершенствованию кода. Хочу еще заставить сообщать sms-кой при понижении температуры ниже определенного значения, но незнаю как. Очень нужно для контроля котла в деревне, поскольку конструкцией не предусмотрен автоподжиг а котел тухнет в самый неподходящий момент, и когда старики в отъезде, можно разморозить отопление. Заранее спасибо за советы и помощь.
String stringOne, stringTwo, stringThree; #include <OneWire.h> #include <SoftwareSerial.h> OneWire ds(4); #define MASTER "+70000000000" //мой телефон SoftwareSerial mySerial(2, 3); // RX, TX int ch = 0; char a; int h; int t; int led = 13; int pit = 7; String val = ""; void setup() { Serial.begin(9600); //скорость порта Serial.println("GSM tester v1.0"); delay(500); mySerial.begin(115200);//скорость порта общение с модулем GSM delay(500); mySerial.println("AT+CLIP=1"); //включаем АОН delay(500); mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.) delay(500); mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста delay(100); } void loop() { byte data[2]; ds.reset(); ds.write(0xCC); ds.write(0x44); delay(750); ds.reset(); ds.write(0xCC); ds.write(0xBE); data[0] = ds.read(); data[1] = ds.read(); int Temp = (data[1] << 8) + data[0]; Temp = Temp >> 4; //Serial.println(Temp); int sensorValue = Temp; stringOne = "Temp: "; stringThree = stringOne + sensorValue; Serial.println(stringThree); if (mySerial.available()) { //если GSM модуль что-то послал нам, то while (mySerial.available()) { //сохраняем входную строку в переменную val ch = mySerial.read(); val += char(ch); a += char(h); delay(10); } if (val.indexOf("RING") > -1) { //если звонок обнаружен if (val.indexOf("70000000000") > -1) { //если номер совпадает Serial.println("--- MASTER RING DETECTED ---"); mySerial.println("ATH0"); //разрываем связь digitalWrite(led, HIGH); //включаем светодиод на 15 сек delay(15000); sms(String (stringThree) , MASTER); digitalWrite(led, LOW); //выключаем светодиод } } else Serial.println(val); //печатаем в монитор порта пришедшую строку val = ""; } if (Serial.available()) { //если в мониторе порта ввели что-то while (Serial.available()) { //сохраняем строку в переменную val ch = Serial.read(); val += char(ch); delay(10); } //mySerial.println(val); //передача всех команд, набранных в мониторе порта в GSM модуль if (val.indexOf("sendsms") > -1) { //если увидели команду отправки СМС //sms(String("hello world"), String("+70000000000")); //отправляем СМС на номер +70000000000 } val = ""; //очищаем } } void sms(String text, String phone ) //процедура отправки СМС { Serial.println("SMS send started"); mySerial.println("AT+CMGS=\"" + phone + "\""); delay(500); mySerial.print(text); delay(500); mySerial.print((char)26); delay(500); Serial.println("SMS send complete"); delay(2000); }Секция loop постоянно крутиться по кругу, с начала и до конца, что собственно и следует из названия. Тоесть код постоянно выполняется по кругу и если скажем в конце этого круга вставить измерение температуры и проверку условия(температура ниже предела), то отправляет смс. Но тут есть одно но!!! Код работает по кругу и на следующий круг, при низкой температуре снова будет отправлена смс, по этому нужно ещё использовать флаг отправки смс. Тоесть отправили смс алярма и выставили флаг- отправлено, на следующем круге проверили, если отправлено, то просто идём дальше по кругу. Весь вопрос в том, что нужно обдумать условие снятия этого флага, скажем личное присутствие и нажатие на кнопку. Тут уж Вам карты в руки. Подумайте и хорошо обдумайте алгоритм, а уж по нему код накидать самое простое занятие.
А Вас не затруднит дать какой либо пример такого кода, или ссылочку на таковой. Мне как начинающему наверное проще будет разобраться на примере, попытаться прикрутить к уже готовому и посмотреть как он себя реализовывает, а вот потом уже можно и с алгоритмом покумекать. Не сочтите за наглость, но познания у меня в програмировании начальные.
Рабочий пример с отправкой температуры есть в самом начале этой темы, там только одну строку нужно заменить, какую, так же есть выше. А дальше в теле Loop просто всталяете проверку и если условие выполняется отправляете sms.
volatile boolean flag_alarm_sms = false; //Флаг отправки SMS, если сброшен, //то sms не отправлялась void setup() { } void loop() { if (Temp<15 && flag_alarm_sms==false) // если температура меньше 15 и флаг sms сброшен, то { sms("wrong command", MASTER, String(Temp)); //отправить sms с температурой flag_alarm_sms=true; // и установить флаг - sms отправлена } }И как для начинающего! Начинать нужно с алгоритма, а уже код по нему напиасать совсем не сложно.
Это код так, для примера просто. Правильней всего обрабатывать все ошибки, то есть, после отправки sms, перекурить немного и считать данные с сериала, если отправка прошла без ошибок, то установить флаг, если нет, на следующем обороте будет сделана следующая попытка отправки. Нужно учитывать перекуры. Еще нужно определить условие сброса флага вновь, так как если не будет отключено питание, sms больше не будет отправлена при вновь понизившейся или далее понижающейся температуре. Нужно либо выключить и включить питание или скажем какое то другое условие должно выполниться, или кнопку поставить и повесить ее на прерывание, при ее нажати просто сбрасывать флаг. А еще ведь могут обесточить все, флаг сбосится и вновь придет sms если температура низкая, хотя в этом есть и свои плюсы, большая надежность и информативность, а можно и в еепром статус флага хранить, но думаю лишнее это. Тут уж на что фантазии у Вас хватит.
Огромное спасибо за пример и разъяснение. Буду пытаться сделать сброс флага по сравнению температуры во времени. Если температура изменилась на -1, то сброс и снова отправк sms. Про обесточивание уже решено введением дополнительного резервного питания от аккумулятора. Ну или на худой конец попытаюсь сделать сброс флага с последующим условием отправки sms при изменении температуры на -1 посредством отправки кодового слова по sms
Ну вот наконец похоже довел до логического конца свою задумку. Дополнительно ввел датчик воды (появилась такая задача), поскольку пока делал наступила весна и начал таять снег...;) Пивожу полнйс скетч для обсуждения и использования, поскольку возможно кому и пригодиться.
String stringOne, stringTwo, stringThree, stringFour, stringFive, stringSix, stringSeven, stringEight; #include <OneWire.h> #include <SoftwareSerial.h> #include <string.h> OneWire ds(4); #define MASTER "+77777777777" //мой номер телефона SoftwareSerial mySerial(2, 3); // RX, TX int ch = 0; char a; int h; int t; int ledr1 = 11; // переменная управления реле 1 int ledr2 = 12; // переменная управления реле 2 int led = 10; // переменная управления светодиодом int pit = 7; // переменная датчика температуры //Вводим датчик воды ----------------------------------------------- int waterPin = 7; // переменная датчика воды int min_temp_water = 550; // допустимый уровень воды в приямке (от 0 до 1023) int temp_water; // переменная для занесения уровня воды в приямке boolean waterSended = false; //------------------------------------------------------------------ String val = ""; //Добавлены к инициализации ---------------------------------------- int Step = 0; int minTemp = 14; // порог температуры для начала отправки SMS тревоги boolean isSended = false; //Конец добавленых ------------------------------------------------- void setup() { Serial.begin(9600); //подключаем порт компьютера pinMode(led, OUTPUT); //назначение pin 13 как выход pinMode(ledr1, OUTPUT); // назначение pin 11 как выход digitalWrite(ledr1, HIGH); // установка высокого уровня на выходе управления реле 1 pinMode(ledr2, OUTPUT); // назначение pin 12 как выход digitalWrite(ledr2, HIGH); // установка высокого уровня на выходе управления реле 2 Serial.println("GSM tester v1.0"); delay(500); mySerial.println("AT+IPR=19200"); //задаем скорость работы порта M590 равной 19200 mySerial.begin(19200); mySerial.println("AT+IPR?"); mySerial.println("AT&W"); delay(500); mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.) delay(200); mySerial.println("AT+CMGD=1,4"); //удаление всех SMS с SIM карты delay(1000); mySerial.println("AT+CLIP=1"); //включаем АОН delay(200); mySerial.println("AT+CSQ"); //вывести в терминал уровень сигнала (если 99, то связи нет) delay(200); mySerial.println("AT+CPAS"); //Команда проверки статуса модуля + delay(200); mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста delay(200); mySerial.println("AT+CNMI=2,2"); delay(500); } void loop() { // ввод уровня воды ------------------------------------ temp_water = analogRead(waterPin); Serial.print("WATER-"); Serial.println(temp_water); delay(1000); if (temp_water < (min_temp_water - 50)){ waterSended = false; digitalWrite(led, HIGH); //выкдючение индикации воды в приямке (светодиод pin 13) } if (waterSended == false){ //если СМСки не отправлялись if ( temp_water >= min_temp_water){ //если temp_water выше порога Serial.println("ALARM WATER!!!"); digitalWrite(led, LOW); //вкдючение индикации воды в приямке (светодиод pin 13) //sms(String (stringSix) , MASTER); //отправка СМС с температурой waterSended = true; //флаг "СМСки отправлены" } } // ------------------------------------------------------ byte data[2]; ds.reset(); ds.write(0xCC); ds.write(0x44); delay(750); ds.reset(); ds.write(0xCC); ds.write(0xBE); data[0] = ds.read(); data[1] = ds.read(); int Temp = (data[1] << 8) + data[0]; Temp = Temp >> 4; //Serial.println(Temp); int sensorValue = Temp; stringOne = "Temp: "; stringTwo = "Alarm!!! "; stringFive = "WATER!"; stringThree = stringOne + sensorValue; stringFour = stringTwo + stringOne + sensorValue; stringSix = stringTwo + stringFive; Serial.println(stringThree); if (mySerial.available()) { //если GSM модуль что-то послал нам, то while (mySerial.available()) { //сохраняем входную строку в переменную val ch = mySerial.read(); val += char(ch); a += char(h); delay(10); } Serial.println(val); // дублируем сообщение в терминал if (val.indexOf("+CMT") > -1) { //если обнаружен СМС (для определения звонка вместо "+CMT" вписать "RING", трубку он не берет, но реагировать на факт звонка можно) if (val.indexOf(MASTER) > -1) { //если СМС от хозяина Serial.println("--- MASTER SMS DETECTED ---"); } else { Serial.println("NO MASTER SMS"); } if (val.indexOf("send1on") > -1) { // если обнаружено кодовое слово Serial.println("send1 on ok"); // сообщаем об этом в терминал (если нужно) digitalWrite(ledr1, LOW); //включаем светодиод //sms("yes sir send1 on ok!", MASTER); // отвечаем смской } else if (val.indexOf("send1off") > -1) { // если обнаружено кодовое слово Serial.println("send1 off ok"); // сообщаем об этом в терминал (если нужно) digitalWrite(ledr1, HIGH); //выключаем светодиод //sms("yes sir send1 off ok!", MASTER); // отвечаем смской } if (val.indexOf("send2on") > -1) { // если обнаружено кодовое слово Serial.println("send2 on ok"); // сообщаем об этом в терминал (если нужно) digitalWrite(ledr2, LOW); //включаем светодиод //sms("yes sir send2 on ok!", MASTER); // отвечаем смской } else if (val.indexOf("send2off") > -1) { // если обнаружено кодовое слово Serial.println("send2 off ok"); // сообщаем об этом в терминал (если нужно) digitalWrite(ledr2, HIGH); //выключаем светодиод //sms("yes sir send2 off ok!", MASTER); // отвечаем смской //sms("no sir!", MASTER); } val = ""; } } if (val.indexOf("RING") > -1) { //если звонок обнаружен if (val.indexOf("77777777777") > -1) { //если номер совпадает Serial.println("--- MASTER RING DETECTED ---"); mySerial.println("ATH0"); //разрываем связь digitalWrite(led, HIGH); //включаем светодиод на 3 сек delay(3000); sms(String (stringThree) , MASTER); digitalWrite(led, LOW); //выключаем светодиод } } val = ""; if (Serial.available()) { //если в мониторе порта ввели что-то while (Serial.available()) { //сохраняем строку в переменную val ch = Serial.read(); val += char(ch); delay(10); } //mySerial.println(val); //передача всех команд, набранных в мониторе порта в GSM модуль if (val.indexOf("sendsms") > -1) { //если увидели команду отправки СМС //sms(String("hello world"), String("+77777777777")); //отправляем СМС на номер +71234567890 } val = ""; //очищаем } //Добавлено в LOOP: отправка СМС при снижении температуры //Serial.println("TEMP =/="); //Serial.print("Step="); //Serial.print(Step); //Serial.print("isSended="); //Serial.print(isSended); if (sensorValue > (minTemp +1)){ isSended = false; Step = 0; } if (isSended == false){ //если СМСки не отправлялись if ( sensorValue == (minTemp - Step) ){ //если Temp ниже порога Serial.println("ALARM!!!"); sms(String (stringFour) , MASTER);//отправка СМС с температурой Step = Step + 1; //счетчик шагов } if (Step >= 3){ //если отправлены 3 СМСки Step = 0; isSended = true; //флаг "СМСки отправлены" } } //Конец Добавленного в LOOP: отправка СМС при снижении температуры } void sms(String text, String phone) { Serial.println("SMS send started"); mySerial.println("AT+CMGS=\"" + phone + "\""); delay(500); mySerial.print(text); delay(500); mySerial.print((char)26); delay(500); Serial.println("SMS send complete"); delay(2000); //процедура отправки СМС }Ну вот наконец похоже довел до логического конца свою задумку....
Прямо-таки и я о такой думал... :) спасибо, я возьму этот скетч за основу, буду тестировать...
Комментарии к коду из сообщения №27.
Посидел- собрал макет, посмотрел как работает и заодно посмотрел скетч (когда-то надо ведь ;)).
В общем, сырой очень он.
Некоторые объявленные переменные "повисли" (не используются), структура (т.е логика работы) программы не очень четкая.
Это не критика, все равно автору спасибо, что начал это дело. Если будут желающие обсуждать, то будем продолжать дорабатывать здесь. :)
Привет!
Вот, немного помалякал с кодом от одного из наших коллег. Пока для обсуждения, внутри скетча постарался комментировать важные моменты.
Как говорится, приглашаю к обсуждению :)
PS. Вспоминаю свою прошлую жизнь с бейсиком и турбо паскалем, гуру попрошу потерпеть и мягко указать на возможные импрувменты или ляпы.
// выводы реле перенаправляю на светодиоды test6, можно передавать команды на М590 через ком-порт (д.б. скорость 19200 + возврат каретки) // также к pin 8 присоединяем прово линию сторожа-растяжки GND-pin8 на Ардуине // добавлено автономное время RCT - в сетапе потом нужно убрать установку времени, если уже сделано один раз для используемого модуля RTC // добавлен LCD дисплей // Внимание скетч тестовый, но рабочий. Ориентирован на UNO - один из самых дешевых (из-за проблем с памятью пришлось отказаться от OLED дисплея) // #include <OneWire.h> #include <SoftwareSerial.h> #include <string.h> #include <DS1302.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 OneWire ds(10); // pin 10 датчик температуры #define MASTER "+79111111111" // мой номер телефона SoftwareSerial mySerial(2, 3); // RX, TX int ch = 0; int waterPin = 7; // pin 7 - переменная датчика воды int ledr1 = 11; // pin 11 переменная управления реле 1 светодиод красный справа на макете int ledr2 = 12; // pin 12 переменная управления реле 2 светодиод красный левый на макете int led = 13; // pin 13 переменная управления светодиодом - желтым // подключение модуля реального времени DS1302, ниже показаны сотвествие обозначаениям в примере и плате модуля // RST = CE pin 4 // DAT = I/O pin 5 // CLK = SCLK pin 6 DS1302 rtc(4, 5, 6); // Init the DS1302 пины: 4, 5, 6 String stringThree, stringFour, stringSix; int min_temp_water = 550; // допустимый уровень воды в приямке (от 0 до 1023) int temp_water; // переменная для занесения уровня воды в приямке boolean waterSended = false; boolean WatchAlarmSended = false; boolean WatchLine = true; String val = ""; int Step = 0; int minTemp = 14; // порог температуры для начала отправки SMS тревоги boolean isSended = false; int count = 0; void setup() { // Set the clock to run-mode, and disable the write protection rtc.halt(false); rtc.writeProtect(false); // The following lines can be commented out to use the values already stored in the DS1302 rtc.setDOW(FRIDAY); // Set Day-of-Week to FRIDAY rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format) rtc.setDate(6, 8, 2010); // Set the date to August 6th, 2010 ///////////////////////////////////////////////////////////////////////////// Serial.begin(19200); // подключаем порт компьютера pinMode(8, INPUT_PULLUP); // нога pin 8 на растяжку pinMode(led, OUTPUT); // назначение pin 13 как выход pinMode(ledr1, OUTPUT); // назначение pin 11 как выход pinMode(ledr2, OUTPUT); // назначение pin 12 как выход digitalWrite(ledr1, LOW); // установка уровня на выходе управления реле 1 digitalWrite(ledr2, LOW); // установка уровня на выходе управления реле 2 Serial.println("Neoway M590 test06: WatchAlarm, T-sensor; Rele1, Rele2, RTC, LCD"); delay(500); mySerial.println("AT+IPR=19200"); //задаем скорость работы порта M590 равной 19200 mySerial.begin(19200); // mySerial.println("AT+IPR?"); // mySerial.println("AT&W"); delay(500); mySerial.println("AT+CMGF=1"); // режим кодировки СМС - обычный (для англ.) delay(200); mySerial.println("AT+CMGD=1,4"); // удаление всех SMS с SIM карты delay(1000); mySerial.println("AT+CLIP=1"); // включаем АОН delay(400); // mySerial.println("AT+CSQ"); // вывести в терминал уровень сигнала (если 99, то связи нет) // delay(200); // mySerial.println("AT+CPAS"); // Команда проверки статуса модуля + // delay(200); mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста delay(200); mySerial.println("AT+CNMI=2,2"); delay(500); } void loop() { if (count==0) count=1; myRTC(); WatchLine = digitalRead(8); if(WatchLine == true) { Serial.print("ALARM Watch Line!"); WatchAlarmSended = true; } // ввод уровня воды ------------------------------------ temp_water = analogRead(waterPin); // Serial.print("WATER-"); // Serial.println(temp_water); delay(1000); if (temp_water < (min_temp_water - 50)){ waterSended = false; // digitalWrite(led, HIGH); //выключение индикации воды в приямке (светодиод pin 13) } if (waterSended == false){ //если СМСки не отправлялись if ( temp_water >= min_temp_water){ //если temp_water выше порога Serial.println("ALARM WATER!!!"); // digitalWrite(led, LOW); //включение индикации воды в приямке (светодиод pin 13) //sms(String (stringSix) , MASTER); //отправка СМС с температурой waterSended = true; //флаг "СМСки отправлены" } } // ------------------------------------------------------ byte data[2]; ds.reset(); ds.write(0xCC); ds.write(0x44); delay(750); ds.reset(); ds.write(0xCC); ds.write(0xBE); data[0] = ds.read(); data[1] = ds.read(); int Temp = (data[1] << 8) + data[0]; Temp = Temp >> 4; int sensorValue = Temp; stringThree = "TEMP " + sensorValue; stringFour = "Alarm! TEMP " + sensorValue; stringSix = "Alarm! Water! "; Serial.println(stringThree); Disp(stringThree); if (mySerial.available()) { // если GSM модуль что-то послал, то сохраняем входную строку в переменную val while (mySerial.available()) { ch = mySerial.read(); val += char(ch); delay(10); } Serial.println(val); // дублируем сообщение в терминал if (val.indexOf("+CMT") > -1) { // если обнаружен СМС if (val.indexOf(MASTER) > -1) { // если СМС от хозяина Serial.println("--- MASTER SMS DETECTED ---"); } else { Serial.println("NO MASTER SMS"); } if (val.indexOf("rele1on") > -1) { // если обнаружено кодовое слово Serial.println("rele1 ON ok"); // сообщаем об этом в терминал digitalWrite(ledr1, HIGH); // включаем светодиод rele1 led3sec(); //sms("rele1 ON ok!", MASTER); // отвечаем смской } else if (val.indexOf("rele1off") > -1) { // если обнаружено кодовое слово Serial.println("rele1 OFF ok"); // сообщаем об этом в терминал digitalWrite(ledr1, LOW); // выключаем светодиод //sms("rele1 OFF ok!", MASTER); // отвечаем смской } if (val.indexOf("rele2on") > -1) { // если обнаружено кодовое слово Serial.println("rele2 ON ok"); // сообщаем об этом в терминал (если нужно) digitalWrite(ledr2, HIGH); // включаем светодиод led3sec(); //sms("rele2 ON ok!", MASTER); // отвечаем смской } else if (val.indexOf("rele2off") > -1) { // если обнаружено кодовое слово Serial.println("rele2 OFF ok"); // сообщаем об этом в терминал (если нужно) digitalWrite(ledr2, LOW); // выключаем светодиод //sms("rele2 OFF ok!", MASTER); // отвечаем смской } } if (val.indexOf("RING") > -1) { // если звонок обнаружен if (val.indexOf("79111111111") > -1) { // если номер совпадает Serial.println("--- MASTER RING DETECTED ---"); mySerial.println("ATH0"); // разрываем связь led3sec(); // sms(String (stringThree) , MASTER); } } val = ""; } if (Serial.available()) { //если в мониторе порта ввели что-то while (Serial.available()) { //сохраняем строку в переменную val ch = Serial.read(); val += char(ch); delay(10); } mySerial.println(val); // передача всех команд, набранных в мониторе порта в GSM модуль if (val.indexOf("rele1on") > -1) { // если увидели команду digitalWrite(ledr1, HIGH); // включаем светодиод на rele1 led3sec(); // включаем-выключаем светодиод led } if (val.indexOf("rele1off") > -1) { // если увидели команду digitalWrite(ledr1, LOW); // выключаем светодиод на rele1 } if (val.indexOf("rele2on") > -1) { // если увидели команду digitalWrite(ledr2, HIGH); // включаем светодиод на rele2 led3sec(); // включаем-выключаем светодиод led // mySerial.println("ATD+79111111111;"); } if (val.indexOf("rele2off") > -1) { // если увидели команду digitalWrite(ledr2, LOW); // выключаем светодиод на rele2 } val = ""; } if (sensorValue > (minTemp +1)){ isSended = false; Step = 0; } if (isSended == false){ // если СМСки не отправлялись if ( sensorValue == (minTemp - Step) ){ // если Temp ниже порога Serial.println("ALARM!!!"); // sms(String (stringFour) , MASTER); // отправка СМС с температурой Disp(stringFour); Step = Step + 1; // счетчик шагов } isSended = true; // флаг "СМС отправлена" } } void led3sec() //процедура вклчения на 3 секунды led13 { digitalWrite(led, HIGH); delay(3000); digitalWrite(led, LOW); } void Disp(String text) { lcd.init(); // initialize the lcd lcd.backlight(); lcd.setCursor(0,0); lcd.print("Hello, Watcher!"); lcd.setCursor(0,1); lcd.print(stringThree); lcd.setCursor(0,2); lcd.print("Reserved"); lcd.setCursor(0,3); lcd.print("Reserved"); } void myRTC() // процедура выводв реального времени на ком-порт { // Send Day-of-Week Serial.print(rtc.getDOWStr()); Serial.print(" "); delay (500); // Send date Serial.print(rtc.getDateStr()); Serial.print(" -- "); // Send time Serial.println(rtc.getTimeStr()); } void sms(String text, String phone) //процедура отправки СМС { Serial.println("SMS send started"); mySerial.println("AT+CMGS=\"" + phone + "\""); delay(500); mySerial.print(text); delay(500); mySerial.print((char)26); delay(500); Serial.println("SMS send complete"); delay(2000); } /* void WatchLine() // процедура запуска сторожа-растяжки { mySerial.println("ATD+79111111111;"); // звоним по указаному номеру delay(10000); mySerial.println("ATH0"); } */скетч оставили на таком уровне, или еще улучшали?
скетч оставили на таком уровне, или еще улучшали?
Много изменений по части выбрасывания лишнего, изменения функционала. Сейчас жду дисплей с I2C интрефейсом, чтобы монтаж пороще сделать. В общем, под потребности и железо изменения сделаны.
Ребята, всем привет, подсобите пожалуйста скетчем для обычного термистора. Нужно контролировать температуру подачи воды в батареи, и температу в помещении. Если температура подачи воды упадет до заданного значения - отправлять смс уведомление, что температура подачи такая-то, температура в помещении такая-то. в итоге имеем 2 термистора.
Отправка смс на 2 номера. Также чтоб отправляла смс со значениями температур при входящем вызове с указанных номеров, позвонили, модуль определил номер, если номер хозяина, сбрасываем вызов и отправляем смс с температурами. Помогите, совсем не шарю, но попробую разобраться в готовом скетче, в наличие m590 ардуино уно, микро про, и 2 NTC датчика.
Заранее благодарен
а дс1820 ??
а дс1820 ??
не совсем понял вопрос? нету у меня такого датчика, живу у черта на рогах, купить негде, есть только обычные NTC датчики, на днях отключился котел при минус 20, нет возможности туда постоянно ездить проверять, в доме никто не проживает
ардуино есть, а дс1820 нету? его проще чем ардуино достать, намного.
ардуино есть, а дс1820 нету? его проще чем ардуино достать, намного.
ну ардуину ка-то давно на али купил, а датчики только на али могу купить, но нет времени ждать, ну или в город ехать за 200 км
Всем привет, помогите дорабоать код, есть GSM розетка, собиралась для вкл выкл и перезагрузки роутера, сервера и чего угодно)
Хотелось бы сделать еще одну розетку которая могла бы не только реагировать на команды (ON,OFF,REB) но и по запросу (#temp) передавала температуру в смс ( temp: 24°C).
Вот собственно код, может кому тоже пригодиться)) датчик температуры есть dht11 можно и DS18B20
#include <SoftwareSerial.h> #include <EEPROM.h> SoftwareSerial mySerial(2, 3); // M590 String val = ""; String master = "+77777777777"; int Pins[] = {4, 5, 6, 7}; // Массив задействованных номеров Pins Arduino, для управления реле. int PinStatus[4]; // Массив для фиксации изменений. int numPins = 4; // количество выходов int ch = 0; void setup() { delay(2000); //время на инициализацию модуля Serial.begin(9600); //скорость порта Serial.println("GSM rozetka"); mySerial.begin(19200); delay(200); mySerial.println("AT+CSQ"); //вывести в терминал уровень сигнала (если 99, то связи нет) delay(100); //mySerial.begin(19200); delay(200); mySerial.println("AT+IPR=9600");delay(200);mySerial.begin(38400);delay(200); mySerial.println("AT+IPR=9600");delay(200);mySerial.begin(57600);delay(200); mySerial.println("AT+IPR=9600");delay(200);mySerial.begin(74880);delay(200); mySerial.println("AT+IPR=9600");delay(200);mySerial.begin(115200); delay(200);mySerial.println("AT+IPR=9600");delay(200); mySerial.println("AT+CSQ"); //вывести в терминал уровень сигнала (если 99, то связи нет) delay(200); mySerial.println("AT+CLIP=1"); //включаем АОН delay(200); mySerial.println("AT+CMGF=1"); //режим кодировки СМС - обычный (для англ.) delay(200); mySerial.println("AT+CSCS=\"GSM\""); //режим кодировки текста delay(200); mySerial.println("AT+CNMI=2,2"); //вывод сообщений delay(200); for(int i = 0; i <= numPins -1; i++) { pinMode(Pins[i],OUTPUT); PinStatus[i]=EEPROM.read( i + 10 ); digitalWrite(Pins[i],PinStatus[i]); delay(10); } } void loop() { if (mySerial.available()) { //если GSM модуль что-то послал нам, то delay(200); while (mySerial.available()) //сохраняем входную строку в переменную val { ch = mySerial.read(); val += char(ch); delay(10); } if (val.indexOf("+CMT") > -1) // если пришло смс { Serial.println(val); //печатаем в монитор порта пришедшую смску // if (val.indexOf(master) > -1) // если смс от мастера // { if (val.indexOf("#") > -1) //если в смс есть символ # { if (val.indexOf("on") > -1) //a1 - вкл, a0 - выкл { PinStatus[0] = HIGH; digitalWrite(Pins[0],PinStatus[0]); EEPROM.write(10,PinStatus[0]); //сохраняем состояние пина в энергонезависимую память Serial.println("1 ON"); } if (val.indexOf("off") > -1) { PinStatus[0] = LOW; digitalWrite(Pins[0],PinStatus[0]); EEPROM.write(10,PinStatus[0]); Serial.println("1 OFF"); } if (val.indexOf("reb") > -1) { digitalWrite(Pins[0],LOW); EEPROM.write(10,PinStatus[0]); delay(1000); digitalWrite(Pins[0],HIGH); EEPROM.write(10,PinStatus[0]); Serial.println("reboot"); } if (val.indexOf("b1") > -1) { PinStatus[1] = HIGH; digitalWrite(Pins[1],PinStatus[1]); EEPROM.write(11,PinStatus[1]); Serial.println("2 ON"); } if (val.indexOf("b0") > -1) { PinStatus[1] = LOW; digitalWrite(Pins[1],PinStatus[1]); EEPROM.write(11,PinStatus[1]); Serial.println("2 OFF"); } if (val.indexOf("c1") > -1) { PinStatus[2] = HIGH; digitalWrite(Pins[2],PinStatus[2]); EEPROM.write(12,PinStatus[2]); Serial.println("3 ON"); } if (val.indexOf("c0") > -1) { PinStatus[2] = LOW; digitalWrite(Pins[2],PinStatus[2]); EEPROM.write(12,PinStatus[2]); Serial.println("3 OFF"); } if (val.indexOf("d1") > -1) { PinStatus[3] = HIGH; digitalWrite(Pins[3],PinStatus[3]); EEPROM.write(13,PinStatus[3]); Serial.println("4 ON"); } if (val.indexOf("d0") > -1) { PinStatus[3] = LOW; digitalWrite(Pins[3],PinStatus[3]); EEPROM.write(13,PinStatus[3]); Serial.println("4 OFF"); } } } else Serial.println(val); val = ""; } }Можете помочь?
вы же готовое ищите, сами даже не пытаетесь чтото сделать..
таким помогают за вознаграждание..
Я так и не нашел помощи как передать инфу с NTC датчика по смс, сижу вот тыкаюсь, но знаний нет, читаю описание в разделе "программирование", датчик температуры подключил, поставил 2 светодиода, поставил условие на включение лед 1, если температура ниже заданного значения и условие на включение светодиода 2, если температура выше заданной.На этом с датчиком температуры пока остановился. Нашел простенький скетч для отправки смс по условию, там в примере условием является нажатие кнопки, вроде все просто, но вот пока не получилось переделать, чтоб смс отправлялась после вызова, пока только светодиод зажигаю при входящем вызове, а вот смс отправить пока не получилось, но че-нить рожу в итоге, надеюсь
на что надеетесь?
странно както, народ ходит сюда чтобы за них программу написали, странно надеятся..
на что надеетесь?
странно както, народ ходит сюда чтобы за них программу написали, странно надеятся..
проще же ничего не делать ))))
Может подскажете момент, вроде получилось, при превышении заданной температуры отсылается смс на указанный номер, но проблема что оно постоянно отсылается, как только температура перешагнула нужный порог, а как сделать, чтобы отправлялось только одно смс? нужно прервать условие, но как потом быть с запуском его обратно.
запуск обратно - если температура вернулась в норму.
и тогда она один раз будет отсылаться каждый раз когда перешагнула порог в сторону аларм.
Всем привет, возможно ли пользовать этот модуль с китайской ардуино про микро?
Я так передаю, с аналогового датчика:
void sms(String text, String phone) //Функция отправки SМS { Serial.println("AT+CMGS=\"" + phone + "\""); delay(500); Serial.print(text); delay(500); Serial.print((char)26); delay(2000); } if (val.indexOf("7xxxxxxxxxx") > -1) { //если номер звонящего наш. Укажите свой номер без "+" Serial.println("ATH0"); //разрываем связь delay(1000); int tempmotor =0; for (int i=0; i<=99; i++){ tempmotor = tempmotor + analogRead(temp_motor); } tempmotor=((tempmotor/100)*0.00488)*100; float akbvoltage =0; for (int i=0; i<=99; i++){ akbvoltage = akbvoltage + analogRead(akb_voltage); //Для усреднения значения делаем 100 измерений } akbvoltage=(((akbvoltage/100)*0.00488)/0.05)*0.2015; //Вычисляем среднее измеренное значение, потом пересчитываем значение из диапазона от 0 до 5 вольт, String sms_string = "Statistic:"+'\n'; sms_string = sms_string + "Motor T= "+tempmotor+'C'+'\n'+"Battery U= "+akbvoltage+'V'; sms(String(sms_string), String("+7xxxxxxxxxx")); //отправляем СМС на номер +7xxxxxxxxxx }насколько точно и стабильно получается?
нет ли сбоем при длинном проводе метров 10-15?
вы же готовое ищите, сами даже не пытаетесь чтото сделать..
таким помогают за вознаграждание..
Я написал прошу помочь а не написать за меня, куда смотреть и как лучше сделать, может где ошибки или еще что то. Всем так нравится писать что то вроде ( вот, всем готовое давай бла бла, зачем вообще отвечать тогда? если все так разбирются и круты) вместо того чтобы ответить нужно копать туда, смотри сюда, и т д, вести дилог на форуме так сказать. Люди учаться, деляться мнение, другие что то узнают. Я просто попросил помощи, может что то упустил ,чтобы те кто знают ткнули туда где что то не понял.
вы же готовое ищите, сами даже не пытаетесь чтото сделать..
таким помогают за вознаграждание..
Я написал прошу помочь а не написать за меня, куда смотреть и как лучше сделать, может где ошибки или еще что то. Всем так нравится писать что то вроде ( вот, всем готовое давай бла бла, зачем вообще отвечать тогда? если все так разбирются и круты) вместо того чтобы ответить нужно копать туда, смотри сюда, и т д, вести дилог на форуме так сказать. Люди учаться, деляться мнение, другие что то узнают. Я просто попросил помощи, может что то упустил ,чтобы те кто знают ткнули туда где что то не понял.
да тут как я понял любят поумничать и показать свое превосходство над другими по делу ничего и не сказав :-) Я уже сам запилил все что нужно, так что, вариант только один, искать лучше знакомого, который шарит и может подсказать и направить в нужную сторону, а тут только бабло всем подавай
вы же готовое ищите, сами даже не пытаетесь чтото сделать..
таким помогают за вознаграждание..
Я написал прошу помочь а не написать за меня, куда смотреть и как лучше сделать, может где ошибки или еще что то. Всем так нравится писать что то вроде ( вот, всем готовое давай бла бла, зачем вообще отвечать тогда? если все так разбирются и круты) вместо того чтобы ответить нужно копать туда, смотри сюда, и т д, вести дилог на форуме так сказать. Люди учаться, деляться мнение, другие что то узнают. Я просто попросил помощи, может что то упустил ,чтобы те кто знают ткнули туда где что то не понял.
да тут как я понял любят поумничать и показать свое превосходство над другими по делу ничего и не сказав :-) Я уже сам запилил все что нужно, так что, вариант только один, искать лучше знакомого, который шарит и может подсказать и направить в нужную сторону, а тут только бабло всем подавай
Да прям будто все такие умные сидят и ждут кто не понимает или где то запутался, что бы написать подобные высказывания, это ФОРУМ, обсуждения и место чтобы делитсья опытом, обмениваться знаниями а не мериться *** и показывать у кого какое эго, будто у всех такие проекты авторские аля "как автоматизировать атомный реактор" мол не покажу не подскажу, киньте монетку. А ты делал что то подобное уже с температурой?
Да прям будто все такие умные сидят и ждут кто не понимает или где то запутался, что бы написать подобные высказывания, это ФОРУМ, обсуждения и место чтобы делитсья опытом, обмениваться знаниями а не мериться *** и показывать у кого какое эго, будто у всех такие проекты авторские аля "как автоматизировать атомный реактор" мол не покажу не подскажу, киньте монетку. А ты делал что то подобное уже с температурой?
Не, у меня все попроще и не так наворочено, я сделал исходящий вызов на номер хозяина, при снижении температуры подачи воды в батареи с котла (использовал обычный термистор), добавил дисплей 1602, с выводом текущей температуры в помещении и температуры подачи воды из котла, светодиод, тип когда температура упала, зажигается светодиод, на дисплее появляется надпись Авария - звонок ну модуль звонит мне на номер. В целом девайс уже помог, падало давление в системе и котел выключался, после выключения котла, соответственно падала температура подачи (трубы пластик) падала быстро, приезжал и подпитывал, в итоге обнаружил, что давление падает в кухне, где-то течь в стене, пока кухню отрубил, ща все в норме, придется по теплу бить стену
:-(
А второй модуль поставил на ворота, при звонке с 3-х мастеров номеров открываются въездные ворота во двор. Поставил симку без абонетской платы, забросил туда 7 баксов и оператор в итоге кинул меня на бабло,списали деньги за якобы подключенную мною лично какую-то там услугу, беда только в том что у модуля нет кнопок и дисплея, чтоб что-то подтвердить и подключить, лохотронщики, бабки обещали вернуть через 30 дней после разбирательства
Я вообще новичек в ардуино, потихоньку вникаю в свободное время