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); }
Я так передаю, с аналогового датчика:
А можно весь код от начала до конца, пожалуйста
У Вас цифровой датчик, там все будет иначе. Просто преобразуйте полученное с датчика значение в строку при отправке:
sms(String(текст_SMS_сообщения), String("+7хххххххххх"), String(Temp)); //отправляем СМС на номер +7хххххххххх
Не получается вставить в свой код, ошибки выдает. Если вам не трудно можно по-подробней показать куда правильно вставить, а то у меня руки видимо кривые((
Вот Ваш кусок кода, Вы писали что он работает и отправляет SMS:
Попробуйте заменить строки
на
PS: Мне не жалко своего кода, просто Вы еще больше в нем запутаетесь, я прерывания по звонку аппаратно использую, для вывода из режима сна и сторожевой таймер.
Спасибо ВАМ Большущее!!!! Все заработало!!!
Поздравляю!
Я в своей конструкции нашел баг, пока еще не разобрался в чем причина. На столе все работает, после установки в авто, через несколько дней глухой висяк. Программно зависания обрабатываю сторожевым таймером, с Дуней все ок, она как положено засыпает и просыпается при активации модуля. А вот сам модуль, через несколько дней виснет наглухо. Есть подозрение на левые спам-SMS, вероятно виснет после них.
Несколько дней девайс работал безотказно, сегодня утром решил пополнить счет, смской с другого номера, пополнил и получил висяк модуля. Отключение и включение не принесло результата, телефон абонента выключен и т.д.. Антенну уже заменил. Может и сам модуль глючит, но нужно программно очищать его память от спама. Эту конструкцию лепил наскоряк, для дистанционного запуска котла и отчета, на макетке. Едет второй модуль, с тем уже не спеша буду делать основательно, на нормальной печатке и код доводить до ума, чтоб обрабатывать все возможные ошибки, в том числе и зависания модуля и его автоматическую перезагрузку.
Модуль у вас запитан отдельно? Тоже из китая? У меня тоже глючил, пока от флюса не промыл и не пропаял
Вся конструкция, времянка, накидана на макетке, все питается от DC-DC преобразователя, все пропаяно и отмыто. ХЗ, тестирую пока. Но ошибки программно обрабатывать в любом случае необходимо, иначе ни о какой безотказности устройства и речи быть не может.
Вообще девайс получился очень экономичным и по питанию и по деньгам в эксплуатации. Звонишь на него, он просто сбрасывает звонки, но команды выполняет. То есть я, звоня на него, не трачу средств вообще, а он тратит только при отправке SMS. В режиме сна потребление всей конструкции получилось 12mA, большую часть ест преобразователь, нужно еще поколдовать, хоть аккумулятор и огромный у меня, а побереч его зимой стоит. :)
Желаю победы над этим китайским монстром! Удачи в проектах!
Прошу помощи! Уже 2 недели бьюсь с проблемой отправки sms с neoway m590. Получаю переменную с датчика температуры в переменную "t". В терминал все выводит но строка отправки (разные варианты кода) sms либо выдает ошибку, либо приходит sms в виде TEMP t. Т.е. проблема в преобразовании переменной. Правильно преобразовать не получается. У других, смотрю все работает - не пойму где у меня ошибка.
строка 56 попробуйте так
Пока приходит "TEMP" и далее пусто. Разбираюсь где я ошибся.....
строка 18, температуру вы считываете 1 раз при старте?
Спасибо большое! Увидел ошибку. Исправил. Появилась новая проблема... теперь слово "TEMP" не приходит, выполнение кода перебрасывается на строку 71 и мне приходит сообщение "hello world". Если убираю строку int t = dht.readTemperature(); то работет все как обычно т.е. при звонке в ответ приходит слово "TEMP" но без температуры.
строка 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"
УРА !!! Всё заработало при :
в чем разница пока не понимаю! Библиоку использовал #include <DHT.h>. Большое Вам спасибо за помощь!
Здравствуйте форумчане. Вот прочитал я эту ветку и решил повторить как описано. Вот странно - ничего не получилось, постоянно ругается на - sms("temperatura ", MASTER, String(Temp)); Ну никак ... Долго ломал голову поскольку я начинающий в таком деле. Набрался решимости,попытался скомпановать свой код и получилось! Прошу у вас совета по выявлению ошибок и совершенствованию кода. Хочу еще заставить сообщать sms-кой при понижении температуры ниже определенного значения, но незнаю как. Очень нужно для контроля котла в деревне, поскольку конструкцией не предусмотрен автоподжиг а котел тухнет в самый неподходящий момент, и когда старики в отъезде, можно разморозить отопление. Заранее спасибо за советы и помощь.
Секция loop постоянно крутиться по кругу, с начала и до конца, что собственно и следует из названия. Тоесть код постоянно выполняется по кругу и если скажем в конце этого круга вставить измерение температуры и проверку условия(температура ниже предела), то отправляет смс. Но тут есть одно но!!! Код работает по кругу и на следующий круг, при низкой температуре снова будет отправлена смс, по этому нужно ещё использовать флаг отправки смс. Тоесть отправили смс алярма и выставили флаг- отправлено, на следующем круге проверили, если отправлено, то просто идём дальше по кругу. Весь вопрос в том, что нужно обдумать условие снятия этого флага, скажем личное присутствие и нажатие на кнопку. Тут уж Вам карты в руки. Подумайте и хорошо обдумайте алгоритм, а уж по нему код накидать самое простое занятие.
А Вас не затруднит дать какой либо пример такого кода, или ссылочку на таковой. Мне как начинающему наверное проще будет разобраться на примере, попытаться прикрутить к уже готовому и посмотреть как он себя реализовывает, а вот потом уже можно и с алгоритмом покумекать. Не сочтите за наглость, но познания у меня в програмировании начальные.
Рабочий пример с отправкой температуры есть в самом начале этой темы, там только одну строку нужно заменить, какую, так же есть выше. А дальше в теле Loop просто всталяете проверку и если условие выполняется отправляете sms.
И как для начинающего! Начинать нужно с алгоритма, а уже код по нему напиасать совсем не сложно.
Это код так, для примера просто. Правильней всего обрабатывать все ошибки, то есть, после отправки sms, перекурить немного и считать данные с сериала, если отправка прошла без ошибок, то установить флаг, если нет, на следующем обороте будет сделана следующая попытка отправки. Нужно учитывать перекуры. Еще нужно определить условие сброса флага вновь, так как если не будет отключено питание, sms больше не будет отправлена при вновь понизившейся или далее понижающейся температуре. Нужно либо выключить и включить питание или скажем какое то другое условие должно выполниться, или кнопку поставить и повесить ее на прерывание, при ее нажати просто сбрасывать флаг. А еще ведь могут обесточить все, флаг сбосится и вновь придет sms если температура низкая, хотя в этом есть и свои плюсы, большая надежность и информативность, а можно и в еепром статус флага хранить, но думаю лишнее это. Тут уж на что фантазии у Вас хватит.
Огромное спасибо за пример и разъяснение. Буду пытаться сделать сброс флага по сравнению температуры во времени. Если температура изменилась на -1, то сброс и снова отправк sms. Про обесточивание уже решено введением дополнительного резервного питания от аккумулятора. Ну или на худой конец попытаюсь сделать сброс флага с последующим условием отправки sms при изменении температуры на -1 посредством отправки кодового слова по sms
Ну вот наконец похоже довел до логического конца свою задумку. Дополнительно ввел датчик воды (появилась такая задача), поскольку пока делал наступила весна и начал таять снег...;) Пивожу полнйс скетч для обсуждения и использования, поскольку возможно кому и пригодиться.
Ну вот наконец похоже довел до логического конца свою задумку....
Прямо-таки и я о такой думал... :) спасибо, я возьму этот скетч за основу, буду тестировать...
Комментарии к коду из сообщения №27.
Посидел- собрал макет, посмотрел как работает и заодно посмотрел скетч (когда-то надо ведь ;)).
В общем, сырой очень он.
Некоторые объявленные переменные "повисли" (не используются), структура (т.е логика работы) программы не очень четкая.
Это не критика, все равно автору спасибо, что начал это дело. Если будут желающие обсуждать, то будем продолжать дорабатывать здесь. :)
Привет!
Вот, немного помалякал с кодом от одного из наших коллег. Пока для обсуждения, внутри скетча постарался комментировать важные моменты.
Как говорится, приглашаю к обсуждению :)
PS. Вспоминаю свою прошлую жизнь с бейсиком и турбо паскалем, гуру попрошу потерпеть и мягко указать на возможные импрувменты или ляпы.
скетч оставили на таком уровне, или еще улучшали?
скетч оставили на таком уровне, или еще улучшали?
Много изменений по части выбрасывания лишнего, изменения функционала. Сейчас жду дисплей с I2C интрефейсом, чтобы монтаж пороще сделать. В общем, под потребности и железо изменения сделаны.
Ребята, всем привет, подсобите пожалуйста скетчем для обычного термистора. Нужно контролировать температуру подачи воды в батареи, и температу в помещении. Если температура подачи воды упадет до заданного значения - отправлять смс уведомление, что температура подачи такая-то, температура в помещении такая-то. в итоге имеем 2 термистора.
Отправка смс на 2 номера. Также чтоб отправляла смс со значениями температур при входящем вызове с указанных номеров, позвонили, модуль определил номер, если номер хозяина, сбрасываем вызов и отправляем смс с температурами. Помогите, совсем не шарю, но попробую разобраться в готовом скетче, в наличие m590 ардуино уно, микро про, и 2 NTC датчика.
Заранее благодарен
а дс1820 ??
а дс1820 ??
не совсем понял вопрос? нету у меня такого датчика, живу у черта на рогах, купить негде, есть только обычные NTC датчики, на днях отключился котел при минус 20, нет возможности туда постоянно ездить проверять, в доме никто не проживает
ардуино есть, а дс1820 нету? его проще чем ардуино достать, намного.
ардуино есть, а дс1820 нету? его проще чем ардуино достать, намного.
ну ардуину ка-то давно на али купил, а датчики только на али могу купить, но нет времени ждать, ну или в город ехать за 200 км
Всем привет, помогите дорабоать код, есть GSM розетка, собиралась для вкл выкл и перезагрузки роутера, сервера и чего угодно)
Хотелось бы сделать еще одну розетку которая могла бы не только реагировать на команды (ON,OFF,REB) но и по запросу (#temp) передавала температуру в смс ( temp: 24°C).
Вот собственно код, может кому тоже пригодиться)) датчик температуры есть dht11 можно и DS18B20
Можете помочь?
вы же готовое ищите, сами даже не пытаетесь чтото сделать..
таким помогают за вознаграждание..
Я так и не нашел помощи как передать инфу с NTC датчика по смс, сижу вот тыкаюсь, но знаний нет, читаю описание в разделе "программирование", датчик температуры подключил, поставил 2 светодиода, поставил условие на включение лед 1, если температура ниже заданного значения и условие на включение светодиода 2, если температура выше заданной.На этом с датчиком температуры пока остановился. Нашел простенький скетч для отправки смс по условию, там в примере условием является нажатие кнопки, вроде все просто, но вот пока не получилось переделать, чтоб смс отправлялась после вызова, пока только светодиод зажигаю при входящем вызове, а вот смс отправить пока не получилось, но че-нить рожу в итоге, надеюсь
на что надеетесь?
странно както, народ ходит сюда чтобы за них программу написали, странно надеятся..
на что надеетесь?
странно както, народ ходит сюда чтобы за них программу написали, странно надеятся..
проще же ничего не делать ))))
Может подскажете момент, вроде получилось, при превышении заданной температуры отсылается смс на указанный номер, но проблема что оно постоянно отсылается, как только температура перешагнула нужный порог, а как сделать, чтобы отправлялось только одно смс? нужно прервать условие, но как потом быть с запуском его обратно.
запуск обратно - если температура вернулась в норму.
и тогда она один раз будет отсылаться каждый раз когда перешагнула порог в сторону аларм.
Всем привет, возможно ли пользовать этот модуль с китайской ардуино про микро?
Я так передаю, с аналогового датчика:
насколько точно и стабильно получается?
нет ли сбоем при длинном проводе метров 10-15?
вы же готовое ищите, сами даже не пытаетесь чтото сделать..
таким помогают за вознаграждание..
Я написал прошу помочь а не написать за меня, куда смотреть и как лучше сделать, может где ошибки или еще что то. Всем так нравится писать что то вроде ( вот, всем готовое давай бла бла, зачем вообще отвечать тогда? если все так разбирются и круты) вместо того чтобы ответить нужно копать туда, смотри сюда, и т д, вести дилог на форуме так сказать. Люди учаться, деляться мнение, другие что то узнают. Я просто попросил помощи, может что то упустил ,чтобы те кто знают ткнули туда где что то не понял.
вы же готовое ищите, сами даже не пытаетесь чтото сделать..
таким помогают за вознаграждание..
Я написал прошу помочь а не написать за меня, куда смотреть и как лучше сделать, может где ошибки или еще что то. Всем так нравится писать что то вроде ( вот, всем готовое давай бла бла, зачем вообще отвечать тогда? если все так разбирются и круты) вместо того чтобы ответить нужно копать туда, смотри сюда, и т д, вести дилог на форуме так сказать. Люди учаться, деляться мнение, другие что то узнают. Я просто попросил помощи, может что то упустил ,чтобы те кто знают ткнули туда где что то не понял.
да тут как я понял любят поумничать и показать свое превосходство над другими по делу ничего и не сказав :-) Я уже сам запилил все что нужно, так что, вариант только один, искать лучше знакомого, который шарит и может подсказать и направить в нужную сторону, а тут только бабло всем подавай
вы же готовое ищите, сами даже не пытаетесь чтото сделать..
таким помогают за вознаграждание..
Я написал прошу помочь а не написать за меня, куда смотреть и как лучше сделать, может где ошибки или еще что то. Всем так нравится писать что то вроде ( вот, всем готовое давай бла бла, зачем вообще отвечать тогда? если все так разбирются и круты) вместо того чтобы ответить нужно копать туда, смотри сюда, и т д, вести дилог на форуме так сказать. Люди учаться, деляться мнение, другие что то узнают. Я просто попросил помощи, может что то упустил ,чтобы те кто знают ткнули туда где что то не понял.
да тут как я понял любят поумничать и показать свое превосходство над другими по делу ничего и не сказав :-) Я уже сам запилил все что нужно, так что, вариант только один, искать лучше знакомого, который шарит и может подсказать и направить в нужную сторону, а тут только бабло всем подавай
Да прям будто все такие умные сидят и ждут кто не понимает или где то запутался, что бы написать подобные высказывания, это ФОРУМ, обсуждения и место чтобы делитсья опытом, обмениваться знаниями а не мериться *** и показывать у кого какое эго, будто у всех такие проекты авторские аля "как автоматизировать атомный реактор" мол не покажу не подскажу, киньте монетку. А ты делал что то подобное уже с температурой?
Да прям будто все такие умные сидят и ждут кто не понимает или где то запутался, что бы написать подобные высказывания, это ФОРУМ, обсуждения и место чтобы делитсья опытом, обмениваться знаниями а не мериться *** и показывать у кого какое эго, будто у всех такие проекты авторские аля "как автоматизировать атомный реактор" мол не покажу не подскажу, киньте монетку. А ты делал что то подобное уже с температурой?
Не, у меня все попроще и не так наворочено, я сделал исходящий вызов на номер хозяина, при снижении температуры подачи воды в батареи с котла (использовал обычный термистор), добавил дисплей 1602, с выводом текущей температуры в помещении и температуры подачи воды из котла, светодиод, тип когда температура упала, зажигается светодиод, на дисплее появляется надпись Авария - звонок ну модуль звонит мне на номер. В целом девайс уже помог, падало давление в системе и котел выключался, после выключения котла, соответственно падала температура подачи (трубы пластик) падала быстро, приезжал и подпитывал, в итоге обнаружил, что давление падает в кухне, где-то течь в стене, пока кухню отрубил, ща все в норме, придется по теплу бить стену
:-(
А второй модуль поставил на ворота, при звонке с 3-х мастеров номеров открываются въездные ворота во двор. Поставил симку без абонетской платы, забросил туда 7 баксов и оператор в итоге кинул меня на бабло,списали деньги за якобы подключенную мною лично какую-то там услугу, беда только в том что у модуля нет кнопок и дисплея, чтоб что-то подтвердить и подключить, лохотронщики, бабки обещали вернуть через 30 дней после разбирательства
Я вообще новичек в ардуино, потихоньку вникаю в свободное время