مشروع جرس المدرسة الذكي باستخدام اردوينو اكتب تعليقُا

تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

شرح فكرة المشروع

  • في هذا المشروع سنقوم بتصميم نظام إلكتروني لجرس مدرسة ذكي باستخدام لوحة Arduino Uno.

  • يعتمد النظام على وحدة التوقيت الحقيقي DS3231 التي يتم استخدامها لتحديد الوقت والتاريخ بدقة عالية، حيث يتم ربطها مع لوحة Arduino للتحكم في تشغيل الطنّان (Buzzer) و الصمام الضوئي الأحمر (LED).

  • عند وصول الوقت إلى الساعات المبرمجة مسبقًا، يقوم النظام بتفعيل تنبيه صوتي عبر الطنّان مع تنبيه ضوئي بواسطة LED الأحمر، ليعمل الجرس تلقائيًا دون الحاجة إلى تدخل يدوي.

  • يرن الجرس في الأوقات التالية: الثامنة صباحًا، الثانية عشرة زوالًا، الواحدة مساءً، الرابعة مساءً.

  • كما يتم برمجة النظام بحيث لا يعمل في يومي الجمعة والسبت باعتبارهما يومي عطلة نهاية الأسبوع.

  • يساهم هذا النظام في تنظيم أوقات الدراسة بدقة، وتقليل الأخطاء الناتجة عن التشغيل اليدوي، كما يسهّل إدارة الجرس المدرسي.
  • وفي الختام نسأل الله عز وجل أن يكون هذا العمل مفيدًا ونافعًا، وأن يساهم في تطوير البيئة التعليمية وتبسيط الحياة اليومية باستخدام التقنيات الحديثة.

أدوات المشروع

مخطط المشروع

الكود البرمجي

تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.
  • للتعرف على تجهيز لوحة أردوينو للبرمجة قم بزيارة الرابط التالي.
  • للإطلاع على كيفية تحميل وتنصيب المكتبات قم بزيارة الرابط التالي.
  • تحميل مكتبة الوقت الحقيقي من هنا.
  • في حال لم يعمل هذا الكود البرمجي، قم بتحميل ملف الكود بالضغط على زر التحميل الموجود في الأسفل.

#include <Wire.h>
#include <RTClib.h>

// ===== تعريف النغمات =====
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_G5 784

RTC_DS3231 rtc;

#define BUZZER_PIN 3
#define LED_PIN 4

bool rangToday[4] = {false, false, false, false};

void ringBell() {
digitalWrite(LED_PIN, HIGH);

int melody[] = {
NOTE_C5, NOTE_E5, NOTE_D5, NOTE_C5,
NOTE_C5, NOTE_E5, NOTE_D5, NOTE_C5,
NOTE_E5, NOTE_G5, NOTE_E5, NOTE_D5,
NOTE_C5
};

int durations[] = {
300, 300, 300, 500,
300, 300, 300, 500,
300, 300, 300, 600,
800
};

for (int i = 0; i < 13; i++) {
tone(BUZZER_PIN, melody[i], durations[i]);
delay(durations[i] + 50);
}

noTone(BUZZER_PIN);
digitalWrite(LED_PIN, LOW);
}

// =====================
// ضبط الوقت يدويًا عبر Serial
// =====================
void checkSerialSetTime() {
if (Serial.available()) {
String cmd = Serial.readStringUntil(‘\n’);
cmd.trim();

if (cmd.startsWith(“SET”)) {
int y, m, d, h, min, s;
int r = sscanf(cmd.c_str(), “SET %d %d %d %d %d %d”,
&y, &m, &d, &h, &min, &s);

if (r == 6) {
rtc.adjust(DateTime(y, m, d, h, min, s));
Serial.println(“✅ تم ضبط الوقت بنجاح”);
} else {
Serial.println(“❌ صيغة خاطئة”);
Serial.println(“استعمل: SET 2026 1 13 10 30 00”);
}
}
}
}

void setup() {
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);

Serial.begin(9600);
Wire.begin();

if (!rtc.begin()) {
Serial.println(“❌ RTC غير موجود”);
while (1);
}

Serial.println(“🕒 أرسل أمر ضبط الوقت:”);
Serial.println(“SET YYYY MM DD HH MM SS”);
}

void loop() {
checkSerialSetTime(); // 👈 الضبط اليدوي

DateTime now = rtc.now();

int hour = now.hour();
int minute = now.minute();
int second = now.second();
int dayOfWeek = now.dayOfTheWeek();

Serial.print(“الوقت: “);
Serial.print(hour); Serial.print(“:”);
Serial.print(minute);Serial.print(“:”);
Serial.print(second);
Serial.print(” | اليوم: “);
Serial.println(dayOfWeek);

if (dayOfWeek == 0 || dayOfWeek == 6) {
delay(1000);
return;
}

if (minute == 0) {
if (hour == 8 && !rangToday[0]) { ringBell(); rangToday[0] = true; }
if (hour == 12 && !rangToday[1]) { ringBell(); rangToday[1] = true; }
if (hour == 13 && !rangToday[2]) { ringBell(); rangToday[2] = true; }
if (hour == 16 && !rangToday[3]) { ringBell(); rangToday[3] = true; }
}

if (hour == 0 && minute == 1) {
for (int i = 0; i < 4; i++) rangToday[i] = false;
}

delay(1000);
}

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

تحديثات مهمة للعملاء في السعودية بدءًا من 1 يناير 2026م

يرجى الاطلاع على تفاصيل التحديثات عبر الرابط التالي:

اضغط هنا
إغلاق هذا الإشعار يُعد تأكيدًا على أنك قرأت التحديثات وفهمتها.