RisalDash RisalDash

مشروع · يُلبس · MPU6050

جهاز يُلبس ينبّهك حين تنحني

الجميع ينحني؛ ولا أحد يلاحظ نفسه وهو يفعل. MPU6050 بدولارين على أعلى الظهر يلاحظ عنك: يقيس زاوية الانحناء للأمام بمرجع الجاذبيّة، ويمنحك خمس ثوانٍ سماحًا، ثمّ يطنّ حتّى تعتدل — ويحتفظ بإحصاء صادق لدقائق انحنائك اليوم.

مشروعأجهزة تُلبسMPU6050ESP32
مشروع مراقب وضعيّة بـ ESP32: جهاز MPU6050 يُلبس بزاوية الميل وجرس وإحصاءات

الزاوية — الجاذبيّة هي المنقلة

لا يحتاج قياس الوضعيّة دمج جيروسكوب: حين تنحني للأمام يتغيّر إسقاط الجاذبيّة على محاور التسارع، وatan2 واحدة تحوّله إلى درجات من الاعتدال. الجزء المثير هو منطق التدريب: عتبة، مؤقّت سماح (مدّ اليد للقهوة لا يستحقّ طنينًا)، تنبيه، وساعة انحناء:

// Forward lean from the accelerometer alone — gravity is the reference:
lean = atan2f(ax, sqrtf(ay * ay + az * az)) * 57.3f;   // degrees from upright

// The coaching loop: threshold + grace timer + nag + stats
bool over = lean > limit;
if (over && !overSince) overSince = millis();
if (!over) { overSince = 0; buzz = false; }

if (over && millis() - overSince > 5000) {   // 5 s grace — reaching for coffee is fine
  if (!buzz) { warns += 1; evlog->print("Slouching - sit up!"); }
  buzz = true;                               // real: tone(BUZZER_PIN, 2000, 100);
  badMin += tickMinutes;                     // today's slouch clock
}

اللوحة — الإحصاء يثبّت العادة

الجرس يصحّح اللحظة؛ الإحصاء يغيّر العادة. مقياس زاوية حيّ، شارة Good/Slouching، دقائق الانحناء اليوم، عدد التحذيرات ورسم اتجاه — مع العتبة كأداة number تشدّدها كلّما تحسّنت:

dash.layout("Posture", RICON_MOTION);
dash.gauge("Forward lean", &lean, 0, 60, "deg");
dash.badge("Verdict", &state).labels("Good", "Slouching", "-");
dash.stat("Slouch today", &badMin, "min");
dash.stat("Warnings", &warns, "");
dash.chart("Lean trend", &lean, "deg");

dash.layout("Settings", RICON_GAUGE);
dash.number("Threshold", &limit, 5, 40, 1);  // tune the slouch angle live
dash.beginAP("RisalDash-Posture", "12345678");

المثال المرفق (examples/04_Templates/PostureMonitor) يعمل على RisalFakeIMU — ميلانه يتجوّل بين المنطقتين الجيّدة والسيّئة، فترى مؤقّت السماح والتنبيه والساعة تعمل قبل ارتداء أيّ شيء. ساحة IMU العامّة (مكعّب 3D، بوصلة، خطوات) هي قالب MotionIMU الجاهز.

جعله قابلًا للُّبس

القطعةملاحظة
ESP32 (أو C3 mini)C3 أصغر وأقلّ استهلاكًا
MPU6050I²C، مسطّحًا على أعلى الظهر / الياقة
جرس نشط أو محرّك اهتزازالاهتزاز ألطف في المكتب
18650 أو Li-Po صغيرة + TP4056راجع دليل البطاريّات

عايِر مرّة عند الإقلاع: خُذ متوسّط ثانية من القراءات جالسًا معتدلًا واطرح الإزاحة — فيصير «الاعتدال» اعتدالك أنت لا زاوية تثبيت الحسّاس.

شاهد حلقة التدريب تعمل على IMU وهميّ قبل أن تخيط شيئًا.