Differences

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

Link to this comparison view

pm:prj2024:vstoica:cristian.chiriac02 [2024/05/26 21:39]
cristian.chiriac02 add extra hardware pictures; more detailed software description
pm:prj2024:vstoica:cristian.chiriac02 [2024/05/26 23:33] (current)
cristian.chiriac02 add archive copy on OCW
Line 81: Line 81:
 </​note>​ </​note>​
  
-Am dezvoltat proiectul în [[https://​code.visualstudio.com/​|Visual Studio Code]] cu ajutorul [[https://​platformio.org/​|PlatformIO]],​ la fel ca în cadrul laboratoarelor. Codul de pe microcontrollere este scris aproape complet folosind regiștrii și laboratoarele relevante, întrucât implementările din acestea sunt foarte optimizate, ceea ce ajută în economisirea ciclilor de ceas și a energiei consumate din baterie. Cu toate acestea, am folosit și câteva ​bilioteci ​în proiect, acestea fiind:+Am dezvoltat proiectul în [[https://​code.visualstudio.com/​|Visual Studio Code]] cu ajutorul [[https://​platformio.org/​|PlatformIO]],​ la fel ca în cadrul laboratoarelor. Codul de pe microcontrollere este scris aproape complet folosind regiștrii și laboratoarele relevante, întrucât implementările din acestea sunt foarte optimizate, ceea ce ajută în economisirea ciclilor de ceas și a energiei consumate din baterie. Cu toate acestea, am folosit și câteva ​biblioteci ​în proiect, acestea fiind:
  
   * [[https://​github.com/​latchdevel/​VirtualWire|VirtualWire]] - utilizată pentru transmisia comenzilor de la telecomandă și recepționarea lor de către receiver   * [[https://​github.com/​latchdevel/​VirtualWire|VirtualWire]] - utilizată pentru transmisia comenzilor de la telecomandă și recepționarea lor de către receiver
Line 90: Line 90:
  
 Citirea butoanelor se realizează prin întreruperi de schimbare a pinilor la care butoanele sunt conectate, folosind rezistențele de pull-up interne ale microcontrollerului. ​ Citirea butoanelor se realizează prin întreruperi de schimbare a pinilor la care butoanele sunt conectate, folosind rezistențele de pull-up interne ale microcontrollerului. ​
-Pentru a realiza debouncing pentru butoane, am implementat versiunea proprie a funcției millis(), similar cu varianta din laborator, folosind ​timerul ​2, singurul care se poate utiliza ca sursă de întrerupere în modurile de sleep ale procesorului. Întrucât evitarea debouncing-ului nu are nevoie de o detecție foarte precisă a timpului trecut de la ultimul eveniment, am ales să generez o întrerupere odată la fiecare 4 milisecunde,​ astfel că voi scoate microcontrollerul din sleep de 4 ori mai rar, fără a dăuna preciziei butoanelor, ceea ce ajută la minimizarea consumului.+Pentru a realiza debouncing pentru butoane, am implementat versiunea proprie a funcției millis(), similar cu varianta din laborator, folosind ​timer-ul ​2, singurul care se poate utiliza ca sursă de întrerupere în modurile de sleep ale procesorului. Întrucât evitarea debouncing-ului nu are nevoie de o detecție foarte precisă a timpului trecut de la ultimul eveniment, am ales să generez o întrerupere odată la fiecare 4 milisecunde,​ astfel că voi scoate microcontrollerul din sleep de 4 ori mai rar, fără a dăuna preciziei butoanelor, ceea ce ajută la minimizarea consumului.
  
 Cât despre modulul accelerometru-giroscop,​ am creat o micro-bibliotecă proprie de comunicare cu acesta, folosind datasheet-ul componentei. Aceasta implementează doar operațiile cele mai simple de configurare și de citire a datelor, întrucât modulul are multiple funcționalități avansate de care nu am avut nevoie în cadrul acestui proiect. Cât despre modulul accelerometru-giroscop,​ am creat o micro-bibliotecă proprie de comunicare cu acesta, folosind datasheet-ul componentei. Aceasta implementează doar operațiile cele mai simple de configurare și de citire a datelor, întrucât modulul are multiple funcționalități avansate de care nu am avut nevoie în cadrul acestui proiect.
Line 100: Line 100:
   * [[https://​www.pysimplegui.org/​|PySimpleGUI]] - oferă interfața grafică minimalistă a aplicației   * [[https://​www.pysimplegui.org/​|PySimpleGUI]] - oferă interfața grafică minimalistă a aplicației
   * [[https://​pypi.org/​project/​pynput/​|pynput]] - simulează evenimente de apăsări de taste și de mișcare a cursorului pentru a controla aplicația de prezentări   * [[https://​pypi.org/​project/​pynput/​|pynput]] - simulează evenimente de apăsări de taste și de mișcare a cursorului pentru a controla aplicația de prezentări
-  * [[https://​docs.python.org/​3/​library/​threading.html|threading]],​ [[https://​docs.python.org/​3/​library/​os.html|os]],​ [[https://​docs.python.org/​3/​library/​logging.html|logging]],​ [[https://​docs.python.org/​3/​library/​queue.html|queue]],​ [[https://​docs.python.org/​3/​library/​subprocess.html|subprocess]],​ [[https://​docs.python.org/​3/​library/​math.html|math]] - biblioteci de bază Python, utilizate în interfațarea celorlalte și realizarea funcționaltății într-un tot unitar. +  * [[https://​docs.python.org/​3/​library/​threading.html|threading]],​ [[https://​docs.python.org/​3/​library/​os.html|os]],​ [[https://​docs.python.org/​3/​library/​logging.html|logging]],​ [[https://​docs.python.org/​3/​library/​queue.html|queue]],​ [[https://​docs.python.org/​3/​library/​subprocess.html|subprocess]],​ [[https://​docs.python.org/​3/​library/​math.html|math]] - biblioteci de bază Python, utilizate în interfațarea celorlalte și realizarea funcționalității într-un tot unitar.
- +
-<note tip> +
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +{{ :​pm:​prj2024:​vstoica:​cristian.chiriac02:​final.png?​direct&​600 | Produs final}} 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. + 
-</​note>​+Telecomanda rezultată este surprinzător de ușoară și are dimensiuni rezonabile, fiind capabilă să țină o prezentare la o distanță respectabilă de receptorul conectat la calculator. Deși ceva mai greu de controlat, controlul cursorului folosind giroscopul este destul de intuitiv după o scurtă perioadă de acomodare cu această schemă de control. Butoanele sunt tactile, ceea ce ajută la a avea încredere că acestea ​au fost apăsate, iar orientarea lor le face ușor de găsit și apăsat fără a te uita la ele.
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Acest proiect a fost o oportunitate să mă apropii mai mult de hardware (este prima dată când fac un design atât de complicat și restricționat de spațiu - plus că mâinile mele tremurânde nu m-au avantajat) și să creez ceva ce voi utiliza cu siguranță la viitoarele prezentări pe care le voi ține în fața colegilor și nu numai. În plus, acum că am control total asupra software-ului ce rulează pe toate dispozitivele din acest lanț de control/​comunicare,​ pot să particularizez oricând vreau telecomanda pentru a-mi servi și la alte scopuri decât doar susținerea de prezentări.
  
 ===== Download ===== ===== Download =====
Line 122: Line 116:
 <note tip> <note tip>
 Arhivă proiect: [[https://​github.com/​Alexander1752/​wireless_presenter/​zipball/​main|Alexander1752-wireless_presenter.zip]] Arhivă proiect: [[https://​github.com/​Alexander1752/​wireless_presenter/​zipball/​main|Alexander1752-wireless_presenter.zip]]
 +
 +Daemon download - Windows 64-bit: [[https://​github.com/​Alexander1752/​wireless_presenter/​releases/​download/​daemon_v1.0.0_win64/​daemon_v1.0.0_win64.zip|daemon_v1.0.0_win64.zip]]
 +
 +Arhivă proiect OCW: {{:​pm:​prj2024:​cc:​cristian.chiriac02:​alexander1752-wireless_presenter.zip}}
 </​note>​ </​note>​
  
Line 133: Line 131:
   * //​08.05.2024 - 13.05.2024//​ - implementare hardware a schemei electrice (fără baterii)   * //​08.05.2024 - 13.05.2024//​ - implementare hardware a schemei electrice (fără baterii)
   * //​16.05.2024//​ - implementare a primei versiuni de cod pentru microcontrollere,​ detaliere și documentare schemă electrică   * //​16.05.2024//​ - implementare a primei versiuni de cod pentru microcontrollere,​ detaliere și documentare schemă electrică
 +  * //​17.05.2024//​ - adăugare funcționalitate completă butoane, control cursor, economisire energie
 +  * //​18.05.2024//​ - proiectare carcasă 3D
 +  * //​22.05.2024 - 23.05.2024//​ - adăugarea bateriilor la hardware; asamblarea produsului final
 +  * //​24.05.2024//​ - adăugare funcționalitate laser; optimizare consum energie
 +  * //​26.05.2024//​ - finalizare documentație
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2024/vstoica/cristian.chiriac02.1716748797.txt.gz · Last modified: 2024/05/26 21:39 by cristian.chiriac02
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