Bariera parcare institutie cu deschidere manunala si inchidere automata
Introducere
Prezentarea pe scurt a proiectului vostru:
Proiectul consta intr-o mini bariera care se deschide prin intermediul unui buton(asemanator celei de la Politehnica, dupa ce s-a platit taxa) si se inchide automat dupa ce detecteaza ca vehiculul in cauza a trecut sau un anumit timp a trecut si nici un vehicul nu este in dreptul senzorului. Bariera are de asemenea un LED care simbolizeaza daca se permite sau nu trecerea.
Scopul de a implementa o automatizare eficienta pentru a asigura securitatea institutiilor publice si private.
Sursa de inspiratie: internet, proiecte anterioare
Este nevoie ca toate institutiile pubice sa aiba o masura de securitate pentru ca angajatii sa aiba unde parca si sa nu fie locurile ocupate de catre persoane straine, lucru mai ales necesar in Bucuresti.
Descriere generală
Proiectul este un micro-controller Arduino, care functioneaza astfel: Pentru deschiderea barierei, trebuie apasat butonul, iar pentru inchidere, este folosit un senzor care detecteaza daca masina a trecut deja de bariera / a trecut deja o limita de timp si nici o masina nu se afla in fata barierei, lucruri care se realizeaza prin intermediul unui servo-motor. Avem un LED, care este aprins pe verde cand bariera este ridicata, galben cand bariera este in ridicare, rosu cand bariera este inchisa.
Schema bloc
Hardware Design
Lista piese:
Placa de Dezvoltare Compatibila cu Arduino UNO R3 (ATmega328p + ATmega16u2)
Kit Breadboard HQ830 cu Fire și Sursă
Micro Servomotor SG90 90°
Senzor ultrasonic HC-SR04
4 Rezistente
Butoane
Led RGB
Schema Electrica
Schematic
Hardware Setup
Software Design
Descrierea codului aplicaţiei (firmware):
Mediul de dezvoltare folosit a fost Arduino IDE + simulari anterioare in TinkerCad pentru a asigura corectitudinea codului inainte de a testa manual pe cablajul realizat de mine.
Am folosit o singura librarie third party, pentru lucrul cu servomotorul, <servo.h>
Algoritmi si functii folosite: Logica principala a programului se afla in functiile `setup()` `loop()`. In functia de setup initializez toti pinii de input(butonul, care este input de PULL_UP, la fel si pin-ul pentru echo de la servomotor) si cele de output(led-urile, trigger pin-ul servomotorului). In setup de asemenea setez intreruperea folosita de buton prin ISR si initializez servomotorul. By default, led-ul rosu este pornit, deoarece la inceput bariera este coborata. In functia de loop, la inceput, verific permanent daca s-a activat intreruperea butonului, caz in care, daca bariera este coborata, setez led-ul pe galben prin intermediul GPIO-ului si urc bariera, LED-ul trecand pe verde. Daca aceasta era deja ridicata, resetez timpul la care s-a detectat masina(dupa ce a trecut masina de senzor se asteapta 3 secunde pana la coborarea barierei, se reseteaza acest timp). Daca bariera este ridicata, se verifica daca a trecut masina de senzor, dupa se asteapta 3 secunde, iar dupa trecerea acestora se verifica daca masina mai este in dreptul senzorului sau a trecut. Daca se respecta toate conditiile, LED-ul trece pe galben si bariera este coborata. Functia `checkObjectDetected()` verifica daca un obiect(in cazul nostru, masina RC) se afla in dreptul senzorului. Prima data, se seteaza trigpin-ul pe low pentru 2ms si apoi se citeste rezultatul echoPin. Am folosit urmatoarea formula de calcul a distantei: dist = duration * 0.034 / 2. Daca distanta < 10, se verifica daca obiectul se afla persistent in fata pentru 10 semnale de ceas in fata senzorului, caz in care se returneaza 1. Daca distanta este 0(bug), se returneaza 0, iar daca este >= 10 se returneaza -1. Pentru setarea culorii led-urilor m-am folosit de functia `setColor()`, in care am facut analogWrite pe pini pentru fiecare culoare.
Rezultate Obţinute
Bariera este functionala, demo-ul va fi prezentat la PM fair.
Concluzii
Proiectul a fost foarte interesant, printre cele mai interesante din facultate, am invatat sa lucrez cu Arduino si cum sa fac un cablaj electric corect.
Download
Jurnal
5 aprilie: selectare proiect
2 mai: finalizare documentatie initiala
3 mai: cumparare piese
15 mai: finalizare lipire
20 mai: mici probleme cu legarea initiala a firelor, mutarea intr-o singura parte a breadboard-ului
22 mai: finalizare cod, probleme cu senzorul
23 mai: proiect 100% functional
Bibliografie/Resurse