Sistem de semaforizare

Nume: Mitroi Mihnea-Cristian
Grupa: 331CA

Introducere

Proiectul constă în realizarea unui sistem de semaforizare pentru o intersecție în cruce, ce are două direcții de circulație pentru mașini, fiecare fiind prevăzută cu o trecere pentru pietoni. Pietonii au opțiunea de a apăsa un buton pentru a semnaliza faptul că doresc să treacă, micșorand timpul de așteptare. Scopul proiectului este să asigure o circulație cât mai eficientă, atât pentru mașini prin fluidizarea traficului, cât și pentru pietoni prin eliminarea timpului de așteptare atunci când acest lucru este posibil.

Descriere generală

Pentru fiecare direcție de mers voi avea câte o plăcuță Arduino Uno ce va comanda un semafor pentru mașini (verde, galben, roșu) și un semafor pentru pietoni (verde, roșu), ce vor controla trecerea mașinilor și a pietonilor pe această direcție. Cele două plăcuțe vor comunica între ele pentru a sincroniza trecerea mașinilor în cele două direcții de mers.

Sistemul rulează în două moduri, ce sunt setate pe baza informațiilor oferite de un senzor de lumină:

  • Mod de zi (mașinile trec atunci când butonul pentru pietoni nu este apăsat)
  • Mod de noapte (semafoarele pentru mașini afișează galben intermitent iar cele pentru pietoni sunt oprite)

Atunci când un pieton apasă butonul pentru a trece, daca semaforul său indică culoarea rosie, atunci semaforul pentru mașini se face roșu, iar cel pentru pietoni se face verde. Semafoarele ce controlează fluxul celeilalte direcții se vor schimba în mod opus, cel pentru mașini făcându-se verde, iar cel pentru pietoni roșu, facilitând trecerea mașinilor și oprind trecerea pietonilor. După apăsarea butonului pietonii vor avea un timp de așteptare pâna când vor putea apăsa din nou butonul.

În lipsa pietonilor, semafoarele permit trecerea mașinilor într-o direcție pe o anumită perioadă, iar apoi pe cealaltă direcție.

Schema bloc

Hardware Design

Listă piese:

  • 2 x Arduino Uno
  • 2 x Breadboard
  • 2 x Buton
  • 4 x LED rosu
  • 2 x LED galben
  • 4 x LED verde
  • 1 x Senzor lumina Brick

Schema electrică

Schemă Tinkercad

Software Design

Mediul de dezvoltare folosit în realizarea proiectului: Arduino IDE.

Descrierea codului aplicaţiei (firmware)

void setup() - inițializează culorile LED-urilor în starea inițială, apelează funcțiile de configurare pentru întreruperi, timer și ADC și configurează magistrala serială.

  • void configureInterrupt0() - configurează întreruperea externă 0 pentru apăsarea butonului conectat la PD2;
  • void configureADC() - configurează citirea analogică de pe PA0;
  • void configureTimer1() - configurează Timer-ul 1 să genereze o întrerupere la 0.5s;
  • Serial.begin() - configurează comunicarea pe magistrala serială cu baud-rate 9600;
  • ISR(INT0_vect) - întrerupere generată la apăsarea butonului conectat la PD2 ce facilitează trecerea pietonului care a apăsat butonul;
  • ISR(TIMER1_COMPA_vect) - întrerupere generată de Timer-ul 1 care incrementează contorul de timp;

void loop() - verifică daca valorea luminozității permite trecerea în modul de noapte, altfel implementează logica unui automat finit cu stări ce realizează tranziții la momente de timp predefinite. Stările celor două semafoare sunt în complementaritate (atunci când un semafor este în prima parte a ciclului de tranziții, cel de-al doilea este în partea a doua, iar apoi rolurile se inversează).

  • uint16_t analogAdcRead() - citește valoarea luminozității (valoare analogică între 0 și 1024) de pe PA0;
  • void greenYellow(), yellowRed(), pedRedGreen(), pedGreenRed(), redYellow(), yellowGreen() - funcții ce realizază trecerea sistemului dintr-o stare în alta;
  • Serial.available(), Serial.read(), Serial.write() - funcții utilizate pentru a realiza comunicarea și sincronizarea dintre cele două plăcuțe Arduino pe magistrala serială;

Rezultate Obţinute

Concluzii

Cred că a fost o experiență plăcută și foarte utilă, mai ales că a fost primul meu proiect de hardware. A fost destul de dificil să fac ca întregul sistem să se comporte în cel mai realist mod posibil, dar în final sunt mulțumit de ceea ce am obținut.

Download

Jurnal

  • 04.05 - Crearea paginii de proiect și scrierea documentației (M1)
  • 17.05 - Adăugare Hardware Design (M2)
  • 28.05 - Adăugare Software Design (M3)

Bibliografie/Resurse

pm/prj2023/apredescu/17.txt · Last modified: 2023/05/28 13:14 by mihnea.mitroi
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