Smart street

Međimurski informatički Klub Čakovec
Smart street je IOT projekt za natječaj “Pametni grad”. Ovaj je sustav namijenjen građanima nekog grada kako bi što bolje bili informirani o uvjetima i događanjima u gradu. Naša zamišljena ulica se nalazi pored rijeke i pored glavnog gradskog mosta. U puno slučajeva postoji potreba da građani brzo i pravodobno budu informirani o svemu što se u njihovom gradu događa (nestanak struje, prijeteće vremenske neprilike…). Za ovo posebno postoji potreba ukoliko postoji neki izvanredni događaj o čemu moraju svi stanovnici biti brzo informirani. Napravili smo sustav u kojem iz jednog mobilnog uređaja preko Blynk aplikacije administrator grada (osoba koja je zadužena u gradskoj upravi za informiranje stanovnika) može uređivati Display te upisati neku poruku ili obavijest građanima.

U našoj „pametnoj ulici“ na monitoru se prikazuju podaci o temperaturi, vlazi zraka i točnom vremenu (sat, minute i sekunde).

Vlagu i temperaturu očitavamo s DHT22 senzora. RGB dioda svijetli oviseći o temperaturi (npr. kad je vani temperatura ispod 10 stupnjeva celzijusa ledica svijetli plavom bojom). Naša zamišljena ulica nalazi se pored pokretnog mosta, te je koncept
„pametnog grada“ primijenjen i u prometnoj regulaciji. Napravili smo pokretni most koji se diže i spušta ovisno o prometu po rijeci. Kad se brod približi dovoljno blizu mostu, on se počinje podizati. Kad je brod udaljen od mosta on se krene spuštati i dalje propuštati cestovni promet. Udaljenost broda od mosta postigli smo s ultrazvučnim senzorom, a pokretljivost mosta pomoću servo motora.

Video snimka

Izrada projekta

Glavni dio projekta uz mikrokontroler Arduino MKR1000 su ultrazvučni senzor, senzor za vlagu i temperaturu, RGB led modul, LCD display i servo motor. Najteži dio projekta bilo je ispisivanje obavijesti koju šaje korisnik preko Blynk aplikacije na LCD display. Maketa je napravljena pomoću 3D pisača.
Temperatura je 22 stupnja celzijusa pa RGB dioda svijetli zeleno.
Programiranje LCD displaya.
Testiranje ispisa poruke pomoću Blynk aplikacije.
3D ispis makete.

Mobilna aplikacija

Mobilnu aplikaciju radili smo u Blynku. Aplikacija se sastoji od šest widgeta. Dva widgeta su „gauge“ na kojima je grafički prikazana temperatura i vlaga zraka. Jedan widget služi za upisivanje teksta (obavijesti). Dva widgeta služe za odabir između ispisivanja vremena, temperature i vlage ili teksta (obavijesti) te jedan widget koji prikazuje ako se most diže, spušta ili je zatvoren.

Shema projekta

Arduino program

#include 
#include 
#include "DHT.h"
#include 
#include 
#include 
#include 
#include 
#define BLYNK_PRINT SerialUSB
#define DHTPIN 0
#define DHTTYPE DHT22

LiquidCrystal_I2C lcd (0x27, 16, 2);
DHT dht (DHTPIN, DHTTYPE); RTCZero rtc;
Servo Servo1;

int servoPin = 5;
const int trigPin = 10;
const int echoPin = 6;
const int trigPin2 = 2;
const int echoPin2 = 1;
long duration;
int distance;
long duration2;
int distance2;
const byte seconds = 0;
const byte minutes = 20;
const byte hours = 16;
String text;
int red = 7;
int blue = 8;
int green = 9;
char auth [] = "a99c94fafa3c420887af78d60330d971";
char ssid [] = "stricak5";
char pass [] = "SuperLogin3";
int x = 0;

void setup () {
  Serial.begin (9600);
  dht.begin ();
  rtc.begin ();
  lcd.init ();
  lcd.backlight ();
  lcd.clear ();
  rtc.setHours (hours);
  rtc.setMinutes (minutes);
  rtc.setSeconds (seconds);
  SerialUSB.begin (9600);
  Blynk.begin (auth, ssid, pass);
  pinMode (red, OUTPUT);
  pinMode (blue, OUTPUT);
  pinMode (green, OUTPUT);
  Serial.begin (9600);
  pinMode (trigPin, OUTPUT);
  pinMode (echoPin, INPUT);
  pinMode (trigPin2, OUTPUT);
  pinMode (echoPin2, INPUT);
  Servo1.attach (servoPin);
  Servo1.write (0);
  delay (1000);
}

void loop () {
  float h = dht.readHumidity ();
  float t = dht.readTemperature ();
  Blynk.virtualWrite (V1, int (t));
  Blynk.virtualWrite (V2, int (h));
  if (t> 30) {
    analogWrite (9,250);
  } else if (t <10) {analogWrite (10,250); else if (t> 10 and t <20) {analogWrite (11,250); analogWrite (9,150); } if if (t> 20 and t <30) {
    analogWrite (11, 100);
    analogWrite (9,250);
  }
  Blynk.run ();
  if (x == 1) {
    lcd.init ();
    lcd.backlight ();
    lcd.setCursor (0, 1);
    lcd.print (t);
    lcd.print ("C");
    lcd.setCursor (9, 1);
    lcd.print (h);
    lcd.print ("%");
    lcd.setCursor (0, 0);
    always_dvije_znamenke (rtc.getHours ());
    lcd.print (":");
    always_dvije_znamenke (rtc.getMinutes ());
    lcd.print (":");
    always_dvije_znamenke (rtc.getSeconds ());
  } else if (x == 2) {
    lcd.init ();
    lcd.backlight ();
    lcd.clear ();
    lcd.setCursor (0, 0);
    lcd.print (text);
  }
  the bridge ();
}

void always_dvije_znamenke (int number) {
  if (number <10) {
    lcd.print ("0");
  }
  lcd.print (number);
}

BLYNK_WRITE (V0) {
  text = param.asStr ();
}

BLYNK_WRITE (V3) {
  x = 1;
}

BLYNK_WRITE (V4) {
  x = 2;
}
void most () {
  Ultrasonic ();
  if (distance <= 10) {
    Blynk.virtualWrite (V5, "Lift Up Now!");
    for (int i = 0; and <91; i ++) {
      Servo1.write (i);
      delay (100);
    }
    Blynk.virtualWrite (V5, "Drops down!");
    Ultrasonic ();
    while (distance2 <= 10) {ultrasound ();}
    for (int i = 0; and <91; i ++) {
      Servo1.write (90-i);
      delay (100);
    }
    Blynk.virtualWrite (V5, "Bridge is closed!");
  } else {
    Blynk.virtualWrite (V5, "Bridge is closed!");
  }
}

void ultrasound () {
  digitalWrite (trigPin, LOW);
  delayMicroseconds (2);
  digitalWrite (trigPin, HIGH);
  delayMicroseconds (10);
  digitalWrite (trigPin, LOW);
  duration = pulseIn (echoPin, HIGH);
  distance = duration * 0.034 / 2;
  Serial.print ("distance:");
  Serial.println (distance);
  digitalWrite (trigPin2, LOW);
  delayMicroseconds (2);
  digitalWrite (trigPin2, HIGH);
  delayMicroseconds (10);
  digitalWrite (trigPin2, LOW);
  duration2 = pulseIn (echoPin2, HIGH);
  distance2 = duration2 * 0.034 / 2;
  Serial.print ("distance2:");
  Serial.println (distance2);
}

Arduino program ovoga projekta možete preuzeti ovdje.

Autori

Projekt su izradili Andrija Palašek i Leo Stričak uz mentorstvo Viktora Lazara iz Međimurskog informatičkog Kluba Čakovec .

Projekt je prijavljen na temu: Pametan grad.