This is an old revision of the document!
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 placuță 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 și care nu generează eroare din cauza cititorului de carduri, deși cardul este valid.
Descriere generală
Schemă bloc software
Schemă bloc hardware
Hardware Design
Listă de componente:
4 motoare de curent continuu, cu reductor 1:70 care pun în mişcare 4 spirale ce au rolul de a împinge dozele de suc spre tava de unde clientul le poate ridica; de asemenea, când sensul de rotaţie al motoarelor se schimbă, acestea faciltează aprovizionarea tonomatului
o tastatură 4×4 pentru selectarea uneia din cele 4 băuturi, dar şi pentru activarea opţiunii de aprovizionare
un LCD pe care sunt afişate opţiunile alături de numerele corespunzătoare (voi utiliza protocolul I2C pentru a limita numărul de pini utilizați)
un RFID reader împreună cu un card pentru simularea plăţii contactless
2 microcontrollere ATmega328P (varianta through-hole), întrucât unul singur nu ar fi avut suficienţi pini pentru a suporta toate componentele utilizate
2 cristale de cuarţ
polistiren + plexiglas + plăci de lemn pentru susținere
alimentator 12V ce se poate conecta la priză pentru alimentarea driverelor şi a microcontrollerelor
2 drivere pentru controlul motoarelor
un level shifter pentru tastatură
componente adiţionale de protecţie: rezistenţe, diode, siguranţe (250mA, 1A)
stabilizatoare de tensiune de 5V, 3V3
sursă în comutație 12V → 7V
amplificator operațional în montaj de comparator
Schema electrică
schema_electrica_vending_machine.pdf
Software Design
Medii de dezvoltare:
Arduino IDE - pentru scrierea codului pentru ambele microcontrollere
Microchip Studio - pentru setarea fuse bits
Kicad - pentru schema electrică
Biblioteci utilizate:
LiquidCrystal_I2C.h - pentru LCD-ul care comunică prin I2C
MFRC522.h (include SPI.h)- pentru RFID (Radio-Frequency Identification) Card Reader care comunică prin SPI
Keypad.h - pentru tastatura
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. Mesajele ce sunt afișate pe LCD sunt structurate în funcții, apelându-se cea potrivită pentru fiecare scenariu de funcționare în parte.
Pentru microcontroller-ul ce controlează motoarele, întreaga logică este bazată pe un switch case bazat pe mesajul primit prin UART de la celălalt microcontroller. Din mesajele transmise se poate determina atât motorul ce trebuie acționat, cât și sensul lui de rotație. Tot aici am implementat rutinele de tratare ale întreruperilor provenite de la buton și de la senzorul (fotorezistența) care semnalează căderea dozei.
Rezultate Obţinute
In episoadele viitoare
Concluzii
In episoadele viitoare
Download
In episoadele viitoare
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