Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:atoader:bianca.gorgovan [2026/05/09 21:59]
bianca.gorgovan [Listă de piese]
pm:prj2026:atoader:bianca.gorgovan [2026/05/09 22:22] (current)
bianca.gorgovan [Schemă bloc]
Line 12: Line 12:
   * estimează **viteza unghiulară maximă** a swing-ului prin integrarea giroscopului;​   * estimează **viteza unghiulară maximă** a swing-ului prin integrarea giroscopului;​
   * afișează un **contor de lovituri** și statistici live pe un display TFT 1.8";   * afișează un **contor de lovituri** și statistici live pe un display TFT 1.8";
-  * oferă **feedback vizual instant** printr-un LED RGB (verde = lovitură bună, roșu = slabă, galben = forehand, albastru = backhand); +  * oferă **feedback vizual instant** printr-un LED RGB (verde = lovitură bună, roșu = slabă); 
-  * permite reset / schimbare de mod printr-un buton fizic.+  * permite reset printr-un buton fizic.
  
 ==== Scop ==== ==== Scop ====
Line 35: Line 35:
  
 Sistemul este construit în jurul plăcii de dezvoltare **ATmega328P Xplained Mini**, care joacă rolul de coordonator central. Microcontrollerul citește continuu date inerțiale de la senzorul MPU6050 prin magistrala **I2C**, le procesează printr-o pipeline simplă de detecție și clasificare,​ după care actualizează simultan două canale de output: ecranul TFT (text și statistici) prin **SPI** și LED-ul RGB (feedback luminos) prin trei canale **PWM**. Un buton conectat ca GPIO permite reset-ul contorului. Sistemul este construit în jurul plăcii de dezvoltare **ATmega328P Xplained Mini**, care joacă rolul de coordonator central. Microcontrollerul citește continuu date inerțiale de la senzorul MPU6050 prin magistrala **I2C**, le procesează printr-o pipeline simplă de detecție și clasificare,​ după care actualizează simultan două canale de output: ecranul TFT (text și statistici) prin **SPI** și LED-ul RGB (feedback luminos) prin trei canale **PWM**. Un buton conectat ca GPIO permite reset-ul contorului.
 +
 ==== Schemă bloc ==== ==== Schemă bloc ====
 +{{ :​pm:​prj2026:​atoader:​schema_blocbgorgovan.png?​500 |}}
  
 +  * **MPU6050** ⇄ **ATmega328P** — //I2C, 100 kHz//: la fiecare ~10 ms, MCU-ul (master) citește 14 octeți (3× accel + temp + 3× gyro) de la slave-ul MPU6050 (adresa 0x68). Sunt folosite primitivele ''​twi_start''​ / ''​twi_write''​ / ''​twi_read_ack''​ / ''​twi_read_nack''​ / ''​twi_stop''​ din driverul de la Lab 6. 
 +  * **ATmega328P → modul detecție swing** //​(software)//:​ un filtru pe magnitudinea accelerației (||a|| − g) detectează startul și sfârșitul unei lovituri. 
 +  * **ATmega328P → modul clasificare** //​(software)//:​ pe baza semnului ω_z (giroscop, axa verticală a încheieturii) și a vârfului de accelerație,​ decide forehand/​backhand și slab/​mediu/​puternic. 
 +  * **ATmega328P → ST7735 TFT 1.8"** — //SPI, master → slave//: după fiecare lovitură detectată, MCU-ul redesenează zona de text și afișează:​ 
 +    * ''​HITS:​ 24''​ 
 +    * ''​SHOT:​ FOREHAND''​ 
 +    * ''​POWER:​ HIGH''​ 
 +    * ''​SWING:​ 320 deg/​s''​ 
 +  * **ATmega328P → LED RGB (R+G)** — //PWM//: 2 canale PWM independente,​ generate de Timer 0 (OC0B = verde) și Timer 2 (OC2B = roșu), modulează intensitatea celor două culori. LED-ul are anod comun → driver-ul software inversează duty-cycle-ul (0 = stins, 255 = maxim). 
 +  * **Buton → ATmega328P** — //GPIO + INT0//: tratat în întrerupere externă pe PD2, cu debouncing software. La apăsare = reset contor lovituri. 
 + 
 ==== Module software ==== ==== Module software ====
 + 
 | Modul | Sursă | Descriere | | Modul | Sursă | Descriere |
 | ''​twi.c/​.h''​ | Lab 6 (preluat, F_CPU adaptat la 16 MHz) | driver I2C low-level | | ''​twi.c/​.h''​ | Lab 6 (preluat, F_CPU adaptat la 16 MHz) | driver I2C low-level |
Line 45: Line 57:
 | ''​spi.c/​.h''​ | Lab 5 (preluat) | driver SPI low-level | | ''​spi.c/​.h''​ | Lab 5 (preluat) | driver SPI low-level |
 | ''​st7735.c/​.h''​ | Lab 5 (preluat, adaptat pentru pini noi) | driver TFT 1.8" | | ''​st7735.c/​.h''​ | Lab 5 (preluat, adaptat pentru pini noi) | driver TFT 1.8" |
-| ''​timers.c/​.h''​ | Lab 3 (preluat, extins) | configurare PWM canale pe Timer 0 + Timer 2 | +| ''​timers.c/​.h''​ | Lab 3 (preluat, extins) | configurare PWM canale pe Timer 0 + Timer 2 | 
-| ''​rgb.c/​.h''​ | **scris** | wrapper PWM pentru LED RGB cu efecte (solid / blink / fade) | +| ''​rgb.c/​.h''​ | **scris** | wrapper PWM pentru LED RGB (R+G) cu efecte (solid / blink / fade) | 
-| ''​swing_detect.c/​.h''​ | **scris** | detecție swing (histeresis pe magnitudine accel) ​și clasificare ​+| ''​swing_detect.c/​.h''​ | **scris** | detecție swing și clasificare |
-| ''​usart.c/​.h''​ | Lab 1 (preluat) | UART debug + Teleplot ​|+
 | ''​main.c''​ | **scris** | bucla principală,​ integrare module, FSM | | ''​main.c''​ | **scris** | bucla principală,​ integrare module, FSM |
 +
 +
 +
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 69: Line 83:
  
  
-==== Note de proiectare hardware ==== 
  
-  * **LED anod comun**: anodul comun la +5V, fiecare catod (R/G/B) prin 220 Ω către pinul PWM al MCU. Duty 0% = lumină maximă, duty 100% = stins → driver-ul software inversează valorile primite. 
-  * **Pull-up I2C**: modulul GY-521 include rezistențe pull-up de 4.7 kΩ pe SDA/SCL — nu mai sunt necesare externe. 
-  * **Logic level**: Xplained Mini funcționează la 5 V; GY-521 are LDO și level shifter on-board → compatibil. ST7735 acceptă logic 3.3-5 V (modulul red breakout are regulator). 
-  * **PB2/D10 ca GPIO**: deși este pinul SS hardware al SPI-ului, îl folosim ca CS al TFT prin GPIO normal. **Trebuie configurat ca output** înainte de inițializarea SPI, altfel hardware-ul cade în slave mode și SPI-ul nu funcționează ca master. 
-  * **Conflict evitat**: SPI ocupă D11 (MOSI) și D13 (SCK); LED-ul RGB e mutat pe D3/D5/D6 — deci nu există suprapunere. 
-  * **Alimentare**:​ baterie 9 V → jack-ul plăcii Xplained Mini → regulatorul on-board scoate 5 V. Pentru montaj fix pe rachetă, alternativă cu Li-Po 1S + boost converter (opțional, nu e în BOM-ul curent). 
  
-==== Schema electrică ==== 
- 
-(De adăugat — schema va fi desenată în KiCad / Fritzing / draw.io. Conform regulilor, **nu se acceptă scheme făcute în Paint**.) 
  
 ===== Software Design ===== ===== Software Design =====
  
-//(De completat în etapa următoare. Va include: mediu de dezvoltare — PlatformIO + avr-gcc; biblioteca petitFatFs (3rd party, doar dacă adăugăm SD); algoritmul de detecție swing; algoritmul de clasificare;​ FSM-ul aplicației.)//​ 
  
 ===== Rezultate Obținute ===== ===== Rezultate Obținute =====
  
-//(De completat la finalul implementării.)//​+
  
 ===== Concluzii ===== ===== Concluzii =====
  
-//(De completat la final.)// 
  
 ===== Download ===== ===== Download =====
  
-//(Arhivă cu surse, schema bloc și schema electrică — de adăugat după primul commit pe Git.)// 
  
-===== Jurnal ===== 
  
-  * **[data]** — definire concept, alegere componente, comandă piese. 
-  * **[data]** — primire piese, montaj inițial breadboard, test individual MPU6050 prin I2C. 
-  * //(de continuat pe parcursul proiectului)//​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2026/atoader/bianca.gorgovan.1778353146.txt.gz · Last modified: 2026/05/09 21:59 by bianca.gorgovan
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0