Buzzer — это электронное устройство, издающее звук при подаче на него напряжения. Используется в различных системах: сигнализациях, будильниках, таймерах.
Существуют два типа пищалок:
- Активная — издаёт звук сама, при подаче питания.
- Пассивная — требует подачи сигнала определённой частоты (PWM).
6.1 Katse Buzzer
Цель:
Научиться подключать buzzer к Arduino и создать простую систему сигнализации, которая срабатывает при наступлении определённого условия (например, темнота, высокая температура, движение).
Используемые компоненты:
- Arduino Uno
- Пищалка (buzzer)
- Макетная плата (breadboard)
- Провода
Схема подключения:

Код:
const int buzzerPin = 9;
// pikkus on nootide ja pausite koguste summa
const int songLength = 18;
char notes[] = "cdfda ag cdfdg gf "; // tähed on noodid ja tühik on paus
// Rütmi seadistamine.
int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
// "tempo" meloodia kiirus. Kui väiksem tempo_ siis suurem kiirus.
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] == ' ') // kui noot puudub
{
delay(duration);
}
else
{
tone(buzzerPin, frequency(notes[i]), duration);
delay(duration);
}
delay(tempo/10); // väike paus nootide vahel
}
while(true){}
}
int frequency(char note)
{
int i;
const int numNotes = 8; // nootide kogus
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// kui noot on olemas, siis tagastame selle tiheduse
for (i = 0; i < numNotes; i++)
{
if (names[i] == note)
{
return(frequencies[i]);
}
}
return(0);
}
6.2 DHT11 andur
Цель:
Научиться подключать цифровые датчики DHT11 и DHT22 к Arduino Uno и считывать с них данные о температуре и влажности.
Датчики:
DHT11
- Диапазон температур: 0–50°C (точность ±2°C)
- Влажность: 20–90% (точность ±5%)
- Недорогой, менее точный, чем DHT22
- Использует цифровой выход
Пины подключения:
- VCC – 5V
- DATA – D2 на Arduino
- GND – GND
Схема подключения:

Код:
#include <DHT.h>
#define DHTPIN 2 // подключение сигнала к D2
#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("Температура: ");
Serial.print(temp);
Serial.print(" °C | Влажность: ");
Serial.print(hum);
Serial.println(" %");
delay(2000);
}
DHT22 (AM2302)
- Диапазон температур: –40 до +80°C (точность ±0,5°C)
- Влажность: 0–100% (точность ±2–5%)
- Более точный и надёжный, чем DHT11
- Также использует цифровой выход
Пины подключения:
- VCC – 5V
- DATA – D2 на Arduino
- GND – GND
- NC – не подключается (если 4 пина)
Схема подключения:

Код:
#include <DHT.h>
#define DHTPIN 2 // подключение сигнала к D2
#define DHTTYPE DHT22 // тип датчика
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("Температура: ");
Serial.print(temp);
Serial.print(" °C | Влажность: ");
Serial.print(hum);
Serial.println(" %");
delay(2000);
}
Необходимые библиотеки:
DHT sensor library
от AdafruitAdafruit Unified Sensor
(устанавливается автоматически)
📥 Установка:
Arduino IDE > Скетч > Подключить библиотеку > Управление библиотеками > Поиск: DHT sensor library
Buzzeri kasutamine «Väike Alarm Süsteem»
Цель:
Создать простую звуковую сигнализацию с использованием buzzer и датчика освещённости (фоторезистора). При наступлении темноты должна срабатывать пищалка.
Используемые компоненты:
- Arduino Uno
- Пищалка (buzzer)
- Фоторезистор
- Резисторы 10 кОм, 220 Ом
- Макетная плата (breadboard)
- Провода

Подключение:
- Фоторезистор к аналоговому пину A0 через резистор 10 кОм (делитель напряжения).
- Пищалка:
- (длинная ножка) → цифровой пин D8
- (короткая ножка) → GND
Принцип работы:
Arduino считывает показания с фоторезистора.
Если уровень освещённости падает ниже определённого значения (например, 300), то срабатывает сигнализация — включается пищалка.
Когда становится светло — сигнализация выключается.
Код подключения:
#include <LiquidCrystal.h>
// LCD пины: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Пины
const int tempPin = A0;
const int ldrPin = A1;
const int systemSwitchPin = A5; // свич (analogRead)
const int buzzerPin = 9; // зуммер
// Мелодия
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
int melody[] = { NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5 };
int durations[] = { 4, 4, 4, 4, 4, 4, 4, 4 };
int noteIndex = 0;
unsigned long lastNoteTime = 0;
void setup() {
lcd.begin(16, 2);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int controlValue = analogRead(systemSwitchPin);
bool systemOn = controlValue < 500;
float tempC = getTemperature();
int lightLevel = analogRead(ldrPin);
bool dark = lightLevel < 200;
bool hot = tempC > 30;
// Дисплей: строка 1 — температура и свет
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(tempC, 1);
lcd.print((char)223); // °C
lcd.print("C L:");
lcd.print(lightLevel);
if (lightLevel < 100) lcd.print(" ");
// Дисплей: строка 2 — статус
lcd.setCursor(0, 1);
if (!systemOn) {
lcd.print("System OFF ");
noTone(buzzerPin);
} else if (dark || hot) {
if (dark && hot) lcd.print("Hot & Dark Alarm!");
else if (hot) lcd.print("Too Hot! Alarm!! ");
else lcd.print("Dark! Alarm!!! ");
tone(buzzerPin, 1000, 500); // сигнал тревоги
} else {
lcd.print("All OK ");
playMelodyStep(); // фоновая мелодия
}
// Отладка в Serial Monitor
Serial.print("Temp: ");
Serial.print(tempC);
Serial.print(" C | Light: ");
Serial.print(lightLevel);
Serial.print(" | A5: ");
Serial.print(controlValue);
Serial.print(" | systemOn: ");
Serial.println(systemOn);
delay(100);
}
// TMP36
float getTemperature() {
int analogValue = analogRead(tempPin);
float voltage = analogValue * 5.0 / 1023.0;
return (voltage - 0.5) * 100.0;
}
// Мелодия по одной ноте
void playMelodyStep() {
static bool isPlaying = false;
unsigned long now = millis();
if (!isPlaying && now - lastNoteTime >= 300) {
int duration = 1000 / durations[noteIndex];
tone(buzzerPin, melody[noteIndex], duration);
lastNoteTime = now;
isPlaying = true;
} else if (isPlaying && now - lastNoteTime >= 400) {
noTone(buzzerPin);
noteIndex++;
if (noteIndex >= sizeof(melody) / sizeof(int)) {
noteIndex = 0;
}
lastNoteTime = now;
isPlaying = false;
}
}
Видео-демонстрация 🔗 Ссылка
✅Вывод:
В этом упражнении мы реализовали полноценную мини-сигнализацию на базе Arduino. Система реагирует сразу на несколько условий — низкий уровень освещённости и высокую температуру. При срабатывании тревоги включается звуковой сигнал, а на LCD-дисплее появляется соответствующее сообщение.
Особенности проекта:
- Реагирует на темноту (по фоторезистору) и жару (по температурному датчику TMP36).
- Отображает на дисплее актуальные данные: температура, освещённость, статус системы.
- Поддерживает переключатель (switch), с помощью которого можно отключить всю систему.
- При нормальных условиях играет фоновая мелодия, состоящая из нот.
- В тревожном режиме выводится сообщение и срабатывает сигнализация.
Такой проект можно использовать как основу для «умного дома»: например, как ночную охранную систему, сигнализацию при перегреве в помещении или простую систему оповещения. Он объединяет несколько типов сенсоров, управление выводом и продуманную реакцию на условия, а также показывает, как работать с LCD и звуковыми сигналами одновременно.