This shows you the differences between two versions of the page.
pm:prj2025:ajipa:bogdan.trifan2412 [2025/05/02 09:02] bogdan.trifan2412 created |
pm:prj2025:ajipa:bogdan.trifan2412 [2025/05/05 14:30] (current) bogdan.trifan2412 |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | Proiect PM | + | ====== Gym Assistant ====== |
+ | |||
+ | ===== Introducere ===== | ||
+ | |||
+ | În acest proiect îmi propun să dezvolt un sistem de "supervizare" | ||
+ | pentru [[https://musclewiki.com/machine/male/triceps/machine-chest-press/|Machine Chest Press]]. | ||
+ | |||
+ | Dispozitivul meu va avea următoarele funcționalități: | ||
+ | - Numără repetările/pauzele făcute la acest aparat, alături de durata lor | ||
+ | - Redă muzică în timpul antrenamentului | ||
+ | - Motivează utilizatorii în momente de inactivitate, prin redarea unor mesaje audio inspiraționale (ex. **David Goggins**) | ||
+ | - Stimulează utilizatorii să facă măcar 3 seturi de 8 repetări, cu pauze maxim 45 de secunde | ||
+ | - Simulează accesul la o sală de fitness pe bază de cartelă | ||
+ | |||
+ | Am găsit inspirație pentru acest proiect la sală. | ||
+ | Aici, cel mai important e să te concentrezi pe exercițiul efectiv, nu să stai să-ți numeri repetările. | ||
+ | |||
+ | Deși pare un task simplu, să ai pe cineva (sau **ceva**) care să facă asta pentru tine este o mare diferență. | ||
+ | |||
+ | Mai ales dacă îți împinge limitele la maxim prin mesaje motivaționale precum | ||
+ | ''mai poți încă 3'', ''hai încă una'', sau clasicul ''Who's gonna carry the boats?''. | ||
+ | Aduce energia care te face să nu renunți. | ||
+ | |||
+ | Consider că dispozitivul meu este ideal pentru persoanele care vin singure | ||
+ | la sală și nu au pe nimeni care să facă asta pentru ei. | ||
+ | |||
+ | <note tip> | ||
+ | Având în vedere poziționarea senzorilor, | ||
+ | proiectul meu poate monitoriza DOAR exercițiul de [[https://musclewiki.com/machine/male/triceps/machine-chest-press/|Machine Chest Press]], | ||
+ | un exercițiu simplu în care doar trebuie să împingi o bară în față. | ||
+ | </note> | ||
+ | |||
+ | |||
+ | ===== Descriere generală ===== | ||
+ | |||
+ | |||
+ | ==== Schema bloc ==== | ||
+ | |||
+ | {{:pm:prj2025:ajipa:gym_assistant_PM-Project-schema-bloc.jpg?600}} | ||
+ | |||
+ | |||
+ | Diagrama a fost realizată în [[https://app.diagrams.net/|draw.io]]. | ||
+ | |||
+ | ==== Audio Files ==== | ||
+ | |||
+ | Pentru a descărca melodii de pe YouTube drept fișiere **MP3**, am folosit: | ||
+ | * https://y2mate.nu/en-CVeZ/ | ||
+ | |||
+ | <note tip> | ||
+ | Pentru a transforma **MP3**-urile în fișiere **WAV**, am folosit: | ||
+ | * https://audio.online-convert.com/convert-to-wav | ||
+ | </note> | ||
+ | |||
+ | Opțiunile folosite la convertirea **MP3 -> WAV**: | ||
+ | * Bit resolution: **8 bit** | ||
+ | * Audio frequency: **16 kHz** | ||
+ | * Audio channels: **Mono** | ||
+ | |||
+ | Înainte de a pune fișierele audio pe microSD, | ||
+ | am formatat cardul în modul **FAT32** | ||
+ | și am denumit fișierele corespunzător. | ||
+ | |||
+ | <note warning> | ||
+ | **⚠️ Atenție!** Sistemele de fișiere **FAT** folosesc convenția [[https://en.wikipedia.org/wiki/8.3_filename|8.3 filename]], | ||
+ | ceea ce înseamnă că denumirea fișierelor: | ||
+ | * nu poate avea mai mult de **8** caractere înainte de punct | ||
+ | * maxim **3** caractere pentru extensie | ||
+ | </note> | ||
+ | |||
+ | ==== Conectarea butoanelor ==== | ||
+ | |||
+ | * [[https://wiki-content.arduino.cc/documents/datasheets/Button.pdf|Data Sheet Push-Buttons]] | ||
+ | * [[https://components101.com/switches/push-button|Push-button info]] | ||
+ | |||
+ | {{https://components101.com/sites/default/files/component_pin/Push-button-Pinout.gif?250x}} | ||
+ | |||
+ | <note tip> | ||
+ | Picioarele care formează o linie sunt **direct conectate**. | ||
+ | </note> | ||
+ | |||
+ | Înainte de a face cablajul între butoanele de pe cutie și breadboard, | ||
+ | am făcut următoarele *"simulări"* în TinkerCAD. | ||
+ | Așa trebuie să arate conexiunea cu un push-button: | ||
+ | |||
+ | {{:Images:vertical-button.png?250x}} | ||
+ | {{:Images:horizontal-button.png?250x}} | ||
+ | |||
+ | Exemplu cod (basic) pentru a detecta apăsarea butonului: | ||
+ | |||
+ | <code cpp> | ||
+ | #define PIN_BUTTON 3 | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | pinMode(PIN_BUTTON, INPUT); | ||
+ | Serial.begin(9600); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | if (digitalRead(PIN_BUTTON) == LOW) { | ||
+ | Serial.println("butonul a fost apasat!"); | ||
+ | } | ||
+ | delay(100); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ===== Hardware Design ===== | ||
+ | |||
+ | ==== Lista piese ==== | ||
+ | |||
+ | * Arduino UNO | ||
+ | * 4 x [[https://ardushop.ro/ro/butoane--switch-uri/713-buton-mic-push-button-trough-hole-6427854009050.html|push-buttons]] | ||
+ | * Ecran LCD 16x2 cu modul I2C | ||
+ | * Rezistențe 220Ω | ||
+ | * [[https://ardushop.ro/ro/module/1553-groundstudio-microsd-module-6427854023056.html|MicroSD Module]] | ||
+ | * [[https://www.optimusdigital.ro/ro/memorii/8678-card-microsd-original-de-16-gb-cu-noobs-compatibil-cu-raspberry-pi-4-model-b-varianta-bulk.html|Card MicroSD 16 GB]] | ||
+ | * Nu am găsit un card mai mic 🙁 | ||
+ | * [[https://www.emag.ro/modul-difuzor-waveshare-36-52x43-44-mm-compatibil-cu-micro-bit-arduino-speakerformicro-bitwaveshare14542/pd/D785XQMBM|Speaker for Micro:bit]] | ||
+ | * Cred că erau și alte opțiuni mult mai ieftine 🙂 | ||
+ | * [[https://www.optimusdigital.ro/ro/electronica-de-putere-stabilizatoare-liniare/168-modul-cu-sursa-de-alimentare-de-33-v.html|Stabilizator de 3.3 V]] (pentru Vin al Speaker-ului) | ||
+ | * 2 x [[https://www.optimusdigital.ro/ro/senzori-senzori-ultrasonici/9-senzor-ultrasonic-hc-sr04-.html|Senzor ultrasonic HC-SR04]] | ||
+ | * [[https://www.optimusdigital.ro/ro/prototipare-breadboard-uri/8-breadboard-830-points.html|Breadboard 830 puncte]] | ||
+ | * [[https://www.optimusdigital.ro/ro/fire-fire-mufate/878-set-fire-mama-tata-40p-30-cm.html|Fire Colorate Mamă-Tată]] | ||
+ | * [[https://www.optimusdigital.ro/ro/fire-fire-mufate/890-set-fire-tata-tata-40p-30-cm.html|Fire Colorate Tată-Tată]] | ||
+ | * [[https://www.optimusdigital.ro/ro/wireless-rfid/67-modul-cititor-rfid-mfrc522.html|Modul RFID RC522]] | ||
+ | |||
+ | ==== Schema circuit ==== | ||
+ | |||
+ | {{:pm:prj2025:ajipa:gym_assistant_circuit_design.png?600}} | ||
+ | |||
+ | <note tip> | ||
+ | Schema a fost realizată în [[https://app.cirkitdesigner.com/|Cirkit Designer IDE]]. | ||
+ | </note> | ||
+ |