Differences

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

Link to this comparison view

pm:prj2024:avaduva:alexandru.onel0512 [2024/05/23 23:05]
alexandru.onel0512 [Software Design]
pm:prj2024:avaduva:alexandru.onel0512 [2024/05/24 15:52] (current)
alexandru.onel0512 [Jurnal]
Line 106: Line 106:
   * Din laboratorul de SPI am folosit mai mult pentru partea hardware. Explicatiile oferite in conectarea mai multor dispozitive folosind SPI, mai precis **2.1 Conectarea mai multor dispozitive** a fost de ajutor, am gasit si pe internet aceiasi solutie. A fost util ca am mai lucrat cu cardul SD la laborator, acasa m-am descurcat relativ usor. (**Debugging enervant**, scoate cardul sd, baga cardul sd, laptopul n-are cititor sd, foloseste laptopul vechi).   * Din laboratorul de SPI am folosit mai mult pentru partea hardware. Explicatiile oferite in conectarea mai multor dispozitive folosind SPI, mai precis **2.1 Conectarea mai multor dispozitive** a fost de ajutor, am gasit si pe internet aceiasi solutie. A fost util ca am mai lucrat cu cardul SD la laborator, acasa m-am descurcat relativ usor. (**Debugging enervant**, scoate cardul sd, baga cardul sd, laptopul n-are cititor sd, foloseste laptopul vechi).
   * Din laboratorul de I2C am invatat modul în care dispozitivele master și slave comunică folosind doar două linii: SDA (linia de date) și SCL (linia de ceas). Aceasta informatie a fost utila, pentru a avea o minima intelegere despre cum libraria LiquidCrystal lucreaza in spate.   * Din laboratorul de I2C am invatat modul în care dispozitivele master și slave comunică folosind doar două linii: SDA (linia de date) și SCL (linia de ceas). Aceasta informatie a fost utila, pentru a avea o minima intelegere despre cum libraria LiquidCrystal lucreaza in spate.
 +
 +**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. 
 +
 +**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:​**
 +
 +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.
  
  
Line 114: 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:
 +
 +  *=> 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.
 +  *=> Trebuie sa gasesti adresa lcd-ului, important de stiut daca nu iti merge din prima.
  
 ===== Download ===== ===== Download =====
  
-<​note ​warning+<​note>​ 
-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ă ;-). +Codul se poate descarca ​de mai jos.
- +
-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>​ </​note>​
  
 +{{:​pm:​prj2024:​avaduva:​proiect_pm_onel_alexandru_332cb.zip|}}
 ===== Jurnal ===== ===== Jurnal =====
  
Line 129: 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 135: 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.1716494754.txt.gz · Last modified: 2024/05/23 23:05 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