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

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

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

  • في هذا المشروع سنقوم بتصميم نموذج نظام إلكتروني ذكي للتذكير بإطعام الأسماك باستخدام لوحة 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 fedToday = false; // هل تم التنبيه اليوم؟

// =====================
// لحن تذكير إطعام الأسماك
// =====================
void feedReminder() {
Serial.println(“🐟 تذكير: حان وقت إطعام الأسماك”);

digitalWrite(LED_PIN, HIGH);

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

int durations[] = {
400, 400, 600,
400, 600,
400, 600,
800
};

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

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

Serial.println(“✅ تم إرسال تنبيه إطعام الأسماك”);
}

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 YYYY MM DD HH MM SS”);
}
}
}
}

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(“⏰ التنبيه يوميًا عند 12:00”);
}

void loop() {
checkSerialSetTime();

DateTime now = rtc.now();

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

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

// ⏰ التذكير عند 12:00 فقط
if (hour == 12 && minute == 0 && !fedToday) {
feedReminder();
fedToday = true;
}

// 🔄 إعادة التفعيل لليوم الجديد
if (hour == 0 && minute == 1) {
fedToday = false;
Serial.println(“🔄 إعادة ضبط التذكير لليوم الجديد”);
}

delay(1000);
}

اترك تعليقاً

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

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

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

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