Звукавая сигнализация
- Войдите на сайт для отправки комментариев
народ имееться магнит на дверь и сам контакт типо такого:
нужна помощь в реализации скетча.
(при поднисении магнита контакт замкнут)
что должно уметь:
имееться это(назовем кнопка 1)
ibutton reader
2 светодиода
при открытии двери (размыкании кнопки 1) начал инициализироваться звон
int p = 3; //объявляем переменную с номером пина, на который мы //подключили пьезоэлемент void setup() //процедура setup { pinMode(p, OUTPUT); //объявляем пин как выход } void loop() //процедура loop { tone (p, 500); //включаем на 500 Гц delay(100); //ждем 100 Мс tone(p, 1000); //включаем на 1000 Гц delay(100); //ждем 100 Мс }
и не важно в каком положении кнопка 1 после запуска кода сирены, отключить можно только ibuttonom
для отключения "сирены" использовался бы ibutton (на основе этого кода)
// Based on <a href="https://danman.eu/blog/cloning-ibutton-using-rw1990-and-avr/" title="https://danman.eu/blog/cloning-ibutton-using-rw1990-and-avr/" rel="nofollow">https://danman.eu/blog/cloning-ibutton-using-rw1990-and-avr/</a> // and: <a href="http://elimelecsarduinoprojects.blogspot.com/2013/06/read-dallas-ibutton-arduino.html" title="http://elimelecsarduinoprojects.blogspot.com/2013/06/read-dallas-ibutton-arduino.html" rel="nofollow">http://elimelecsarduinoprojects.blogspot.com/2013/06/read-dallas-ibutton...</a> // By Swift Geek 28-08-2015 // TODO: danger to atmega328! Use OpenCollector logic! // Used 4.8kΩ Pull-up and 3.1 Vcc for arduino/pull-up #include <OneWire.h> #define pin 5 OneWire ibutton (pin); // I button connected on PIN 2. byte addr[8]; //array to store the Ibutton ID. void setup(){ Serial.begin(115200); } void loop(){ if (!ibutton.search (addr)){//read attached ibutton and asign value to buffer ibutton.reset_search(); delay(200); return; } Serial.print(millis()/1000); Serial.print("> "); for (byte x = 0; x<8; x++){ Serial.print(addr[x],HEX); //print the buffer content in LSB. For MSB: for (int x = 8; x>0; x--) Serial.print(" "); } //compute crc// byte crc; crc = ibutton.crc8(addr, 7); Serial.print("CRC: "); Serial.println(crc,HEX); if ( Serial.read() == 'w' ){ ibutton.skip();ibutton.reset();ibutton.write(0x33); Serial.print(" ID before write:"); for (byte x=0; x<8; x++){ Serial.print(' '); Serial.print(ibutton.read(), HEX); } // send reset ibutton.skip(); ibutton.reset(); // send 0xD1 ibutton.write(0xD1); // send logical 0 digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(60); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); Serial.print('\n'); Serial.print(" Writing iButton ID:\n "); // Hardcode here your desired ID // // 01 D5 9F DC 02 00 00 96 byte newID[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; ibutton.skip(); ibutton.reset(); ibutton.write(0xD5); for (byte x = 0; x<8; x++){ writeByte(newID[x]); Serial.print('*'); } Serial.print('\n'); ibutton.reset(); // send 0xD1 ibutton.write(0xD1); //send logical 1 digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(10); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); } } int writeByte(byte data){ int data_bit; for(data_bit=0; data_bit<8; data_bit++){ if (data & 1){ digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(60); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); } else { digitalWrite(pin, LOW); pinMode(pin, OUTPUT); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); } data = data >> 1; } return 0; }
код ibuttona { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - отключаеи звук
код ibuttona2 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; - прислонил отключил любые дествия на кнопку1 (сигнализация назоем ее так выключеном состоянии) прислонил второй раз включает сигнализацию
нужно уместить как то все в один скетч( я в написании не селен по этому и прошу помощи форумчан и знатаков)
да, вот нашел вариант
но вместо геркона надо прописать "кнопку"
Это как? Чем должна отличаться в коде кнопка от геркона?
при размыкании включалась б да и код сам частино нерабочий(
ни ключ не читает не моргает светодиодами и не играеться сирена
но вместо геркона надо прописать "кнопку"
А кнопка круглая или квадратная?
"кнопка" по схеме такая вот так работает при поднисение магнита контакт появляеться при убирание магнита контакт размыкаеться тоесть вместо механического нажатие идет нажатие от магнитного поля по сути это кнопка
при размыкании включалась б
ОК, чем должно отличаться в коде размыкание кнопки от размыкания геркона?
"кнопка" по схеме такая вот так работает при поднисение магнита контакт появляеться при убирание магнита контакт размыкаеться тоесть вместо механического нажатие идет нажатие от магнитного поля по сути это кнопка
Это всё понятно, так и должен работать геркон. Непонятно, что Вы хотели сказать фразой "но вместо геркона надо прописать "кнопку"" ? Как в коде можно изменить геркон на кнопку (или наоборот), если электрически они работают абсолютно одинаково - контакты либо замкнуты, либо разомкнуты. Каким образом контакты замыкаются - магнитным полем или нажатем пальца руки не имеет никакого значения.
щас данный скетч частично не работает и есть 2 варианта чтения ключа. тот что в скетче не подходит к rw1990/
сперва скетч надо привести в работоспособность а потом заменить структуру чтения на ibutton rw1990
рабочий код сигнализации (с датчиком воды не возился)
в верхнем скетче сигналка реагировала на любой ключ в этом же скетче эта проблема устранена
..."спасибо ".. что помоги... ждал от форума поддержки, а в результате ее нет. не понятно существования данного форума тогда
и так народ решил оптимизировать данный скетч для связки ардуино esp8266
а именно:
1) если приложен ключ 1 {0x01, 0x9F, 0xDC, 0x02, 0x00, 0x00, 0x96, 0x1C}, выполняется первая команда записанная в скетче.
2) если приложен ключ 2 {0x01, 0xF0, 0x30, 0xB5, 0x00, 0x00, 0x00, 0xDB}, начинается инициализация передачи кода {0x01, 0xF0, 0x30, 0xB5, 0x00, 0x00, 0x00, 0xDB} на пин 6, который идет на esp8266.
код оправки данных ibutton http://robocraft.ru/blog/arduino/302.html
мой нынешний вид кода:
прошу помощи а не просто просмотреть тему и закрыть.
Здраствуйте интересная тема. хочу реализовать что то подобное. В програмировании для ардуино есче не силен. Думаю если выстввили скетч то не против его использования. Не могу загрузить на Arduino куча ошибок. Интересует вариант 01/12/2016 - 18:17
Обновил Arduino IDE и удалось скомпилировать и зарузить. Пока есть проблеми как бить с перезагрузкой устройства поставленного на охрану. загружается оно снятим с охраны.
как сохранить текущее состояние переменной
boolean alarmState = 0;
//флаг работающей сигнализации
для использования в следующей загрузке
может я не все понимаю ИЗВИНИТЕ
Для сохранени я информации, которая меняется при работе программы, но должна сохраняться после перезагрузки, предназначена EEPROM.
Понял что ето но решил не заморачиватся и поставил статус при перезагрузке сразу на сигнализации.
Отличный вариант мне очень подошел.
добавил датчик воды и сервопривод крана, кнопку перекрывания и открывания крана часы реального времени (градусник пока так как игрушка). Скоро прийдет GSM SIM900 и PIR датчик буду его прикручивать. Ну и серену серйозную .
в планах Еще ETHERNET, датчик дыма, газа, клапа перекрытия газа . хорошо что все провода пробросил при ремонте
есть проблема с добавлением второго ключа пока не пойму.
Переписал проверку ключей (может и коряво, несколько недель всего знаком с платформой ) но работает, с возможностью добавления ключей .
И к стати тут возможен вариант для отправки который требовался Rossolomo.
понял почему открывало любым ключем вариант
085
if
(addr[i]==code1[i] || addr[i]==code2[i]) {
086
checkOK++;
087
}
088
089
if
(checkOK == 8
Потому что в каждом ключе первый и последние пять байт одинаковы и вместе checkOK == 8 наберал 8
Думаю есть решение
Если вы хотите хорошего совета, то хотя бы пишите грамотно. Те, у кого вы просите помощи, перестают читать ваш пост после увиденного. Не умеете- напишите сначала в ворде. Он вас поправит (например : датчик дИма, еСЧе)- кошмар!!
Да, я старый зануда. Как и многие, к кому вы обращаетесь.
Как и планировал прикрутил GSM.
Учту на счет ошибок спешил просто .
Извиняюсь.
pitches.h
Пока не все сообщения СМС активировал ещё наладка
Может кто подскажет как защитить входы, линия датчиков потопа около 10 м. возможны наводки
Сразу если можно с номиналами сопротивлений либо RC фильтров.
Полностью переделал процедуру watchdog и подготовку модема
Добавил несколько попыток отправки смс. Раньше при невозможности отправки все подвешивалось.
Защитить входы - да хотя бы так.
Защитить входы - да хотя бы так.
Спасибо