Differences

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

Link to this comparison view

pm:prj2024:avaduva:alexandru.onel0512 [2024/05/24 00:06]
alexandru.onel0512 [Concluzii]
pm:prj2024:avaduva:alexandru.onel0512 [2024/05/24 15:52] (current)
alexandru.onel0512 [Jurnal]
Line 109: Line 109:
 **Scheletul proiectului:​** **Scheletul proiectului:​**
  
-setup(): am initializat lcd-ul, sd card reader-ul si rfid-ul. Am setat pinii pentru servo motor si pentru buzzer. Am afisat un mesaj de informare, ca trebuie asteptate 3 beep-uri. Am setat un delay pentru a astepta sa se incalzeasca senzorul de alcool. Dupa delay am folosit functia tone() pentru a reda 3 sunete, pentru a alerta utilizatorul ca senzorul este gata. +**setup():** am initializat lcd-ul, sd card reader-ul si rfid-ul. Am setat pinii pentru servo motor si pentru buzzer. Am afisat un mesaj de informare, ca trebuie asteptate 3 beep-uri. Am setat un delay pentru a astepta sa se incalzeasca senzorul de alcool. Dupa delay am folosit functia tone() pentru a reda 3 sunete, pentru a alerta utilizatorul ca senzorul este gata. 
  
-loop(): am folosit functia PICC_IsNewCardPresent() pentru a detecta aparitia unei cartele RFID. Cu ajutorul PICC_ReadCardSerial() este citita valoarea cartelei. Daca este egala cu o anumita valoare (cunoscuta),​ afisez "Hello Marian"​ si varsta random de 22 de ani. (Marian e ales arbitrar) Ulterior actualizez lcd-ul si apelez functia performBreathalyzerTest(). Am incercat sa folosesc functii pentru fiecare componenta pentru un coding style mai bun. Functia foloseste analogRead() si citeste valoarea de la senzorul de alcool. Aici intervine logica explicata in **calibrarea elementelor de senzoristica**. Dupa intoarcerea rezultatului functiei, se apeleaza saveDataToSD() care verifica initializarea cardului SD si folosind SD.open() obtine un dataFile, pe care apeleaza metoda print() si println() pentru a scrie concentratia de alcool si UID-ul soferului in fisier. Dupa salvarea rezultatului,​ daca valoarea a fost zero atunci apelez functia servoSpin(),​ care folosind 2 for uri realizeaza 10 miscari ale servo motorului. In schimb, daca valoarea este pozitiva, atunci afisez un mesaj si pun un delay de 2 minute, care folosind un while afiseaza live cat a mai ramas.+**loop():** am folosit functia PICC_IsNewCardPresent() pentru a detecta aparitia unei cartele RFID. Cu ajutorul PICC_ReadCardSerial() este citita valoarea cartelei. Daca este egala cu o anumita valoare (cunoscuta),​ afisez "Hello Marian"​ si varsta random de 22 de ani. (Marian e ales arbitrar) Ulterior actualizez lcd-ul si apelez functia performBreathalyzerTest(). Am incercat sa folosesc functii pentru fiecare componenta pentru un coding style mai bun. Functia foloseste analogRead() si citeste valoarea de la senzorul de alcool. Aici intervine logica explicata in **calibrarea elementelor de senzoristica**. Dupa intoarcerea rezultatului functiei, se apeleaza saveDataToSD() care verifica initializarea cardului SD si folosind SD.open() obtine un dataFile, pe care apeleaza metoda print() si println() pentru a scrie concentratia de alcool si UID-ul soferului in fisier. Dupa salvarea rezultatului,​ daca valoarea a fost zero atunci apelez functia servoSpin(),​ care folosind 2 for uri realizeaza 10 miscari ale servo motorului. In schimb, daca valoarea este pozitiva, atunci afisez un mesaj si pun un delay de 2 minute, care folosind un while afiseaza live cat a mai ramas.
  
 **Calibrarea elementelor de senzoristica:​** **Calibrarea elementelor de senzoristica:​**
 +
 +Ideea mea a fost sa iau o valoare de baza, senzorul depinde si de camera in care te afli, poluarea din ea, pentru ca el nu analizeaza strict alcoolul. Astfel, salvez valoarea intiala si apoi intr-un while extrag valori. Daca diferenta este mai mare de un prag intre cele doua (pragul setat este de 100) atunci inseamna ca e alcool detectat.
 +
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
Line 121: Line 124:
 </​note>​ </​note>​
 Video proiect: https://​www.youtube.com/​watch?​v=3NGuXG7dtdw&​ab_channel=OnelAlexandruGabriel Video proiect: https://​www.youtube.com/​watch?​v=3NGuXG7dtdw&​ab_channel=OnelAlexandruGabriel
 +Video proiect final: https://​youtu.be/​h2ZpldwdIC8
 ===== Concluzii ===== ===== Concluzii =====
 Probleme intalnite: Probleme intalnite:
Line 126: Line 130:
   *=> M-am chinuit cu prima componenta pusa, lcd-ul are pe spate un potentiometru si a trebuit sa il setez cu surubelnita. Problema a fost ca nu stiam ca e de la asta, a durat ceva sa caut pe net.   *=> M-am chinuit cu prima componenta pusa, lcd-ul are pe spate un potentiometru si a trebuit sa il setez cu surubelnita. Problema a fost ca nu stiam ca e de la asta, a durat ceva sa caut pe net.
   *=> Am mai avut problema cand am conectat si RFID-ul si SD card reader-ul. Cand alegi componentele proiectului,​ este bine sa verifici cum stai cu pinii inainte, pentru a nu fi nevoie sa multiplexezi.   *=> Am mai avut problema cand am conectat si RFID-ul si SD card reader-ul. Cand alegi componentele proiectului,​ este bine sa verifici cum stai cu pinii inainte, pentru a nu fi nevoie sa multiplexezi.
-===== Download =====+  *=> Trebuie sa gasesti adresa lcd-ului, important de stiut daca nu iti merge din prima.
  
-<note warning>​ +===== Download =====
-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>​ 
 +Codul se poate descarca ​de mai jos.
 </​note>​ </​note>​
  
 +{{:​pm:​prj2024:​avaduva:​proiect_pm_onel_alexandru_332cb.zip|}}
 ===== Jurnal ===== ===== Jurnal =====
  
Line 139: Line 144:
 Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
 </​note>​ </​note>​
 +
 +M-am incadrat in toate deadline-urile la timp. Initial, cand aveam ideea deja lucram la proiect si a fost gata inainte de deadline hard si soft. Ulterior, m-am ocupat de aranjarea site-ului de pe ocw.
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
Line 145: Line 152:
 Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.
 </​note>​ </​note>​
 +Resurse hardware:
 +  *https://​forum.arduino.cc/​t/​sd-card-and-rfid-not-working-together-spi-conflict/​995287/​6
 +  *https://​www.instructables.com/​Arduino-Wiring-and-Programming-of-RFID-Sensor/​
 +  *https://​www.instructables.com/​Micro-SD-Card-Tutorial/​
 +  *https://​projecthub.arduino.cc/​arduino_uno_guy/​i2c-liquid-crystal-displays-5eb615
 +
 +Resurse software:
 +  *https://​www.arduino.cc/​reference/​en/​libraries/​liquidcrystal/​
 +  *https://​www.arduino.cc/​reference/​en/​libraries/​mfrc522/​
 +  *https://​www.arduino.cc/​reference/​en/​libraries/​sd/​
 +
 +Laboratoare:​
 +  *https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab0-2023
 +  *https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab5-2023-2024
 +  *https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2023-2024
 +  *https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023-2024
  
 <​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/prj2024/avaduva/alexandru.onel0512.1716498364.txt.gz · Last modified: 2024/05/24 00:06 by alexandru.onel0512
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