Differences

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

Link to this comparison view

pm:prj2024:mdinica:iulia.chesches [2024/05/13 15:38]
iulia.chesches
pm:prj2024:mdinica:iulia.chesches [2024/05/27 13:51] (current)
iulia.chesches [Rezultate Obţinute]
Line 35: Line 35:
   * Mini Breadboard https://​www.optimusdigital.ro/​ro/​prototipare-breadboard-uri/​244-mini-breadboard-colorat.html   * Mini Breadboard https://​www.optimusdigital.ro/​ro/​prototipare-breadboard-uri/​244-mini-breadboard-colorat.html
   * Fire Dupont https://​cleste.ro/​10xfire-dupont-mama-tata-20cm.html   * Fire Dupont https://​cleste.ro/​10xfire-dupont-mama-tata-20cm.html
 +  * Baterie 9V https://​www.bricodepot.ro/​electrice/​lanterne-si-baterii/​imported-product-101228926.html
 +  * Fir pentru baterie https://​www.optimusdigital.ro/​ro/​fire-fire-mufate/​896-fir-pentru-baterie-de-9v.html
  
 ==== Conexiunea pinilor ==== ==== Conexiunea pinilor ====
Line 49: Line 51:
  
  
-**Motorul servo SG90** este folosit pentru mișcarea ​perilor ​rotative. Controlul este realizat cu ajutorul unui semnal de tip PWM. Pinii care pot genera acest tip de semnal de pe o placă de dezvoltare Arduino sunt 3, 5, 7, 9, 10, 11, A0 - A5, dintre care am ales să folosesc pinul 9.+**Motorul servo SG90** este folosit pentru mișcarea ​periilor ​rotative. Controlul este realizat cu ajutorul unui semnal de tip PWM. Pinii care pot genera acest tip de semnal de pe o placă de dezvoltare Arduino sunt 3, 5, 7, 9, 10, 11, A0 - A5, dintre care am ales să folosesc pinul 9.
  
 Conexiunile pinilor pentru motorul servo SG90: Conexiunile pinilor pentru motorul servo SG90:
Line 84: Line 86:
 {{:​pm:​prj2024:​mdinica:​carwashfusioniuliachesches.png?​700}} {{:​pm:​prj2024:​mdinica:​carwashfusioniuliachesches.png?​700}}
  
-==== Testare ​individuala ​====+==== Testare ​individuală ​====
  
-Inițial, am conectat fizic fiecare componentă individual și am testat funcționalitatea prin câte un mic exemplu. Am făcut motorul servo să se rotească timp de 2 secunde, am afișat textul ‘Hello World’ pe ecran, am configurat cele două tag-uri să aibă câte un utilizator și un credit de 200 de puncte și am afișat în Serial Monitor fiecare tastă apăsată a tastaturii ca să mă asigur că liniile și coloanele sunt conectate corespunzător.+Inițial, am conectat fizic fiecare componentă individual și am testat funcționalitatea prin câte un mic exemplu. Am făcut motorul servo să se rotească timp de 2 secunde, am afișat textul ‘HelloWorld!’ pe ecran, am configurat cele două tag-uri să aibă câte un utilizator și un credit de 200 de puncte și am afișat în Serial Monitor fiecare tastă apăsată a tastaturii ca să mă asigur că liniile și coloanele sunt conectate corespunzător. 
 + 
 +{{:​pm:​prj2024:​mdinica:​carwashdemolcdiuliachesches.jpeg?​600}}
  
 Mai apoi, le-am aranjat împreună astfel încât fiecare să poată folosi pinii necesari. Am avut nevoie și de un mini breadboard pentru a pune la dispoziție alimentarea de 5V de pe Arduino către toate componentele. Mai apoi, le-am aranjat împreună astfel încât fiecare să poată folosi pinii necesari. Am avut nevoie și de un mini breadboard pentru a pune la dispoziție alimentarea de 5V de pe Arduino către toate componentele.
  
 +{{:​pm:​prj2024:​mdinica:​carwashdemoiuliachesches.jpeg?​600}}
  
 ===== Software Design ===== ===== Software Design =====
  
 +==== Mediu de dezvoltare ====
  
-<note tip> +Arduino IDE
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+==== Librării și surse 3rd-party ​====
  
-<note tip> +  * Keypad.h: Am folosit biblioteca Keypad.h pentru gestionarea intrărilor de la tastatură. Aceasta oferă funcții utile pentru a detecta apăsările butoanelor pe o tastatură matriceală și pentru a interpreta valorile apăsate. 
-Care au fost rezultatele obţinute ​în urma realizării proiectului vostru+  * Wire.h: Bibliotecă standard ​în Arduino, folosită pentru a comunica cu dispozitive periferice care utilizează protocolul I2C
-</​note>​+  * LiquidCrystal_I2C.h:​ Aceasta simplifică utilizarea ecranului LCD cu interfață I2C, permițându-mi să comunic cu ușurință cu ecranul fără a fi nevoie să implementez manual protocolul I2C. 
 +  * Adafruit_PN532.h:​ Am folosit această bibliotecă pentru a comunica prin SPI cu modulul PN532. 
 +  * Servo.h: Pentru controlul motorului servo, am ales biblioteca Servo.h, pentru că permite poziționarea acestuia la un anumit unghi cu ușurință și precizie.
  
-===== Concluzii =====+Prin utilizarea acestor biblioteci, m-am folosit de resursele existente pentru a implementa funcționalitățile dorite în proiectul meu, economisind timp și beneficiind de funcționalități deja testate și bine documentate.
  
-===== Download =====+==== Algoritmi și structuri implementate ​====
  
-<note warning>​ +  * Citirea și maparea intrărilor de la keypad pentru selectarea unui program. 
-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 şcopiere automată ​pe uC crează întotdeauna o impresie bună ;-).+  * Afișarea mesajelor pe ecranul LCD. 
 +  * Autentificarea șcitirea datelor de pe un card Mifare Classic. 
 +  * Controlul unui motor servo pentru a simula mișcarea unui mecanism de spălare.
  
-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**. +==== Flow firmware ====
-</​note>​+
  
-===== Jurnal ​=====+Initial, utilizatorul este rugat să apese tasta * pentru a începe interacțiunea cu aparatul. 
 + 
 +Mai apoi, este așteptat să introducă numărul programului,​ urmat de tasta #. Momentan numărul introdus este numărul de secunde al programului și suma ce trebuie plătită, dar acest aspect poate fi customizat în viitor în funcție de fiecare spălătorie în parte. 
 + 
 +Clientul este așteptat să apropie cardul, iar dacă plata este efectuată cu succes, periile rotative încep să se rotească iar LCD-ul afișează numărul de secunde rămase până la finalizarea programului. În același timp, creditul de pe cardul de fidelitate al acestuia scade. 
 + 
 +După finalizarea programului,​ automatul revine la starea inițială de repaus. 
 + 
 +Flow-ul programului poate fi vizualizat și în următoarea diagramă:​ 
 + 
 +{{:​pm:​prj2024:​mdinica:​carwashflowchartiuliachesches.png?​200}} 
 + 
 +==== Optimizări ​==== 
 + 
 +Starea aplicației este gestionată utilizând variabile booleene: choose_program,​ pay, start_wash. La un moment dat de timp, maxim două dintre ele sunt active, ceea ce permite utilizatorului să treacă la următorul pas, dar și să rectifice anumite erori precum selectarea greșită a programului sau folosirea unui card cu fonduri insuficiente. De asemenea, evită busy waiting-ul, adică nu verifică dacă se detectează un card sau o apăsare de keypad decât când este momentul, și evită efectuarea unor acțiuni nedorite, precum selectarea unui alt program când unul este deja în execuție. 
 + 
 +==== Elemente de noutate ==== 
 + 
 +  * **Flexibilitatea și comoditatea utilizării**:​ Spălătoria automată integrată într-un lanț de benzinării oferă utilizatorilor flexibilitate și comoditate, permițându-le să își spele mașinile în orice moment, fără să fie restricționați de programul redus al spălătoriilor convenționale sau să depună efort la spălătoriile self-wash. 
 +  * **Sistem de plată inovator**: Utilizarea unui sistem de plată bazat pe puncte acumulate în urma alimentării autovehiculului,​ gestionate prin intermediul unui card de fidelitate. 
 +  * **Interacțiunea utilizatorului prin intermediul unui display**: Permite utilizatorilor să vadă instrucțiuni și opțiuni și să fie informați în timp real legat de starea programului de spălare. 
 +==== Elemente de laborator ==== 
 + 
 +Proiectul meu încorporează trei elemente principale din laborator: protocolul **SPI** pentru modulul RFID, protocolul **I2C** pentru display și **PWM** pentru servo motor. De asemenea, am folosit **UART** pentru comunicarea serială pentru debug și afișarea mesajelor în consola serială. 
 + 
 +===== Rezultate Obţinute ===== 
 + 
 +[[https://​youtu.be/​RFCjguDeOe4|Demo proiect]] 
 + 
 +{{:​pm:​prj2024:​mdinica:​finalpmautomaticcarwash.jpeg?​500}} 
 + 
 +===== Download ​=====
  
-<note tip> +[[https://​github.com/​cheschesiulia/automatic-car-wash|Github repo]]
-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 =====
  
-<​note>​ +  * https://​how2electronics.com/​interfacing-pn532-nfc-rfid-module-with-arduino/​ 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +  * https://​lastminuteengineers.com/​arduino-keypad-tutorial/#​google_vignette 
-</note>+  ​https://​docs.arduino.cc/​learn/​electronics/​servo-motors/​ 
 +  * https://​www.instructables.com/​How-to-Connect-I2C-Lcd-Display-to-Arduino-Uno/
  
 <​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/mdinica/iulia.chesches.1715603921.txt.gz · Last modified: 2024/05/13 15:38 by iulia.chesches
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