Устройство легко просигнализирует о том, что в доме задымлено. Установленный светодиод высвечивает сигнал SOS для того, чтобы было видно, где сработал датчик, а зуммер подает сигнал тревоги, который можно услышать в любой другой комнате.
Описание работы:
Для начала работы подключите питание к Arduino. И поместите устройство в комнату, в которой предварительно могут появиться нежелательные газы. Зеленый светодиод постоянно горит сигнализируя о том, что в комнате нет дыма. Как только датчик оказывается в зоне поражения дымом, зеленый светодиод гаснет, а красный светодиод высвечивает сигнал SOS, а зуммер сигнализирует SOS. Необходимо подождать некоторое время после подключения устройства к питанию, чтобы нагревательный элемент датчика прогрелся до нужной температуры и выдавал адекватные показания.
Нам понадобится:
- Arduino Uno х 1шт.
- Trema Set Shield х 1шт.
- Trema-модуль датчик газа х 1шт.
- Trema-модуль зуммер х 1шт.
- Trema-модуль зеленый светодиод х 1шт.
- Trema-модуль красный светодиод х 1шт.
Для реализации проекта нам не нужно устанавливать никаких библиотеки.
Схема сборки:
- Устанавливаем Trema Set Shield в Arduino Uno.
- Устанавливаем зеленый Trema-модуль светодиод в 1 посадочную площадку.
- Устанавливаем красный Trema-модуль светодиод в 3 посадочную площадку.
- Устанавливаем Trema-модуль зуммер в 4 посадочную площадку.
- Устанавливаем Trema-модуль датчик газа в 6 посадочную площадку.
- Полученные результат представлен ниже на рисунке.
Код программы:
int pinDatD = A3; // Объявляем пин для работы с датчиком дыма.
int pinLedRed = 2; // Объявляем пин для работы с красным светодиодом.
int pinLedGreen = 3; // Объявляем пин для работы с зеленым светодиодом.
int pinZum = 11; // Объявляем пин для работы с зуммером.
//
int datDValue; // Переменная для считывания показания датчика дыма.
const int ultimateLevel = 500; // Переменная предельного уровня показаний датчика дыма.
//
void Sos(); // Функция индикация SOS.
//
void setup() //
{ //
pinMode(pinLedRed, OUTPUT); // Переводим вывод pinLedRed в режим выхода.
pinMode(pinLedGreen, OUTPUT); // Переводим вывод pinLedRed в режим выхода.
pinMode(pinZum, OUTPUT); // Переводим вывод pinLedRed в режим выхода.
} //
//
void loop() //
{ //
datDValue = analogRead(pinDatD); // Считываем показания датчика дыма.
if (datDValue > ultimateLevel) // Если показания дыма больше предельного уровня, то сообщаем о задымлении.
{ //
digitalWrite(pinLedGreen, LOW); // Гасим зеленый светодиод.
Sos(); // Переходим к функции индикации SOS.
} //
else // Если показания датчика дыма меньше заданного уровня, то нет задымления.
{ //
digitalWrite(pinLedGreen, HIGH); // Включаем зеленый светодиод.
digitalWrite(pinLedRed, LOW); // Гасим красный светодиод.
digitalWrite(pinZum, LOW); // Выключаем зуммер.
} //
// *******************************************************************//
// delay(1000); // Время за которое данный с датчика дыма будут сравниваться с уровнем задымления.
// *******************************************************************//
} //
//
void Sos() // Функция индикация SOS.
{ //
digitalWrite(pinLedRed, HIGH); // Включаем красный светодиод.
digitalWrite(pinZum, HIGH); // Включаем зуммер.
delay(300); // Задержка 300 мс.
digitalWrite(pinLedRed, LOW); // Выключаем красный светодиод.
digitalWrite(pinZum, LOW); // Выключаем зуммер.
delay(300); // Задержка 300 мс.
digitalWrite(pinLedRed, HIGH); // Включаем красный светодиод.
digitalWrite(pinZum, HIGH); // Включаем зуммер.
delay(300); // Задержка 300 мс.
digitalWrite(pinLedRed, LOW); // Выключаем красный светодиод.
digitalWrite(pinZum, LOW); // Выключаем зуммер.
delay(300); // Задержка 300 мс.
digitalWrite(pinLedRed, HIGH); // Включаем красный светодиод.
digitalWrite(pinZum, HIGH); // Включаем зуммер.
delay(300); // Задержка 300 мс.
digitalWrite(pinLedRed, LOW); // Выключаем красный светодиод.
digitalWrite(pinZum, LOW); // Выключаем зуммер.
delay(300); // Задержка 300 мс.
//
digitalWrite(pinLedRed, HIGH); // Включаем красный светодиод.
digitalWrite(pinZum, HIGH); // Включаем зуммер.
delay(1500); // Задержка 1500 мс.
digitalWrite(pinLedRed, LOW); // Выключаем красный светодиод.
digitalWrite(pinZum, LOW); // Выключаем зуммер.
delay(300); // Задержка 300 мс.
//
digitalWrite(pinLedRed, HIGH); // Включаем красный светодиод.
digitalWrite(pinZum, HIGH); // Включаем зуммер.
delay(1500); // Задержка 1500 мс.
digitalWrite(pinLedRed, LOW); // Выключаем красный светодиод.
digitalWrite(pinZum, LOW); // Выключаем зуммер.
delay(300); // Задержка 300 мс.
//
digitalWrite(pinLedRed, HIGH); // Включаем красный светодиод.
digitalWrite(pinZum, HIGH); // Включаем зуммер.
delay(1500); // Задержка 1500 мс.
digitalWrite(pinLedRed, LOW); // Выключаем красный светодиод.
digitalWrite(pinZum, LOW); // Выключаем зуммер.
delay(300); // Задержка 300 мс.
//
digitalWrite(pinLedRed, HIGH); // Включаем красный светодиод.
digitalWrite(pinZum, HIGH); // Включаем зуммер.
delay(300); // Задержка 300 мс.
digitalWrite(pinLedRed, LOW); // Выключаем красный светодиод.
digitalWrite(pinZum, LOW); // Выключаем зуммер.
delay(300); // Задержка 300 мс.
digitalWrite(pinLedRed, HIGH); // Включаем красный светодиод.
digitalWrite(pinZum, HIGH); // Включаем зуммер.
delay(300); // Задержка 300 мс.
digitalWrite(pinLedRed, LOW); // Выключаем красный светодиод.
digitalWrite(pinZum, LOW); // Выключаем зуммер.
delay(300); // Задержка 300 мс.
digitalWrite(pinLedRed, HIGH); // Включаем красный светодиод.
digitalWrite(pinZum, HIGH); // Включаем зуммер.
delay(300); // Задержка 300 мс.
digitalWrite(pinLedRed, LOW); // Выключаем красный светодиод.
digitalWrite(pinZum, LOW); // Выключаем зуммер.
delay(1500); // Задержка 1500 мс.
}
Алгоритм работы:
В начале скетча (до кода setup) выполняются следующие действия:
- Объявляем пины для работы с Trema-модуль датчиком газа, Trema-модуль светодиодами, Trema-модуль зуммером.
- Объявляем переменную, которые задействованы в программе.
- Объявляем функцию.
В коде setup выполняются следующие действия:
- Переводим выводы светодиодов и зуммера в режим выхода.
В коде loop выполняются следующие действия:
- Считываем показания датчика дыма.
- Сравниваем показания с допустимым пределом. Если показания дыма больше предельного уровня, то сообщаем о задымлении, а именно гасим зеленый светодиод и сигнализируем о тревоге функцией "Sos()". В ней мы гасим и зажигаем красный светодиод, а так же включаем и выключаем зуммер с периодичностью соответствующей команде SOS.
- Если показания дыма меньше предельного уровня, то постоянно светит зеленый светодиод, а красный светодиод и зуммер выключены.
- Можно раскомментировать строку, связанную с задержкой. Тогда полученные данные с датчика дыма будут дольше приходить для сравнения.
- Можно менять уровень по которому срабатывает тревога. Для этого в скетче необходимо переменную предельного уровня "ultimateLevel" изменить на то значение, которое вам необходимо.

Обсуждение