مشروع لتفادي حدوث إجهاد حراري باستخدام أردوينو اكتب تعليقُا

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

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

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

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

مخطط المشروع

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

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

#include <SoftwareSerial.h>

const int trigPin = 5;
const int echoPin = 6;
const int buzzerPin = 3;
const int ledPin = 4;

const int detectionThreshold = 50; // المسافة القصوى (سم)
const unsigned long inactivityLimit = 10 * 1000UL; //
const unsigned long messageInterval = 1000;

long duration;
int distance;

unsigned long lastDetectionTime = 0;
unsigned long lastMessageTime = 0;
bool alertActive = false;

unsigned long lastLedToggle = 0;
bool ledState = false;

unsigned long lastBuzzerToggle = 0;
bool buzzerState = false;

SoftwareSerial bluetooth(10, 11); // RX, TX

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);

bluetooth.begin(9600);
Serial.begin(9600);

bluetooth.println(“💧 System ready – Stay hydrated”);
Serial.println(“System initialized”);

lastDetectionTime = millis();
lastMessageTime = millis();
}

void loop() {
// قياس المسافة
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;

unsigned long currentTime = millis();

// عند الاقتراب من الحساس
if (distance < detectionThreshold) {
lastDetectionTime = currentTime;
alertActive = false;

digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin, LOW);
buzzerState = false;
ledState = false;

Serial.println(“Object detected: Resetting alert”);
Serial.println(“LED OFF”);
Serial.println(“Buzzer OFF”);
}

unsigned long timeInactive = currentTime – lastDetectionTime;

// بعد 10 دقائق بدون اقتراب
if (timeInactive >= inactivityLimit) {
if (!alertActive) {
bluetooth.println(“⚠️ Reminder: Please visit the faucet.”);
bluetooth.println(“🛑 Risk of heat stress. Stay hydrated.”);
Serial.println(“Sending hydration reminder…”);
alertActive = true;
}

// وميض الليد كل 0.5 ثانية
if (currentTime – lastLedToggle >= 500) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
Serial.print(“LED “);
Serial.println(ledState ? “ON” : “OFF”);
lastLedToggle = currentTime;
}

// وميض البازر كل ثانية
if (currentTime – lastBuzzerToggle >= 1000) {
buzzerState = !buzzerState;
digitalWrite(buzzerPin, buzzerState);
Serial.print(“Buzzer “);
Serial.println(buzzerState ? “ON” : “OFF”);
lastBuzzerToggle = currentTime;
}

} else {
// إرسال الوقت المتبقي كل دقيقة
if (currentTime – lastMessageTime >= messageInterval) {
unsigned long remaining = (inactivityLimit – timeInactive) / 1000;
int mins = remaining / 60;
int secs = remaining % 60;

bluetooth.print(“⏳ “);
bluetooth.print(mins);
bluetooth.print(“m “);
bluetooth.print(secs);
bluetooth.println(“s left before reminder”);

Serial.print(“Remaining time: “);
Serial.print(mins);
Serial.print(“m “);
Serial.print(secs);
Serial.println(“s”);

lastMessageTime = currentTime;
}

// تأكد من إطفاء التنبيهات
if (ledState || buzzerState) {
digitalWrite(ledPin, LOW);
digitalWrite(buzzerPin, LOW);
ledState = false;
buzzerState = false;
Serial.println(“Deactivating LED and Buzzer”);
}
}

delay(100);
}

اترك تعليقاً

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

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

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

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