This is an old revision of the document!
Mini Barrier este un sistem automat de control al accesului, care detectează vehiculele care se apropie și acționeaza o barieră cu ajutorul unui servomotor. Utilizând un senzor ultrasonic, sistemul estimează distanța până la vehicul și decide automat dacă trebuie ridicată bariera. Pentru a permite și intervenția umană există și un buton care acționează manual bariera. Pe lângă acestea, un ecran LCD afișează distanța până la vehicul și contorizează numărul total de vehicule care au trecut prin sistem.
Scopul proiectului este de a simula un sistem inteligent de control al accesului vehiculelor similar celor întâlnite în parcări, complexe rezidențiale sau centre logistice. Proiectul urmărește automatizarea unui proces des întâlnit, oferind date statistice in timp real, utile pentru gestionarea traficului prin sistem.
Ideea proiectului a pornit de la observarea sistemelor moderne de acces auto și dorința de a aduce un plus de eficiență prin reducerea intervenției umane, păstrând o evidență a vehiculelor, dar și siguranța sistemului si a șoferilor prin senzorul ultrasonic.
Acest sistem este util deoarece oferă o soluție pentru automatizarea accesului auto în spații precum parcări private, curți, zone rezidențiale sau industriale. Prin automatizarea procesului de ridicare a barierei, se economisește timp, se reduc costurile cu personalul și se minimizează riscurile generate de erori umane. Ecranul LCD cu distanța și contorul de vehicule oferă un plus de transparență și control asupra traficului din zona respectivă.
Mini Barrier este compus din următoarele module principale care interacționează între ele pentru a asigura buna funcționare a sistemului:
Librării şi surse 3rd-party: LiquidCrystal_I2C.h
- pentru interfața I2C a LCD-ului
Algoritmi şi structuri: Structura sistemului este asemănătoare unui state machine cu 4 stări: IDLE
, CAR_IN
, CAR_OUT
și FULL
, determinate de distanța măsurată și starea butonului, tratat ca întrerupere externă. Controlul servomotorului se face prin generarea unui semnal PWM folosind Timer1, configurat in mod fast PWM cu TOP = ICR1.
Surse şi funcţii implementate:
setup()
- Inițializează toate perifericele și configurează Timer1 în mod Fast PWM (WGM13:0 = 14) cu TOP = ICR1 = 40000, pentru a genera un semnal PWM de 50 Hz pe pinul OC1A (pin 9), cu un prescaler de 8, potrivit pentru servomotorul SG90.setServoAngle(int angle)
- Primește un unghi între 0° și 180°, îl convertește într-un impuls PWM între 750 și 2300 µs, apoi setează valoarea în OCR1A.handleButtonPress()
- Activează rutina de întrerupere pentru buton setând flag-ul buttonPressed
.loop()
- Bucla principală.