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 22:01]
bianca.gorgovan [Jurnal]
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 74: Line 88:
 ===== 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.)// 
  
  
pm/prj2026/atoader/bianca.gorgovan.1778353263.txt.gz · Last modified: 2026/05/09 22:01 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