Alexandra-Maria CALOTĂ (78372) - Simulator intersectie

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul presupune simularea unei intersectii semaforizate in cruce. Se vor desena drumurile si si vor fi plasate LED-uri in structuri de tip semafor. Semafoarele pentru masini vor fi reprezentare prin 3 LED-uri, rosu, galben si verde, iar cele de pietoni prin 2 LED-uri, rosu si verde. Va exista totodata si o fotorezistenta, prin care vom verifica daca exista masina la semafor, caz in care semaforul se va face verde dupa un numar de secunde. La fiecare semafor de pieton va exista de asemenea un buton, asemanator cu cele de la semafoarele din oras.

Pentru a se urmari functionarea intersectiei se vor folosi figurine HotWheels. Observatorul va putea modifica starea semafoarelor din functionarea de zi in functionarea de noapte (mod galben intermitent) prin apasarea unui buton.

Descriere generală

Butoanele vor fi apasate de pietonii care doresc sa traverseze strada. Acestia vor astepta un timp mai scurt sau mai lung, in functie cat timp a fost verde semaforul de la masini. Mai mult, in cazul in care nu se afla nicio masina in asteptare la semafor, fotorezistorul va detecta acest lucru. Semaforul masinilor se va face verde doar in cazul in care exista minim o masina care asteapta. Semaforul pietonilor se va face verde la 2 secunde dupa schimbarea culorii semaforului masinilor in rosu.

Hardware Design

Componenta Cantitate Pret/bucata Pret total Precizari
Placa de baza 1 8(placuta) + 40(componente) 48
Butoane 9 0.24 2.16
LED-uri rosii 15 0.29 4.35
LED-uri verzi 15 0.3 4.5
LED-uri galbene 15 0.35 5.25
Fire mama-mama 50 7 lei(set 10) + 15 lei (set 40) 22 Nu am avut nevoie de toate
Fire tata-tata 10 7 lei(set 10) 7 lei 7
Fotorezistente 6 3 18 Cumparate de pe roboromania
Rezistente LED-uri - 1k 3 0.2 0.6 Luate de la facultate
Rezistente fotorezistente - 10k 6 0.12 0.72
Cablu alimentare 1 3 3
Distanțieri 4 0.5 2
Plexiglas 1 8 8
Suport LED 25 0.3 7.5
Pret total proiect 133 lei

Fotorezistorii au fost conectati la porturile PA0..4, iar butoanele la porturile PB3..5.

Ledurile intersectiei au fost legate sub forma de matrice pentru a facilita aprinderea lor, dar si pentru a folosi mai putini pini. Am legat LED-urile astfel:

  • Semafoarele de masini si de pietoni fata in fata au avut legate in paralel LED-urile de aceeasi culoare. Astfel, in final, am obtinut 4 semafoare prin care vom controla intersectia.
  • Plusurile LED-urilor de aceeasi culoare au fost legate impreuna, in timp ce minusurile au fost legate impreuna pentru fiecare dintre cele 4 semafoare.
  • In final, am obtinut 3 linii si 4 coloane. Pe fiecare linie am legat cate o rezistenta de 10k.

Fiecare semafor de pietoni are butoane. Exista, in plus, un buton pentru a activa modul de noapte, adica galben intermitent, care va incepe dupa 3 flash-uri scurte ale tuturor semafoarelor.

Schema electrica a fost realizata in Eagle.

Software Design

Mediu de dezvoltare

Am folosit Atmel Studio 7.0 pentru a scrie proiectul si pentru a-l compila. Pentru a incarca proiectul pe placa am folosit HID bootloader.

Biblioteci

#include <avr/io.h>
#include <string.h>
#include <avr/interrupt.h>
#include <util/twi.h>
#include <util/delay.h>
#include <stdint.h>
#include <stdbool.h>

/**** Headere preluate din solutiile laboratorului 5 ***/
#include "i2c_master.h"
#include "vector.h"
#include "spi.h"
#include "usart.h"
#include "I2C_master.h"
#include "MPL3115A2.h"
#include "LSM9DS0.h"

/**** Header propriu, folosit pentru fotorezistori ****/
#include "light_sensors.h"

Algoritmul de functionare

Aceasta este algortimul de functionare normal, in cazul in care este minim o masina la fiecare semafor.

In cazul in care numarul este inegal, se va face verde acel semafor la care sunt mai multe masini. Acest lucru se va detecta prin masurarea luminii din sala si compararea ei cu lumina masurata la fiecare semafor de masina. Acest semafor va sta verde 8 secunde, dupa care se va verifica din nou numarul de masini sau daca a fost apasat butonul pentru pietoni de la celalalt set de semafoare.

Funcţii implementate

Am implementat functii care aprind o anumita culoare de la un anumit semafor, dar si functii care aprind aceeasi culoare de la toate semafoarele, pentru a le folosi atunci cand toate semafoarele dau 3 flash-uri scurte inainte de intermitent, dar si pentru a implementa functia de galben intermitent. Apoi am implementat functii care faciliteaza aprinderea pentru o pereche de semafoare o culoare.

Totodata, avem o functie care trateaza intreruperile provocate de butoane.

Pentru fotorezistori am folosit functiile implementate in solutia din laborator.

void IO_init();

void turnOnBlue(int color);
void turnOffBlue(int color);

void turnOnGrey(int color);
void turnOffGrey(int color);

void turnOnPurple(int color);
void turnOffPurple(int color);

void turnOnWhite(int color);
void turnOffWhite(int color);

void turnOnAllRed();
void turnOffAllRed();

void turnOnAllGreen();
void turnOffAllGreen();

void turnOnAllYellow();
void turnOffAllYellow();

void turnOnSemaphores(char *where, int color);
void turnOffSemaphores(char *where, int color);

void flashAll();

ISR(PCINT1_vect);

void intermitent();

void semaphore_cycle();

Rezultate Obţinute

Mai sus se poate observa Hardware-ul final, compus din 2 placi de plexiglas, cea de sub fiind transparenta pentru a se putea observa cu usurinta firele.

Model de functionare al intersectiei poate fi observat in urmatorul filmulet: Scurta demonstratie

Concluzii

A fost unul dintre proiectele la care am lucrat cu foarte multa placere. Initial am fost reticenta, deoarece acesta a fost primul proiect care a avut o parte de Hardware, dar pe parcursul saptamnilor in care am lucrat la el, a inceput sa imi placa, mai ales ca eu am fost cea care a ales proiectul la care urma sa lucrez.

Am intampinat mici dificultati la inceput, deoarece nu eram obisnuita cu folosirea LetCon-ului si nici cu legarea firelor si a rezistentelor intre ele.

In momentul in care am inceput sa implementez partea de Software, am descoperit ca unii dintre pinii de pe placuta nu functionau, fapt ce a dus la pierderea de foarte mult timp, deoarece initial am cautat bug-uri in cod.

Am cumparat destul de multe piese in plus, deoarece nu stiam exact de ce o sa am nevoie.

Download

Jurnal

  • 23 aprilie Tema proiectului, lista de piese și schema bloc
  • 6 mai Adaugare schema electrica a proiectului
  • 23 mai Actualizare lista de piese, schema electrica, software design, rezultate obținute, concluzii, download, resurse

Bibliografie/Resurse

Resurse Software

Resurse Hardware

Atmega 324 Datasheet Board Layout

  • Documentația în format PDF
pm/prj2018/abirlica/semafor123.txt · Last modified: 2021/04/14 17:07 (external edit)
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