Проект домашней пожарной безопасности и умного дома на базе ArduinoC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Проект домашней пожарной безопасности и умного дома на базе Arduino

Сообщение Anonymous »

Я работаю над проектом домашней пожарной безопасности и умного дома, используя Arduino UNO и различные компоненты. Проект включает в себя обнаружение пожара, включение водяного насоса, звуковой сигнал и управление светодиодным освещением через Bluetooth. Вот список компонентов, которые я использую:
Arduino UNO
Датчик пламени
Модуль реле 5 В (2 канала)
Модуль Bluetooth HC-05Водяной насос 5В
Зуммер 5В
Аккумулятор 9В с адаптером
Перемычки (папа-мама)
Светодиодный светильник постоянного тока 9В 3Вт
Цель:
Когда датчик пламени обнаруживает возгорание:
Немедленно включите зуммер.
После задержки в 2 секунды включите водяной насос на 2 секунды.
Использование модуль Bluetooth HC-05 для независимого управления светодиодным освещением (включение/выключение его через приложение для смартфона).
Текущий код:
Для этого я написал следующий код Arduino, но я Сталкиваюсь с некоторыми проблемами с интеграцией и функциональностью системы.

Код: Выделить всё

#include 

// Pin definitions
#define SENSOR_PIN 2
#define BUZZER_PIN 3
#define RELAY_PIN 4
#define LED_RELAY_PIN 5 // Relay for LED light
#define SPRINKLER_START_DELAY 2000  // 2 seconds delay
#define SPRINKLER_ON_TIME 2000      // 2 seconds Sprinkler on time

unsigned long previousTime = millis();

// Initialize SoftwareSerial for Bluetooth communication
SoftwareSerial BTserial(6, 7); // rx-tx (using pins 6 and 7 to avoid conflict with sensor pins)

char c = 0; // container for Bluetooth commands

void setup()
{
BTserial.begin(9600);

pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_RELAY_PIN, OUTPUT);
pinMode(SENSOR_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);

digitalWrite(LED_RELAY_PIN, HIGH); // Initially turn off the LED relay

Serial.begin(9600);
}

void loop()
{
// If there is fire then the sensor value will be LOW else the value will be HIGH
int sensorValue = digitalRead(SENSOR_PIN);

// There is fire
if (sensorValue == LOW)
{
analogWrite(BUZZER_PIN, 50);                          // Turn on buzzer

if (millis() - previousTime > SPRINKLER_START_DELAY)  // We will wait for few seconds before sprinkler can be started once fire is detected.
{
digitalWrite(RELAY_PIN, LOW);                       // Relay is low level triggered relay so we need to write LOW to switch on the light
delay(SPRINKLER_ON_TIME);                           // Keep sprinkler on for sometime.
digitalWrite(RELAY_PIN, HIGH);                      // Turn off the sprinkler after the specified time
delay(SPRINKLER_START_DELAY);                       // Delay after sprinkler turns off
}
}
else
{
analogWrite(BUZZER_PIN, 0);
digitalWrite(RELAY_PIN, HIGH);
previousTime = millis();
}

// Bluetooth control for LED light
if (BTserial.available())
{
c = BTserial.read();
Serial.write(c);

if (c == '1') // if container value is 1 then low
{
digitalWrite(LED_RELAY_PIN, LOW); // Turn on LED light (Relay is low level triggered)
}

if (c == '0') // if container value is 0 then high
{
digitalWrite(LED_RELAY_PIN, HIGH); // Turn off LED light
}
}
}
Проблемы, с которыми я столкнулся:
Логика обнаружения пожара и активации водяного насоса работает непоследовательно. Иногда водяной насос не включается после задержки.
Управление светодиодным фонарем по Bluetooth работает с перерывами. Светодиод не всегда реагирует на команды, отправленные из приложения для смартфона.
Я не уверен, что мои подключения правильны и оптимальны.
Подключения цепей:
Датчик пламени к Arduino UNO
VCC к 5 В
GND к GND
OUT к цифровому контакту 2
Модуль Bluetooth HC-05 к Arduino UNO через SoftwareSerial
VCC на 5 В
GND на GND
TXD на цифровой контакт 6 (Arduino RX)
RXD на цифровой контакт 7 (Arduino TX)
Модуль реле (канал 1) для водяного насоса на Arduino UNO
VCC на 5 В
GND на GND
IN1 на цифровой контакт 4 (реле управления водяным насосом)
Модуль реле (канал 2) для светодиодной подсветки на Arduino UNO
VCC на 5 В
GND на GND
IN2 на цифровой контакт 5 (реле управления для Светодиодный индикатор через Bluetooth)
Водяной насос 5 В к модулю реле (канал 1)
Положительный (VCC) к NO (нормально разомкнутому) канала реле 1
GND к Общий (COM) канала реле 1
Светодиодный индикатор постоянного тока 9 В, 3 Вт к модулю реле (канал 2)
Положительный (VCC) к NO (нормально разомкнутому) канала реле 2Земля к общему (COM) релейного канала 2
Зуммер 5 В к Arduino UNO
Плюс к цифровому контакту 3
Отрицательный к GND
9В Батарея к Arduino UNO
Положительный к VIN
Отрицательный к GND
Запрос:
Не могли бы вы просмотреть мой код и схему связи? Буду признателен за любые предложения по улучшению функциональности и надежности моего проекта. Конкретные моменты, в которых мне нужна помощь:
Обеспечение последовательной работы логики обнаружения пожара и активации водяного насоса.
Улучшение управления Bluetooth для светодиодного освещения.
Проверка работоспособности моего устройства. Электрические соединения верны и вносят необходимые исправления.
Спасибо за ваше время и помощь!

Подробнее здесь: https://stackoverflow.com/questions/787 ... me-project
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»