Differences

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

Link to this comparison view

pm:prj2023:apredescu:barbuta.cristian [2023/05/29 02:43]
cristian.barbuta [Organizarea Codului]
pm:prj2023:apredescu:barbuta.cristian [2023/05/29 07:32] (current)
paul.nicolae [Rezultate Obţinute]
Line 114: Line 114:
 } }
 </​code>​ </​code>​
-In cadrul acestui cod, functia "​initializeScreenAndCamera()"​ a fost lasata intacta, in schimb ceea ce am modificat din cadrul ​"bibliotecii" ​pe care am gasit-o, a fost functia "​processFrame()"​+  * Se asteapta pana cand sensorul infra-rosu detecteaza ceva la 20cm distanta, camera incepe sa inregistreze,​ iar in cazul in care un frame contine fata unei persoane autorizate serverResponse va deveni 1 iar incuietoarea se va deschide pentru cateva secunde. 
 +  * In cadrul acestui cod, functia "​initializeScreenAndCamera()"​ a fost lasata intacta, in schimb ceea ce am modificat din aceasta  ​"biblioteca", a fost functia "​processFrame()" ​unde am impus asteptarea unui raspuns pe portul serial
  
-===== Rezultate Obţinute =====+<code cpp> 
 +char processFrame() { 
 +  processedByteCountDuringCameraRead ​0; 
 +  commandStartNewFrame(uartPixelFormat);​ 
 +  noInterrupts();​ 
 +  processFrameData();​ 
 +  interrupts();​ 
 +  frameCounter++;​ 
 +  commandDebugPrint("​Frame " + String(frameCounter)/​* + " " + String(processedByteCountDuringCameraRead)*/​);​ 
 +   
 +  // wait for the server to check the frame 
 +  while(!Serial.available()){} 
 +  char serverResponse ​Serial.read(); ​
  
-<note tip> +  return serverResponse;​ 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +} 
-</note>+</code>
  
-===== Concluzii =====+  * Aici, fiecare frame este trimis pe portul serial unde ajunge sa fie procesat de o aplicatie in Java si ulterior trimis catre backend 
 +=== Java === 
 +  Functia adaugata de mine este urmatoarea:​ 
 +<code java> 
 +  private void sendImageToServer(BufferedImage image, File toFolder) { 
 +    try { 
 +      // Save image to PNG file 
 +      File newFile ​new File(toFolder.getAbsolutePath(),​ getNextFileName());​ 
 +      ImageIO.write(image,​ "​png",​ newFile);
  
-===== Download =====+      // Read the image file as bytes 
 +      byte[] imageData ​Files.readAllBytes(newFile.toPath());​
  
-<note warning> +      // Encode the image bytes as Base64 
-O arhivă ​(sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etcUn fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+      ​String base64Image = Base64.getEncoder().encodeToString(imageData);
  
-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*+      // Set up the URL and connection 
-</note>+      URL url = new URL("​http://localhost:5000/​upload"​);​ 
 +      HttpURLConnection connection = (HttpURLConnectionurl.openConnection();​ 
 +      connection.setRequestMethod("​POST"​);​ 
 +      ​connection.setRequestProperty("​Content-Type",​ "​application/json"​);​ 
 +      connection.setDoOutput(true);​
  
-===== Jurnal ​=====+      // Create the JSON payload 
 +      JSONObject jsonPayload ​new JSONObject();​ 
 +      jsonPayload.put("​image",​ base64Image);​ 
 + 
 +      // Write the JSON payload to the request body 
 +      OutputStream outputStream ​connection.getOutputStream();​ 
 +      outputStream.write(jsonPayload.toString().getBytes());​ 
 +      outputStream.flush();​ 
 + 
 +      // Read the response from the server 
 +      int responseCode ​connection.getResponseCode();​ 
 +      if (responseCode ​== HttpURLConnection.HTTP_OK) { 
 +        System.out.println("​Server response: OK"​);​ 
 +        serialReader.sendResponse(1);​ 
 +      } else { 
 +        System.out.println("​Unexpected server response code: " + responseCode);​ 
 +        serialReader.sendResponse(0);​ 
 +      } 
 + 
 +      // Close the connection 
 +      connection.disconnect();​ 
 + 
 +      saveCountLabel.setText("​ (" + (++saveCounter) + "​)"​);​ 
 +    } catch (IOException e) { 
 +      System.out.println("​Sending file failed: " + e.getMessage());​ 
 +    } 
 +  } 
 +</​code>​ 
 +  
 +  * Aici are log un request http in urma caruia se transmite inapoi la placuta raspunsul serverului  
 + 
 +=== Flask - Flutter ​==
 +    
 +Am facut o aplicatie full-stack minimalista care are urmatoarele functionalitati in cadrul proiectului 
 +  * listarea persoanelor autorizate  
 +  * adaugarea de persoane autorizate: Nume - Selfie 
 +  * stergerea de persoane autorizate 
 +  * recunoasterea persoanelor autorizate ​  
 + 
 + 
 + 
 +===== Rezultate Obţinute ===== 
 + 
 +In urma proiectului,​ am obtinut o usa inteligenta care permite intrarea persoanelor autorizate si o aplicatie mobila pentru gestionarea usii. 
 + 
 +{{ pm:​prj2023:​apredescu:​app_3.jpeg?​700 |}} 
 +{{ pm:​prj2023:​apredescu:​app_2.jpeg?​300 |}} 
 +{{ pm:​prj2023:​apredescu:​app_1.jpeg?​300 |}} 
 +{{ pm:​prj2023:​apredescu:​app_4.jpeg?​300 |}} 
 +  * videoclip cu functionalitatea  
 +  * <​a>​https://​drive.google.com/​file/​d/​1ctDuG0gpRxGoAZwBggntORs-Z0veVhDa/​view?​usp=sharing</​a>​ 
 + 
 +===== Concluzii ===== 
 +A fost un proiect interesant in care am intampinat foarte multe probleme din care am putut invata. Totodata, pe langa cunostintele practice obtinute, am dobandit si o intelegere teoretica asupra diferitelor concepte utilizate. 
 +===== Download ===== 
 +{{ pm:​prj2023:​apredescu:​barbuta_app_final.zip |}} 
 +{{ pm:​prj2023:​apredescu:​barbuta_arduino.zip |}} 
 +{{ pm:​prj2023:​apredescu:​barbuta_java_final.zip |}}
  
-<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 ===== ===== Bibliografie/​Resurse =====
pm/prj2023/apredescu/barbuta.cristian.1685317387.txt.gz · Last modified: 2023/05/29 02:43 by cristian.barbuta
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