This is an old revision of the document!


Reflex Analyzer — Sistem de masurare si analiza a timpului de reactie

Autor: Enciu Cezar-Andrei, grupa 332CA
Asistent: Bianca Popa

Introducere

Descriere generala

Reflex Analyzer este un sistem embedded pentru masurarea precisa a timpului de reactie uman. Placa ATmega324P primeste o comanda de start dintr-o aplicatie desktop, genereaza un interval de asteptare pseudo-aleator intre 1 si 4 secunde, dupa care emite simultan un semnal sonor (buzzer) si unul luminos (LED). La apasarea butonului de catre utilizator, cronometrul hardware se opreste, iar rezultatul — exprimat in milisecunde — este trimis aplicatiei prin USART. Display-ul OLED I2C afiseaza starea sistemului in timp real. Aplicatia centralizeaza rezultatele si prezinta statistici: medie, minim, maxim si un grafic al evolutiei pe sesiune.

Scop

Crearea unui instrument simplu, precis si portabil care sa masoare obiectiv reflexele unui utilizator si sa permita urmarirea progresului in timp, cu o precizie superioara aplicatiilor software pure (care sunt limitate de latenta sistemului de operare).

Ideea de baza

Microcontrollerul ATmega324P cronometreaza timpul de reactie folosind Timer1 pe 16 biti (rezolutie ~4μs), activat in momentul emiterii semnalului si oprit prin intreruperea externa INT0 la apasarea butonului. Rezultatul este trimis prin USART catre o aplicatie desktop Python + PyQt5 care afiseaza statistici si un grafic de evolutie. Un display OLED I2C (SSD1306) ofera feedback local fara a fi nevoie de calculator.

Utilitate practica

  • Sportivi care vor sa isi masoare si imbunateasca reflexele in antrenament
  • Utilizatori generali curiosi sa isi testeze timpul de reactie cu precizie reala, nu estimata de browser
  • Demonstratii educationale — proiectul ilustra concret cum functioneaza timerele hardware, intreruperile si comunicatia seriala

De ce e util

  • Precizie hardware reala (~4μs rezolutie) vs. aplicatii web/mobile cu latenta de zeci de ms
  • Detectie false start — apasare buton inainte de semnal, tratata si raportata separat
  • Delay pseudo-aleator (LFSR) — nu se poate anticipa momentul semnalului
  • Display local (OLED I2C) — feedback instant fara a privi spre ecranul PC-ului
  • Export CSV din aplicatie pentru analiza ulterioara

Descriere generala

Schema bloc a sistemului:

Schema bloc Reflex Analyzer

Fluxul de date pe scurt:

  1. Aplicatia desktop trimite comanda S (start) prin portul serial catre ATmega324P.
  2. Microcontrollerul genereaza un delay aleator (1–4s) cu LFSR, dupa care activeaza LED-ul si buzzer-ul simultan.
  3. Display-ul OLED trece de la „Gata…” la „GO!” la momentul semnalului.
  4. Utilizatorul apasa butonul — intreruperea externa INT0 opreste Timer1 si calculeaza diferenta de timp.
  5. Rezultatul in milisecunde este trimis prin USART aplicatiei si afisat pe OLED.
  6. Daca butonul e apasat inainte de semnal, sistemul semnalizeaza false start si se reseteaza.

Hardware Design

Lista de piese

Componenta Cantitate Rol
ATmega324P-PU (DIP-40) 1 Microcontroller principal
USBasp Programmer 1 Programare firmware prin ISP
Crystal 16MHz 1 Sursa de ceas externa
Condensator 22pF 2 Stabilizare crystal
Condensator 100nF 1 Decuplare alimentare
LED rosu 5mm 1 Stimul vizual de start
Rezistor 220Ω 1 Limitare curent LED
Buzzer pasiv 5V 1 Stimul sonor de start, controlat prin PWM
Buton tactil 6×6mm 1 Input reactie utilizator
Display OLED I2C 0.96” SSD1306 1 Afisare stare sistem si timp de reactie
Convertor USB-UART (CP2102/CH340) 1 Comunicare seriala cu PC
Breadboard + fire jumper 1 set Conectica si prototipare
Sursa alimentare 5V (USB) 1 Alimentare circuit

Schema de conexiuni

Pin ATmega324P Componenta
PB0 Anod LED rosu (prin 220Ω → GND)
PD5 / OC0B Buzzer pasiv (semnal PWM)
PD2 / INT0 Buton (pull-up intern, cealalta latura GND)
PC0 / SCL SCL display OLED SSD1306
PC1 / SDA SDA display OLED SSD1306
PD1 / TXD TX convertor USB-UART
PD0 / RXD RX convertor USB-UART
XTAL1 / XTAL2 Crystal 16MHz (cu 2× 22pF la GND)
VCC / AVCC / GND Alimentare 5V + 100nF decuplare

Software Design

Mediu de dezvoltare

  • avr-gcc + avrdude — compilare si incarcare firmware in limbaj C
  • VS Code — editare cod firmware
  • Python 3.11 + PyQt5 — aplicatie desktop
  • Monitor Serial — debugging USART in timp real

Librarii folosite

Firmware (C / avr-gcc)

Librarie Sursa Rol
avr/io.h avr-libc (built-in) Acces la registrele I/O ale ATmega324P
avr/interrupt.h avr-libc (built-in) Gestionarea intreruperilor hardware
util/delay.h avr-libc (built-in) Delay-uri de initializare
Driver SSD1306 I2C open-source adaptat Initializare display si afisare text

Aplicatie Desktop (Python)

Librarie Rol
pyserial Comunicare seriala cu microcontrollerul prin USB-UART
PyQt5 Interfata grafica (ferestre, butoane, tabele)
pm/prj2026/bianca.popa1106/cezar_andrei.enciu.1778324818.txt.gz · Last modified: 2026/05/09 14:06 by cezar_andrei.enciu
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