This shows you the differences between two versions of the page.
pm:prj2024:vstoica:mihai.tecliceanu [2024/05/03 11:54] mihai.tecliceanu created |
pm:prj2024:vstoica:mihai.tecliceanu [2024/05/27 00:30] (current) mihai.tecliceanu [Software Design] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | Punching Machine | + | ====== Punching Machine ====== |
+ | ===== Introducere ===== | ||
+ | |||
+ | Se doreste implementarea unui aparat de masurat forta loviturii cu pumnul la o scara mai mica, pentru a usura portabilitatea. Aparatul va indica un anumit scor obtinut in urma loviturii unei mingi/sac de box. | ||
+ | |||
+ | ===== Descriere generală ===== | ||
+ | |||
+ | **Schema bloc** | ||
+ | |||
+ | |||
+ | ===== Hardware Design ===== | ||
+ | |||
+ | == Piese == | ||
+ | **ESP32:** | ||
+ | |||
+ | *Placuța programabila este un ESP32. Am ales aceasta placuta pentru a putea beneficia atat de memoria crescuta cat si de capabilitatile WiFi de care dispune; | ||
+ | |||
+ | **Ecran LCD 1602:** | ||
+ | |||
+ | *Tensiune de alimentare: 3.3V/5V; | ||
+ | *Tensiune alimentare backlight: 4.2V; | ||
+ | *Curent: 2mA; | ||
+ | *Modulul comunică prin intermediul unui convertor I2C; | ||
+ | |||
+ | **Receptor laser OKY3301-1:** | ||
+ | |||
+ | *Tensiune de alimentare: 2.7V - 5.5V (recomandat 5V); | ||
+ | *Curent: 3mA; | ||
+ | *Output normal pe LOW, cand primeste laser trece pe HIGH; | ||
+ | |||
+ | **Dioda laser KY-008:** | ||
+ | |||
+ | *Tensiune de alimentare: 5V; | ||
+ | *Lungime unda laser: 650nm; | ||
+ | |||
+ | **Electromagnet 34/18:** | ||
+ | |||
+ | *Tensiunse de alimentare: 12V; | ||
+ | *Curent: 0.5A; | ||
+ | *Forta de atractie: 18kg/180N; | ||
+ | |||
+ | **Modul cu Tranzistor de Putere IRF520:** | ||
+ | |||
+ | *Tensiune maximă: 24V; | ||
+ | *Curent maxim: 5A | ||
+ | *Tensiune poartă: 3.3V, 5V; | ||
+ | *Timpi de comutație mici; | ||
+ | *RDS:0.27 ohmi; | ||
+ | *Sarcină poartă: 16nC | ||
+ | |||
+ | == Schema hardware == | ||
+ | {{:pm:prj2024:vstoica:schema_punch_machine.png?500|}} | ||
+ | |||
+ | |||
+ | ===== Software Design ===== | ||
+ | |||
+ | Voi utiliza ESP-IDF ca development framework. | ||
+ | Pentru masurarea puterii cu care se loveste, se va masura timpul in care un circuit format dintr-un laser si un receptor este intrerupt de trecerea bratului aparatului prin fata laserului. Aparatul creaza un acces point pentru a putea fi controlat intr-un browser. Pentru o masurarea cat mai buna, se va calcula diferenta in microsecunde dintre inceperea intreruperii laserului, pana la terminarea acesteia. De asemenea detectarea bratului se realizeaza prin intreruperi in cod, generandu-se un eveniment si procesarea evenimentului intr-un task separat, posibil chiar si pe alt procesor, ESP32-WROOM avand 2 core-uri. | ||
+ | |||
+ | * **/connect** - aparatul asteapta ca un controller sa se conecteze. Conectarea se realizeaza prin intermediul unei aplicatii pe telefon sau dintr-un browser. | ||
+ | * **/try** - dupa ce un controller a fost conectat la aparat, acesta va astepta o cerere POST ce va contine un nume ("name=...") pentru a putea stabili numele jucatorului. | ||
+ | * **/scores** - returneaza un raspuns la o cerere GET ce contine un textul in format CSV cu primele N cele mai mari scoruri. Numarul de scoruri retinute poate fi configurat din sursa aparatului. | ||
+ | * **/reset** - reseteaza aparatul in cazul unei probleme. | ||
+ | * **/player** - intoarce o pagina pentru a putea introduce numele jucatorlui. Folosit in special pentru controllere din browser. | ||
+ | |||
+ | Aplicatia pentru telefon a fost realizata folosind MIT App Inventor si este disponibila pentru descarcare in sectiunea Download. Aceasta are nevoie de adresa IP afisata pe ecranul LCD al aparatului pentru a-l putea controla. | ||
+ | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | Am reusit sa implementez un aparat destul de complex, mai ales din punct de vedere software, care poate fi montat ca un fidget putin mai mare pentru birou, ignorand zgomotul creat :-). | ||
+ | |||
+ | ===== Concluzii ===== | ||
+ | |||
+ | ===== Download ===== | ||
+ | |||
+ | <note warning> | ||
+ | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | ||
+ | |||
+ | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | ||
+ | </note> | ||
+ | |||
+ | ===== Jurnal ===== | ||
+ | |||
+ | <note tip> | ||
+ | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
+ | </note> | ||
+ | |||
+ | ===== Bibliografie/Resurse ===== | ||
+ | |||
+ | <note> | ||
+ | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
+ | </note> | ||
+ | |||
+ | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |