Звук тревоги при превышении температуры на Arduino

В этом проекте реализована система оповещения с использованием сенсора температуры LM35 и зуммера на базе Arduino. При превышении заданного порога температуры (по умолчанию 30 градусов Цельсия), зуммер издает звуковой сигнал, напоминающий сирену. Частота звука плавно изменяется вверх и вниз, создавая предупреждающий эффект. Эта система полезна для мониторинга температуры и предупреждения о перегреве в различных приложениях.

Этот проект демонстрирует, как использовать сенсор температуры LM35 для мониторинга температуры окружающей среды и активации звукового сигнала при превышении порогового значения температуры. В данном примере, если температура превышает 30 градусов Цельсия (значение можно изменить), зуммер издает звуковой сигнал, похожий на сирену.

Необходимые компоненты

Для реализации проекта потребуются следующие компоненты:

  • Arduino Uno

  • Сенсор температуры LM35

  • Зуммер

  • Соединительные провода

Подключение компонентов

  1. Сенсор температуры LM35:

  • VCC подключаем к 5V на Arduino.

  • GND подключаем к GND на Arduino.

  • Выход подключаем к аналоговому пину A0 на Arduino.

  1. Зуммер:

  • Плюсовой вывод зуммера подключаем к цифровому пину 10 на Arduino.

  • Минусовой вывод зуммера подключаем к GND на Arduino.

Схема подключения

Код программы

Ниже приведен код, который нужно загрузить в Arduino для работы системы:

overtemp_alarm_sound.ino
#define Buzzer 10 // пин к которому подключен зуммер
int temp;    // освобождаем память для переменной "temp"
float grad; // освобождаем память для переменной "grad"
void setup() {
  pinMode(Buzzer, OUTPUT);
  pinMode(A0, INPUT); // сенсор LM35 подключим к аналоговому входу A0
  Serial.begin(9600);     // подключаем монитор порта
}
void loop() {
  temp = analogRead(A0); // переменная находится в интервале 0 - 1023
  grad = ( temp / 1023.0 ) * 5.0 * 1000 / 10; // формулу можно изменять
  Serial.println(grad);
  if (grad > 30) { // можно изменить на нужную вам температуру
    // Нарастание частоты звука
    for (int f = 5; f <= 800; f++) {
      tone(Buzzer, f, 100); // Устанавливаем частоту зуммера
      delay(5); // Задержка для плавного изменения частоты
    }
    temp = analogRead(A0); // переменная находится в интервале 0 - 1023
    grad = ( temp / 1023.0 ) * 5.0 * 1000 / 10; // формулу можно изменять
    Serial.println(grad);
    // Убывание частоты звука
    for (int f = 800; f >= 5; f--) {
      tone(Buzzer, f, 100); // Устанавливаем частоту зуммера
      delay(5); // Задержка для плавного изменения частоты
    }
    noTone(Buzzer);
  }
}

Объяснение кода

  1. Инициализация переменных и настроек:

    • #define Buzzer 10 задает пин, к которому подключен зуммер.

    • int temp используется для хранения значения, считанного с аналогового входа.

    • float grad используется для хранения значения температуры в градусах Цельсия.

  2. Функция setup():

    • pinMode(Buzzer, OUTPUT); устанавливает пин для подключения зуммера как выход.

    • pinMode(A0, INPUT); устанавливает пин A0 как вход для подключения сенсора температуры.

    • Serial.begin(9600); инициализирует монитор порта для вывода данных.

  3. Функция loop():

    • temp = analogRead(A0); считывает значение с сенсора температуры.

    • grad = (temp / 1023.0) * 5.0 * 100; преобразует считанное значение в температуру в градусах Цельсия.

    • Serial.println(grad); выводит значение температуры на монитор порта.

    • Если температура превышает 30 градусов (if (grad > 30)), зуммер начинает издавать звук с изменяющейся частотой:

      • Нарастание частоты звука: Цикл for увеличивает частоту звука от 5 до 800 Гц, вызывая функцию tone(Buzzer, f, 100) для установки частоты зуммера с задержкой в 5 миллисекунд для плавного изменения частоты.

      • Обновление значения температуры: Повторное считывание значения температуры и вывод его на монитор порта.

      • Убывание частоты звука: Цикл for уменьшает частоту звука от 800 до 5 Гц, вызывая функцию tone(Buzzer, f, 100) для установки частоты зуммера с задержкой в 5 миллисекунд для плавного изменения частоты.

      • Функция noTone(Buzzer) отключает зуммер.

Заключение

Этот проект демонстрирует, как использовать сенсор температуры и зуммер для создания системы оповещения на базе Arduino. При превышении заданной температуры зуммер издает звуковой сигнал, напоминающий сирену, предупреждая пользователя о повышенной температуре. Такой проект может быть полезен в различных приложениях, включая системы мониторинга температуры и предупреждения о перегреве.