Loyiha · Kiyiladigan · MPU6050
Bukchayganingizda signal beradigan kiyiladigan gadjet
Hamma bukchayadi; buni oʻzida hech kim sezmaydi. Yelka ortidagi $2 lik MPU6050 siz uchun sezadi: gravitatsiyaga nisbatan oldinga egilish burchagini oʻlchaydi, besh soniya muhlat beradi, keyin toʻgʻrilanguningizcha gʻoʻngʻillaydi — va bugun necha daqiqa bukchayib oʻtirganingizni halol sanaydi.
Burchak — transportir vazifasini gravitatsiya bajaradi
Qomat uchun gyro-fusion kerak emas: oldinga egilganda gravitatsiyaning akselerometr oʻqlaridagi
proyeksiyasi siljiydi, bitta atan2 buni vertikaldan gradusga aylantiradi. Qizigʻi —
murabbiy mantigʻida: chegara, grace-taymer (kofega intilish signalga sabab emas), eslatma
va bukchayish hisoblagichi:
// 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
} Dashboard — statistika odatni mustahkamlaydi
Zummer lahzani tuzatadi; statistika odatni oʻzgartiradi. Jonli burchak shkalasi, Good/Slouching
beyji, kunlik bukchayish daqiqalari, ogohlantirishlar soni va trend grafigi — ustiga
number vidjeti sifatida chegara: progress sari qoidani qattiqlashtirasiz:
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"); Kutubxonadagi namuna (examples/04_Templates/PostureMonitor) RisalFakeIMU’da ishlaydi — uning pitch’i yaxshi va yomon zonalar orasida yuradi, shuning uchun grace-taymer, signal va hisoblagich biror narsa taqishdan oldin koʻrinadi. Umumiy IMU maydonchasi (3D kub, kompas, qadamlar) — tayyor MotionIMU shabloni.
Kiyiladigan qilish
| Qism | Izoh |
|---|---|
| ESP32 (yoki C3 mini) | C3 kichikroq va tejamkorroq |
| MPU6050 | I²C, yelka ortiga / yoqaga tekis |
| Aktiv zummer yoki vibromotor | ofisda vibratsiya odobliroq |
| 18650 yoki kichik Li-Po + TP4056 | batareya qoʻllanmasi |
Startda bir marta kalibrlang: toʻgʻri oʻtirgan holda bir soniyalik oʻqishlarni oʻrtachalab, shu siljishni ayiring — shunda «vertikal» sensorning oʻrnatish burchagi emas, sizning vertikalingiz boʻladi.
Biror narsa tikishdan oldin murabbiy ishlashini fake IMU’da koʻring.