Плата для брелка сигнализации starline a94

Я вникал в ардуино как раз с этой темы. http://arduino.ru/forum/programmirovanie/nuzhen-sketch-zapuska-kotla-webasto-s-dop-kanala-signalizatsii-cherez-dunyu Смешно щас читать) 

Короче устройство закончено, работает у двух человек, но чето они не делятся как оно работает, есть ли косяки.

Может кто соберёт.

Поделиться впечатлениями. Так то вещь хорошая. Современные котлы вебасто EVO запускаются только по цифре.

К тому же сняли с производства круглые таймеры 1533 (они стоили около 3тыс.). Сейчас таймеры которые идут, стоят 6 тыс. вроде и функционал скуден и впаятся к кнопке сложнее гораздо.

Смысл моего устройства.

Модуль работает по одному из трёх алгоритмов управления котлами:

1. Запуск котла минусовым импульсом 1 сек. (Данный вариант подключения можно применять когда уже есть штатный таймер вебасто, впаяться паралельно кнопке включения)

2. Запуск котла по цифровой шине W-BUS. (Данный вариант применим к управлению котлами Webasto EVO, напрямую без штатных устройств управления)

3.

Запуск котла потенциалом 12В. Т.е. пока есть напряжение 12В - котел включен, иначе - выключен. (данный вариант применим для запуска аналоговых котлов Webasto Termo Top CE)

Режим выбирается посредством посылкой SMS с соответствующей командой и хранится в еепром.

Имеется обратная связь по успешности запуска котла даже для аналоговых webasto. Имеется выбор времени работы котла (также хранится в еепром).

Также к данному устройству выгодно подключать сигнализацию старлайн или другую.

По сути плата для брелка сигнализации starline a94 функционал сигнализации до GSM. Функции для старлайн:

1. Включение и плата для брелка сигнализации starline a94 котла с допканалов сигнализации (отдельный канал - вкл и отдельный - выкл)

2.

Запуск/останов ДВС средствами старлайна, но по GSM команде от данного устройва.

3. Вывод состояния зажигания, работы ДВС, состояния охраны, тревоги в данное устройство для оповещения по GSM.

Себестоимость устройства около 1 тыс. рублей.

Польза очевидна.

Фото изготовления и плата в layout https://yadi.sk/d/MZHB6ouG3NNqz4

Скетч 

#include <EEPROM.h> // для GSM модуля #include <SoftwareSerial.h> SoftwareSerial mySerial(14, 15); плата для брелка сигнализации starline a94, Tx String currStr = ""; int isStringMessage = 0; int KTOzapros = 0; int KTOreport = 1; int Плата для брелка сигнализации starline a94 = 1; // протокол, по которому будет происходить выход на запуск котла: 1 - импульсный минусовой выход (на впайку в таймер вебасто например) // 2 - по протоколу W-BUS ( котлы TermoTOP EVO) // 3 - по подаче потенциала 12В, т.е.

пока висит +12В - котел включен (котлы по аналогу - TermoTOP C,E) //_______Все для цикла void voltmetr() float vout = 0.0; // Напряжение на входе аналового входа float Vpit = 0.0; // Измеряемое напряжение на выходе ИБП int volt = 0; // Плата для брелка сигнализации starline a94 на входе АЦП // входы выходы на соостветствующие пины #define DopOn 4 // сюда доп канал от сигналки на включение вебасто #define DopOff 5 // сюда доп канал от сигналки на выключение вебасто #define VyhodWebasto 12 // это импульсный минусовой выход вкл/выкл вебасто к таймеру.

#define VyhodWebastoAnalog 3 // это потенциальный плюсовой выход вкл/выкл вебасто (напрямую к котлу без таймера). #define Sost 9 // Сюда состояние вебасто (+12В когда работает) #define Ohrana 6 // Сюда состояние охраны сигналки #define Trevoga 7 // Сюда состояние тревоги #define StartEng 8 // это импульсный минусовой выход вкл/выкл ДВС. подключать на вход событий сиги. плата для брелка сигнализации starline a94 IGN 10 // Сюда состояние зажигания #define Eng 11 // Сюда состояние работы ДВС плата для брелка сигнализации starline a94 для шины 1-wire и датчиков DS18B20 #include <OneWire.h> // библиотека для DS18B20 OneWire ds(2); // датчики DS18B20 на 2 пин byte VyhlopC[8] ={0x28, 0xFF, 0xE6, 0x14, 0x90, 0x15, 0x04, 0x62}; плата для брелка сигнализации starline a94 тут ставим свои адреса датчиков byte EngineC[8] ={0x28, 0xFF, 0x06, 0x15, 0x90, 0x15, 0x04, плата для брелка сигнализации starline a94 byte UlicaC[8] ={0x28, 0xFF, 0x43, 0x42, 0xA8, 0x15, 0x03, 0x2A}; byte SalonC[8] ={0x28, 0xFF, 0xE0, 0x19, 0xA8, 0x15, 0x01, 0xA7}; volatile int TempVyhlopC = 20; volatile int TempEngineC = 20; volatile int TempUlicaC = 20; volatile int TempSalonC = 20; byte Zapusk20[5] = {0xF4,0x03, 0x20, 0x3B, 0xEC} ; byte Zapusk21[5] = {0xF4,0x03, 0x21, 0x3B, 0xED} ; byte Stop[4] = {0xF4,0x02, 0x10, 0xE6} ; bool flagStartPresent = 1; //флаг что отправляем в момент периодического поддержания связи W-Bus status или start int StartMessageRepeat = 0; //количество отправленных сообщений на старт котла int StopMessageRepeat = 0; //количество отправленных сообщений на остановку котла unsigned long TimeWebasto = 1800000; //время работы котла, 1800000 = 30мин unsigned long EndReportMillis = 0; //переменная для таймера отправки отчета об успешности запуска котла unsigned long EndReportEngine = 0; //переменная для таймера отправки отчета об успешности запуска ДВС unsigned long Prev_PeriodW_BusMessage = 0; //переменная для таймера периодической отправки сообщений состояния котла в шину W-Bus unsigned long Prev_PeriodW_BusStartStop = 0; //переменная для таймера периодической отправки сообщений старта/стопа котла в шину W-Bus //для таймера - активация котла - импульс массы 0,8 сек на провод, впаянный в таймер вебасто) unsigned long time, timer=0; bool timerenabled=false; #define TIMEREXPIRED (time-timer)>800 //для таймера - старт двигателя - импульс +5В на оптопару, в итоге минусовой импульс 1 сек на вход событий сигналки для запуска ДВС) unsigned long TimeStartEng, timerStartEng=0; bool timerenabledStartEng=false; #define TIMEREXPIRED_StartEng (TimeStartEng-timerStartEng)>2000 //для таймера - старт котла по W-BUS ) unsigned long TimeStart_W_BUS, timerStart_W_BUS=0; bool timerenabledStart_W_BUS=false; #define TIMEREXPIRED_Start_W_BUS (TimeStart_W_BUS-timerStart_W_BUS)> TimeWebasto bool webasto = 0; // состояние команды на работу Webasto.

0 - котел выключен, 1 - котел включен bool startWebasto_OK = 0; // состояние успешного запуска котла bool report = false; // состояние нужности отправки отчета false - не нужно отправлять, true - нужно отправлять bool reportEngine = false;// состояние нужности отправки отчета false - не нужно отправлять, true - нужно отправлять bool плата для брелка сигнализации starline a94 =0; //флаг работает ли ДВС или нет bool ignition=0; //флаг включено ли зажигание или нет bool ohrana=0; //флаг включена ли охрана или нет bool trevoga=0; //флаг включена ли тревога или нет bool alarmSMS = 0; //флаг отправлена ли смс о тревоге или нет // СТАРТОВЫЙ ЦИКЛ void setup() { delay (2500); WDTCSR=(1<<WDCE)|(1<<WDE); //для датчиков DS18B20 // WDTCSR=(1<<WDIE)| (1<<WDP2)|(1<<WDP1); // для датчиков DS18B20 (разрешение прерывания + выдержка 1 секунда) WDTCSR=(1<<WDIE)| (1<<WDP3)|(1<<WDP0); // для датчиков DS18B20 (разрешение прерывания + выдержка 8 секунд) pinMode (DopOn, INPUT); digitalWrite (DopOn, HIGH); pinMode (DopOff, INPUT); digitalWrite (DopOff, HIGH); pinMode (Sost, INPUT); digitalWrite (Sost, HIGH); pinMode (VyhodWebasto, OUTPUT); digitalWrite (VyhodWebasto, HIGH); pinMode (VyhodWebastoAnalog, OUTPUT); digitalWrite (VyhodWebastoAnalog, LOW); pinMode (StartEng, OUTPUT); digitalWrite (StartEng, LOW); pinMode (13, OUTPUT); digitalWrite (13, LOW); pinMode (Ohrana, INPUT); digitalWrite (Ohrana, HIGH); pinMode (Trevoga, Плата для брелка сигнализации starline a94 digitalWrite (Trevoga, HIGH); pinMode (IGN, INPUT); digitalWrite (IGN, HIGH); pinMode (Eng, INPUT); digitalWrite (Eng, HIGH); Serial.begin (2400, SERIAL_8E1); // сериал соединение протокол W-Bus mySerial.begin(19200); // сериал соединение для gsm модуля delay(2000); NastroykaGSM (); TimeWebasto = EEPROM.read(1)*60000UL; Protocol = EEPROM.read(2); } void loop() { if (Protocol==1||Protocol==3) {webasto = !digitalRead (Sost); if (TempVyhlopC - TempUlicaC > 15) startWebasto_OK = 1; else startWebasto_OK = 0;} if (Protocol==2)W_Bus(); //ниже для таймера старта котла по W-BUS и аналогу TimeStart_W_BUS = millis(); if (timerenabledStart_W_BUS){ if (TIMEREXPIRED_Start_W_BUS) { digitalWrite (VyhodWebastoAnalog,LOW); webasto=0; timerenabledStart_W_BUS = false;}} //ниже для таймера создания импульса на старт ДВС TimeStartEng = millis(); if (timerenabledStartEng) { if (TIMEREXPIRED_StartEng) {digitalWrite (StartEng, LOW); timerenabledStartEng=false;}} engine = !digitalRead (Eng); ignition= !digitalRead (IGN); ohrana= !digitalRead (Ohrana); trevoga= !digitalRead (Trevoga); if (webasto && report) timerReport (); if (reportEngine) timerReportEngine (); if (trevoga && !alarmSMS) AlarmSMS (); if (!ohrana) alarmSMS = плата для брелка сигнализации starline a94 readSMS(); voltmetr(); WebastoOprosImpulse (); } void voltmetr() //____________Цикл "Вольтметр"__измерение напряжения на выходе ИБП // Взято с http://digitrode.ru/computing-devices/mcu_cpu/87-voltmetr-na-arduino.html { volt = analogRead(A7); // А7 аналоговый вход вольтметра плата для брелка сигнализации starline a94 vout = (volt * 4.92) / 1024; плата для брелка сигнализации starline a94 Vpit = vout / (9950.0/(98600.0+9950.0)); // По формуле Vpit = vout / (R2/(R1+R2)) if (Vpit<0.09) Vpit=0.0; // Округление до нуля } void NastroykaGSM () { mySerial.print("AT+CMGF=1\r"); //устанавливает текстовый режим смс-сообщения delay(200); mySerial.print("AT+IFC=1, 1\r"); //устанавливает программный контроль потоком передачи данных delay(200); mySerial.print("AT+CPBS=\"SM\"\r"); //открывает доступ к данным телефонной книги SIM-карты delay(200); mySerial.print("AT+GSMBUSY=1\r"); //запрет всех входящих звонков delay(300); mySerial.print("AT+CNMI=1,2,2,1,0\r"); //включает оповещение о новых сообщениях delay(300); mySerial.print("AT+CMGDA=\"DEL ALL\"\r"); // удаляем все смс, ки delay(2000); } void startSegaSMS() //__________________Цикл подготовки модуля к отправке СМС-сообщений по первому номеру { mySerial.print("AT+CMGF=1\r"); delay(200); mySerial.println("AT+CMGS=\"+79000000000\""); // (+79000000000 сдесь должен быть ваш номер №1) delay(500); } void startSega_2SMS() //__________________Цикл подготовки модуля к отправке СМС-сообщений по второму номеру { mySerial.print("AT+CMGF=1\r"); delay(100); mySerial.println("AT+CMGS=\"+7900000000\""); // (+79000000000 сдесь должен быть ваш номер №2) delay(100); } void Плата для брелка сигнализации starline a94 () { delay(200); mySerial.println((char)26); // Команда отправки СМС delay(4000); mySerial.print("AT+CMGDA=\"DEL ALL\"\r"); // удаляем все смс, ки delay(2000); плата для брелка сигнализации starline a94 void readSMS() //_____Цикл чтения входящих СМС-сообщений______________ { if (!mySerial.available()) return; char currSymb = mySerial.read(); // Serial.print (currSymb); if ('\r' == currSymb) { if (isStringMessage!=0) //если плата для брелка сигнализации starline a94 строка - SMS-сообщение, отреагируем на него соответствующим образом { if (!currStr.compareTo("ZAPROS")) { SMSzapros();} // Передача параметров по СМС else if (!currStr.compareTo("Webasto-ON")) { if (!webasto) {StartWebasto (); report = true; EndReportMillis = millis(); // если получили команду на включение и вебаста в настоящий момент выключена - включаем плата для брелка сигнализации starline a94 плата для брелка сигнализации starline a94 if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto Vkluchena"); EndSMS(); KTOreport = 1;} else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Webasto Vkluchena"); EndSMS(); KTOreport = 2;}} плата для брелка сигнализации starline a94 else {if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto uzhe vkluchena"); EndSMS();} else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Webasto uzhe vkluchena"); EndSMS();}}} else if (!currStr.compareTo("Webasto-OFF")) {if (webasto){StopWebasto (); report = false; // если получили команду на выключение и вебаста в настоящий момент включена - выключаем плата для брелка сигнализации starline a94 if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto Otkluchena"); EndSMS();} else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Webasto Otkluchena"); EndSMS();}} else {if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto uzhe otkluchena"); EndSMS();} плата для брелка сигнализации starline a94 плата для брелка сигнализации starline a94 плата для брелка сигнализации starline a94 else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Webasto uzhe otkluchena"); EndSMS();}} плата для брелка сигнализации starline a94 } else if (!currStr.compareTo("Engine-ON")) {if (!engine) { digitalWrite (StartEng, HIGH); timerStartEng=TimeStartEng; timerenabledStartEng=true; reportEngine = true; EndReportEngine = millis(); // если получили команду на включение ДВС и он в настоящий момент выключен - включаем плата для брелка сигнализации starline a94 плата для брелка сигнализации starline a94 плата для брелка сигнализации starline a94 плата для брелка сигнализации starline a94 плата для брелка сигнализации starline a94 if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Engine Start"); EndSMS(); KTOreport = 1;} else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Engine Start"); EndSMS(); KTOreport = 2;}} плата для брелка сигнализации starline a94 else {if (isStringMessage = 1) плата для брелка сигнализации starline a94 mySerial.println("Dvigatel uzhe rabotaet"); EndSMS();} else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Dvigatel uzhe rabotaet"); EndSMS();}} } else if (!currStr.compareTo("Engine-OFF")) {if (engine){ digitalWrite (StartEng, HIGH); timerStartEng=TimeStartEng; timerenabledStartEng=true; reportEngine = false; // если получили команду на выключение ДВС и он в настоящий момент работает - выключаем if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto Otkluchena"); EndSMS();} плата для брелка сигнализации starline a94 else if (isStringMessage = плата для брелка сигнализации starline a94 {startSega_2SMS(); mySerial.println("Webasto Otkluchena"); EndSMS();}} плата для брелка сигнализации starline a94 else {if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto uzhe плата для брелка сигнализации starline a94 EndSMS();} плата для брелка сигнализации starline a94 else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Webasto uzhe otkluchena"); EndSMS();}} } else if (!currStr.compareTo("Impulse")) {Protocol = 1; EEPROM.write(2,Protocol); if (isStringMessage = 1) {startSegaSMS(); mySerial.println("zapusk GND_impulse"); EndSMS();} плата для брелка сигнализации starline a94 else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("zapusk GND_impulse"); EndSMS();}} плата для брелка сигнализации starline a94 плата для брелка сигнализации starline a94 плата для брелка сигнализации starline a94 плата для брелка сигнализации starline a94 else if (!currStr.compareTo("W-BUS")) {Protocol = 2; EEPROM.write(2,Protocol); webasto = 0; if (isStringMessage = 1) {startSegaSMS(); mySerial.println("zapusk W-BUS"); EndSMS();} else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("zapusk W_BUS"); EndSMS();}} else if (!currStr.compareTo("Potenzial")) {Protocol = 3; EEPROM.write(2,Protocol); if (isStringMessage = 1) {startSegaSMS(); mySerial.println("zapusk +12V Potencial"); EndSMS();} else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("zapusk +12V Potencial"); EndSMS();}} else if (!currStr.compareTo("Webasto20min")) {TimeWebasto = 1200000; EEPROM.write(1,TimeWebasto/60000UL);if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto time 20min"); EndSMS();} плата для брелка сигнализации starline a94 else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Webasto time 20min"); EndSMS();}} else if (!currStr.compareTo("Webasto30min")) {TimeWebasto = 1800000; EEPROM.write(1,TimeWebasto/60000UL); if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto time 30min"); EndSMS();} else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Webasto time 30min"); EndSMS();}} else if (!currStr.compareTo("Webasto40min")) {TimeWebasto = 2400000; EEPROM.write(1,TimeWebasto/60000UL); if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto time 40min"); EndSMS();} else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Webasto time 40min"); EndSMS();}} плата для брелка сигнализации starline a94 else if (!currStr.compareTo("Webasto50min")) {TimeWebasto = 3000000; EEPROM.write(1,TimeWebasto/60000UL); if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto time 50min"); EndSMS();} плата для брелка сигнализации starline a94 else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Webasto time 50min"); EndSMS();}} else if (!currStr.compareTo("Webasto60min")) {TimeWebasto = 3480000; EEPROM.write(1,TimeWebasto/60000UL); if (isStringMessage = 1) {startSegaSMS(); mySerial.println("Webasto time 60min"); EndSMS();} плата для брелка сигнализации starline a94 else if (isStringMessage = 2) {startSega_2SMS(); mySerial.println("Webasto time 60min"); EndSMS();}} плата для брелка сигнализации starline a94 else if (!currStr.compareTo("Balance")) SMSbalance(); isStringMessage = 0; плата для брелка сигнализации starline a94 } else { if (currStr.startsWith("+CMT: \"+70000000000")) { isStringMessage = 1; KTOzapros = 1;} //если текущая строка начинается с "+CMT",то следующая строка является сообщением else if (currStr.startsWith("+CMT: \"+79000000000")) { isStringMessage = 2; KTOzapros = 2;} плата для брелка сигнализации starline a94 else if (currStr.startsWith("+CUSD: 0,")) //если текущая строка начинается с "+CUSD",то следующая строка является запросом баланса { if (KTOzapros == 1) startSegaSMS(); else if (KTOzapros == 2) startSega_2SMS(); mySerial.print (currStr); EndSMS(); } } currStr = ""; } else if ('\n' != currSymb) { currStr += String(currSymb);} } плата для брелка сигнализации starline a94 SMSzapros() { if (isStringMessage == 1) { startSegaSMS();} else if (isStringMessage == 2) { startSega_2SMS();} else if (isStringMessage == 0) плата для брелка сигнализации starline a94 (KTOreport == 1) startSegaSMS(); else if (KTOreport == 2) startSega_2SMS();} if (webasto) { mySerial.println ("Webasto ON"); if (startWebasto_OK) mySerial.println ("StartWebasto OK"); плата для брелка сигнализации starline a94 else mySerial.println ("StartWebasto FAIL");} else mySerial.println ("Webasto OFF"); плата для брелка сигнализации starline a94 if (engine) mySerial.println ("Engine ON"); else mySerial.println ("Engine OFF"); if (ignition) mySerial.println ("IGN ON"); else mySerial.println ("IGN OFF"); плата для брелка сигнализации starline a94 if (ohrana) mySerial.println ("OHRANA ON"); else mySerial.println ("OHRANA OFF"); if (trevoga) mySerial.println ("Vnimanie!!!

Плата для брелка сигнализации starline a94 Sirena Vkl!"); mySerial.print("Battery: "); mySerial.print (Vpit); mySerial.println("V"); mySerial.print("Engine: "); mySerial.print (TempEngineC); mySerial.println("*C"); mySerial.print("Vyhlop: "); mySerial.print (TempVyhlopC); mySerial.println("*C"); mySerial.print("Ulica: "); mySerial.print (TempUlicaC); mySerial.println("*C"); mySerial.print("Salon: "); mySerial.print (TempSalonC); mySerial.println("*C"); mySerial.print("Protocol: "); if (Protocol==1) mySerial.println("GND Impulse"); else if (Protocol==2) mySerial.println("W-BUS"); else if (Protocol==3) mySerial.println("+12V Potencial"); mySerial.print("Webasto Time: "); mySerial.print (TimeWebasto/60000UL); плата для брелка сигнализации starline a94 EndSMS(); } void SMSbalance() { mySerial.print("AT+CMGF=1\r"); плата для брелка сигнализации starline a94 delay(200); mySerial.println ("AT+CUSD=1,\"#100#\""); //mySerial.println("AT+CMGS=\"#100#\""); // mySerial.println("ATD#100#"); //mySerial.println("AT + CMGS = \"111\""); // (+79000000000 сдесь должен быть ваш номер №1) delay(2000); // команда на замену на транслит *111*6*2# //mySerial.println ("11"); //EndSMS(); } void AlarmSMS() плата для брелка сигнализации starline a94 startSegaSMS(); mySerial.println ("Vnimanie!!!

Trevoga!!! Sirena Vkl!"); EndSMS(); startSega_2SMS(); mySerial.println ("Vnimanie!!! Trevoga!!! Sirena Vkl!"); EndSMS(); alarmSMS = true; } void StartWebasto() { if (Protocol==1){ digitalWrite (VyhodWebasto, LOW); timer=time; timerenabled=true;} else if (Protocol==2||Protocol==3){ StartMessageRepeat = 0; webasto = 1; digitalWrite (VyhodWebastoAnalog, HIGH); timerStart_W_BUS=TimeStart_W_BUS; timerenabledStart_W_BUS = true;} } void StopWebasto() { if (Protocol==1){ digitalWrite (VyhodWebasto, LOW); timer=time; timerenabled=true;} else if (Protocol==2||Protocol==3){ StopMessageRepeat = 0; webasto = 0; digitalWrite (VyhodWebastoAnalog, LOW); timerenabledStart_W_BUS = false;} } void WebastoOprosImpulse (){ // опрос допканалов от сигнализации включения/ выключение котла и таймер импульса старт/стоп котла time = millis(); if (timerenabled) {if (TIMEREXPIRED) {digitalWrite (VyhodWebasto, HIGH); timerenabled=false;}} плата для брелка сигнализации starline a94 else {if (!digitalRead (DopOn) && !webasto) {StartWebasto(); report = true; EndReportMillis = millis(); KTOreport = 1;} if (!digitalRead (DopOff) && webasto) {StopWebasto(); report = false;}}} // цикл таймера отправки отчета об успешности запуска котла (отчёт через 6 мин после старта) void timerReport () { if(millis() - EndReportMillis > 360000UL) {EndReportMillis = millis(); report = false; SMSzapros(); }} // цикл таймера отправки отчета об успешности запуска ДВС (отчёт через 30сек после старта) void timerReportEngine () { if(millis() - EndReportEngine > 30000) {EndReportEngine = millis(); reportEngine = false; SMSzapros();}} void W_Bus (){ if (webasto) { if (StartMessageRepeat<4 && (millis()-Prev_PeriodW_BusStartStop>800)){ for (int i = 0; i<5; i++) Serial.write (Zapusk21[i]); StartMessageRepeat++; Prev_PeriodW_BusStartStop = millis(); } if (StartMessageRepeat>=4){ if (millis()-Prev_PeriodW_BusMessage>5000) { //делаем периодическое поддержание связи W-BUS // наверное сканает отправка сообщения о состоянии котла // т.е.

,например, отправляем периодически запрос на показания датчиков // состоянием работы котла будет наличие или отсутствие пламени if (flagStartPresent) {for (int i = 0; i<5; i++) Serial.write (Zapusk21[i]); } //else {for (int i = 0; i<5; i++) Serial.write (StateMessage[i]);} flagStartPresent = !flagStartPresent; StopMessageRepeat = 0; Prev_PeriodW_BusMessage = millis(); }}} else if (StopMessageRepeat<4 && (millis()-Prev_PeriodW_BusStartStop>800)){ for (int i = 0; i<4; i++) Serial.write плата для брелка сигнализации starline a94 StopMessageRepeat++; StartMessageRepeat = 0; Prev_PeriodW_BusStartStop = millis(); } } // Вектор прерывания для Dallas DS18B20 ISR (WDT_vect){ //вектор прерывания WD static boolean n=0; // флаг работы: запрос температуры или её чтение n=!n; if (n) {ds.reset(); // сброс шины ds.write(0xCC);//обращение ко всем датчикам ds.write(0x44);// начать преобразование (без паразитного питания) плата для брелка сигнализации starline a94 } else плата для брелка сигнализации starline a94 {ds.reset(); ds.select(VyhlopC); ds.write(0xBE); // Read Плата для брелка сигнализации starline a94 (чтение регистров) TempVyhlopC = ds.read() | (ds.read()<<8); //прочитаны 2 байта TempVyhlopC = TempVyhlopC / 16; // получение с 2-го датчика ds.reset(); ds.select(EngineC); плата для брелка сигнализации starline a94 ds.write(0xBE); // Read Scratchpad (чтение регистров) TempEngineC = ds.read() | (ds.read()<<8); //прочитаны 2 байта TempEngineC = TempEngineC/16; ds.reset(); ds.select(UlicaC); ds.write(0xBE); // Read Scratchpad (чтение регистров) TempUlicaC = ds.read() | (ds.read()<<8); //прочитаны 2 байта TempUlicaC = TempUlicaC / 16; // получение с 2-го датчика ds.reset(); ds.select(SalonC); ds.write(0xBE); // Read Scratchpad (чтение регистров) TempSalonC = ds.read() | (ds.read()<<8); //прочитаны 2 байта TempSalonC = TempSalonC/16 ; }}

Помогите допилить три вещи.

1. Запись номера телефона пользователя по смс, ну или по звонку.

2.

плата для брелка сигнализации starline a94

Наверняка GSM модуль будет зависать. Нужно сделать проверку его "зависания" и при необходимости рестарт

3. Научить всё это дело засыпать, чтоб поменьше кушало энергии.

замерял вроде где-то 25.30 мА. Многовато, если учесть ещё потребление сигнализации старлайн.

Если кто будет собирать, спрашивайте что не понятно.

Источник: http://arduino.ru/forum/proekty/gsm-ustroistvo-upravleniya-kotlami-webasto-i-ne-tolko

плата для брелка сигнализации starline a94
Copyright © 2018