نظام تقرير الغياب المدرسي باستخدام ويموس واي فاي اكتب تعليقُا

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

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

  • في هذا المشروع، سنقوم بتصميم نموذج نظام ذكي لتقرير الغياب المدرسي باستخدام لوحة Wemos D1 المعتمدة على الاتصال بالإنترنت، مع إمكانية إرسال الإشعارات والتقارير عبر تطبيق Telegram.
  • يعتمد النظام على موديول RFID المثبت عند بوابة المدرسة، حيث يقوم بالكشف عن دخول الطلاب بشكل آلي.
  • عند عدم مرور الطالب في الوقت المحدد، يقوم النظام بتسجيل غيابه تلقائيًا، ويقوم بإرسال تقرير فوري عبر تطبيق Telegram إلى إدارة المدرسة، مع تحديد اسماء الطلاب الغائبين.
  • يسمح هذا النظام بمراقبة الحضور والغياب بدقة وبدون الحاجة للتسجيل اليدوي، ويوفر الوقت والجهد.
  • يساهم هذا المشروع في تحسين الإدارة المدرسية باستخدام تقنيات إنترنت الأشياء (IoT)، ويوفر حلاً عمليًا وفعالًا لمتابعة حضور الطلاب.
  • وفي الختام، نسأل الله عز وجل أن يكون هذا العمل مفيدًا ونافعًا، وأن يساهم في تحسين جودة التعليم والمتابعة الإدارية باستخدام التقنيات الحديثة.

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

  • اردوينو ويموس: عدد 1
  • أسلاك توصيل ذكر لذكر 40 قطعة 20 سم Male to Male jumper wires
  • أسلاك توصيل من ذكر إلى أنثى 40 دبوس 20 سم wires 40pcs Male to Female
  • لوحة تجارب: عدد 1
  • طنان: عدد 1
  • كيت قارئ وبطاقة RFID: عدد 1

مخطط المشروع

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

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

المرحلة 1: إنشاء بوت Telegram

  • افتح تطبيق Telegram
  • في البحث اكتب: BotFather
  • ستجده بحساب موثق ✔️
  • اضغط Open
  • اضغط Create a New Bot
  • سيطلب منك كتابة:
  • ✔️ اسم البوت (Bot Name)
  • مثال: Smart Alert System
  • ✔️ اسم المستخدم في الخانة الثالثة (username_bot)
  • ⚠️ مهم: يجب أن ينتهي بـ bot وبدون مسافات
  • مثال: smart_1950_bot (يجب الا يكون مستعمل مسبقا)
  • بعدها اضغط Create Bot
  • بعدها سيعطيك التوكن (TOKEN)، ستظهر لك رسالة مثل:123456789:AAAbbbCCCxxxYYYzzz
  • 📌 هذا التوكن مهم جدا
  • 👉 اضغط Copy احتفظ به جيدًا

المرحلة 2: إنشاء مجموعة Telegram بالتفصيل

  • لإنشاء المجموعة، اضغط:
    • ☰ (القائمة)
    • New Group
  • اختر أي شخص (يمكن حذفه لاحقًا)
  • اكتب اسم المجموعة:
  • مثال: Home Alerts
  • اضغط على OK
  • لاضافة البوت للمجموعة، اولا عد الى الصفحة الرئيسية للتلغرام
  • اكتب اسم المستخدم username_bot في خانة البحث
  • اضغط على Start
  • اضغط على اسمها من الأعلى
  •  اختر: Add to Group or Channel
  • ابحث عن اسم المجموعة وأضفه اليها
  • ✔️ فعّل خاصية Manage Group وكل الخاصيات التي تحتها
  • اضغط Add bot as Admin

 المرحلة 3: الحصول على CHAT ID (أهم خطوة)

  • في المجموعة اكتب رسالة: hello ثم ارسلها
  • افتح المتصفح واكتب:
  • https://api.telegram.org/botTOKEN/getUpdates
  • 📌 استبدل:
  • كلمة TOKEN ← بالتوكن الخاص بك الذي نسخته مسبقا واحتفظت به
  • ستظهر لك بيانات JSON مثل:

{"ok": true,"result": [{"message": {"chat": {"id": -1001234567890,"title": "Home Alerts"}}}]}

  • 📌 انسخ رقم id الفريد الذي سيظهر لك: مثلا هنا 1001234567890-
  • 👉 هذا هو: CHAT_ID

المرحلة 4: إعداد Arduino IDE + Wemos

  • افتح Arduino IDE
  • File → Preferences
  • أضف هذا الرابط: http://arduino.esp8266.com/stable/package_esp8266com_index.json
  • لتثبيت البورد، اختر: Tools → Board → Boards Manager
  • ابحث: ESP8266
  • اضغط Install
  • لاختيار البورد، اختر:Tools → Board → LOLIN (Wemos) D1 R1

المرحلة 5: ما يجب اضافته في الكود

  • اسم شبكة الواي فاي (SSID): اسم الشبكة التي سيتصل بها الـ Wemos: مثلا:

  • const char* ssid = “Redmi A1”;
  • كلمة مرور الواي فاي (PASS): مثلا:
  • const char* pass = “19041904”;
  • توكن البوت (Bot Token): هو المفتاح الذي يسمح للأردوينو بالتواصل مع البوت بدونه لا يمكن إرسال رسائل
  • ⚠️ مهم: يجب أن يبقى سري، مثلا:
  • const char* BOT_TOKEN = “8767103482:AAH6Zn4FRJ-NQ9RwCrnt3OTDLqPZK-L7Fbg”;
  • معرّف المحادثة (Chat ID): يحدد إلى أين تُرسل الرسائل، مثلا:

  • const char* CHAT_ID = “-1003617183721”;
  • قبل رفع الكود الى اللوحة، يجب عدم تركيب الاسلاك مع لوحة الويموس حتى اكتمال عملية الرفع.
  • كما يجب تنزيل المكتبات التالية:
  • مكتبة ESP8266WiFi.h.
  • مكتبة WiFiClientSecure.h.
  • مكتبة UniversalTelegramBot.h.
  • مكتبة ArduinoJson.h.
  • مكتبة SPI.h.
  • مكتبة MFRC522.h.
  • للإطلاع على كيفية تحميل وتنصيب المكتبات قم بزيارة الرابط التالي.
  • في حال لم يعمل هذا الكود البرمجي، قم بتحميل ملف الكود بالضغط على زر التحميل الموجود في الأسفل.

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
#include <SPI.h>
#include <MFRC522.h>

// — 1. بيانات الاتصال —
const char* ssid = “Redmi A1”;
const char* pass = “19041904”;
const char* BOT_TOKEN = “8767103482:AAH6Zn4FRJ-NQ9RwCrnt3OTDLqPZK-L7Fbg”;
const char* CHAT_ID = “-1003617183721”;

// — 2. تعريف الدبابيس —
#define RST_PIN D3
#define SS_PIN D4
#define BUZZER D2

MFRC522 mfrc522(SS_PIN, RST_PIN);
WiFiClientSecure client;
UniversalTelegramBot bot(BOT_TOKEN, client);

// — 3. قاعدة بيانات الطلاب وحالتهم —
struct Student {
String uid;
String name;
bool isPresent;
};

// أضف طلابك هنا
Student students[] = {
{“4090B789”, “أحمد محمد”, false},
{“FA60CB7D”, “محمود يوسف”, false},
};

const int totalStudents = sizeof(students) / sizeof(students[0]);

// — 4. توقيت الحضور —
unsigned long startTime;
const unsigned long attendanceWindow = 5000; // مدة تسجيل الحضور (مثلاً 5 ثواني)
bool reportingDone = false;

void setup() {
Serial.begin(115200);
SPI.begin();
mfrc522.PCD_Init();

pinMode(BUZZER, OUTPUT);
digitalWrite(BUZZER, LOW);

WiFi.begin(ssid, pass);
client.setInsecure(); // تسريع الاتصال بتخطي التحقق من الشهادات الثقيلة

Serial.print(“Connecting to WiFi”);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“\nConnected!”);

// إرسال الرسالة الأصلية كما هي
bot.sendMessage(CHAT_ID, “⚠️ بدأت فترة تسجيل حضور الطلاب الآن…”, “”);
startTime = millis();
}

void loop() {
unsigned long currentTime = millis();

// أولاً: التحقق من انتهاء الوقت وإرسال التقرير
if (currentTime – startTime > attendanceWindow && !reportingDone) {
sendAbsenceReport();
reportingDone = true;
}

// ثانياً: قراءة البطاقات (بسرعة عالية)
if (!reportingDone) {
// إذا لم توجد بطاقة، يخرج المعالج فوراً ليكمل الـ loop دون تأخير
if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) {
return;
}

String tagID = “”;
for (byte i = 0; i < mfrc522.uid.size; i++) {
tagID += String(mfrc522.uid.uidByte[i] < 0x10 ? “0” : “”);
tagID += String(mfrc522.uid.uidByte[i], HEX);
}
tagID.toUpperCase();

processAttendance(tagID);

// إنهاء القراءة للاستعداد للبطاقة التالية
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}
}

// دالة تسجيل الحضور (تم تحسين سرعة البحث)
void processAttendance(String id) {
bool found = false;
for (int i = 0; i < totalStudents; i++) {
if (students[i].uid == id) {
if (!students[i].isPresent) {
students[i].isPresent = true;
Serial.println(“Attendance marked for: ” + students[i].name);

// تنبيه صوتي سريع (100ms بدلاً من 150ms لزيادة الاستجابة)
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER, LOW);
}
found = true;
break; // التوقف عن البحث فور إيجاد الطالب لتوفير الوقت
}
}
if (!found) Serial.println(“Unknown Tag: ” + id);
}

// دالة التقرير النهائي بالنصوص الأصلية
void sendAbsenceReport() {
String absentList = “📝 **تقرير الغياب الصباحي**\n”;
absentList += “————————–\n”;
int absentCount = 0;

for (int i = 0; i < totalStudents; i++) {
if (!students[i].isPresent) {
absentList += “❌ ” + students[i].name + “\n”;
absentCount++;
}
}

if (absentCount == 0) {
absentList += “✅ جميع الطلاب حاضرون اليوم.”;
} else {
absentList += “————————–\n”;
absentList += “عدد الغائبين: ” + String(absentCount);
}

// إرسال الرسالة مع التأكد من التنسيق
if (bot.sendMessage(CHAT_ID, absentList, “Markdown”)) {
Serial.println(“Absence report sent!”);
} else {
Serial.println(“Failed to send report”);
}

// تنبيه طويل (ثانية واحدة)
digitalWrite(BUZZER, HIGH);
delay(1000);
digitalWrite(BUZZER, LOW);
}

اترك تعليقاً

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

×

✨ تحديثات جديدة… تجربة أفضل!

عملاءنا الكرام، يسعدنا مشاركتكم آخر التحديثات اللي أضفناها لتحسين تجربتكم معنا. اعتبارًا من 1 مارس 2026م.

🛠️ ميزات جديدة (لجميع الدول المدعومة)
• 🔧 خدمة التلحيم: اطلب تلحيم القطع باحتراف قبل الشحن لتصلك جاهزة للاستخدام.
• 🖨️ الطباعة ثلاثية الأبعاد (3D): حوّل أفكارك إلى واقع بدقة عالية.
• 🚀 تفعيل نظام الدروبشيبينج في الموقع الإلكتروني.

🇸🇦 تحديثات عملاء السعودية 🚚 توصيل أسرع خدمة التوصيل اليومي متاحة الآن في: الرياض – الدمام – الأحساء.
🏢 الاستلام من الفرع يمكنك الآن الاستلام المباشر من فرعنا في الأحساء.
🧾 تنويه ضريبي جميع الأسعار تشمل ضريبة القيمة المضافة، باستثناء المنتجات أو الخدمات التي تتم معالجتها خارج المملكة.

✨ استكشف الخدمات الجديدة