ماژول بازر فعال
Active Buzzer Module
آلارم صوتی پاورفول
ماژول بازر فعال یک آلارم صوتی خود نوسانگر با ولتاژ کاری گسترده که به محض اعمال ولتاژ، بدون نیاز به درایور خارجی صدای پیوسته و بلند تولید میکند. این ماژول برای سیستمهای هشدار، آلارم و اطلاعرسانی صوتی ایدهآل است.
🔊 ویژگیهای اصلی
🔹 بازر فعال (Active) – مدار نوسانساز داخلی
🔹 صدای بلند و واضح – 85dB در 10cm
🔹 ولتاژ کاری گسترده – 3V تا 24V
🔹 جریان مصرف کم – 30mA در 5V
🔹 قطبیت مشخص – + و – مشخص
🔹 نصب آسان – پایههای استاندارد 2.54mm
📊 مشخصات فنی دقیق
مشخصات الکتریکی:
-
نوع: بازر فعال الکترومکانیکی (Active Piezo Buzzer)
-
ولتاژ کاری: 3V تا 24V DC (رایج: 5V، 12V)
-
ولتاژ نامی (Rated): 5V DC (±10%)
-
جریان مصرف:
-
5V: 20-30mA
-
12V: 40-60mA
-
24V: 80-120mA
-
مقاومت DC: 16Ω ±20% (در 5V)
-
فرکانس صدا: 2.7kHz ±500Hz (در ولتاژ نامی)
-
توان صوتی: 85dB حداقل در 10cm فاصله
-
چرخه کاری: 50% (بوق پیوسته)
مشخصات آکوستیک:
-
تراز فشار صوتی: 85-95dB در 10cm
-
فرکانس رزونانس: 2.4kHz – 3.0kHz
-
پاسخ فرکانسی: باند باریک حول فرکانس رزونانس
-
الگوی انتشار: همه جهته (Omnidirectional)
-
نوع صوت: پیوسته (Continuous)
مشخصات فیزیکی:
-
قطر خارجی: 12mm (یا 9mm، 14mm)
-
ارتفاع: 9.5mm (بدون پایه)
-
قطر پایه: 10.5mm
-
طول پایه: 3mm
-
فاصله پایه: 7.5mm (2.54mm pitch)
-
قطبیت:
-
پایه بلندتر (+) – آند
-
پایه کوتاهتر (-) – کاتد
-
رنگ: مشکی با علامت + روی بدنه
-
وزن: 2 گرم
مشخصات محیطی:
-
دمای کاری: -20°C تا +70°C
-
دمای ذخیرهسازی: -30°C تا +80°C
-
رطوبت نسبی: 85% Max
-
فشار اتمسفر: 86kPa تا 106kPa
-
عمر کاری: 10,000 ساعت در شرایط نامی
مقایسه با بازر غیرفعال:
🔌 نحوه اتصال و راهاندازی
اتصال مستقیم به آردوینو:
#define BUZZER_PIN 8
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
Serial.begin(9600);
Serial.println("بازر فعال راهاندازی شد");
}
void loop() {
Serial.println("بوق 1 ثانیه");
digitalWrite(BUZZER_PIN, HIGH);
delay(1000);
digitalWrite(BUZZER_PIN, LOW);
delay(1000);
Serial.println("3 بوق کوتاه");
for(int i=0; i<3; i++) {
digitalWrite(BUZZER_PIN, HIGH);
delay(200);
digitalWrite(BUZZER_PIN, LOW);
delay(200);
}
delay(1000);
}
اتصال با ترانزیستور برای جریانهای بالا:
#define BUZZER_CONTROL 9
#define BUZZER_VCC 12
void setup() {
pinMode(BUZZER_CONTROL, OUTPUT);
}
void controlBuzzer(bool state) {
digitalWrite(BUZZER_CONTROL, state ? HIGH : LOW);
}
کلاس مدیریت پیشرفته بازر:
class ActiveBuzzer {
private:
int pin;
bool isActive;
unsigned long beepStartTime;
unsigned long beepDuration;
public:
ActiveBuzzer(int buzzerPin) {
pin = buzzerPin;
isActive = false;
beepStartTime = 0;
beepDuration = 0;
pinMode(pin, OUTPUT);
off();
}
void on() {
digitalWrite(pin, HIGH);
isActive = true;
}
void off() {
digitalWrite(pin, LOW);
isActive = false;
}
void beep(unsigned long durationMs) {
on();
beepStartTime = millis();
beepDuration = durationMs;
}
void beepPattern(int beeps, int onTime, int offTime) {
for(int i=0; i<beeps; i++) {
on();
delay(onTime);
off();
if(i < beeps-1) delay(offTime);
}
}
void alarm(int type) {
switch(type) {
case 1:
beepPattern(3, 100, 100);
break;
case 2:
beepPattern(2, 500, 200);
break;
case 3:
beepPattern(3, 200, 200);
delay(400);
beepPattern(3, 500, 200);
delay(400);
beepPattern(3, 200, 200);
break;
case 4:
for(int i=0; i<5; i++) {
on();
delay(50);
off();
delay(50);
}
break;
}
}
void update() {
if(isActive && beepDuration > 0) {
if(millis() - beepStartTime >= beepDuration) {
off();
beepDuration = 0;
}
}
}
void test() {
Serial.println("تست بازر فعال...");
Serial.println("1. بوق کوتاه");
beep(300);
delay(1000);
Serial.println("2. بوق متناوب");
beepPattern(5, 100, 100);
delay(1000);
Serial.println("3. آلارم SOS");
alarm(3);
delay(1000);
Serial.println("تست کامل شد");
}
bool getState() {
return isActive;
}
};
ActiveBuzzer buzzer(8);
void setup() {
Serial.begin(9600);
buzzer.test();
}
void loop() {
static unsigned long lastAlarm = 0;
if(millis() - lastAlarm > 10000) {
lastAlarm = millis();
buzzer.alarm(1);
Serial.println("آلارم فعال شد");
}
buzzer.update();
}
سیستم هشدار چند حالته:
enum AlarmType {
ALARM_NONE,
ALARM_INFO,
ALARM_WARNING,
ALARM_ERROR,
ALARM_CRITICAL
};
class AlarmSystem {
private:
ActiveBuzzer* buzzer;
AlarmType currentAlarm;
unsigned long alarmStartTime;
bool isMuted;
public:
AlarmSystem(int buzzerPin) {
buzzer = new ActiveBuzzer(buzzerPin);
currentAlarm = ALARM_NONE;
alarmStartTime = 0;
isMuted = false;
}
void triggerAlarm(AlarmType type) {
if(isMuted) return;
currentAlarm = type;
alarmStartTime = millis();
switch(type) {
case ALARM_INFO:
buzzer->beep(200);
Serial.println("هشدار: اطلاعات");
break;
case ALARM_WARNING:
buzzer->beepPattern(2, 200, 100);
Serial.println("هشدار: اخطار");
break;
case ALARM_ERROR:
buzzer->beepPattern(3, 100, 50);
Serial.println("هشدار: خطا");
break;
case ALARM_CRITICAL:
buzzer->on();
Serial.println("هشدار: بحرانی");
break;
default:
buzzer->off();
}
}
void update() {
buzzer->update();
if(currentAlarm != ALARM_CRITICAL && currentAlarm != ALARM_NONE) {
if(millis() - alarmStartTime > 3000) {
stopAlarm();
}
}
}
void stopAlarm() {
buzzer->off();
currentAlarm = ALARM_NONE;
}
void mute() {
isMuted = true;
stopAlarm();
Serial.println("آلارم سایلنت شد");
}
void unmute() {
isMuted = false;
Serial.println("آلارم فعال شد");
}
AlarmType getCurrentAlarm() {
return currentAlarm;
}
};
AlarmSystem alarm(8);
void setup() {
Serial.begin(9600);
Serial.println("سیستم آلارم راهاندازی شد");
}
void loop() {
static int alarmCounter = 0;
if(millis() % 15000 < 100) {
alarmCounter = (alarmCounter + 1) % 4;
switch(alarmCounter) {
case 0: alarm.triggerAlarm(ALARM_INFO); break;
case 1: alarm.triggerAlarm(ALARM_WARNING); break;
case 2: alarm.triggerAlarm(ALARM_ERROR); break;
case 3: alarm.triggerAlarm(ALARM_CRITICAL); break;
}
}
if(alarm.getCurrentAlarm() == ALARM_CRITICAL) {
static unsigned long criticalStart = 0;
if(criticalStart == 0) criticalStart = millis();
if(millis() - criticalStart > 5000) {
alarm.stopAlarm();
criticalStart = 0;
}
}
alarm.update();
delay(10);
}
🎯 کاربردهای عملی
1. سیستمهای امنیتی:
-
آلارم ضد سرقت
-
هشدار نفوذ
-
سیستم اعلام حریق
-
تشخیص حرکت
2. دستگاههای صنعتی:
-
هشدار خطای ماشینآلات
-
اتمام فرآیند
-
نیاز به تعمیر و نگهداری
-
سیستمهای Start/Stop
3. دستگاههای پزشکی:
-
آلارم بیمار
-
اتمام درمان
-
خطای دستگاه
-
هشدار باتری کم
4. سیستمهای خانگی:
-
تایمر آشپزخانه
-
هشدار دود
-
سیستم اعلام ورود
-
هشدار باز ماندن درب
5. پروژههای آموزشی:
-
آزمایشهای الکترونیک
-
پروژههای آردوینو
-
سیستمهای هشدار ساده
-
آموزش میکروکنترلر
⚠️ نکات مهم و محاسبات
محاسبه مقاومت سری (اگر نیاز باشد):
فرمول: R = (Vcc - Vbuzzer) / Ibuzzer
مثال برای منبع 12V و بازر 5V/30mA:
R = (12V - 5V) / 0.03A = 233Ω
استفاده از مقاومت 220Ω 1/4W
نکات اتصال:
-
همیشه قطبیت را رعایت کنید (+ به مثبت، – به منفی)
-
برای ولتاژهای بالاتر از 5V از مقاومت محدودکننده استفاده کنید
-
جریان کشی را بررسی کنید – آردوینو فقط 40mA از هر پین میدهد
-
برای جریانهای بالا از ترانزیستور یا رله استفاده کنید
محدودیتها:
عیبیابی:
🔧 پروژههای نمونه
پروژه 1: تایمر آشپزخانه هوشمند:
class KitchenTimer {
private:
ActiveBuzzer buzzer;
unsigned long endTime;
bool isRunning;
public:
KitchenTimer(int pin) : buzzer(pin) {
isRunning = false;
endTime = 0;
}
void setTimer(unsigned long seconds) {
endTime = millis() + (seconds * 1000);
isRunning = true;
Serial.print("تایمر برای ");
Serial.print(seconds);
Serial.println(" ثانیه تنظیم شد");
}
void update() {
if(isRunning && millis() >= endTime) {
isRunning = false;
triggerAlarm();
}
buzzer.update();
}
void triggerAlarm() {
Serial.println("زمان به پایان رسید!");
buzzer.beepPattern(10, 250, 250);
}
void cancel() {
isRunning = false;
buzzer.off();
Serial.println("تایمر لغو شد");
}
};
KitchenTimer timer(8);
void setup() {
Serial.begin(9600);
Serial.println("تایمر آشپزخانه راهاندازی شد");
timer.setTimer(10);
}
void loop() {
timer.update();
delay(10);
}
پروژه 2: سیستم هشدار دما:
class TemperatureAlarm {
private:
ActiveBuzzer buzzer;
float thresholdHigh;
float thresholdLow;
bool alarmActive;
public:
TemperatureAlarm(int pin, float high, float low) : buzzer(pin) {
thresholdHigh = high;
thresholdLow = low;
alarmActive = false;
}
void checkTemperature(float currentTemp) {
if(currentTemp > thresholdHigh) {
if(!alarmActive) {
triggerHighTempAlarm();
alarmActive = true;
}
} else if(currentTemp < thresholdLow) {
if(!alarmActive) {
triggerLowTempAlarm();
alarmActive = true;
}
} else {
if(alarmActive) {
buzzer.off();
alarmActive = false;
Serial.println("دما نرمال - آلارم خاموش");
}
}
buzzer.update();
}
void triggerHighTempAlarm() {
Serial.println("هشدار: دمای بالا!");
buzzer.beepPattern(5, 100, 100);
}
void triggerLowTempAlarm() {
Serial.println("هشدار: دمای پایین!");
buzzer.beepPattern(3, 500, 500);
}
};
TemperatureAlarm tempAlarm(8, 35.0, 10.0);
void loop() {
float temperature = readTemperature();
tempAlarm.checkTemperature(temperature);
delay(1000);
}
پروژه 3: سیستم پایش باتری:
class BatteryMonitor {
private:
ActiveBuzzer buzzer;
float voltage;
float lowVoltageThreshold;
float criticalVoltageThreshold;
public:
BatteryMonitor(int pin, float low, float critical) : buzzer(pin) {
lowVoltageThreshold = low;
criticalVoltageThreshold = critical;
voltage = 0;
}
void updateVoltage(float newVoltage) {
voltage = newVoltage;
if(voltage < criticalVoltageThreshold) {
triggerCriticalAlarm();
} else if(voltage < lowVoltageThreshold) {
triggerLowBatteryAlarm();
} else {
buzzer.off();
}
buzzer.update();
}
void triggerLowBatteryAlarm() {
static unsigned long lastBeep = 0;
if(millis() - lastBeep > 30000) {
lastBeep = millis();
buzzer.beep(500);
Serial.print("هشدار: باتری ضعیف - ");
Serial.print(voltage);
Serial.println("V");
}
}
void triggerCriticalAlarm() {
buzzer.on();
Serial.print("هشدار بحرانی: باتری خیلی ضعیف - ");
Serial.print(voltage);
Serial.println("V");
}
};
BatteryMonitor battery(8, 3.3, 3.0);
void loop() {
float batteryVoltage = readBatteryVoltage();
battery.updateVoltage(batteryVoltage);
delay(1000);
}
⭐ مزایای رقابتی
نسبت به بازر غیرفعال:
نسبت به اسپیکر:
-
مصرف برق کمتر
-
کنترل سادهتر
-
ابعاد کوچکتر
-
قیمت پایینتر
ویژگیهای منحصر به فرد:
💡 نکات حرفهای
برای افزایش عمر:
-
از ولتاژ نامی استفاده کنید (معمولاً 5V)
-
از کار مداوم طولانی خودداری کنید
-
در محیطهای خنک استفاده کنید
-
از اتصال کوتاه جلوگیری کنید
برای صدای بهتر:
void playMelody() {
int melody[] = {1, 1, 0, 1, 0, 0, 1, 0};
int durations[] = {200, 200, 100, 200, 100, 100, 200, 500};
for(int i=0; i<8; i++) {
if(melody[i] == 1) {
digitalWrite(BUZZER_PIN, HIGH);
}
delay(durations[i]);
digitalWrite(BUZZER_PIN, LOW);
delay(50);
}
}
برای کاربردهای صنعتی:
-
از بازرهای ضدآب استفاده کنید
-
محافظ نویز روی خط تغذیه قرار دهید
-
از کابل شیلددار استفاده کنید
-
فیوز محافظ در مدار قرار دهید
🔊 مناسب برای:
-
توسعهدهندگان سیستمهای هشدار
-
مهندسین کنترل و ابزار دقیق
-
دانشجویان الکترونیک
-
تولیدکنندگان دستگاههای صنعتی
-
علاقهمندان به پروژههای آردوینو
⚠️ هشدار: بازر فعال فقط میتواند یک صدا (فرکانس) تولید کند. برای تولید ملودیهای مختلف از بازر غیرفعال استفاده کنید.
-
مشاوره انتخاب بین بازر فعال و غیرفعال
-
آموزش اتصال به میکروکنترلرهای مختلف
-
طراحی مدار درایور برای جریانهای بالا
-
پشتیبانی پروژه شما
نقد و بررسیها
پاکسازی فیلترهنوز بررسیای ثبت نشده است.