Table of Contents

VENDING MACHINE

Introducere

Nume: Dumitrașcu Mihaela
Grupa: 332AB

Proiectul presupune construirea unui automat de vânzare automatizată a băuturilor răcoritoare. Acesta dispune de o interfaţă cu utilizatorul alcătuită dintr-un ecran pe care sunt afişate opţiunile de produse. Selectarea băuturii dorite se face prin intermediul unei tastaturi. Plata va putea fi făcută asemănător plăţii cu cardul contactless.

Utilizatorul selectează băutura pe care o doreşte conform informaţiilor de pe ecran, după care efectuează plata cu cardul. În urma aprobării plăţii se activează motorul corespunzător băuturii selectate; astfel, aceasta este împinsă spre tava de la baza automatului. În cazul în care clientul selectează o băutură care nu este în stoc sau are fonduri insuficiente pe card, este anunţat printr-un mesaj afişat pe LCD.

Pentru aprovizionarea automatului se apasă pe tasta 0, apoi se selectează băutura ce urmează a fi adăugată, iar motorul corespunzător se va roti în sens invers. La finalizarea aprovizionării se apasă din nou tasta 0 şi automatul este pregătit pentru un nou utilizator.

Am ales acest proiect deoarece am căutat o provocare în ceea ce privește partea hardware, motiv pentru care am folosit 2 microcontrollere ce comunică prin UART și am renunțat la placa Arduino Uno, realizând montajul pe o plăcuță de prototipare. În plus, având în vedere numărul mare de automate de acest tip care nu funcționează corect, mi s-a părut un experiment bun să testez dacă pot face unul în care nu se blochează produsele.

Descriere generală

Schemă bloc software
Schemă bloc hardware

Hardware Design

Listă de componente:

Schema electrică
schema_electrica_vending_machine.pdf

Software Design

Medii de dezvoltare:

Biblioteci utilizate:

Surse şi funcţii implementate:
La unul dintre microcontrollere sunt conectate LCD-ul, RFID Reader-ul și tastatura. Logica este implementată într-un switch case în funcție de tasta apăsată, deoarece fiecare determină altă acțiune în continuare.


Instrucțiunile afișate sunt diferite în funcție de scenariul de funcționare (de exemplu, refill activat sau nu ^)


Pentru validarea cardului ^ se verifică dacă a fost apropiat în maxim 10 secunde, dacă se poate citi.

Dacă verificările menționate anterior sunt trecute se citește ID-ul și se compară cu singurul ID care permite continuarea funcționării ^.


În funcție de scenariul de funcționare, selectat anterior prin apăsarea sau nu a tastei 0, fie se transmite mesaj de refill, fie de vend către celălalt microcontroller, actualizându-se stocul de fiecare dată.
Dacă se livrează băutura se verifică soldul și dacă plata a putut fi efectuată ^.
Pentru microcontroller-ul ce controlează motoarele, întreaga logică este bazată pe un switch case în funcție de mesajul primit prin UART de la celălalt microcontroller (prin funcția chooseAction menționată mai sus).
Se verifică dacă pe serială s-a primit un mesaj, iar dacă da, în funcție de acesta este apelată funcția void defineRotation(byte highTerminal, byte lowTerminal) cu anumiți parametri astfel încât să se activeze motorul potrivit în sensul de rotație corespunzător.

Rezultate Obţinute

Rezultatele obținute sunt foarte bune, întrucât am reușit să implementez toate funcționalitățile enunțate inițial și, în urma testelor făcute, pot spune că cea mai mare provocare, anume să nu se mai blocheze produsele în interior mai ales după ce plata a fost făcută, a fost depășită.

Concluzii

Automatul funcționează conform target-urilor setate inițial. Totuși, există și câteva îmbunătățiri ulterioare pe care le-aș putea aduce, precum:

Download

resurse_dumitrascumihaela_332ab.zip

Bibliografie/Resurse

Surse de inspirație:
- https://www.youtube.com/watch?v=BHQBsswUeT0, accesat la 07.03.2023
- https://www.youtube.com/watch?v=Ou-VgY3DKlQ, accesat la 07.03.2023
- https://www.youtube.com/watch?v=-gdm71P1k9c, accesat la 07.03.2023
- https://www.youtube.com/watch?v=7gW1hmYqdwo, accesat la 07.03.2023

Resurse software:
- https://arduinogetstarted.com/tutorials/arduino-keypad, accesat la 20.04.2023
- https://www.arduino.cc/reference/en/language/functions/communication/serial/read/, accesat la 25.04.2023
- https://www.electronicshub.org/arduino-rc522-rfid-module-based-access-control-system/#Code, accesat la 27.04.2023
- https://forum.arduino.cc/t/rfid-reader-mfrc-522-uid-vs-picc/261212, accesat la 30.04.2023

Resurse hardware:
- https://www.circuito.io/blog/arduino-uno-pinout/, accesat la 15.04.2023
- http://electronoobs.com/eng_arduino_tut31_sch3.php, accesat la 18.04.2023

Export to PDF