This shows you the differences between two versions of the page.
pm:prj2024:mdinica:robert.grancsa [2024/05/04 01:16] robert.grancsa |
pm:prj2024:mdinica:robert.grancsa [2024/05/27 00:16] (current) robert.grancsa |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Bike Infotainment System ====== | ||
<html> | <html> | ||
Line 844: | Line 845: | ||
<script type="text/javascript"> | <script type="text/javascript"> | ||
document.addEventListener("DOMContentLoaded", function () { | document.addEventListener("DOMContentLoaded", function () { | ||
- | alert("Bine ai venit, sper sa iti placa"); | + | |
}); | }); | ||
</script> | </script> | ||
Line 895: | Line 896: | ||
<p><img src="https://i.imgur.com/X5e3Lpz.png" alt="Diagrama proiectului"></p> | <p><img src="https://i.imgur.com/X5e3Lpz.png" alt="Diagrama proiectului"></p> | ||
<h2 style="font-family:Raleway; font-weight: 600;" id="hardware-design">Hardware Design </h2> | <h2 style="font-family:Raleway; font-weight: 600;" id="hardware-design">Hardware Design </h2> | ||
- | <p>Aici puneți tot ce ține de hardware design:</p> | + | <p style="font-family:Roboto">Schematicul produsul se poate vedea mai jos. Am incercat sa conectez pinii spefici SPI pe pinii specifici |
- | <ul> | + | de SPI, pentru GPS m-am folosit de pinii de UART si pentru camera am ales sa folosesc pinii cei mai |
- | <li>listă de piese</li> | + | apropiati unul de altul pentru date, ca sa nu fie overlap la conectarea firelor.</p> |
- | <li>scheme electrice (se pot lua și de pe Internet și din datasheet-uri, e.g. <a | + | <p><img src="assets/Schematic.png" alt="Schematicul"></p> |
- | href="http://www.captain.at/electronic-atmega16-mmc-schematic.png">link</a>)</li> | + | <p style="font-family:Roboto">Tabelul cu piesele folosite se poate vedea mai jos.</p> |
- | <li>diagrame de semnal</li> | + | <table> |
- | <li>rezultatele simulării</li> | + | <thead> |
- | </ul> | + | <tr> |
+ | <th>Nume Piesa</th> | ||
+ | <th>Model</th> | ||
+ | <th>Protocol</th> | ||
+ | </tr> | ||
+ | </thead> | ||
+ | <tbody> | ||
+ | <tr> | ||
+ | <td>Microcontroller</td> | ||
+ | <td>ESP32-WROOM32</td> | ||
+ | <td>-</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>Display</td> | ||
+ | <td>ST7735</td> | ||
+ | <td>SPI</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>Camera</td> | ||
+ | <td>OV7670</td> | ||
+ | <td>I2S</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>GPS</td> | ||
+ | <td>GY-GPS6MV2</td> | ||
+ | <td>UART</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>Hall Effect Sensor</td> | ||
+ | <td>YS-27</td> | ||
+ | <td>ADC</td> | ||
+ | </tr> | ||
+ | </tbody> | ||
+ | </table> | ||
<h2 style="font-family:Raleway; font-weight: 600;" id="software-design">Software Design </h2> | <h2 style="font-family:Raleway; font-weight: 600;" id="software-design">Software Design </h2> | ||
- | <p>Descrierea codului aplicației (firmware):</p> | + | <p>Codul este momentan functional pe partea de cod main, functionalitatile extra nu au putut fi duse pana la |
+ | capat din cauza limitarilor hardware (ram insuficient pentru a encoda poze in base64), dar cele de | ||
+ | baza cum ar fi tracking de viteza functioneaza corect.</p> | ||
+ | <h3 style="font-family:Raleway; font-weight: 500;" id="biblioteci">Biblioteci </h3> | ||
+ | <p>Au fost folosite biblioteci precum:</p> | ||
<ul> | <ul> | ||
- | <li>mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)</li> | + | <li>Adafruit_GFX - pentru display si grafice</li> |
- | <li>librării și surse 3rd-party (e.g. Procyon AVRlib)</li> | + | <li>OV7670 - pentru camera si sincronizare de ceas pe I2C/I2S</li> |
- | <li>algoritmi și structuri pe care plănuiți să le implementați</li> | + | <li>TinyGPS++ - pentru a citi datele pe UART pe GPS</li> |
- | <li>(etapa 3) surse și funcții implementate</li> | + | <li>WiFi, WiFiMulti, WiFiClient, HTTPClient - pentru transfer de date via internet</li> |
</ul> | </ul> | ||
+ | <h3 style="font-family:Raleway; font-weight: 500;" id="features">Features </h3> | ||
+ | <p>Au fost folosite doua thread-uri separate, unul care se ocupata de citirea datelor, actualizarea lor si | ||
+ | afisarea pe ecran de fiecare data cand se gaseste o actualizare a vitezea via Hall Effect sensor, iar | ||
+ | al doilea thread, care e pinned la un alt core fata de primul, se ocupa de transmisia prin wifi a | ||
+ | datelor catre back-end-ul care tine un loc al datelor.</p> | ||
+ | <p>Am folosit si intreruperi pentru a detecta butonul apasat, ca mai apoi sa pot cicla intre ecranul | ||
+ | principal de viteza, si ecranul care arata display-ul.</p> | ||
+ | <p>Serverul este scris in Express, si se foloseste de MongoDB sa salveze datele persistent.<br> | ||
+ | El este hostat pe raspberry pi, si pastreaza mereu legatura la device. Acest back-end face si | ||
+ | request-uri catre Google Cloud sa clasifice obiectele din imagine de pe camera,<br> | ||
+ | care mai apoi intoarce daca a gasit vreun semn de circulatie sau vreun danger pe imagine, si in caz ca | ||
+ | se gaseste ceva dangerous imaginea respectiva este si ea salvata in baza de date ca logging.</p> | ||
+ | <p>Aceste date pot fi vazute dupa vazute dupa aceea pe front-end-ul scris in React.</p> | ||
+ | <h3 style="font-family:Raleway; font-weight: 500;" id="schelet">Schelet </h3> | ||
+ | <p>Codul contine partea de init, care initializeaza wifi-ul, si fiecare senzor valabil precum gps-ul, camera | ||
+ | si ecranul. Apoi avem partea de cod care introduce intreruperile si pornirea de core-uri pentru | ||
+ | task-ul de send, si cel de update a ecranului.</p> | ||
+ | <p>Se foloseste de multe functii ajutatoare, pentru a trimite datele, pentru a da refresh la ecran si pentru | ||
+ | a calcula distanta parcursa de la ultima activare.</p> | ||
+ | <h3 style="font-family:Raleway; font-weight: 500;" id="calibrare">Calibrare </h3> | ||
+ | <p>Pentru senzorul Hall, calibrarea a fost facuta folosind print-uri la serial si folosind un magnet si | ||
+ | regland potentiometrul de pe device pentru a ajunge la sensitivitatea dorita.</p> | ||
<h2 style="font-family:Raleway; font-weight: 600;" id="rezultate-obținute">Rezultate Obținute </h2> | <h2 style="font-family:Raleway; font-weight: 600;" id="rezultate-obținute">Rezultate Obținute </h2> | ||
- | <p>Care au fost rezultatele obținute în urma realizării proiectului vostru.</p> | + | <p>Codul sursa pentru proiect poate fi gasit <a href="https://github.com/RobertGrancsa/PM_Project">aici</a> |
- | <h2 style="font-family:Raleway; font-weight: 600;" id="concluzii">Concluzii </h2> | + | </p> |
+ | <p><img href="https://github.com/RobertGrancsa/PM_Project" src="https://opengraph.githubassets.com/6f91aeeafc7c48641ebbb89c91265b7bede1f65b01d95f3c0df5048f17a0d8a2/RobertGrancsa/PM_Project" | ||
+ | alt="codul sursa"></p> | ||
<h2 style="font-family:Raleway; font-weight: 600;" id="download">Download </h2> | <h2 style="font-family:Raleway; font-weight: 600;" id="download">Download </h2> | ||
- | <p>O arhivă (sau mai multe dacă este cazul) cu fișierele obținute în urma realizării proiectului: surse, | + | <p>Proiectul poate fi gasit pe <a href="https://github.com/RobertGrancsa/PM_Project">github</a>, si |
- | scheme, etc. Un fișier README, un ChangeLog, un script de compilare și copiere automată pe uC crează | + | descarcat si compilat local.</p> |
- | întotdeauna o impresie bună 😉.</p> | + | |
- | <p>Fișierele se încarcă pe wiki folosind facilitatea <strong>Add Images or other files</strong>. | + | |
- | Namespace-ul în care se încarcă fișierele este de tipul <strong>:pm:prj20??:c?</strong> sau | + | |
- | <strong>:pm:prj20??:c?:nume_student</strong> (dacă este cazul).</p> | + | |
- | <h2 style="font-family:Raleway; font-weight: 600;" id="jurnal">Jurnal </h2> | + | |
- | <p>Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </p> | + | |
- | <h2 style="font-family:Raleway; font-weight: 600;" id="bibliografieresurse">Bibliografie/Resurse </h2> | + | |
- | <p>Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe <strong>Resurse | + | |
- | Software</strong> și <strong>Resurse Hardware</strong>.</p> | + | |
</div> | </div> | ||
</body> | </body> | ||
</html> | </html> | ||
- | Bike Infotainment System |