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> | ||
| + | |||