Smart City of Vukovar - Our View of Smart Living

Smart City of Vukovar - Our View of Smart Living © GPL3+

This magnificent model offers a solution in a greater electricity saving, better use of a solar sun power, and reducing the traffic jams.

  • 2,058 views
  • 0 comments
  • 7 respects

Components and supplies

Necessary tools and machines

09507 01
Soldering iron (generic)

Apps and online services

About this project

Code

Smart parkingC/C++
#include <Servo.h>            // Dodaje biblioteku u program
#include <LiquidCrystal.h>

Servo rampa;                 // Stvara servo objekt koji upravlja servom

int izlaz = 0;               // Pin spojen na senzor na izlazu
int ulaz = 1;               // Pin spojen na senzor na ulazu

int spusteno = 177;          // Sputen poloaj rampe
int dignuto = 90;            // Dignut poloaj rampe

int kapacitet = 6;           // Kapacitet parkiralita
int  slobodnaMjesta = 6;     // Broj slobodnih mjesta(parkiralite je u poetku prazno)

const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;       // Inicijalizira biblioteku dodavajui potrebne pinove za LCD
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);                        // s pinom na koji je arduino spojen

byte znak[8] = {          // Stvara podatke za znak koji se ispisuje na
  B11011,                 // LCD-u a nije standardan alfanumeriki ()
  B01110,                 // Potrebno za ispisivanje poruke "Naalost, nema slobodnih mjesta"
  B00000,
  B11111,
  B00110,
  B01100,
  B11111,
};

void setup() {
  rampa.attach(9);                  // Spaja servo

  pinMode(izlaz, INPUT);            // Postavlja pinove senzora za ulaz i izlaz kao ulazne
  pinMode(ulaz, INPUT);
  rampa.write(spusteno);            // Postavlja rampu u sputen poloaj


  lcd.begin(16, 2);                 // Postavlja broj znakova i redova na LCD-u
  lcd.setCursor(2, 0);
  lcd.print("Super Mega");          // Ispisuje poruku na LCD
  lcd.setCursor(4, 1);
  lcd.print("PARKING");
  delay(2000);
  lcd.clear();

  lcd.createChar(0, znak);
  lcd.begin(16, 2);

}

void loop() {

  if (digitalRead(ulaz) == 0)
  {
    if (slobodnaMjesta != 0) {
      delay(500);
      slobodnaMjesta--;
      rampa.write(dignuto);
      lcd.print("Slobodna mjesta:");
      lcd.setCursor(5, 1);
      lcd.print(slobodnaMjesta);
      delay(3000);
      rampa.write(spusteno);
    } else {
      delay(500);
      lcd.print("Na");
      lcd.write(byte(0));
      lcd.print("alost, nema");
      lcd.setCursor(0, 1);
      lcd.print("slobodnih mjesta");
      delay(2000);
    }
  }
  if (digitalRead(izlaz) == 0)
  {
    if (slobodnaMjesta != kapacitet) {
      delay(500);
      slobodnaMjesta++;
      rampa.write(dignuto);
      lcd.print("Slobodna mjesta:");
      lcd.setCursor(5, 1);
      lcd.print(slobodnaMjesta);
      delay(3000);
      rampa.write(spusteno);
    }
  }
  lcd.clear();
}
Smart traffic lightsC/C++
int crvenoGlavna = 2;
int zutoGlavna = 1;
int zelenoGlavna = 0;

int crvenoSporedna = 5;
int zutoSporedna = 4;
int zelenoSporedna = 3;

int senzor1 = 6;
int senzor2 = 7;

void setup() {
  pinMode(crvenoGlavna, OUTPUT);
  pinMode(zutoGlavna, OUTPUT);
  pinMode(zelenoGlavna, OUTPUT);

  pinMode(crvenoSporedna, OUTPUT);
  pinMode(zutoSporedna, OUTPUT);
  pinMode(zelenoSporedna, OUTPUT);

  pinMode(senzor1, INPUT);
  pinMode(senzor2, INPUT);

  digitalWrite(zelenoGlavna, HIGH);    // Sva stanja moraju biti ukljuena jer su ledice spojene sa
  digitalWrite(crvenoGlavna, HIGH);    // zajednikom anodom te su tada LEDice iskljuene
  digitalWrite(zutoGlavna, HIGH);      // Stanje u programu je obrnuto od stanja LEDice

  digitalWrite(zelenoSporedna, HIGH);
  digitalWrite(crvenoSporedna, HIGH);
  digitalWrite(zutoSporedna, HIGH);

}

void loop() {

  if (digitalRead(senzor1) == LOW) {

    delay(500);
    semaforGlavna();         // Pokree petlju semafora.

  } else if (digitalRead(senzor2) == LOW) {

    delay(500);
    semaforGlavna();         // Pokree petlju semafora.

  } else if ((digitalRead(senzor1) && digitalRead(senzor2)) == HIGH) {

    digitalWrite(zelenoGlavna, LOW);          // Dok nema prometa na sporednoj cesti, semafor
    digitalWrite(crvenoSporedna, LOW);        // je stalno upaljen u korist glavne ceste
    digitalWrite(crvenoGlavna, HIGH);
    digitalWrite(zelenoGlavna, HIGH);
    digitalWrite(zutoGlavna, HIGH);
    digitalWrite(zutoSporedna, HIGH);

  }
}

void semaforGlavna() {         // Petlja semafora

  digitalWrite(crvenoGlavna, HIGH);
  digitalWrite(zutoGlavna, HIGH);
  digitalWrite(zelenoGlavna, HIGH);
  delay(1000);
  digitalWrite(zelenoGlavna, LOW);
  delay(1000);
  digitalWrite(zelenoGlavna, HIGH);
  delay(1000);
  digitalWrite(zelenoGlavna, LOW);
  delay(1000);
  digitalWrite(zelenoGlavna, HIGH);
  digitalWrite(zutoGlavna, LOW);
  delay(2000);
  digitalWrite(zutoGlavna, HIGH);
  digitalWrite(crvenoGlavna, LOW);
  delay(1000);
  digitalWrite(zutoSporedna, LOW);
  delay(3000);
  digitalWrite(zutoSporedna, HIGH);
  digitalWrite(zelenoSporedna, LOW);
  digitalWrite(crvenoSporedna, HIGH);
  delay(5000);
  digitalWrite(zelenoSporedna, HIGH);
  delay(1000);
  digitalWrite(zelenoSporedna, LOW);
  delay(1000);
  digitalWrite(zelenoSporedna, HIGH);
  digitalWrite(zutoSporedna, LOW);
  delay(3000);
  digitalWrite(zutoSporedna, HIGH);
  digitalWrite(crvenoSporedna, LOW);
  delay(1000);
  digitalWrite(zutoGlavna, LOW);
  delay(3000);
  digitalWrite(zutoGlavna, HIGH);

}
Smart city lightsC/C++
#include <FadeLed.h> //dodaje biblioteku za upravljanje LEDicama

FadeLed leds[5] = {3, 5, 6, 9, 10}; //dodaje pinove LEDica objektu "leds"

unsigned long millisLast; //varijabla millisLast

int resPin = A1; //definira pin fotootpornika
int resValue = 0; //varijabla za pohranjivanje vrijednosti fotootpornika
int sensPin1 = 2; //definiranje pinova infracrvenih senzora
int sensPin2 = 4;
int sensPin3 = 7;
int sensPin4 = 8;
int sensPin5 = 12;

void setup() { //inicijalne postavke za petlju

  pinMode(sensPin1, INPUT); //definira pinove infracrvenih senzora kao ulazne
  pinMode(sensPin2, INPUT);
  pinMode(sensPin3, INPUT);
  pinMode(sensPin4, INPUT);
  pinMode(sensPin5, INPUT);

  leds[0].setTime(2000); //postavlja vrijeme mijenjanja intenziteta svjetla
  leds[1].setTime(2000); //od 0% do 100% na 2 sekunde (relativno brzo!)
  leds[2].setTime(2000);
  leds[3].setTime(2000);
  leds[4].setTime(2000);

}

void prog1() { //prva petlja programa
  
  if (digitalRead(sensPin1) == LOW) { //provjerava ako je senzor elektromagnetski stimuliran

    leds[0].set(100); //postepeno postavlja jainu LEDice na 100%

  } else { //funkcija "inae"

    leds[0].set(10); //postepeno postavlja jainu LEDice na 10%

  }
}

void prog2() { //druga petlja programa, sve petlje su jednake, ali definiraju druge senzore i LEDice
  
  if (digitalRead(sensPin2) == LOW) {

    leds[1].set(100);

  } else {

    leds[1].set(10);

  }
}

void prog3() { //trea petlja
  
  if (digitalRead(sensPin3) == LOW) {

    leds[2].set(100);

  } else {

    leds[2].set(10);

  }
}

void prog4() { //etvrta petlja
  
  if (digitalRead(sensPin4) == LOW) {

    leds[3].set(100);

  } else {

    leds[3].set(10);

  }
}

void prog5() { //peta petlja
  
  if (digitalRead(sensPin5) == LOW) {

    leds[4].set(100);

  } else {

    leds[4].set(10);
  }
}

void loop() { //glavna petlja (najbolja petlja hehe)

  FadeLed::update(); //osvjeava stanje LEDica

  resValue = analogRead(resPin); //definira varijablu kao vrijednost fotootpornika

  if (resValue < 50) { //provjerava je li dan ili no

    prog1(); //ako je no poziva ostale petlje
    prog2();
    prog3();
    prog4();
    prog5();

  } else { //funkcija "inae"

    leds[0].set(0); //ako je dan LEDice su ugaene
    leds[1].set(0);
    leds[2].set(0);
    leds[3].set(0);
    leds[4].set(0);

  }
} //to je to (hehe)
Smart solar Sun trackerC/C++
#include <Servo.h> 
 
Servo tragac;  // Stvara servo objekt koji uravlja servom

int istokPin = 1;  // Dodaje analogne pinove koji su spojeni na senzor svijetla
int zapadPin = 2;

int istokVal = 0;   // Stvara varijable koje spremaju vrijednosti senzora
int zapadVal = 0;

int greska = 0;
int kalibracija = 204;  // Kalibracijski pomak koji postavlja greku na nula kada oba senzora primaju jednaku koliinu svijetla
int tragacPoz = 90;    // Stvara varijablu koja sprema poziciju serva
 
void setup() 
{ 
  tragac.attach(11);  // Dodaje servu objekt koji je spojen na pin 11
} 
 
 
void loop() 
{ 
  istokVal = kalibracija + analogRead(istokPin);    // ita vrijednosti istonog i zapadnog senzora
  zapadVal = analogRead(zapadPin);
  if(istokVal<350 && zapadVal<350)  // Provjerava ako oba senzora primaju malo svijetla, mrak je
  {
    while(tragacPoz<=160)  // Pomie traga u krajnju istonu poziciju da doeka zoru
    {
      tragacPoz++;
      tragac.write(tragacPoz);
      delay(100);
    }
  }
  greska = istokVal - zapadVal;          // Odreuje razliku izmeu dva senzora
  if(greska>15)        // Ako je greka pozitivna i vea od 15 pomie traga istono
  {
    if(tragacPoz<=160)  // Potvruje da traga nije u krajnjoj istonoj poziciji
    {
      tragacPoz++;
      tragac.write(tragacPoz);  // Pomie traga istono
    }
  }
  else if(greska<-15)  // Ako je greka negativna i manja od -15 pomie traga zapadno
  {
    if(tragacPoz>20)  // Potvruje da traga nije u krajnjoj zapadnoj poziciji
    {
      tragacPoz--;
      tragac.write(tragacPoz);  // Pomie traga zapadno
    }
  }
  delay(100);
} 

Schematics

Assembling
Sastavljanje makete 2 zqcdpaqfty
Smart city lights
Smart city lights schematic page 0001 (2) 7amotovp0e
Smart traffic lights
Smart traffic lights schematic page 0001 (2) 8svif6cozs
Smart parking
Smart parking schematic page 0001 (1) cnfkjldh8w
Solar Sun tracker
Solar sun tracker schematic page 0001 (1) kglqu74wpi

Comments

Similar projects you might like

Smart Table Lamp

Project tutorial by msr048

  • 1,809 views
  • 0 comments
  • 5 respects

Smart Parking System

Project in progress by Md. Khairul Alam

  • 61,781 views
  • 37 comments
  • 130 respects

Smart Garden

Project showcase by patel Dipen

  • 40,925 views
  • 18 comments
  • 88 respects

RF BASED SMART HOME AUTOMATION SYSTEM

by Dennis Mwanza

  • 35,401 views
  • 5 comments
  • 51 respects

Smart cane

by saurabhrobotic

  • 6,143 views
  • 22 comments
  • 43 respects

Smart City Project

Project in progress by Team BYU Smart City Project

  • 4,691 views
  • 1 comment
  • 3 respects
Add projectSign up / Login