Простая реализация сигнализации с помощью Arduino и лазера — Мои проекты и мысли — Каталог статей — GM-project.com

Сегодня речь пойдет о том, как с помощью Ардуино собрать охранную систему. Наша «охрана» будет сторожить один контур и управлять одним оповещателем.

image

Для Ардуино это не проблема, и, как вы увидите по коду программы и по схеме устройства, можно легко увеличить количество охраняемых точек доступа и количество устройств оповещения или индикации. Охранную систему можно применить для охраны как больших объектов (зданий и сооружений), так и небольших предметов (шкатулок, сейфов), и даже переносных кейсов и чемоданов. Хотя с последними надо быть поосторожнее, если вы установите систему охраны, например, на чемодан, с которым решите отправиться в путешествие, и система оповещения сработает в каком-нибудь аэропорту, то, думаю, вам предстоит серьезная беседа с местной службой безопасности 🙂

Принцип работы охранной системы

Упрощенно принцип работы устройства выглядит следующим образом (рис. 1). После включения питания устройство переходит в рабочий режим и ждет постановки на охрану. Постановка и снятие с охраны осуществляются одной кнопкой. Для повышения безопасности эту кнопку лучше расположить внутри охраняемого помещения (сейфа или шкатулки). Перед включением режима охраны дверь нужно приоткрыть. При включении режима охраны (нажатии на кнопку) электронная схема ждет, пока вы не закроете дверь в помещение (дверцу сейфа, крышку шкатулки, и т.д.).

image

На двери (или дверце) должен быть установлен концевой выключатель любого типа, об этом позднее. Замыкаясь (или размыкаясь), концевой выключатель сообщит устройству, что охраняемый контур замкнут, и устройство перейдет в режим охраны. О переходе в режим охраны система оповестит двумя короткими сигналами (как в автомобильных сигнализациях). В этом режиме устройство «ловит» открытие двери. После открытия двери система ждет несколько секунд (это величина настраиваемая, для помещений около десяти секунд, для шкатулки одна-две) отключения режима охраны, если этого не происходит, включается сирена. Алгоритм и схема разработаны так, что отключить сирену можно, только полностью разобрав корпус и отключив питание.

Устройство охранной системы очень простое (рис. 2). В основе плата Ардуино. Концевые выключатели подключаются, как обычная кнопка, через подтягивающие резисторы. На концевиках остановлюсь отдельно. Они бывают нормально замкнутые и нормально разомкнутые. Можно в качестве концевика включить обычную кнопку, только ход обычной кнопки очень велик, люфт двери обычно больше. Поэтому необходимо придумать какой-нибудь толкатель для кнопки и подпружинить, чтобы не сломать кнопку дверью. Ну и если не лень, то можно дойти до магазина и купить магнитный выключатель (геркон) (рис. 3), он не боится пыли и загрязнений.

Подойдет и концевой выключатель для автосигнализации (рис. 4). Следует отметить, программа написана под геркон. При закрытой двери его контакт замкнут. Если использовать выключатель от автосигнализации, то при закрытой двери он будет скорее всего разомкнут, и в соответствующих местах кода нужно будет поменять 0 на 1 и наоборот.

В качестве сирены предлагаю использовать оповещатель звуковой ПКИ-1 ИВОЛГА белорусского производства (рис. 5). Напряжение питания 9 — 15 В, рабочий ток 20 — 30 мА. Это позволяет использовать его с батарейным питанием. При этом он «выдает» 95 — 105 дБ.

При таких характеристиках от батарейки «Крона» он будет звучать несколько десятков минут. Я его нашел в интернете за 110 руб. Там же геркон с магнитом стоит около 30 руб. Выключатель от автосигнализации в автозапчастях был куплен за 28 руб. Транзистор КТ315 можно взять с любой буквой или заменить на любой современный маломощный кремниевый транзистор соответствующей проводимости. Если громкости одного оповещателя не хватит (кто знает, может, вы захотите, чтобы было слышно за многие километры), можно подключить несколько оповещателей параллельно или взять более мощный, только в этом случае и транзистор нужно заменить на более мощный (например, знакомую нам транзисторную сборку ULN2003). В качестве разъемов для подключения геркона и сирены я применил самые простые разъемы для аудио/видеоустройств — цена на радиорынке 5 руб. за пару.

Корпус устройства можно склеить из пластика или фанеры; если охраняется серьезный объект, то его лучше сделать металлическим. Батареи или аккумуляторы питания для повышения надежности и безопасности желательно разместить внутри корпуса.

Для упрощения программного кода не были использованы элементы энергосбережения, и батареек надолго не хватает. Можно оптимизировать код, а еще лучше радикально переделать, применив обработку событий по прерываниям и спящий режим МК. В этом случае питания от двух квадратных батареек, включенных последовательно (9 В), должно хватить на несколько месяцев.

Теперь код

Удачи!

Источник: Левша    Автор: К. Холостов

Похожие радиосхемы и статьи:news.detail : ajax-tape !!! —> DIY Дом Безопасность Лазер —>

В этой статье мы расскажем, как с минимальными затратами собрать лазерную сигнализацию. Луч лазера не виден глазу, но как только человек его пересекает, раздаётся громкий сигнал. Такую сигнализацию можно использовать для разных целей — как развлекательных, так и вполне серьёзных (например, для защиты от проникновения в дом). Что потребуется: — Arduino — Динамик-пищалка — LDR-сенсор — 4 батарейки AAA, соединённые последовательно — Лазерный диод — Аккумулятор 5 вольт — Небольшая коробка Все компоненты продаются в интернете, на радиорынках и в магазинах, торгующих радиотоварами. Принцип работы этой сигнализации такой: пока на LDR-сенсор попадает лазерный луч, ничего не происходит. Как только кто-то пересекает этот луч, LDR-сенсор подаёт команду на Arduino, в результате чего срабатывает звуковой сигнал. Сигнализация состоит из двух компонентов, которые питаются отдельно (лазер и LDR-сенсор), их необходимо установить устойчиво, чтобы луч лазера был постоянно наведён на сенсор. Расстояние между лазером и сенсором может быть большим (примерно до 20 метров). Подайте питание на лазер от 5-вольтового аккумулятора. Можете добавить в цепь переключатель, чтобы выключать лазер, когда он не нужен. Прошейте Arduino файлом Laser.ino с помощью программы Ino. Соедините оставшиеся компоненты по показанной выше схеме и разместите их в коробке. Коробка должна быть неприметной (например от конфет), чтобы никто не догадался, что в ней находится сигнализация. Выведите из неё LDR-сенсор. Установите лазер и коробку с сенсором на расстоянии нескольких метров друг от друга и наведите луч на сенсор. Проверьте работоспособность конструкции — сигнализация должна пищать, если вы попытаетесь пройти сквозь луч. Будьте осторожны и не наводите луч лазера на глаза, это очень вредно для зрения.

Источник:

Instructables

018

Модули Arduino являются специальными аппаратными платформами, на основе которых можно создавать различные электронные устройства, включая и беспроводные системы GSM-сигнализации. Устройства этого типа отличаются простой конструкцией и возможностью программирования алгоритмов их работы. Благодаря этому, созданная с помощью Arduino GSM сигнализация, может максимально настраиваться под объект, который она будет охранять.

GSM сигнализация на Ардуино своими руками

Что собой представляет модуль Arduino?

Arduino реализуются в виде небольших плат, которые имеют собственный микропроцессор и память. На плате также располагается набор функциональных контактов, к которым можно подключать различные электрифицированные устройства, включая и датчики, используемые для охранных систем.

Процессор Arduino позволяет загружать в себя программу, написанную пользователем самостоятельно. Создавая собственный уникальный алгоритм, можно обеспечивать оптимальные режимы работы охранных сигнализаций для разных объектов и для разных условий использования и решаемых задач.

Читайте также:  Каркас парилки бани из фанеры

Arduino GSM модуль

Принципиальная схема

Прежде всего, подключите модуль ESP8266 к Ардуино. Чтобы правильно подключить ESP8266 к Arduino, мы использовали модуль адаптера ESP-01, который сделает соединение очень простым. Этот адаптерный модуль имеет встроенный регулятор 5В на 3,3 В, что означает, что вам не придется использовать резисторы.

Подключите контакт VCC адаптера ESP-01 к выходу 5V на Arduino и Землю (GND) на ESP-01 к GND на Arduino. Затем подключите вывод TX от адаптера к пину 2 на Ардуино и RX от адаптера к выходу 3 на Arduino.

Дальше подключите датчик MQ-2 к Ардуино. Подключите VCC и GND к датчику к контактам 5V и GND на Arduino. Затем подключите контакт A0 на MQ-2 к A0 на Arduino.

После этого подключите Зуммер и светодиоды к Arduino. Подключите положительный сигнал к зуммеру с контактом 10 на Arduino и отрицательный сигнал на зуммере с GND на Arduino. Затем подключите отрицательную сторону светодиодов к заземлению через резистор 220 Ом и положительную сторону к контактам 8 и 9 на Arduino.

Сложно ли работать с Arduino?

Модули Arduino отличаются высокой популярностью среди многих пользователей. Это стало возможным благодаря своей простоте и доступности.

Программы для управления модулями пишутся с использованием обычного C++ и дополнений в виде простых функций управления процессами ввода/вывода на контактах модуля. Кроме этого, для программирования может применяться и бесплатная программная среда Arduino IDE, функционирующая под Windows, Linux или Mac OS.

С модулями Arduino существенно упрощена процедура сборки устройств. GSM сигнализация на Ардуино может создаваться без потребности в паяльнике – сборка происходит с использованием макетной доски, перемычек и проводов.

Как создать сигнализацию с помощью Arduino?

К основным требованиям, которым должна отвечать созданная gsm сигнализация на Ардуино своими руками относятся:

  • оповещать владельца объекта о взломе или проникновении;
  • поддержке внешних систем типа звуковая сирена, сигнальные фонари;
  • управление сигнализацией через СМС или звонок;
  • автономная работа без внешнего питания.

Для создания сигнализации потребуется:

  • модуль Arduino;
  • набор функциональных датчиков;
  • GSM модуль или модем;
  • источник автономного питания;
  • внешние исполнительные устройства.

Модули для создания GSM сигнализации на Ардуино

Отличительной особенностью модулей Ардуино является использование специальных плат расширения. С их помощью осуществляется подключение всех дополнительных устройств к Arduino, которые требуются для сборки конфигурации охранной системы. Такие платы устанавливаются поверх модуля Ардуино в виде «бутерброда», а уже к самим платам подключаются соответствующие вспомогательные устройства.

Как это работает?

При срабатывании одного из подключенных датчиков происходит передача сигнала к процессору модуля Arduino. Используя загруженный пользовательский софт, микропроцессор производит его обработку по определенному алгоритму. В результате этого может формироваться команда на срабатывание внешнего исполнительного устройства, которая передается к нему через соответствующую плату расширения-сопряжения.

Чтобы обеспечить возможность оправки предупредительных сигналов владельцу дома или квартиры, которые охраняются, к модулю Arduino, через плату расширения, подключается специальный модуль GSM. В него устанавливается SIM-карта одного из провайдеров сотовой связи.

Читайте также:  Как сделать трость своими руками из дерева

Модули в сборе для GSM сигнализации на Ардуино

При отсутствии специального GSM-адаптера его роль может выполнять и обычный мобильный телефон. Кроме отправки СМС-сообщений с предупреждением о тревоге и дозвона, наличие сотовой связи позволит управлять GSM сигнализацией на Ардуино дистанционно, а также контролировать состояние объекта, отправляя специальные запросы.

«Обратите внимание!

Для связи с владельцем объекта, кроме GSM-модулей могут использоваться и обычные модемы, которые обеспечивают связь через интернет.»

В таком случае, когда срабатывает датчик, обработанный процессором сигнал, передается через модем на специальный портал или сайт. А уже из сайта осуществляется автоматическое генерирование предупредительной СМС или рассылки на привязанный e-mail.

Выводы

Делаем простейшую сигналку на GSM SIM800L и Аrduino для дачи, гаража

С наступлением дачного сезона возникла необходимость охраны дачного домика. Хотелось сделать простенькую но надежную охранную сигнализацию с передачей сигнала на сотовый телефон. Решено было собрать устройство с передачей тревоги на сотовый телефон на базе электронных плат приобретенных на Алиэкспресс. Как говорится дешево но сердито. Основными элементами данной конструкции являются модуль GSM SIM800L и плата Aрдуино(можно применить любую- Nano ,Uno,Pro Mini и тому подобные). Устройство на пять тревожных входов для контактных датчиков. К каждому входу можно подключить один или несколько датчиков последовательно соединенных В скетче присвоить каждому охранному шлейфу свое название (например-входная дверь, окно 1, окно 2 и так далее). Охранное устройство работает так: при разрыве электрической цепи первого шлейфа блок сперва дает вызов на первый телефон абонента, следом прекращает звонок и также на №2. №2 нужен в виду того что если вдруг первый абонент не в сети или подсел аккумулятор и прочие неприятности). Если срабатывают шлейфа следующие за первым, тогда происходит отсылка СМС сообщения с названием сработавшего шлейфа, в том же случае на оба номера абонентов.

Перечень инструментов и материалов. -литий –ионный аккумулятор от старого телефона 3,7В1600мА-1шт -соединительные провода; -паяльник; -тестер; -прозрачная пластмассовая коробка -1шт; -плата Arduino Nano -1 шт; -резисторы 10кОм-7шт; — макетная плата из фольгированного текстолита; — выключатель питания-1шт; -модуль SIM800L -1шт; -понижающая плата 1-2А -1шт; -клеммные разъемы.

Шаг первый

. Сборка схемы охранного GSM устройства. Фото схемы.

На макетную плату припаиваем разъемные колодки для GSM модуль SIM800L и модуль Arduino это упрощает монтаж и позволяет при необходимости легко заменять модули. Распаиваем резисторы и остальные соединения. Резисторы от контакта RX модуля SIM800L подключаются к цифровому входу D3 Arduino для согласования по напряжению входов обоих модулей. Входы Arduino D4-D8 подтягиваются через резисторы. Выключатель монтируется в разрыв питания GSM модуля SIM800 и платы Ардуино для постановки на охрану всей системы. Применение аккумулятора, что позволит устройству функционировать два три дня при отсутствии сети 220 В. Преобразователь напряжения в моем случае из напряжения 12 В выдает напряжение 4,2 В и заодно заряжает аккумулятор(можно применить другую плату, например ТР4056 с защитой).

Шаг второй . Программирование устройства. В СИМ карте должны быть удалены пинкоды и все ненужные функции. Еще предварительно нужно настроить сам модуль SIM800L-в сети есть много видео по этой теме, ничего сложного в этом нет. В скетче указываем ваши номера телефонов, корректируем названия охранных зон, можно установить время контроля системы (если прибор работает нормально через заданное время придет контрольная СМС). Заливаем скетч в Arduino и проверяем работу устройства.

Скетч:

Читайте также:  Чем развлечь волнистого попугая — обзор игрушек

String numberCall_1 = «79123456789»; // Номер абонента №1 для звонка String numberSMS_1 = «+79123456789»; // Номер абонента №1 для СМС (отличается только знаком +) String numberCall_2 = «79123456782»; // Номер абонента №2 для звонка String numberSMS_2 = «+79123456782»; // Номер абонента №2 для СМС (отличается только знаком +) String textZone_1 = «Alarm! Zone1»; // Свое название зоны , на латинице. String textZone_2 = «Alarm! Zone2»; // Свое название зоны , на латинице. String textZone_3 = «Alarm! Zone3»; // Свое название зоны , на латинице. String textZone_4 = «Alarm! Zone4»; // Свое название зоны , на латинице. #include SoftwareSerial mySerial(2, 3); #define pinSensor_0 4 #define pinSensor_1 5 #define pinSensor_2 6 #define pinSensor_3 7 #define pinSensor_4 8 void initGSM(void) { delay(2000); mySerial.begin(9600); // Выставляем скорость общения с GSM-модулем 9600 Бод/сек. mySerial.println(«AT+CLIP=1»); delay(300); mySerial.println(«AT+CMGF=1»); delay(300); mySerial.println(«AT+CSCS=»GSM»»); delay(300); mySerial.println(«AT+CNMI=2,2,0,0,0»); delay(300); } /* Отправка SMS */ void sendSMS(String text, String phone) { mySerial.println(«AT+CMGS=»» + phone + «»»); delay(500); mySerial.print(text); delay(500); mySerial.print((char)26); delay(2500); } unsigned long timerTemp = 0; uint8_t hours = 0; uint8_t flagSensor_0 = 0; uint8_t flagSensor_1 = 0; uint8_t flagSensor_2 = 0; uint8_t flagSensor_3 = 0; uint8_t flagSensor_4 = 0; void setup() { mySerial.begin(9600); initGSM(); pinMode(pinSensor_0, INPUT); pinMode(pinSensor_1, INPUT); pinMode(pinSensor_2, INPUT); pinMode(pinSensor_3, INPUT); pinMode(pinSensor_4, INPUT); timerTemp = millis(); } void loop() { if(millis() — timerTemp >= 3600000) {timerTemp = millis(); hours++;} if(hours >= 144) {// Меняем время контроля системы на свое,144 часа.кол-во часов . sendSMS(String(«The system works normally.OK»), numberSMS_1); delay(10000); sendSMS(String(«The system works normally.OK»), numberSMS_2); delay(10000); hours = 0; timerTemp = millis(); } if(flagSensor_0 == 0 && digitalRead(pinSensor_0) == 0) flagSensor_0 = 1; if(flagSensor_1 == 0 && digitalRead(pinSensor_1) == 0) flagSensor_1 = 1; if(flagSensor_2 == 0 && digitalRead(pinSensor_2) == 0) flagSensor_2 = 1; if(flagSensor_3 == 0 && digitalRead(pinSensor_3) == 0) flagSensor_3 = 1; if(flagSensor_4 == 0 && digitalRead(pinSensor_4) == 0) flagSensor_4 = 1; if(flagSensor_0 == 1) { String command; command = «ATD+» + numberCall_1 + «;»; mySerial.println(command); delay(20000); mySerial.println(«ATH»); delay(1000); command = «ATD+» + numberCall_2 + «;»; mySerial.println(command); delay(20000); mySerial.println(«ATH»); delay(1000); flagSensor_0 = 2; } if(flagSensor_1 == 1) { sendSMS(textZone_1, numberSMS_1); delay(10000); sendSMS(textZone_1, numberSMS_2); delay(10000); flagSensor_1 = 2; } if(flagSensor_2 == 1) { sendSMS(textZone_2, numberSMS_1); delay(10000); sendSMS(textZone_2, numberSMS_2); delay(10000); flagSensor_2 = 2; } if(flagSensor_3 == 1) { sendSMS(textZone_3, numberSMS_1); delay(10000); sendSMS(textZone_3, numberSMS_2); delay(10000); flagSensor_3 = 2; } if(flagSensor_4 == 1) { sendSMS(textZone_4, numberSMS_1); delay(10000); sendSMS(textZone_4, numberSMS_2); delay(10000); flagSensor_4 = 2; } if(flagSensor_0 == 2 && digitalRead(pinSensor_0) != 0) flagSensor_0 = 0; if(flagSensor_1 == 2 && digitalRead(pinSensor_1) != 0) flagSensor_1 = 0; if(flagSensor_2 == 2 && digitalRead(pinSensor_2) != 0) flagSensor_2 = 0; if(flagSensor_3 == 2 && digitalRead(pinSensor_3) != 0) flagSensor_3 = 0; if(flagSensor_4 == 2 && digitalRead(pinSensor_4) != 0) flagSensor_4 = 0; }

Шаг третий

. Проверка работоспособности устройства.

При подаче напряжения питания пока загружаются модуль SIM800L и плата Arduino у вас есть примерно 20 секунд чтобы покинуть охраняемое помещение. На модуле SIM800L светодиод указывает на работу в сети- часто мигает это поиск сети, раз в пять секунд- работа в сети. Когда прибор найдет сеть разорвите соответствующие охранные входы, после этого произойдет дозвон или присылка СМС. Значит прибор работает нормально. Фото СМС. К этому прибору можно будет включить любые охранные извещатели с выходами в виде контактов, реле от исполнительных устройств, только в соответствие с вашими потребностями и фантазией. В целом мы изготовили несложный, охранный прибор. Такой самодельный сторож можно сделать для организации охраны любых объектов. Чтобы включить прибор сигнализации нужно через выключатель на SIM800 и Аrduino подать 4,2 Вольта. При первого входа пройдет звонок на абонента №1, после переключится на №2. Дополнительный №2 предусмотрен для дублирования. Обрыв шлейфа №2,3,4,5 делает выдачу SMS с конкретным названием нарушенного шлейфа, соответственно на оба телефона. Все платы поместим в любом в подходящем корпусе. В общем я думаю это неплохой интересный приборчик который можно в дальнейшем развить далее-добавить функции GSM розетки, управление по DMTF и многое другое.

Подробнее можно посмотреть в видео

Всем желаю здоровья и успехов в жизни и творчестве!

Охранная сигнализация или система оповещения на Arduino

В этой записи речь пойдет о безопасности, а именно о создании простенькой охранной сигнализации на основе Arduino. Я поделюсь с вами своей реализацией такой системы для гаража, вы же можете, по этому принципу, внося свои корректировки, реализовать любую нужную вам систему оповещения.

Для тех, кто хочет хлеба и зрелищ — видеоролик, который полностью копирует содержимое статьи:

Ну а для тех, кто больше любит читать, продолжим..

Данила Крастер покажет, как наказать воришек с помощью набора «Пионер», смекалки и конечно же автомата

Код:

#include     #define LIGHTSENSOR_PIN 0 // пин, к которому подключен датчик освещенности  #define LED_PIN 13 // пин, к которому подключен светодиод    Servo servo; //объявляем переменную servo типа Servo    void setup() {     servo.attach(10); //привязываем привод к порту 10  }    void loop() {      int lightLevel = analogRead(LIGHTSENSOR_PIN); // считываем значение      lightLevel = map(lightLevel, 0, 900, 0, 255);      lightLevel = constrain(lightLevel, 0, 255);      // если уровень освещенности ниже определенного порога, то зажигаем светодиод      if (lightLevel < 125) {          servo.write(135); //ставим вал под 135          digitalWrite(LED_PIN, HIGH);      } else {          servo.write(180); //ставим вал под 180          digitalWrite(LED_PIN, LOW);      }  } 

Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.

Поделиться:

Сигнализация для дома на Arduino

Рассмотрим, как сделать на Arduino Uno или Nano сигнализацию для дома, загородного садового участка или гаража. В проекте мы использовали сенсор движения, датчик воды и температуры — это набор основных сенсоров для самой простой системы оповещения. Вы узнаете о прорыве водопровода, снижении температуры в доме или проникновении посторонних людей в помещении в любое время и в любом месте.

Датчики Ардуино для охранной сигнализации

image Датчики Ардуино для домашней сигнализации В данном проекте для передачи информации по сети Интернет мы использовали старый смартфон. Соответственно в месте расположения вашей недвижимости должен быть сигнал GPRS и у любого сотового оператора подключен самый простой тариф с выходом в Интернет. Если эти условия не выполняются, то в охранной системе предусмотрена звуковая сирена, которая тоже может спугнуть грабителей.

image
image
image
image
image
image
image

Как сделать сигнализацию Ардуино

Для этого проекта нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • смартфон с выходом в Интернет;
  • блютуз модуль HC-05;
  • датчик температуры и влажности DHT11;
  • датчик утечки воды (water sensor);
  • датчик движения и кнопка (переключатель);
  • светодиоды, резисторы, провода и т.д.

Схема сигнализации на Ардуино Нано для дома Скетч для сигнализации, все необходимые библиотеки и приложение для смартфона можно скачать одним архивом здесь. Отметим, что нельзя будет дистанционно управлять Arduino, так как проект максимально простой. Вы сможете лишь в сообщениях на смартфоне узнавать о показаниях датчиков, установленных в доме, через заданный промежуток времени или при срабатывании какого-либо датчика.

Читайте также:  Как сделать пенал для школы своими руками из ткани, бумаги или связать. Пенал для школы своими руками

Скетч охранной сигнализации на Arduino Uno / Nano

#include // подключение библиотеки SoftwareSerial.h SoftwareSerial mySerial(2, 3); // указываем пины rx и tx соответственно #include // подключаем библиотеку для датчика DHT dht(16, DHT11); // сообщаем на каком порту будет датчик int tmp; #define PIR 5 // порт для подключения датчика движения int pir; #define KNP 7 // порт для подключения переключателя int knp; #define WTR 19 // порт для подключения датчика воды int wtr; #define LED 11 // порт для подключения светодиодов #define BUZ 9 // порт для подключения пьезодинамика // строки для идентификации информации, получаемой на смартфоне String stringT = String(«*»); String stringP = String(«^»); String stringW = String(«-«); String stringH = String(«#»); // переменные для счетчиков, отсчета циклов и т.д. unsigned long motion; unsigned long hour; byte m, s1, s2, s3, c = 10; void setup() { mySerial.begin(9600); Serial.begin(9600); dht.begin(); pinMode(PIR, INPUT); analogWrite(PIR, LOW); pinMode(KNP, INPUT); analogWrite(KNP, LOW); pinMode(WTR, INPUT); analogWrite(WTR, LOW); // проверка светодиодов и пищалки при включении питания pinMode(BUZ, OUTPUT); pinMode(LED, OUTPUT); analogWrite(LED, 255); tone(BUZ, 100); delay(1000); analogWrite(LED, 0); noTone(BUZ); delay(1000); } void loop() { tmp = dht.readTemperature(); pir = digitalRead(PIR); knp = digitalRead(KNP); wtr = analogRead(WTR); // запускаем счетчик hour = millis(); // 3600000 миллисекунд — это 1 час, 10800000 — 3 часа // если прошло 3 часа — отправляем данные на смартфон // при необходимости ставите свои значения вместо 10800000 if (millis() — hour > 10800000) { mySerial.println(tmp + stringT); // отправляем значение температуры mySerial.println(pir + stringP); // отправляем наличие движения в доме mySerial.println(wtr + stringW); // отправляем данные с датчиков воды mySerial.println(stringH); // отправляем сигнал, что 3 часа прошло } // ведем отсчет циклов, каждый десятый цикл отправляем данные на смартфон c—; Serial.print(c); Serial.println(» — цикл»); Serial.println(«»); delay(1000); noTone(BUZ); if (c > 10) { c = 10; } if (c < 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println(tmp + stringT); // отправляем значение температуры mySerial.println(pir + stringP); // отправляем наличие движения в доме mySerial.println(wtr + stringW); // отправляем данные с датчиков воды // выводим на монитор порта номер все данные с датчиков Serial.print(«TMP = «); Serial.println(tmp); Serial.print(«PIR = «); Serial.println(pir); Serial.print(«KNP = «); Serial.println(knp); Serial.print(«WTR = «); Serial.println(wtr); Serial.println(«»); } // СРАБОТАЛ ДАТЧИК ДВИЖЕНИЯ И КНОПКА ВЫКЛЮЧЕНА — ВКЛЮЧАЕМ СВЕТ if (pir == HIGH && knp == LOW) { analogWrite(LED, 255); } // ДАТЧИК ДВИЖЕНИЯ ОТКЛЮЧИЛСЯ И КНОПКА ВЫКЛЮЧЕНА — ВЫКЛЮЧАЕМ СВЕТ if (pir == LOW && knp == LOW) { motion = millis(); while (pir == LOW) { tmp = dht.readTemperature(); pir = digitalRead(PIR); knp = digitalRead(KNP); wtr = analogRead(WTR); c—; Serial.print(c); Serial.println(» — цикл»); Serial.println(«»); delay(1000); noTone(BUZ); if (c > 10) { c = 10; } if (c < 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println(tmp + stringT); // отправляем значение температуры mySerial.println(pir + stringP); // отправляем наличие движения в доме mySerial.println(wtr + stringW); // отправляем данные с датчиков воды // выводим на монитор порта номер все данные с датчиков Serial.print(«TMP = «); Serial.println(tmp); Serial.print(«PIR = «); Serial.println(pir); Serial.print(«KNP = «); Serial.println(knp); Serial.print(«WTR = «); Serial.println(wtr); Serial.println(«»); } // ИНТЕРВАЛ ВЫКЛЮЧЕНИЯ СВЕТА В МИЛЛИСЕКУНДАХ if (millis() — motion > 5000) { analogWrite(LED, 0); break; } if (pir == HIGH) { analogWrite(LED, 255); break; } } } // СРАБОТАЛ ДАТЧИК ДВИЖЕНИЯ И КНОПКА ВКЛЮЧЕНА — ЗАПУСКАЕМ ТАЙМЕР if (pir == HIGH && knp == HIGH) { motion = millis(); delay(1000); analogWrite(LED, 255); Serial.println(«СРАБОТАЛ ДАТЧИК»); Serial.println(«»); delay(1000); while (knp == HIGH) { tmp = dht.readTemperature(); pir = digitalRead(PIR); knp = digitalRead(KNP); wtr = analogRead(WTR); c—; Serial.print(c); Serial.println(» — цикл»); Serial.println(«»); delay(1000); noTone(BUZ); if (c > 10) { c = 10; } if (c < 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println(tmp + stringT); // отправляем значение температуры mySerial.println(pir + stringP); // отправляем наличие движения в доме mySerial.println(wtr + stringW); // отправляем данные с датчиков воды // выводим на монитор порта номер все данные с датчиков Serial.print(«TMP = «); Serial.println(tmp); Serial.print(«PIR = «); Serial.println(pir); Serial.print(«KNP = «); Serial.println(knp); Serial.print(«WTR = «); Serial.println(wtr); Serial.println(«»); } // ЕСЛИ ДАТЧИК ДВИЖЕНИЯ ОТКЛЮЧИЛИ — ОТПРАВКА СООБЩЕНИЯ НА БЛЮТУЗ if (knp == LOW) { Serial.println(«СИГНАЛИЗАЦИЯ ОТКЛЮЧЕНА»); Serial.println(«»); delay(1000); } // ЕСЛИ ПРОШЛО БОЛЕЕ 10 СЕКУНД — ОТПРАВКА СООБЩЕНИЯ НА БЛЮТУЗ if (millis() — motion > 10000 && s1 != 1) { m = 1; goto message1; } delay(1000); } } // ЕСЛИ ПРОИЗОШЛА УТЕЧКА ВОДЫ — ОТПРАВКА СООБЩЕНИЯ НА БЛЮТУЗ if (wtr > 500 && s2 != 2) { m = 2; goto message2; } if (wtr > 500) { tone(BUZ, 400); } if (wtr <= 500) { noTone(BUZ); } // ЕСЛИ УПАЛА ТЕМПЕРАТУРА — ОТПРАВКА СООБЩЕНИЯ НА БЛЮТУЗ if (tmp < 20 && s3 != 3) { m = 3; goto message3; } if (tmp < 20) { tone(BUZ, 200); } if (tmp >= 20) { noTone(BUZ); } message1: while (m == 1) { Serial.println(«СИГНАЛ ТРЕВОГИ ОТПРАВЛЕН НА БЛЮТУЗ»); Serial.println(«»); delay(1000); mySerial.println(tmp + stringT); // отправляем значение температуры mySerial.println(1 + stringP); // отправляем наличие движения в доме mySerial.println(wtr + stringW); // отправляем данные с датчиков воды s1 = 1; m = 0; break; } message2: while (m == 2) { Serial.println(«СИГНАЛ УТЕЧКИ ВОДЫ ОТПРАВЛЕН НА БЛЮТУЗ»); Serial.println(«»); delay(1000); mySerial.println(tmp + stringT); // отправляем значение температуры mySerial.println(pir + stringP); // отправляем наличие движения в доме mySerial.println(500 + stringW); // отправляем данные с датчиков воды s2 = 2; m = 0; break; } message3: while (m == 3) { Serial.println(«СИГНАЛ ТЕМПЕРАТУРЫ ОТПРАВЛЕН НА БЛЮТУЗ»); Serial.println(«»); delay(1000); mySerial.println(20 + stringT); // отправляем значение температуры mySerial.println(pir + stringP); // отправляем наличие движения в доме mySerial.println(wtr + stringW); // отправляем данные с датчиков воды s3 = 3; m = 0; break; } }

Пояснения к коду:

  1. ;
  2. .

На первый взгляд схема может показаться сложной, однако это не так. Сигнализацию можно собрать на любой плате, в том числе и Arduino Uno. Вместо светодиодов можно можно использовать LED ленту, но при этом питание для платы нужно будет уже 12 Вольт, и подключать LED ленту не к 5V, а к пину Vin Arduino. Со светодиодами можно использовать для питания схемы обычную зарядку от телефона на 5 Вольт.

Установка приложения на смартфон для сигнализации

Чтобы установить приложение закачайте файл home_twit.apk на свой телефон через USB шнур, найдите его в памяти телефона и нажмите «Установить». Этот телефон должен быть всегда в зоне Bluethoth сигнала Ардуино. После установки откройте приложение и нажмите кнопку «Настроить». Здесь потребуется указать минимальное и максимальное значение температуры, при которой будет отправляться сообщение.

А сейчас самое сложное — настройка аккаунтов в Twitter. Укажите в настройках логин пользователя в Твиттере, кому вы будете отправлять сообщение. Также требуется указать логин, API key и API secret key от лица которого будут поступать сообщения. Последние нововведения обусловлены борьбой со спамом и сбором информации о пользователях в соцсети. Как получить API key и API secret — читайте в этом обзоре.

На телефоне, который будет всегда при вас и будет получать сообщения потребуется установить официальное приложение Twitter с PlayMarket и войти в него под нужным логином. В итоге приложение signalizaciya.apk с телефона, находящегося в доме, будет собирать данные с датчиков Ардуино и отправлять их личным сообщением через Твиттер пользователю, под чьим логином вы установили приложение Twitter.

Скетч проекта

Ниже вы можете скопировать код и загрузить его в свою Ардуино Мега.

#include #define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on ping sensor. #define ECHO_PIN 11 // Arduino pin tied to echo pin on ping sensor. #define MAX_DISTANCE 500 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm. NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. unsigned int pingSpeed = 50; // How frequently are we going to send out a ping (in milliseconds). 50ms would be 20 times a second. unsigned long pingTimer; int flag = 0; // Holds the next ping time. void setup() { Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results. pingTimer = millis(); pinMode(10, OUTPUT); // Start now. // Start now. } void loop() { // Notice how there’s no delays in this sketch to allow you to do other processing in-line while doing distance pings. if (millis() >= pingTimer) { // pingSpeed milliseconds since last ping, do another ping. pingTimer += pingSpeed; // Set the next ping time. sonar.ping_timer(echoCheck); // Send out the ping, calls «echoCheck» function every 24uS where you can check the ping status. } if (flag == 1) { digitalWrite(10, HIGH); delay(500); digitalWrite(10, LOW); delay(500); digitalWrite(10, HIGH); delay(500); digitalWrite(10, LOW); delay(500); } else { digitalWrite(10, LOW); } } void echoCheck() { // Timer2 interrupt calls this function every 24uS where you can check the ping status. if (sonar.check_timer()) { // This is how you check to see if the ping was received. // Here’s where you can add code. Serial.print(«Ping: «); Serial.print(sonar.ping_result / US_ROUNDTRIP_CM); // Ping returned, uS result in ping_result, convert to cm with US_ROUNDTRIP_CM. Serial.println(«cm»); if ((sonar.ping_result / US_ROUNDTRIP_CM) < 50) flag = 1; else if ((sonar.ping_result / US_ROUNDTRIP_CM) > 50) flag = 0; } }

На этом всё. Устройство мы реализовали. Его можно расширить и придумать разное применение.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий