Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:apredescu:17 [2023/05/04 13:26]
mihnea.mitroi
pm:prj2023:apredescu:17 [2023/05/28 13:14] (current)
mihnea.mitroi
Line 1: Line 1:
 ====== Sistem de semaforizare ====== ====== Sistem de semaforizare ======
 +
 +<note tip>​**Nume:​** Mitroi Mihnea-Cristian \\ **Grupa:** 331CA</​note>​
 +
 ===== Introducere ===== ===== Introducere =====
  
-<note tip> +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. 
-Prezentarea pe scurt a proiectului vostru: +
-  * ce face +
-  * care este scopul lui +
-  * care a fost ideea de la care aţi pornit +
-  * de ce credeţi ​că este util pentru ​alţii şi pentru ​voi +
-</​note>​+
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +Pentru fiecare direcție de mers voi avea câte o plăcuță Arduino Uno ce va comanda un semafor pentru mașini (verdegalben, roșu) ș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.
-O schemă bloc cu toate modulele proiectului vostruatât software cât şhardware însoţită de o descriere a acestora precum şi a modului ​în care interacţionează.+
  
-Exemplu ​de schemă blochttp://www.robs-projects.com/​mp3proj/​newplayer.html +Sistemul rulează în două moduri, ce sunt setate pe baza informațiilor oferite de un senzor ​de lumină: 
-</​note>​+  * 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 verdeSemafoarele 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 pietonilorDupă 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 === 
 +{{ :​pm:​prj2023:​apredescu:​schema_bloc_semafor.png?​600 |}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +Listă piese
-Aici puneţi tot ce ţine de hardware design+  * 2 x Arduino Uno 
-  * listă de piese +  * 2 x Breadboard 
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +  * 2 x Buton 
-  * diagrame de semnal ​ +  * 4 x LED rosu 
-  * rezultatele simulării +  * 2 x LED galben 
-</​note>​+  * 4 x LED verde 
 +  * 1 x Senzor lumina Brick 
 + 
 +=== Schema electrică === 
 +{{ :​pm:​prj2023:​apredescu:​schema_electrica_eagle_semafor.png?​600 |}} 
 + 
 +=== Schemă Tinkercad=== 
 +{{ :​pm:​prj2023:​apredescu:​schema_electrica_semafor.png?​600 |}}
  
 ===== Software Design ===== ===== Software Design =====
  
 +Mediul de dezvoltare folosit în realizarea proiectului:​ Arduino IDE.
  
-<note tip> +=== Descrierea codului aplicaţiei (firmware) ​===
-Descrierea codului aplicaţiei (firmware)+
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
 +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 ===== ===== Rezultate Obţinute =====
  
-<note tip+<html
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+  <​iframe  
-</note>+    src="​https://​www.youtube.com/​embed/​q9DNmfMmjqE"​ 
 +    title="​YouTube video pl{{:​pm:​prj2023:​apredescu:​surse_sistem_semaforizare.zip|https://​ocw.cs.pub.ro/​courses/​lib/​images/​toolbar/​linkextern.png}}ayer"​  
 +    frameborder="​0"​  
 +    allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture;​ web-share"​  
 +    allowfullscreen 
 +    style="​aspect-ratio:​ 16/9; width: 100%;"​ 
 +  ></​iframe>​ 
 +</html>
  
 ===== Concluzii ===== ===== 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 ===== ===== Download =====
- +{{:pm:prj2023:apredescu:surse_sistem_semaforizare.zip|Surse sistem semaforizare}}
-<note warning>​ +
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +
- +
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. +
-</​note>​+
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +  * 04.05 - Crearea paginii de proiect ​și scrierea documentației (M1) 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +  * 17.05 - Adăugare Hardware Design (M2) 
-</​note>​+  * 28.05 - Adăugare Software Design (M3)
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +Datasheet ATmega328P: https://​ocw.cs.pub.ro/​courses/​_media/​pm/​atmel-7810-automotive-microcontrollers-atmega328p_datasheet.pdf 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+ 
-</note>+Biblioteca Serial: https://​www.arduino.cc/​reference/​en/​language/​functions/​communication/​serial/
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2023/apredescu/17.1683196016.txt.gz · Last modified: 2023/05/04 13:26 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