Инструкции

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

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

Сегодня мы рассмотрим схему сборки и поэтапно разберем, как сделать пожарную сигнализацию на Arduino. 
В данной разработке специализированное устройство MQ-2 будет определять наличие дыма поблизости. В случае стабильной работы сигнализации, если рядом будет находиться дымовая завеса, раздастся пронзительный звуковой свист, вместе с этим засветиться светодиод красного цвета, после этого на странице вашего браузера появится напоминание о пожаре, его разработаем отдельно используя ESP8266. 
Страницу с уведомлением можно открыть с разной электроники в которой есть интернет и поддержка работы с браузерами, например для смарт-часов или мобильника, планшета, а также ПК.
Аппаратура которая потребуется для проекта:

1. Микроконтроллер Arduino UNO
2. ESP8266 Wi-Fi модуль с адаптером
3. Провода для соединений
4. Макетная плата
5. Звуковое устройство
6. Резистор 220 Ом
7. MQ-2  
8. Зеленый и красный светодиод

Принцип работы сигнализации

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

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

Когда вы будете указывать этот IP-адрес в вашем интернет-браузере, вывод проекта отобразится там, как показано на изображении ниже.

Принципиальная электрическая схема

1.    Подключаем ESP8266 к плате ардуино. Чтобы более точно и правильно соединить ESP8266, будет разумно взять на вооружение модуль ESP.Данный модуль сделает подключение более надежным. Этот модуль адаптера имеет напряжение 5 V, а это значит, что вам нет смысла и потребности использовать разного рода резисторы.
2.     Подключаем пин VCC ESP-01 к 5 V пину в ардуино и к заземлению ESP-01 к GND на плате Arduino.
3.    Монтируем подключение контакта TX от адаптера к пину 2 на микроконтроллере, а между тем контакт RX из самого адаптера к пину 3 на плате ардуино.
4.    Далее подключаем датчик MQ2 к Arduino. Подключается VCC и земля на датчике к пинам 5V и GND, те что на микроконтроллере. Затем следующим этапом подключаем контакт A0 на MQ-2 к пину A0 на Arduino.
5.    Подключаем зуммер вместе со светодиодами прямо к микроконтроллеру Arduino. Для этого требуется соединить плюс зуммера с пином 10 на микроконтроллере и минусовым на зуммере с GND на Arduino. Подключаем минусовую сторону используемых светодиодов к земле, а также резистор 220 Ом, а плюсовую сторону к пинам 8 и 9 на Arduino.

Код (объяснение)

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

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

•    В настройках, во-первых, требуется установить скорость с которой будет передаваться последовательная связь, а также для Wi-Fi на 9600.
•    Далее указываем контакты светодиодов и вывод звукового устройства как контакты выхода, потому что мы передадим вывод от этих контактов на звуковое устройство, а также светодиоды.
•    Далее указываем вывод дымового датчика как для входа, потому что вывод дымового датчика должен принимать вход от датчика и передавать его на ардуино.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);

Линии «вызовут» функцию и настроят сервер по IP, который предоставлен ESP. Самому же ESP нужно данные отправить на указанный адрес айпи.
 
esp8266_command ( "AT + RST \ г \ п", 2000, ОТЛАДКА); // сбросить модуль
  esp8266_command ( "AT + CWMODE = 2 \ г \ п", 1000, отлаживать); // настроить как точку доступа
  esp8266_command ( "AT + CIFSR \ г \ п", 1000, отлаживать); // получить IP-адрес
  esp8266_command ( "AT + CIPMUX = 1 \ г \ п", 1000, отлаживать); // настроить несколько соединений
  esp8266_command ( "AT + CIPSERVER = 1,80 \ г \ п", 1000, ОТЛАДКА); // включить сервер на порту 80

Линии «вызовут» функцию и настроят сервер по IP, который предоставлен ESP. Самому же ESP нужно данные отправить на указанный адрес айпи. В цикловых функциях потребуется считать значения, после чего в обязательном порядке принятие значение на выходе больше 400, значит рубильник светодиода красного цвета включить и начать душераздирающие звуки пожарной сигнализации. А вот если значение на выходе понизится ниже 400, гореть ярким светом зеленому светодиоду, а звуковое устройство в это время будет "нашептывать" звуками потише..
int analogSensor = analogRead (smoke_sensor_pin);
  if (analogSensor> 400)

  {
    digitalWrite (red_led_pin, HIGH);
    digitalWrite (green_led_pin, LOW);
    тон (зуммер_пин, 1000, 200);
  }

В следующих строках прописано отображение информации на странице интернет браузера. Для удачного начала, мы укажем «система обнаружения дыма IoT» вверху.

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

String webpage = "<h1> Система обнаружения дыма IOT </ h1>";

      webpage + = "<p> Smoke Value is";
      веб-страница + = аналоговый датчик;
      веб-страница + = "</ p>";
      if (analogSensor> 400)
  {
    webpage + = "<h5> ОПАСНОСТЬ! Двигайтесь куда-нибудь еще </ h5>";
  }

  еще
 
 {

    webpage + = "<h4> Все нормально </ h4>";
  }

Код ниже отправит информацию прямо в ESP и отобразит вывод расчетов ESP дисплее.
String esp8266_command (команда String, время ожидания const int, логическая отладка)
{
    Строка ответа = "";
    wifi_module.print (команда); 
    long int time = миллис ();

    while ((время + тайм-аут)> миллис ())
    {
      в то время как (wifi_module.available ())
      { 
        char c = wifi_module.read (); 
        ответ + = с;
      }  
    }


Код:
#include <SoftwareSerial.h>
#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, ОТЛАДКА); // сбросить модуль

  esp8266_command ( "AT + CWMODE = 2 \ г \ п", 1000, отлаживать); // настроить как точку доступа
  esp8266_command ( "AT + CIFSR \ г \ п", 1000, отлаживать); // получить IP-адрес
  esp8266_command ( "AT + CIPMUX = 1 \ г \ п", 1000, отлаживать); // настроить несколько соединений
  esp8266_command ( "AT + CIPSERVER = 1,80 \ г \ п", 1000, ОТЛАДКА); // включить сервер на порту 80
}
void loop ()
{

  int analogSensor = analogRead (smoke_sensor_pin);
  if (analogSensor> 400)
  {
    digitalWrite (red_led_pin, HIGH);
    digitalWrite (green_led_pin, LOW);
    тон (зуммер_пин, 1000, 200);
  }
  еще
  {

    digitalWrite (red_led_pin, LOW);
    digitalWrite (green_led_pin, HIGH);
    noTone (buzzer_pin);
  }
  если (wifi_module.available ()) 
  {
    если (wifi_module.find ( "+ IPD,"))
    {
     Задержка (1000);

     int connectionId = wifi_module.read () - 48;     
     String webpage = "<h1> Система обнаружения дыма IOT </ h1>";
      webpage + = "<p> Smoke Value is";
      веб-страница + = аналоговый датчик;
      веб-страница + = "</ p>";
      if (analogSensor> 400)
  {
    webpage + = "<h5> ОПАСНОСТЬ! Двигайтесь куда-нибудь еще </ h5>";

  }
  еще
  {
    webpage + = "<h4> Все нормально </ h4>";
  }
     String cipSend = "AT + CIPSEND =";
     cipSend + = connectionId;
     cipSend + = ",";
     cipSend + = webpage.length ();

     cipSend + = "\ r \ n";
     esp8266_command (cipSend, 1000, ОТЛАДКА);
     esp8266_command (веб-страницы, 1000, DEBUG);
     String closeCommand = "AT + CIPCLOSE ="; 
     closeCommand + = ConnectionID; // добавить идентификатор соединения
     closeCommand + = "\ г \ п";
     esp8266_command (closeCommand, 3000, ОТЛАДКА);
    }
  }

}
String esp8266_command (команда String, время ожидания const int, логическая отладка)
{
    Строка ответа = "";
    wifi_module.print (команда); 
    long int time = миллис ();
    while ((время + тайм-аут)> миллис ())
    {
      в то время как (wifi_module.available ())

      {
        char c = wifi_module.read (); 
        ответ + = с;
      }  
    }
    если (отладка)
    {
      Serial.print (ответ);
    }

    обратный ответ;
}

Остались вопросы? Задавайте их в комментарии, и мы постараемся ответить на них.

  1. Кристина
    Добрый вечер. Подскажите где можно купить адаптер Wi-fi модуля?
  2. Ибрагим
    • А какой смысл использовать ардуино, если сама esp прекрасно справится с этой задачей?