BUZZER

Buzzer

Компоненты:

Этот компонент называется пьезоизлучатель или пьезодинамик, а в разговорной речи часто просто зуммер

  • 1 пьезоизлучатель

Схема:

Код:

// Воспроизведение мелодий.

// Команда Arduino tone() — частота звука для ноты.

// Ноты:

// note    частота (Гц)

// c     262 Гц

// d     294 Гц

// e     330 Гц

// f     349 Гц

// g     392 Гц

// a     440 Гц

// b     494 Гц

// C     523 Гц

const int buzzerPin = 9;

// Длина — это общее количество нот и пауз

const int songLength = 18;

char notes[] = "cdfda ag cdfdg gf "; // буквы — ноты, пробел — это пауза

// Настройка ритма.

int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};

// "tempo" — это скорость мелодии. Чем меньше значение, тем быстрее проигрывание.

int tempo = 150;

void setup() 
{
  pinMode(buzzerPin, OUTPUT); // Устанавливаем пин для зуммера как выход
}

void loop() 
{
  int i, duration;

  for (i = 0; i < songLength; i++)
  {
    duration = beats[i] * tempo; // Вычисляем длительность ноты

    if (notes[i] == ' ')          // если нота отсутствует (пауза)
    {
      delay(duration);           // делаем паузу
    }
    else                         
    {
      tone(buzzerPin, frequency(notes[i]), duration); // проигрываем ноту нужной частоты
      delay(duration);          // ждем, пока нота отыграет
    }

    delay(tempo / 10);           // небольшая пауза между нотами
  }

  while(true){} // бесконечная задержка — мелодия играет один раз
}

// Функция преобразования символа ноты в частоту (Гц)
int frequency(char note) 
{
  int i;

  const int numNotes = 8;  // количество различных нот

  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };

  int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};

  // Если нота найдена — возвращаем её частоту
  for (i = 0; i < numNotes; i++)  
  {
    if (names[i] == note)       
    {
      return(frequencies[i]);    
    }
  }

  return(0); // если нота не найдена — вернуть 0 (тишина)
}

Датчик DHT11

Компоненты:

  • Датчик DHT11
  • резистор на 10 кОм

Код:

#include <DHT.h> // sketch -> Include Library -> Manage libraries -> DHT sensor library

#define DHTPIN 2        // сигнал с DHT идёт на пин D2 Arduino
#define DHTTYPE DHT11   // указываем тип датчика

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float temp = dht.readTemperature();
  float hum = dht.readHumidity();

  if (isnan(temp) || isnan(hum)) {
    Serial.println("Не удалось прочитать данные с датчика!");
    return;
  }

  Serial.print("Temperatuur: ");
  Serial.print(temp);
  Serial.print(" °C | Niiskus: ");
  Serial.print(hum);
  Serial.println(" %");

  delay(2000);
}

Схема:

Малая система сигнализации

Компоненты:

  • 1 LCD экран (1602)
  • 1 Потенциометр 
  • 1 Резистор 220 Ω
  • 1 Резистор 10 КΩ
  • Температурный датчик
  • Фоторезистр
  • Пьезоизлучатель

Схема:

Код:

#include <LiquidCrystal.h>

// LCD пины: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int ldrPin = A1;  // фоторезистор
const int tempPin = A0; // TMP36
const int buzzerPin = 9; // зуммер

void setup() {
  lcd.begin(16, 2);
  pinMode(buzzerPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int lightLevel = analogRead(ldrPin);    
  int tempValue = analogRead(tempPin);    

  float voltage = tempValue * (5.0 / 1023.0);
  float temperatureC = (voltage - 0.5) * 100.0;

  Serial.print("Light: ");
  Serial.print(lightLevel);
  Serial.print(" | Temp: ");
  Serial.print(temperatureC);
  Serial.println(" C");

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("L:");
  lcd.print(lightLevel);
  lcd.print(" T:");
  lcd.print(temperatureC, 1);

  lcd.setCursor(0, 1);

  if (temperatureC > 30.0) {
    lcd.print("Hot Alarm!");
    tone(buzzerPin, 1500);   // длительный сигнал
    delay(1500);
    noTone(buzzerPin);   // остановить звук
  } 
  else if (lightLevel > 200) {
    lcd.print("Dark Alarm!");
    tone(buzzerPin, 1000);      // длительный сигнал
    delay(1500);
    noTone(buzzerPin);
  } 
  else {
    lcd.print("All ok!");
    tone(buzzerPin, 440);    // короткий "пик"
    delay(100);       // короткий звук
    noTone(buzzerPin);
  }

  delay(1000); // пауза между циклами
}

Подключение библиотеки для LCD и настройка дисплея

#include &lt;LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Далее мы назначаем пины

После пинов у нас setup() – запускается один раз при старте. Настраивает дисплей, зуммер и порт.

Главный цикл loop() – считывает аналоговые значения от фоторезистора и TMP36

int lightLevel = analogRead(ldrPin);    
int tempValue = analogRead(tempPin); 

После идет преобразования температуры voltage = tempValue * (5.0 / 1023.0);

Для себя я вывожу на Serial Monitor информацию

После мы выводим информацию LCD-дисплей (чуть короче чем на Serial Monitor, т.к не хватает много места)

Переходим на вторую строку дисплея

Условие 1 — перегрев (температура > 30 °C):

if (temperatureC > 30.0) {
  lcd.print("Hot Alarm!");
  tone(buzzerPin, 1500);      // Звук высокой частоты
  delay(1500); 
  noTone(buzzerPin);          // Отключение звука
}

Условие 2 — темно (свет > 200):

else if (lightLevel > 200) {
  lcd.print("Dark Alarm!");
  tone(buzzerPin, 1000);      // Звук средней частоты
  delay(1500);
  noTone(buzzerPin);
}

Если не два вехних — всё хорошо (нет Alarm):

else {
  lcd.print("All ok!");
  tone(buzzerPin, 440);       // Низкий короткий сигнал
  delay(100);
  noTone(buzzerPin);
}

Видео

Видео схемы, как работает код на www.tinkercad.com

Так же видео как работает в реальности

Где можно применять такой проект

1. Умная мини-теплица

Применение:

  • Следит за освещением и температурой.
  • При перегреве подаёт сигнал.
  • В темноте — напоминание о включении лампы.

Хорошо подойдет к нашему ранниму проекту умной теплицы

2. Домашняя сигнализация

Применение:

  • Если в комнате резко становится темно или жарко (например, пожар или закрыли свет — тревога).
  • Можно использовать как базу для сигнализации (например, +датчик движения или дыма).

3. Контроль условий хранения

Применение:

  • На складе, в холодильной камере, шкафу с оборудованием.
  • Контроль температуры и света внутри коробки или контейнера.

Учебный демонстрационный проект

Применение:

  • В школе, колледже, университете.
  • Показ принципов работы датчиков, дисплея и зуммера.
  • Знакомство с Arduino и основами автоматизации.

6. Мониторинг для животных

Применение:

  • В террариуме, клетке или домике для питомца.
  • Температура и освещение — критично важны для рептилий, птиц и т.п.