Сигнализация на arduino

Содержание

Шаг 7: Код

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

  int sound = 500;  
  void setup() {    Serial.begin (9600);    pinMode(trigPin, OUTPUT);    pinMode(echoPin, INPUT);    pinMode(GreenLED, OUTPUT);    pinMode(YellowLED, OUTPUT);    pinMode(RedLED, OUTPUT);    pinMode(buzzer, OUTPUT);     }  
  void loop() {    long duration, distance;    digitalWrite(trigPin, LOW);     delayMicroseconds(2);    digitalWrite(trigPin, HIGH);    delayMicroseconds(10);    digitalWrite(trigPin, LOW);    duration = pulseIn(echoPin, HIGH);    distance = (duration/5) / 29.1;       if (distance < 50) {        digitalWrite(GreenLED, HIGH);  }    else {        digitalWrite(GreenLED, LOW);    }        if (distance < 20) {      digitalWrite(YellowLED, HIGH);  }    else {      digitalWrite(YellowLED,LOW);    }    if (distance  5 || distance <= 0){      Serial.println("Out of range");      noTone(buzzer);    }    else {      Serial.print(distance);      Serial.println(" cm");      tone(buzzer, sound);         }    delay(300);  }  

После этого подключите ваш 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 сигнализацией на Ардуино дистанционно, а также контролировать состояние объекта, отправляя специальные запросы.

Выводы

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

Дымовая сигнализация с Ардуино, ESP8266 и датчиком дыма

19 апреля в 14:26

В этом проекте мы собираемся создать систему обнаружения дыма, в которой за основу будет взять датчик дыма MQ-2. Если сенсор уловит дым зуммер начнет подавать звуковой сигнал и загорится красный светодиод, и на веб-странице будет отображаться предупреждение, которое мы создадим с помощью модуля ESP8266.

Эта веб-страница будет доступна с использованием любого подключенного устройства, такого как мобильный телефон, планшет или ПК.

Что нам нужно и где купить

Деталь
1 Arduino Uno
1 ESP8266 Wi-Fi модуль с адаптером
1 MQ-2 сенсор
1 Красный и зеленый светодиод
1 Зуммер
1 220 Ом резистор
1 Макет
Провода-перемычки

Как работает дымовая сигнализация?

Датчик дыма MQ-2 имеет  выход в форме аналогового сигнала. Мы установили в нашем коде условие, при котором, если выходное значение датчика больше 400 зуммер начнет подавать звуковой сигнал и загорится красный светодиод; и если выходное значение датчика меньше 400, то зуммер будет молчать, а загорится зеленый светодиод.

Используемый здесь ESP8266 создаст веб-страницу по IP-адресу и отправит данные на этотадрес и выведет там данные. После загрузки кода этот IP-адрес можно увидеть на последовательном мониторе, как показано ниже.

Когда вы вводите этот IP-адрес в своем браузере, то увидите страницу как на рисунке ниже:

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

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

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

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

Код для проекта

Ниже приводим код для проекта целиком и дадим ряд пояснений.

#include #define DEBUG true SoftwareSerial wifi_module(2,3); // Подключите вывод TX esp к контакту 2 Arduino и RX esp к контакту 3 Arduino int red_led_pin = 9; int green_led_pin = 8; int buzzer_pin = 10; int smoke_sensor_pin = A0; void setup(){ Serial.begin(9600); wifi_module.begin(9600); // Установите скорость передачи в соответствии с вашим esp8266 pinMode(red_led_pin, OUTPUT); pinMode(green_led_pin, OUTPUT); pinMode(buzzer_pin, OUTPUT); pinMode(smoke_sensor_pin, INPUT); esp8266_command(“AT+RST
“,2000,DEBUG); // сброс модуля esp8266_command(“AT+CWMODE=2
“,1000,DEBUG); // настроить точку доступа esp8266_command(“AT+CIFSR
“,1000,DEBUG); // получить ip адрес esp8266_command(“AT+CIPMUX=1
“,1000,DEBUG); // настроить для нескольких подключений esp8266_command(“AT+CIPSERVER=1,80
“,1000,DEBUG); // включить сервер на порту 80 } void loop(){ int analogSensor = analogRead(smoke_sensor_pin); if (analogSensor > 400){ digitalWrite(red_led_pin, HIGH); digitalWrite(green_led_pin, LOW); tone(buzzer_pin, 1000, 200); } else { digitalWrite(red_led_pin, LOW); digitalWrite(green_led_pin, HIGH); noTone(buzzer_pin); } if(wifi_module.available()){ if(wifi_module.find(“+IPD,”)){ delay(1000); int connectionId = wifi_module.read()-48; String webpage = ”

Блок контроля охранных шлейфов

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

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

Чтобы сделать сигнализацию более устойчивой к обманным действиям злоумышленника (обрезание или закорачивание проводов шлейфа), в конце каждой цепи устанавливается оконечный резистор с фиксированным сопротивлением. Это сопротивление и является эталонным для блока измерения. Любое отклонение от этого параметра будет являться признаком сигнала тревоги. Для своего проекта я выбрал Rок=2k.

После рассмотрения принципа работы охранного шлейфа, необходимо понять каким методом Arduino Nano будет контролировать его сопротивление? А сделать это можно путём измерения напряжения, если подключить шлейф по схеме классического резистивного делителя, в котором одним плечом будет являться Rок, а другим – согласующая схема блока контроля охранных шлейфов. Данная схема согласования рассчитана исходя из 12-вольтового питания цепи датчиков и идентична для всех четырёх шлейфов. Помимо выше оговоренной функции схема согласования содержит элементы фильтрации помех, которые могут наводиться при внешних воздействиях окружающей среды на охранный шлейф. Учитывая всё вышесказанное, получаем следующую картину:

Как видно из схемы, все 4 каскада согласования идентичны друг другу, поэтому рассмотрим назначение элементов только одного из них, например того, что контролирует 1-й охранный шлейф.

Итак, напряжение 12V через токоограничивающий резистор R1 подаётся в охранный шлейф с датчиками. Резисторы R2 и R5 образуют делитель напряжения, который согласовывает 12-вольтовый уровень шлейфа с максимальным входным напряжением аналогового входа Arduino Nano, равным 5V. Конденсатор С1 в совокупности с остальными компонентами выполняет фильтрацию помех.

Учитывая все вышеперечисленные факторы и то, что сопротивление Rок=2k, получаем около 2,43V на аналоговом входе Arduino при 12-вольтовом питании шлейфа. Это как раз середина диапазона встроенного в микроконтроллер АЦП, что позволит удобно отслеживать любые отклонения как в большую, так и в меньшую сторону. Разбег от 2V до 3V буду считать допустимым, как своего рода цифровой фильтр помех. Всё что выйдет за пределы допустимого диапазона будет считаться сигналом тревоги. Иллюстрация ниже визуально отражает ход моей мысли.

Звуковой модуль с лаем собаки (Dog Barking Sound Module)

Данный модуль способен воспроизводить лай собаки (собачий лай), легко подключается к источнику питания и громкоговорителю и не требует для своей работы дополнительных усилителей и пассивных компонентов. Модуль содержит несъёмный чип и имеет специальные контакты, облегчающие его соединение с другими компонентами с помощью пайки. Модуль запитывается от 3-4.5V DC (постоянного тока). Спецификация модуля предусматривает подключение к нему 8-омного громкоговорителя с выходной мощностью от 0.25 до 2 Вт. Встроенная кнопка или триггер при нажатии обеспечивает воспроизведение собачьего лая 3 раза.

Особенности и технические характеристики модуля:

  • звуковой сигнал хорошего качества;
  • рабочее напряжение 3.0-4.5V;
  • не требует дополнительного усилителя;
  • маленькие размеры модуля (его печатной платы);
  • работа с 8-омным громкоговорителем с выходной мощностью от 0.25 до 2 Вт;
  • удобные для пайки площадки в составе модуля.

Собираем GSM сигнализацию своими руками без старого мобильного телефона

Бывает ситуация, когда старого мобильного телефона под рукой нет, но на GSM сигнализации хочется сэкономить. В этом случае нам поможет плата Arduino со встроенным микроконтроллером. Отличительной чертой этой платы является ее низкая цена и функционал. В нашем примере мы будем использовать плату Arduino Uno, которая стоит примерно 4 доллара (в зависимости от модификаций). За основу этого примера мы возьмем статью «GSM Home Alarm V1.0», автором которой является Уго Гомес. Найти эту статью можно на официальном сайте www.arduino.cc проекта Arduino. Для сборки нашей сигнализации своими руками нам потребуются такие компоненты:

  • сама плата с микроконтроллером Arduino Uno;
  • GPRS Shield V2.0 — GSM модуль;
  • блок питания на 12V@2A;
  • ультразвуковой датчик измерения расстояния HC-SR04;
  • соединительные провода;
  • макетная плата;
  • сим-карта.

Стоимость всех компонентов такой автономной сигнализации составит 35 долларов, что все равно намного дешевле готовых решений. Принцип действия этой сигнализации основан на ультразвуковом датчике HC-SR04, который фиксирует разницу в расстоянии и посылает сигнал на мобильный телефон. Например, если человек попадет в область замера датчика, то датчик зафиксирует расстояние меньшее от положенного и Arduino Uno отправит сигнал на мобильный телефон. Длина измерения этого датчика составляет 4 метра, а угол наблюдения составляет 30 градусов. Благодаря таким характеристикам датчик можно использовать дома, в гараже и на даче.

Для сборки этой сигнализации первым делом нужно установить сим-карту в GSM модуль.

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

Собранная сигнализация GSM будет выглядеть таким образом.

Для того чтобы наш GSM модуль GPRS Shield V2.0 заработал в связке с Arduino Uno, нам потребуется скачать библиотеку SIM900. Загрузить эту библиотеку можно по этому адресу http://www.gsmlib.org/download/GSM_GPRS_GPS_IDE100_v307_1.zip. После загрузки установите эту библиотеку. На дальнейшем этапе нам понадобится открыть и отредактировать файл GSM.cpp, который находится в файле в папке библиотеки SIM900. Дело в том, что GSM модуль GPRS Shield V2.0 в связке с Arduino Uno использует 7 и 8 контакт. Поэтому откроем файл GSM.cpp и исправим значения 27 и 28 строки на:

Теперь нам нужно открыть файл GSM.h, который также находится в папке с библиотекой. В этом файле нам нужно закомментировать 20 и 45 строку, а в 44 строке исправить 8 на 9.

С модулем разобрались, теперь можно переходить непосредственно к коду нашей сигнализации. Сам код можно загрузить по этой ссылке https://create.arduino.cc/code_files/47730/download. В 11 строке кода необходимо заменить «XXXXXXX» на телефонный номер, на который будет посылаться сигнал. Загрузив код в Arduino Uno, можно испытать автономную GSM сигнализацию. Для этого подключим к ней питание и откроем монитор порта. Сам GSM модуль может долго регистрироваться в сети, где вы увидите сообщение «Waiting for Network Registration». Если регистрация в сети пройдет успешно, то сигнализацию можно испытать. Для этого проведите в области работы датчика HC-SR04 рукой, после чего вы увидите сообщение в мониторе порта о данных снятых с датчика. Кроме сообщений в мониторе порта на телефон, указанный в коде, должен поступить звонок.

Из примера видно, что человек, уже работавший с Arduino Uno, сможет легко собрать подобную GSM сигнализацию своими руками. Кроме этого такую систему оповещения можно модифицировать. Например, установить на ней несколько ультразвуковых датчиков HC-SR04. Еще в эту сигнализацию можно добавить инфракрасный сенсор, цена на который в китайских интернет магазинах стартует от 50 центов. Также в эту систему оповещения можно добавить датчики температуры, которые будут оповещать владельца дома, гаража или дачи в случае пожара.

Использование

  • После сборки и прошивки устройство требует загрузки конфигурации (с помощью утилиты).
  • При подключении к USB нормальная работа устройства приостанавливается, очередь неотправленных сообщений очищается.
  • При неудачной отправке SMS, устройство произведет повторную попытку через 2 минуты, затем через 5, 10, 20, дважды через 40 и затем каждые 12 часов.
  • После принятого звонка, он будет завершен через 3 минуты.
  • Звуковая сигнализация включается на 30 секунд.
  • События «открытие двери», «движение» и «изменения освещения» срабатывают не чаще, чем раз в 20 мин.
  • Если питание устройства отсутствует более 3 часов, то записанная история измерения температуры сбрасывается.

Выбор основного источника питания

Учитывая запросы всех потребителей электроэнергии, предусмотренных мною в проекте, я буду отталкиваться от источника питания, способного преобразовать переменное напряжение бытовой электросети 220В в постоянное напряжение 12V при токе 3А.

На первый взгляд может быть непонятно, для чего нужен такой относительно немалый запас по току. Конечно, большинство времени система будет потреблять незначительно, однако в некоторых моментах от этого никуда не уйти. Например, для заряда севшего АКБ потребуется около 1А, а GSM-модуль при поиске и регистрации в сети способен проглотить целых 2А. Если при этом учесть аппетит Arduino, обмоток реле, средств индикации и элементов шлейфа, то цифра в 3А просто необходима для функционирования сигнализации без сбоев.

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

В итоге, я остановился на недорогом блочке в металлическом корпусе, очень напоминающем вот этот:

В принципе, нет разницы, в каком исполнении или как выглядит этот блок, главное, чтобы он обеспечивал требуемые выходные характеристики (12V, 3А).

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

Выводы

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

Что такое Ардуино?

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

Стандартная IDE для программирования на Ардуино

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

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

Прежде всего, подключите модуль 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.

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

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

#include <NewPing.h>
#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;
  }
}

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

Необходимые компоненты

  1. Плата Arduino Mega (или любая другая модель) (купить на AliExpress).
  2. Ультразвуковой датчик (купить).
  3. Зуммер (звонок) (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.
  6. USB кабель для Arduino или адаптер на 12v, 1A.

Модуль ультразвукового датчика

Ультразвуковой датчик HC-SR04 используется для обнаружения присутствия человека в двери. Он состоит из двух круглых «глаз», один из которых используется для передачи ультразвуковых сигналов, а другой – для их приема.

Ультразвуковые сигналы излучаются, отражаются от препятствия и возвращаются обратно к ультразвуковому датчику. Поскольку время между передачей и приемом сигналов, а также скорость распространения звука известны, то расстояние до препятствия можно рассчитать по следующей формуле:

Distance = Time x Speed of Sound / 2

Делить на 2 необходимо потому что лучи распространяются до препятствия и обратно, то есть одну и ту же дистанцию проходят два раза. Но в данном проекте мы будем использовать библиотеку NewPing.h, которая может самостоятельно произвести все эти расчеты.

Также о принципах измерения расстояния с помощью ультразвукового датчика более подробно можно прочитать в следующих статьях на нашем сайте: — измерение расстояний с помощью платы Arduino; — измерение расстояний с помощью датчика HC-SR04 и микроконтроллера AVR.

Проблемы

За время эксплуатации температура в помещении понизилась с +10°С до -15°С и обнаружилась две проблемы.

  1. Используемый PIR датчик начинает давать ложные срабатывания при низких температурах. При +5°С использование стало совсем невозможным: число ложных срабатываний превысило одно в день. Попытка замены датчика на другой проблему не решило, поэтому сейчас этот датчик временно отключен. Что с этим делать пока не понятно.
  2. Датчик температуры, встроенный в DS3231 при -10°С и ниже начал сходить с ума: периодически выдает случайные значения, например, «-84°С» или «+115°С». Интересно, что RTC работает нормально. На текущий момент не понятно, проблема ли это конкретно моего экземпляра или нет. Жду для проверки второй идентичный модуль, при повторении с ним проблемы в устройство будет добавлен DS18B20.

В остальном полет нормальный.

Подключение датчиков газа и дыма серии MQ к Arduino

2015-04-14 в 00:18

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

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

Сейчас же я покажу как подключить датчик углеводородных газов (пропан, метан, бутан), спирта и дыма MQ-2. Можно таким образом подключить любой из серии MQ.

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

А вот так подключаем сам датчик к Arduino.

Код

  }

Заключение

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

Разумеется, использовать их как средство передачи крупных объемов данных нельзя, поскольку доступ в интернет этим классом устройств обеспечивается только через GPRS, с небольшими скоростями. Но в задачах создания дешевой и надежной охранной системы, комплекса мониторинга или хаба «умного дома» такие решения находят обширное применение — как у энтузиастов, так и профессионалов.