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