====== Детектор дыма ====== ** [[slot-box:start#хочу_собрать|Проекты на Arduino и Slot Shield]] ** Устройство предупредит о повышении концентрации угарного газа и поднимет тревогу в случае превышения порогового значения. Чувствительным элементом детектора выступает датчик широкого спектра газов MQ-2. {{ :slot-box:co-alarm:co-alarm.jpg |}} * Платформы: [[amp>product/arduino-uno?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|Arduino Uno]], [[amp>product/arduino-leonardo?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|Arduino Leonardo]], [[amp>product/iskra-neo?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|Iskra Neo]] * Язык программирования: Arduino (C++) ===== Что потребуется ===== [[amp>collection/co-alarm?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki | Полный сет]] компонентов проекта. В сет входят: * [[amp>product/iskra-neo?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|Iskra Neo]] * [[amp>product/arduino-troyka-slot-shield?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|Troyka Slot Shield]] * [[amp>product/structor-slot-box?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|#Slot Box]] * датчик широкого спектра газов [[amp>product/troyka-mq2-gas-sensor?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki |MQ-2]] * два [[amp>product/troyka-led-module?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|светодиода]] * [[amp>product/troyka-buzzer?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|пьезопищалка]] ===== Видеоинструкция ===== {{youtube>H4EbYJXYCCE?large}} ===== Как собрать ===== Установите [[amp>product/arduino-troyka-slot-shield?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|Troyka Slot Shield]] на [[amp>product/iskra-neo?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|Iskra Neo]] {{ :slot-box:co-alarm:step1.png?600 |}} Поверните модуль датчика широкого спектра газов [[amp>product/troyka-mq2-gas-sensor?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki |MQ-2]] на 90 градусов против часовой стрелки и вставьте в левый нижний слот. {{ :slot-box:co-alarm:step2.png?600 |}} Поверните модуль [[amp>product/troyka-buzzer?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|пьезопищалки]] на 180 градусов и вставьте в правый нижний слот. {{ :slot-box:co-alarm:step3.png?600 |}} Вставьте красный [[amp>product/troyka-led-module?utm_source=proj&utm_campaign=slot-proj-2&utm_medium=wiki|светодиод]] в левый слот, а зелёный — в правый. {{ :slot-box:co-alarm:step4.png?600 |}} ===== Скетч ===== Прошейте контроллер скетчем через [[../установка-и-настройка-arduino-ide|Arduino IDE]]. Не забудьте скачать библиотеку [[https://github.com/amperka/TroykaMQ|TroykaMQ]] для работы с датчиком дыма. // библиотека для работы с датчиками MQ (Troyka-модуль) #include // имя для пина, к которому подключен датчик #define PIN_MQ2 A3 // имя для пина, к которому подключен нагреватель датчика #define PIN_MQ2_HEATER 11 // создаём объект для работы с датчиком // и передаём ему номер пина выходного сигнала и нагревателя MQ2 mq2(PIN_MQ2, PIN_MQ2_HEATER); // номер цифрового пина зелёного светодиода #define LED_GREEN_PIN 4 // номер цифрового пина красного светодиода #define LED_RED_PIN 2 // номер цифрового пина пищалки #define BUZZER_PIN 10 void setup() { // открываем последовательный порт Serial.begin(9600); // назначаем 2 пина в режиме выхода pinMode(LED_GREEN_PIN, OUTPUT); pinMode(LED_RED_PIN, OUTPUT); // включаем нагреватель mq2.heaterPwrHigh(); Serial.println("Heated sensor"); } void loop() { // если прошёл интервал нагрева датчика // и калибровка не была совершена if (!mq2.isCalibrated() && mq2.heatingCompleted()) { // выполняем калибровку датчика на чистом воздухе mq2.calibrate(); // выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт Serial.print("Ro = "); Serial.println(mq2.getRo()); } // если прошёл интервал нагрева датчика // и калибровка была совершена if (mq2.isCalibrated() && mq2.heatingCompleted()) { // считываем показания вредных газов float valueLPG = mq2.readLPG(); // если показания превышают пороговое значение if (mq2.readLPG() > 500) { // включаем предупреждающий сигнал и мигаем красным светодиодом signaling(100); // если показания сильно превышают предельную норму } else if (mq2.readLPG() > 100) { // включаем сирену и быстро мигаем красным светодиодом signaling(300); } else { // гасим красный светодиода и зажигаем зелёный digitalWrite(LED_GREEN_PIN, HIGH); digitalWrite(LED_RED_PIN, LOW); } } } // функция сигнализации void signaling(int frequency) { // гасим зелёный светодиод digitalWrite(LED_GREEN_PIN, LOW); // в зависимости от переданной переменной // пищим бузером и мигаем красным светодиодом digitalWrite(LED_RED_PIN, HIGH); tone(BUZZER_PIN, 300, frequency); delay(frequency); digitalWrite(LED_RED_PIN, LOW); delay(frequency); } ====== Что дальше? ====== Хотите собрать другой девайс? Выберите своё будущее устройство из [[slot-box:start#хочу_собрать|списка проектов на Slot Shield]]. ====== FAQ ====== > Где скачать необходимые библиотеки и как их установить? * [[https://github.com/amperka/TroykaMQ|Библиотека для работы с датчиками газа]] * [[программирование:библиотеки|Как установить библиотеку]]