Ардуино система обнаружения дыма своими руками

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

19 апреля в 14:26

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

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

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

Как всегда начнем с деталей, которые мы будем использовать в данном проекте. Уже по традиции мы приводим ссылки на комплектующий в Интернет-магазинах АлиЭкспресс и GearBest. Наш проект живет и развивается благодаря покупателям этих магазинов.

Деталь
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.

Дальше подключите датчик MQ-2 к Ардуино. Подключите VCC и GND к датчику к контактам 5V и GND на Arduino. Затем подключите контакт A0 на MQ-2 к A0 на 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 = »

Система обнаружения дыма

«; webpage +=»

Величина дыма «; webpage += analogSensor; webpage +=»

«; if (analogSensor > 400){ webpage +=»

ОПАСНОСТЬ! Покиньте помещение

«; } else { webpage +=»

Всё в порядке

«; } String cipSend = «AT+CIPSEND=»; cipSend += connectionId; cipSend += «,»; cipSend +=webpage.

length(); cipSend +=»
«; esp8266_command(cipSend,1000,DEBUG); esp8266_command(webpage,1000,DEBUG); String closeCommand = «AT+CIPCLOSE=»; closeCommand+=connectionId; // добавить идентификатор соединения closeCommand+=»
«; esp8266_command(closeCommand,3000,DEBUG); } } } String esp8266_command(String command, const int timeout, boolean debug){ String response = «»; wifi_module.print(command); long int time = millis(); while( (time+timeout) > millis()) { while(wifi_module.available()) { char c = wifi_module.read(); response+=c; } } if(debug) { Serial.print(response); } return response; }

Прежде всего, добавьте последовательную библиотеку программного обеспечения. Последовательная библиотека программного обеспечения позволит нам использовать связь TX и RX на других контактах Arduino, а не только с использованием выводов TX и RX по умолчанию. Потом мы определили эти TX и RX-контакты на Arduino.

#include #define DEBUG true SoftwareSerial wifi_module(2,3);

В строках ниже мы объявили контакты для светодиодов, зуммера и датчика дыма.

int red_led_pin = 9; int green_led_pin = 8; int buzzer_pin = 10; int smoke_sensor_pin = A0;

В функции настройки сначала устанавливаем скорость передачи для последовательной связи и для модуля wifi на 9600. Затем мы объявили выводы светодиодов и зуммера в качестве выходных контактов. Наконец, мы объявили контакт датчика дыма как входной, так как на этот контакт будет идти входной сигнал от датчика и затем будет передан в Ардуино.

Serial.begin(9600); wifi_module.begin(9600); pinMode(red_led_pin, OUTPUT); pinMode(green_led_pin, OUTPUT); pinMode(buzzer_pin, OUTPUT); pinMode(smoke_sensor_pin, INPUT);

Строки вызовут функцию и настроят сервер по IP-адресу, предоставленному ESP. Затем ESP отправит данные на этот IP-адрес.

esp8266_command(«AT+RST
«,2000,DEBUG); esp8266_command(«AT+CWMODE=2
«,1000,DEBUG); esp8266_command(«AT+CIFSR
«,1000,DEBUG); esp8266_command(«AT+CIPMUX=1
«,1000,DEBUG); esp8266_command(«AT+CIPSERVER=1,80
«,1000,DEBUG);

В функции цикла мы считываем значения от датчика дыма, а затем применяем условие, что если выходное значение больше 400, тогда загорается красный светодиод и зуммер начнет подавать звуковой сигнал. Если выходное значение меньше 400, тогда загорится зеленый светодиод, и зуммер останется молчать.

int analogSensor = analogRead(smoke_sensor_pin); if (analogSensor > 400){ digitalWrite(red_led_pin, HIGH); digitalWrite(green_led_pin, LOW); tone(buzzer_pin, 1000, 200); }

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

String webpage = »

Система обнаружения дыма

«; webpage +=»

Величина дыма «; webpage += analogSensor; webpage +=»

«; if (analogSensor > 400){ webpage +=»

Опасность! Покиньте помещение

«; } else { webpage +=»

Всё в порядке

«; }

Приведенный ниже код отправит команды в ESP и выведет выходные данные ESP на последовательном мониторе.

String esp8266_command(String command, const int timeout, boolean debug){ String response = «»; wifi_module.print(command); long int time = millis(); while( (time+timeout) > millis()) { while(wifi_module.available()) { char c = wifi_module.read(); response+=c; } }

Вот и всё! Надеемся, что у вас всё заработало.

Источник: https://ArduinoPlus.ru/dimovaya-signalizacia-arduino/

Пожарная сигнализация на arduino

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

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

Читайте также:  Амперметр arduino: пример реализации устройства

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

также данная система должна позволять дистанционно  передавать информацию пожарным о месте нахождения людей.

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

Описание системы

 Система состоит из двух подсистем. Первая подсистема непосредственно пожарной сигнализации. Вторая — это радиоприемник,   для информирования пожарных.

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

Для наглядности был создан прототип системы и макет помещения,  в котором были размещены датчики и светодиоды.  Макет помещения состоит из девяти комнат и  5 коридоров.

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

К микроконтроллеру  подключен радиомодуль,  который периодически  шлет информацию о ситуации в помещении.

Подсистема  радиоприемника состоит из микроконтроллера,   блока питания,  дисплея для отражения информации.

Алгоритм работы системы следующий. Если срабатывает хотя бы один датчик дыма или огня,  то сразу зажигаются  светодиоды красным ведущие в тупики. если свободны  датчики дыма 2 и огняя1 и огня 2 то оба прохода  к выходам свободны , это сигнализируется  зелеными световыми сигналами. 

Если  пожар перекрывает проход к выходу 1,  но при этом нет пожара по центральному коридору , то срабатывает  первый датчик огня   и не срабатывает датчик дыма 2, путь к первому выходу перекрывается красным сигналом.

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

Код принимается радиоприемником и расшифровывается, информация о ситуации  выводится на экран.

Принципиальная схема  пожарной сигнализации приведена на рисунке  

Описание используемых компонентов.

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

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

Эти приёмопередатчики помогают организовать беспроводной опрос датчиков, или отправку команд к исполнительным устройствам.

Датчик для контроля качества воздуха MQ-135. Также является датчиком углекислого газа.

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

Можно обнаружить пламя или свет с длинной волны 760 нм ~ 1100 нм. Чем больше пламя тем больше расстояние обнаружения.

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

Выводом с сенсора является простой бинарный цифровой сигнал: пока движения нет, сигнальный контакт установлен в логический ноль. Как только фиксируется движение, сигнальный контакт устанавливается в логическую единицу на небольшой промежуток времени.

Источник: http://itrobo.ru/robototehnika/proekty/pozharnaja-signalizacija-na-arduino.html

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

2015-04-14 в 00:18

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

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

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

При этом в мониторе последовательного порта (Ctrl+Shift+M) который находиться в Инструментах программы будут выводиться значения с датчика. Можно на свой вкус настроить его работу если не устраивает мой вариант.

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

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

Код

*/ Скетч для работы с сенсором газа Источник: http://tehnopage.ru/ */ int sensorPin = 0; // Пин, на котором у нас висит сенсор газа аналоговый вход 0 int redled = 2;       // Пин с красным светодиодом цифровой выход 2 int yelowled = 3;   // Пин с желтым светодиодом  цифровой выход 3 int greenled = 4;   // Пин с зеленым светодиодом цифровой выход 4 int gas = 0;          // Переменная для хранения значения газового сенсора void setup() {   pinMode(greenled, OUTPUT); // Объявляем 2,3 и 4 пины, как выходы для светодиодов   pinMode(yelowled, OUTPUT);   pinMode(redled, OUTPUT);   Serial.begin(9600); // Инициализируем серийный порт будем слать в него данные измерения /*   При включении мигаем зеленым, желтым, красным светодиодом   чтоб получить стабильные показания вся процедура занимает 20 секунд.   Не самое оптимальное решение можно написать по проще зато так понятнее */   digitalWrite(greenled, HIGH);   delay(1000);   digitalWrite(yelowled, HIGH);   delay(1000);   digitalWrite(redled, HIGH);   delay(1000);   digitalWrite(greenled, LOW);   delay(1000);   digitalWrite(yelowled, LOW);   delay(1000);   digitalWrite(redled, LOW);   delay(1000);   digitalWrite(greenled, HIGH);   delay(1000);   digitalWrite(yelowled, HIGH);   delay(1000);   digitalWrite(redled, HIGH);   delay(1000);   digitalWrite(greenled, LOW);   delay(1000);   digitalWrite(yelowled, LOW);   delay(1000);   digitalWrite(redled, LOW);   delay(1000);   digitalWrite(greenled, HIGH);   delay(1000);   digitalWrite(yelowled, HIGH);   delay(1000);   digitalWrite(redled, HIGH);   delay(1000);   digitalWrite(greenled, LOW);   delay(1000);   digitalWrite(yelowled, LOW);   delay(1000);   digitalWrite(redled, LOW);   delay(1000);   digitalWrite(greenled, HIGH);   delay(500);   digitalWrite(yelowled, HIGH);   delay(500);   digitalWrite(redled, HIGH);   delay(500);   digitalWrite(greenled, LOW);   digitalWrite(yelowled, LOW);   digitalWrite(redled, LOW);   } void loop() {   gas = analogRead(sensorPin); // Получаем значения от датчика газа   /*   Далее работаем с данными из переменной gas, если ее значение более 200 но менее 300,   то включаем зеленый светодиод, желтый и красный светодиоды гасим   */   if (gas > 200, gas < 300)   {     digitalWrite(greenled, HIGH);     digitalWrite(yelowled, LOW);     digitalWrite(redled, LOW);   }   /*   Если значение переменной gas больше 300 но меньше 350, то включаем желтый светодиод и   проигрываем сигнал на 10 пине, зеленый и красный при этом гасим.   */   else if (gas > 300, gas < 350)   {     tone(10, 900, 200);     digitalWrite(greenled, LOW);     digitalWrite(yelowled, HIGH);     digitalWrite(redled, LOW);   }   /*   Если значение переменной gas больше 350, проигрываем тоновый сигнал на 10 пине,   гасим зеленый и желтый светодиод, зажигаем красный.   */   else if (gas > 350)   {     tone(10, 740, 200);     digitalWrite(greenled, LOW);     digitalWrite(yelowled, LOW);     digitalWrite(redled, HIGH);   }   Serial.println(gas); // Пишем в серийный порт   delay(400); // Повторяем void loop процедуру каждые 0,4 секунды. Это и есть время обновления информации с датчика.

Читайте также:  Домашняя система орошения на arduino с 7-сегментным дисплеем

  }

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

Источник: http://TehnoPage.ru/arduino-mq2

Дымовые пожарные датчики — «нюх» как у собаки!

Содержание

  • 1 Типы датчиков дыма
  • 2 Оптические (оптико-электронные) извещатели дыма
  • 3 Точечный пожарный дымовой извещатель
  • 4 Линейные датчики дыма
  • 5 Как выбрать датчик дыма
  • 6 Видео -MQ-2 датчик газов и дыма подключаем к Arduino

Датчики дыма определяют возгорание по косвенным признакам, таким как изменение прозрачности и химического состава воздуха.

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

Прочитав статью, вы узнаете, как работают различные варианты датчиков дыма, как их устанавливают и применяют.

Типы датчиков дыма

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

  • оптические;
  • точечные;
  • линейные.

Оптические (оптико-электронные) извещатели дыма

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

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

В этом случае извещатель начинает громко пищать и посылает сигнал контроллеру пожарной сигнализации. Подробней о способах связи извещателей и контроллера читайте в статье (Типы датчиков пожарной сигнализации). Средняя стоимость такого извещателя 800 рублей.

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

Точечный пожарный дымовой извещатель

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

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

Линейные датчики дыма

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

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

Средняя площадь, на которой датчик обеспечивает эффективное обнаружение дыма, составляет 1 тысячу квадратных метров (ширина не больше 10 метров).

Как выбрать датчик дыма

В большинстве случаев площадь, на которой любой тип извещателя обеспечивает эффективную защиту, не превышает 50 квадратных метров. В жилом доме в каждой комнате устанавливают самостоятельный датчик. Это связано с особенностями распространения дыма. Для установки в комнатах наиболее подходят оптические датчики – они занимают мало места.

К тому же, радиоканальные устройства работают долгое время от одного комплекта батареек. Для гаража квадратной формы и площадью более 50 квадратных метров наиболее эффективная защита обеспечивается несколькими оптическими датчиками. Если же гараж прямоугольной формы, то тип датчика выбирают исходя из его длины и ширины.

Смотрите как подключить датчики к Arduino на видео ниже.

Видео -MQ-2 датчик газов и дыма подключаем к Arduino

Источник: https://presstile.ru/umnyj-dom/dymovye-pojarnye-datchiki-nuh-kak-y-sobaki.html

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

Перевёл alexlevchenko для mozgochiny.ru

Доброе время суток

Источник: http://mozgochiny.ru/electronics-2/signalizatsiya-na-baze-arduino-svoimi-rukami/

Датчик движения своими руками на Arduino | Каталог самоделок

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

  1. Подключение  PIR-датчика к Arduino;
  2. Как настроить взаимосвязь между датчиком и автоматической отправкой e-mail.

Необходимо для проекта:

  • Arduino UNO (выбрать можно на Aliexpress).
  • PIR-датчик .
  • Бредбоард.
  • Связка проводов.

Все перечисленные элементы для сборки можно увидеть на фотографиях:

В первую очередь нужен ПК с подключением к интернету. Мы  использовали Raspberry Pi.

Подключаем PIR-датчик к набору Arduino:

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

Работа со скетчем

При возникновении движения Arduino при помощи  USB Serial должен послать электронное сообщение. Конечно же, если при любом возникшем движении отправлять  e-mail, то почтовый ящик будет переполнен. Поэтому мы исправили это таким образом, если между двумя сигналами короткий промежуток времени, будет отправляться письмо с таким текстом:

int pirPin = 7;
int minSecsBetweenEmails = 60; // 1 min
long lastSend = -minSecsBetweenEmails * 1000;
void setup()
{
pinMode(pirPin, INPUT);
Serial.begin(9600);
}
void loop()
{
long now = millis();
if (digitalRead(pirPin) == HIGH)
{
if (now > (lastSend + minSecsBetweenEmails * 1000))
{
Serial.println(«MOVEMENT»); lastSend = now;
}
else
{
Serial.println(«Too soon»); }
}
delay(500);
}

«MinSecsBetweenEmails» – эта переменная может переключаться на другие значения, которые будут удобны пользователю. К примеру, можно установить интервал, который равен одной минуте – это будет означать, что следующий  e-mail будет отправлен только через 60 секунд.

«LastSend» поможет отследить время, в которое было отправлено последнее сообщение. Инициализация данной переменной происходит с отрицательным числом, которое равно миллисекундам, что указаны в «MinSecsBetweenEmails». В итоге, мы получаем гарантию того, что после запуска скетча в Arduino сразу же запустится PIR-датчик.

За счет чего мы можем высчитать миллисекунды, сравнить их число со временем последнего срабатывания датчика? Все благодаря встроенной функции под названием Millis. В том случае, если обнаружено движение, но прошло  мало времени с последнего активизации датчика будет отправлено письма с текстом «Too soon».

Эту функцию сначала надо проверить. Для этого открывается Serial Monitor. Далее рассмотрим, как он выглядит:

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

Читайте также:  Автоматика на ардуино: преимущества и примеры проектов

Как установить PySerial и Python:

Операционная система Linux имеет автоматически установленный Python. Система Windows не обладает такой характеристикой, поэтому программу необходимо установить самостоятельно. PySerial исполняет роль библиотеки, она поможет поддерживать связываться с Arduino.

Установка Python:

Python 3 нередко вызывает затруднения при работе с PySerial, особенно если вы используете Windows. Чтобы этого избежать, можно вместо третьей версии скачать Python 2.

Завершив установку программы в меню «Пуск» можно обнаружить особую группу. Когда мы перейдем к процессу установки библиотеки, нам понадобится сотрудничество с Python, применив командную строку. Поэтому лучше сразу добавить к PATH нужный каталог. Далее можно увидеть вспомогательную фотографию:

Для добавления каталога нам потребуется: открыть панель управления, в ней найти раздел «System Properties». Потом нажимаем клавишу, которая называется «Переменная среда» (Environment Variabes), перед нами всплывет окно. В его нижней части должен находиться «Path», который нужно выбрать.

Теперь кликнем на «Edit» – Изменение и завершаем процесс нажатием «значения переменной». Нельзя удалять текст, который получили, к нему следует дописать такую надпись – «;C:Python27». Не забываем после каждой папки, что указана в тексте ставить «;». Теперь проверяем правильно ли осуществлен ввод «Path». Для этого в командную строку вводим слово «python».

Если ошибок не возникло, то на экране появится следующая картинка:

Установить  PySerial:

Независимо от используемой операционной системы, скачиваем .tar.gz установочный пакет для PySerial 2.6 с . Этот сайт может помочь это сделать – https://pypi.python.org/pypi/pyserial. Получаем файл с именем pyserial-2.6.tar.gz. Если используется Windows, то будет нужна распаковка файлов в выбранную папку.

Это не стандартный файл формата ZIP, придется сделать дополнительные действия – скачать 7-zip (это можно сделать здесь – http://www.7-zip.org/). Для системы Linux необходимо воспользоваться терминальной сессией, в ней дать команду «CD», указать название той папки, в которую скачали  pyserial-2.6.tar.gz.

Чтобы выполнить распаковку нужно ввести:

$ tar -xzf pyserial-2.6.tar.gz

После этого потребуется выполнить команду:

sudo python setup.py install

Python

Потребуется создать отдельную программу для работы с Python. Нужно скопировать код в файл с таким именем – «movement.py». В Linux можно использовать «нано» редактор, а для системы  Windows необходимо создать файл, используя редактор Python «IDLE ». Он доступен в меню «Пуск».

import time
import serial
import smtplib
TO = 'putyour@email.here'
GMAIL_USER = 'putyour@email.here'
GMAIL_PASS = 'putyourpasswordhere'
SUBJECT = 'Intrusion!!'
TEXT = 'Your PIR sensor detected movement'
ser = serial.Serial('COM4', 9600)
def send_email():
print(«Sending Email»)
smtpserver = smtplib.SMTP(«smtp.gmail.com»,587)
smtpserver.ehlo() smtpserver.starttls()
smtpserver.ehlo smtpserver.login(GMAIL_USER, GMAIL_PASS)
header = 'To:' + TO + '
' + 'From: ' + GMAIL_USER
header = header + '
' + 'Subject:' + SUBJECT + '
'
print header
msg = header + '
' + TEXT + '

'
smtpserver.sendmail(GMAIL_USER, TO, msg)
smtpserver.close()
while True:
message = ser.readline()
print(message)
if message[0] == 'M' :
send_email()
time.sleep(0.5)

Это показано на следующей картинке:

После изменений, программа запуститься при помощи командной строки:

python movement.py

Итак, установка завершена.

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

Прикрепленные файлы: Скетчи и коды.  

Источник: https://volt-index.ru/electronika-dlya-nachinayushih/datchik-dvizheniya-svoimi-rukami-na-arduino.html

Домашняя автоматизация с Arduino & Raspberry Pi. Часть 1. Введение

Несколько лет назад, я впервые стал владелец собаки. Я не хотел оставлять Коди в конуре, одну, в течение всего дня. У меня была камера, но я не мог смотреть за ним в течении всего дня. А что делать если он попадет в какую-то беду? Что если какая то неприятность в доме, например пожар?

Я хотел каким-то образом получать уведомления по электронной почте, когда он лает, или когда случается что-то плохое.

Далее чтение различных статей привело к разработке, и это в конечном итоге привело к полномасштабной системы домашней автоматизации на основе аппаратных средств с открытым исходным кодом (Arduino) и программным обеспечение (OpenHAB).

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

К Arduino очень просто подключить различные датчики. Используя дополнительные модули мы создаем сеть различных датчиков с выходом в интернет.

Они могут слать по электронной почте, о том что: стало очень жарко, слишком холодно, много дыма, слышен газ или слишком яркий свет. Также ваша собака сможет отправить вам email своим лаем.

Вы можете удаленно просмотреть состояние датчиков с помощью смартфона. Все узлы/датчики беспроводные, так что вы не ограничены местом нахождения порта Ethernet.

Вот так это выглядит.

Эта инструкция будет уроком о том, как построить различные беспроводные датчики и как интегрировать эти датчики в сложный открытый код домашней автоматизации. В мобильном приложении кроме просмотра состояния вы также можете получить своевременный email и звуковые уведомления. Это длинная инструкция но вы сможете просмотреть ту часть которая вас интересует.

Это главные элементы конструкции:

  • Дешевизна. Каждый узел датчика стоит менее 20$, но вы можете увеличить вашу стоимость.
  • Гибкость. Узлы на основе Arduino позволяют расширять систему к нуждам каждой среды измерения. Вы не привязаны к примерам которые я вам предоставил, хотя я стремился реализовать много образцов.
  • Хорошая надежность, время работы и дальность беспроводных датчиков.
  • Я использовал ка питание от батареи так и питание от сети.

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

Лай собаки (любой громкий звук) Датчик

Получение уведомления по email от громкого шума. Я использую его для получения сообщения когда моя собака лает в конуре, чтобы открыть веб-камеру и посмотреть чего она лает. Существует также счетчик, сколько раз лаял пес.

Стиральная машина с сушкой Датчик

Получение звукового оповещения когда стиральная машинка / сушилка завершает работу, что-то вроде «Washer Complete». Больше не будет забытого белья в стиралке и ожидания завершения стирки. Используйте смартфон приложение, чтобы проверить окончание стирки.

Датчик света

Определение есть ли освещение или нет. Отображение статуса освещения в смартфон приложении.

Мониторинг зоны вторжения

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

Отслеживание собаки

Источник: http://nrf24l01.pp.ua/smart-house/domashnyaya-avtomatizaciya-s-arduino-raspberry-pi-chast-1/

Ссылка на основную публикацию