Differences

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

Link to this comparison view

pm:prj2025:eradu:rares.apostol3011 [2025/05/23 21:21]
rares.apostol3011 [Software Design]
pm:prj2025:eradu:rares.apostol3011 [2025/05/29 20:15] (current)
rares.apostol3011 [Concluzii]
Line 9: Line 9:
 Masina va putea fi controlata în timp real din aplicatie, permitand deplasarea inainte și inapoi, precum și virarea stanga-dreapta printr-un volan implementat in aplicatie. Desi ar fi fost mai usor ca masina sa vireze doar din niste sageti, am dorit un control precis, bazat pe volan. Masina va putea fi controlata în timp real din aplicatie, permitand deplasarea inainte și inapoi, precum și virarea stanga-dreapta printr-un volan implementat in aplicatie. Desi ar fi fost mai usor ca masina sa vireze doar din niste sageti, am dorit un control precis, bazat pe volan.
  
-Un alt aspect important al proiectului este integrarea unei camere video montate pe masina. Aceasta va transmite video către aplicatia Android. Utilizatorul va putea astfel controla masina chiar si in afara campului vizual.+Un alt aspect important al proiectului este integrarea unei camere video montate pe masina. Aceasta va transmite video către aplicatia Android. Utilizatorul va putea astfel controla masina chiar si in afara campului vizual. Am folosit un ESP32 CAM pentru camera.
  
 Comunicarea dintre aplicatie si masina se va face printr-o retea Wi-Fi locala. Pentru asta, un ESP8266 va fi pornit in mod access-point,​ iar celelalte dispozitive se vor conecta la aceasta retea. ​ Comunicarea dintre aplicatie si masina se va face printr-o retea Wi-Fi locala. Pentru asta, un ESP8266 va fi pornit in mod access-point,​ iar celelalte dispozitive se vor conecta la aceasta retea. ​
Line 75: Line 75:
  
 Program ESP32: Program ESP32:
-    * Am folosit tot VsCode si PlatformIO, dar am utilizat un exemplu de cod din acest [[https://​github.com/​espressif/​arduino-esp32.git|repo]]+    * Am folosit tot VsCode si PlatformIO, dar am utilizat un exemplu de cod din acest [[https://​github.com/​espressif/​arduino-esp32/​tree/​master/​libraries/​ESP32/​examples/​Camera/​CameraWebServer|repo]]
  
 Program Android: Program Android:
-    * Android Studio, Kotlin si Jetpack Compose ​+    * Android Studio, Kotlin si Jetpack Compose
  
 +Implementarea Software in detaliu:
 +
 +1. **Aplicatia Android**
 +        * RCCarApp() - este o functie composable, care contine elementele care se afiseaza pe ecran: cele doua pedale, un slider din care se seteaza puterea motoarelor, si volanul. Contine cateva variabile care se schimba atunci cand utilizatorul interactioneaza cu componentele. Am folosit doua functii ** LaunchedEffect **, care urmaresc schimbarile variabilelor si la modificari, lanseaza corutine, pentru trimiterea mesajelor si rotirea volanului.
 +        * ** suspend fun sendCommands() ** - pornita din LaunchedEffect,​ primeste ca parametri variabilele,​ si trimite un pachet UDP catre ESP8266, cu toate datele necesare pentru control: unghiul volanului, puterea, ce pedala este apasata.
 +        * Pentru afisarea camerei, am utilizat un WebView, care acceseaza pagina creata de ESP32.
 +    ​
 +2. **Cod ESP8266**
 +        * Se porneste in mod AP, cu o adresa IP statica, folosind WiFi.config()
 +        * Pentru procesarea pachetelor, am folosit o functie de callback, ** udp.onPacket **, care se executa automat atunci cand este primit un pachet UDP. Aici, se transforma pachetul in string, si cu ajutorul functiei ** parse_message() ** se modifica niste variabile globale, folosite in loop(). Am ales sa folosesc AsyncUdp pentru a nu bloca executia in loop, asteptand un mesaj. Astfel, codul din onPacket se executa doar atunci cand este primit un pachet nou
 +        * In ** loop() **, sunt controlate motoarele, in functie de variabilele globale. Se roteste servomotorul(am dat un delay de 20 de ms pentru a avea suficient timp), si sunt controlate puterea si sensul motoarelor din fata: pentru a merge inainte, pinii A trimit semnalul PWM, si pinii B sunt setati pe LOW. Pentru a da cu spatele, invers: pinii A sunt setati pe LOW, pinii B trimit PWM.  Daca nicio pedala nu e apasata, atunci toti pinii sunt setati pe LOW.
 +
 +3. **Cod ESP32 CAM**
 +<note important>​Am folosit codul de [[https://​github.com/​espressif/​arduino-esp32/​tree/​master/​libraries/​ESP32/​examples/​Camera/​CameraWebServer|aici]] </​note>​
 +
 +Am modificat cateva lucruri: esp32 va primi o adresa statica, va folosi grayscale(jpeg nu e suportat de camera). De asemenea, rezolutia este foarte mica(QQVGA),​ camera merge destul de prost si am incercat sa fie totusi functionala,​ chiar daca calitatea video nu este excelenta
 +   
  
-===== Rezultate Obţinute ===== 
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +Mi s-a parut mult de munca, mai ales la partea de hardware, unde am avut probleme cu unele piese. Sistemul de servo a luat destul de mult timp, am incercat sa il fac cat mai precis. Am incercat sa scriu singur codul pentru camera, dar nu am gasit niciun fel de documentatie pentru rhyx-m21-45,​ si am folosit un exemplu din arduino.
 +
 +Cu toate astea, proiectul mi-a placut, mai ales cand la final am vazut ca masina chiar merge, si o pot controla din telefon, cum mi-am dorit.
 ===== Download ===== ===== Download =====
  
Line 117: Line 133:
  
 **Update 2**: am reusit sa pornesc ESP32-ul. Pentru ca am scris deja codul pentru controlul motoarelor pe esp8266, o sa continui cu ambele: esp32 pentru camera, esp8266 pentru motoare. **Update 2**: am reusit sa pornesc ESP32-ul. Pentru ca am scris deja codul pentru controlul motoarelor pe esp8266, o sa continui cu ambele: esp32 pentru camera, esp8266 pentru motoare.
 +
 +** Proiect complet **:
 +
 +1. [[https://​youtube.com/​shorts/​-Rezx8TZMO0| Masina gata]]
 +
 +2. [[https://​youtube.com/​shorts/​xrrqcrR-CG8| Aplicatia]]
        
    
  
-===== Bibliografie/​Resurse ​=====+===== Bibliografie ​si resurse ​=====
  
-<​note>​ +[[https://​randomnerdtutorials.com/​esp32-cam-video-streaming-face-recognition-arduino-ide/|ESP32 CAM]]
-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>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2025/eradu/rares.apostol3011.1748024486.txt.gz · Last modified: 2025/05/23 21:21 by rares.apostol3011
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