Anda di halaman 1dari 11

“Rancangan Hardware dan Software Untuk SMART CITY”

 Internet of things dan smart city


Peran internet of things (IoT) dalam mewujudkan konsep smart city
sangatlah vital. Perangkat IoT mampu mengirim informasi dan melakukan
tindak lanjut melalui jaringan dengan campur tangan manusia yang minimal,
sehingga mampu melakukan beragam fungsi secara otomatis.
Menurut Solution Architect Ericsson Indonesia, Hilman Halim, untuk
operasional perangkat IoT hanya memerlukan tiga elemen utama, yakni:
a. Perangkat fisik,
b. Jaringan internet, dan
c. Aplikasi.
 Implementasi IoT dalam mewujudkan smart city bisa beraneka ragam, dibatasi
hanya oleh imajinasi dan kemampuan dari para pengembangnya. Hilman
menyebutkan lima contoh penerapan IoT yang lazim ditemui dalam konsep
smart city akhir-akhir ini:
a. Smart lighting. Tak hanya bisa diterapkan pada lampu
penerangan jalan, namun juga untuk lampu lalu lintas. “Dengan
smart lighting, bisa dipantau mana lampu yang sedang rusak.
Bisa juga dimatikan atau dinyalakan dari jarak jauh,” jelas
Hilman saat ditemui di acara Selular Congress 2018.
b. Smart parking. Solusi ini bisa digunakan warga untuk
mempermudah mencari tempat parkir. Pengguna bisa memesan
lebih dulu tempat parkir sebelum tiba di lokasi. Di Indonesia,
ada beberapa startup yang menyediakan solusi seperti ini
seperti Smark Parking dan Parkiran.
c. Garbage Monitoring System. Volume sampah di suatu tempat
penampungan bisa dipantau dari jarak jauh. Petugas kebersihan
tak perlu mendatangi satu per satu tempat sampah untuk
memeriksanya.
d. Connected manhole. Solusi ini berguna untuk memantau
temperatur gorong-gorong yang berada di bawah tanah. Karena
gorong-gorong tersebut tak hanya berfungsi sebagai saluran air,
namun juga untuk menyimpan kabel hingga tempat jalur pipa
gas.
e. Smart electricity. Penyedia layanan listrik bisa mengetahui
langsung data pemakaian listrik pengguna tanpa harus
mengirim petugas untuk memeriksa di tempat.
Dengan semakin populernya Kota Cerdas, selalu ada permintaan untuk solusi cerdas
untuk setiap domain. IoT telah memberi kemungkinan Smart Cities dengan itu melalui fitur
kontrol internet. Seseorang dapat mengontrol perangkat yang dipasang di rumah atau
kantornya dari mana saja di dunia hanya dengan menggunakan smartphone atau perangkat
yang terhubung internet. Ada beberapa domain di kota pintar dan Parkir Cerdas adalah salah
satu domain populer di Kota Cerdas.

Industri Parkir Cerdas telah melihat sejumlah inovasi seperti Sistem Manajemen
Parkir Cerdas, Kontrol Gerbang Cerdas, Kamera Cerdas yang dapat mendeteksi jenis
kendaraan, ANPR (Pengenalan Plat Nomor Otomatis), Sistem Pembayaran Cerdas, Sistem
Entri Cerdas dan banyak lagi. Hari ini pendekatan serupa akan diikuti dan solusi parkir pintar
akan dibangun yang akan menggunakan sensor ultrasonik untuk mendeteksi keberadaan
kendaraan dan memicu gerbang untuk membuka atau menutup secara otomatis. ESP8266
NodeMCU akan digunakan di sini sebagai pengontrol utama untuk mengontrol semua
periferal yang terpasang padanya.

Dalam Sistem Parkir Cerdas IoT ini, User akan mengirimkan data ke server web
untuk mencari ketersediaan ruang untuk parkir kendaraan. Proyek ini menggunakan firebase
sebagai basis data Iot untuk mendapatkan data ketersediaan parkir. Untuk ini, kita perlu
menemukan alamat host Firebase dan kunci rahasia untuk otorisasi. Jika Anda sudah tahu
menggunakan firebase dengan NodeMCU maka Anda dapat melanjutkannya terlebih dahulu.
Anda harus terlebih dahulu belajar menggunakan Google Firebase Console dengan ESP8266
NodeMCU untuk mendapatkan alamat host dan kunci rahasia.
Komponen yang di butuhkan

 ESP8266 NodeMCU
 Sendor Ultrasonik
 DC Servo Motor
 IR Sensor
 16x2 i2c LCD Display
 Jumper

Diagram Sirkuit

Diagram sirkuit untuk sistem parkir kendaraan berbasis IoT ini melibatkan dua sensor
IR, dua motor servo, satu sensor ultrasonik dan satu LCD 16x2.

Di sini ESP8266 akan mengontrol proses lengkap dan juga mengirim informasi
ketersediaan parkir ke Google Firebase sehingga dapat dipantau dari mana saja di dunia melalui
internet. Dua sensor IR digunakan di gerbang masuk dan keluar untuk mendeteksi keberadaan
mobil dan secara otomatis membuka atau menutup gerbang. Sensor IR digunakan untuk
mendeteksi objek apa pun dengan mengirim dan menerima sinar IR, pelajari lebih lanjut
tentang sensor IR di sini.

Dua servo akan bertindak sebagai gerbang masuk dan keluar dan mereka berputar untuk
membuka atau menutup gerbang. Akhirnya sensor Ultrasonik digunakan untuk mendeteksi
apakah slot parkir tersedia atau ditempati dan mengirim data ke ESP8266.
Listing Program

Untuk pemrograman NodeMCU, cukup colokkan NodeMCU ke Komputer dengan


Kabel USB Mikro dan buka Arduino IDE. Perpustakaan diperlukan untuk I2C Display dan
Servo Motor. LCD akan menampilkan ketersediaan Tempat Parkir dan motor Servo akan
digunakan untuk membuka dan menutup gerbang Masuk dan Keluar. Perpustakaan Wire.h
akan digunakan untuk antarmuka LCD dalam protokol i2c. Pin untuk I2C di ESP8266
NodeMCU adalah D1 (SCL) dan D2 (SDA). Basis data yang digunakan di sini adalah
Firebase, jadi di sini kami juga menyertakan pustaka (FirebaseArduino.h) untuk hal yang
sama.

#include <ESP8266WiFi.h>
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <FirebaseArduino.h>
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" // the project name
address from firebase id
#define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT" // the
secret key generated from firebase
#define WIFI_SSID "CircuitDigest" // input your home or public wifi name
#define WIFI_PASSWORD "circuitdigest101" //password for Wifi
String Available = ""; //availability string
String fireAvailable = "";
LiquidCrystal_I2C lcd(0x27, 16, 2); //i2c display address 27 and 16x2 lcd display
Servo myservo; //servo as gate
Servo myservos; //servo as gate
int Empty; //available space integer
int allSpace = 90;
int countYes = 0;
int carEnter = D0; // entry sensor
int carExited = D4; //exi sensor
int TRIG = D7; //ultrasonic trig pin
int ECHO = D8; // ultrasonic echo pin
int led = D3; // spot occupancy signal
int pos;
int pos1;
long duration, distance;
void setup() {
delay(1000);
Serial.begin (9600); // serial debugging
Wire.begin(D2, D1); // i2c start
myservo.attach(D6); // servo pin to D6
myservos.attach(D5); // servo pin to D5
pinMode(TRIG, OUTPUT); // trig pin as output
pinMode(ECHO, INPUT); // echo pin as input
pinMode(led, OUTPUT); // spot indication
pinMode(carExited, INPUT); // ir as input
pinMode(carEnter, INPUT); // ir as input
WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //try to connect with wifi
Serial.print("Connecting to ");
Serial.print(WIFI_SSID); // display ssid
while (WiFi.status() != WL_CONNECTED) {
Serial.print("."); // if not connected print this
delay(500);
}
Serial.println();
Serial.print("Connected to ");
Serial.println(WIFI_SSID);
Serial.print("IP Address is : ");
Serial.println(WiFi.localIP()); //print local IP address
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); // begin firebase authentication
lcd.begin(); //begin lcd
lcd.home();
lcd.setCursor(0, 0); // 0th row and 0thh column
lcd.print("Smart Parking");
}
void loop() {
digitalWrite(TRIG, LOW); // make trig pin low
delayMicroseconds(2);
digitalWrite(TRIG, HIGH); // make trig pin high
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duration = pulseIn(ECHO, HIGH);
distance = (duration / 2) / 29.1; // take distance in cm
Serial.print("Centimeter: ");
Serial.println(distance);
int carEntry = digitalRead(carEnter); // read ir input
if (carEntry == HIGH) { // if high then count and send data
countYes++; //increment count
Serial.print("Car Entered = " ); Serial.println(countYes );
lcd.setCursor(0, 1);
lcd.print("Car Entered");
for (pos = 140; pos >= 45; pos -= 1) { // change servo position
myservos.write(pos);
delay(5);
}
delay(2000);
for (pos = 45; pos <= 140; pos += 1) { // change servo position
// in steps of 1 degree
myservos.write(pos);
delay(5);
}
Firebase.pushString("/Parking Status/", fireAvailable ); // send string to firebase
lcd.clear();
}
int carExit = digitalRead(carExited); //read exit ir sensor
if (carExit == HIGH) { //if high then count and send
countYes--; //decrement count
Serial.print("Car Exited = " ); Serial.println(countYes);
lcd.setCursor(0, 1);
lcd.print("Car Exited");
for (pos1 = 140; pos1 >= 45; pos1 -= 1) { // change servo position
myservo.write(pos1);
delay(5);
}
delay(2000);
for (pos1 = 45; pos1 <= 140; pos1 += 1) { // change servo position
// in steps of 1 degree
myservo.write(pos1);
delay(5);
}
Firebase.pushString("/Parking Status/", fireAvailable ); // send string to firebase
lcd.clear();
}
if (distance < 6) { //if distance is less than 6cm then on led
Serial.println("Occupied ");
digitalWrite(led, HIGH);
}
if (distance > 6) { //if distance is greater than 6cm then off led
Serial.println("Available ");
digitalWrite(led, LOW);
}
Empty = allSpace - countYes; //calculate available data

Available = String("Available= ") + String(Empty) + String("/") + String(allSpace); // convert the int


to string
fireAvailable = String("Available=") + String(Empty) + String("/") + String(allSpace);
lcd.setCursor(0, 0);
lcd.print(Available); //print available data to lcd
}
Garbage Monitoring
System

Tinjauan Umum Sistem Pemantauan

Gagasan ini didapatkan ketika kami mengamati bahwa truk sampah digunakan untuk
berkeliling kota untuk mengumpulkan sampah dua kali sehari. Meskipun sistem ini
menyeluruh, itu sangat tidak efisien. Sebagai contoh, katakanlah jalan A adalah jalan yang
sibuk dan kita melihat bahwa sampah terisi dengan sangat cepat sedangkan mungkin jalan B
bahkan setelah dua hari, tempat sampahnya bahkan belum penuh.

Apa yang dilakukan sistem kami adalah memberikan indikator waktu nyata tingkat
sampah di tempat sampah pada waktu tertentu. Dengan menggunakan data itu, kita dapat
mengoptimalkan rute pengumpulan limbah dan akhirnya mengurangi konsumsi bahan bakar.
Ini memungkinkan pengumpul sampah untuk merencanakan jadwal pengambilan harian /
mingguan mereka.

Kriteria & Model dasar berfungsi seperti ini:

Untuk memulainya Anda harus memasukkan ketinggian tempat sampah. Ini akan
membantu kami menghasilkan persentase sampah di tempat sampah. Kami kemudian
memiliki dua kriteria yang perlu dipenuhi untuk menunjukkan bahwa bin tertentu perlu
dikosongkan:

Jumlah sampah, dengan kata lain katakanlah jika bin Anda setengah penuh Anda
tidak perlu mengosongkannya. Ambang kami, atau jumlah maksimum yang kami izinkan dari
tempat sampah, adalah 75% dari tempat sampah. (Anda dapat mengubah ambang sesuai
dengan preferensi Anda.)
Jika seandainya sampah tertentu mengisi hingga 20% dan kemudian selama seminggu
tidak berubah, itu masuk ke kriteria kedua kami, waktu. Seiring waktu, jumlah kecil pun akan
mulai membusuk yang mengarah ke lingkungan yang bau. Untuk menghindari tingkat
toleransi kita adalah 2 hari, jadi jika tempat sampah kurang dari 75% tetapi sudah dua hari
maka juga perlu dikosongkan.

Elektronik

Sensor ultrasonik akan ditempatkan di sisi interior tutup, yang menghadap limbah
padat. Saat sampah meningkat, jarak antara ultrasonik dan sampah berkurang. Data langsung
ini akan dikirim ke pengontrol mikro kami.

Pengontrol mikro kami, Arduino 101 kemudian memproses data dan melalui bantuan
WiFi mengirimkannya ke suatu aplikasi. Apa yang dilakukan aplikasi secara visual mewakili
jumlah sampah di tempat sampah dengan animasi kecil. Proses ini akan menunjukkan semua
tempat sampah yang membutuhkan perhatian, mengarahkan pengguna untuk mengambil rute
yang paling efektif.

Komponen

 Grover Base Shield v2


 Arduino 101
 9v Battery
 Plastic Container
 Ultrasonic Sensor
 Arduino MKR1000
Pendahuluan ke Blynk App
Untuk terhubung ke internet kami menggunakan platform prebuilt bernama Blynk,
yang dapat diunduh dari android play store. Ada banyak contoh tentang cara menggunakan
aplikasi dengan Arduino yang semuanya tersedia dengan menuju ke file di IDE Arduino,
kemudian contoh dan di bawah daftar Blynk.

Menyiapkan Aplikasi dan Kode

Untuk dapat memprogram Arduino 101, Anda harus menginstal driver yang
diperlukan terlebih dahulu. Untuk memeriksa apakah Anda telah menginstalnya, buka
Arduino IDE, klik pada alat, lalu papan dan lihat apakah Arduino atau Genuino 101 ada
dalam daftar. Jika ada, lompat ke langkah berikutnya, jika tidak ikuti.

Untuk mengunduh driver yang diperlukan agar dapat menggunakan Arduino


mkr1000, buka lagi IDE Arduino, klik pada alat, papan, lalu papan manajer.

Sekarang di bilah pencarian, cari "intel curie boards", pilih versi IDE Arduino Anda
dan unduh yang datang
Setelah driver Anda diinstal, silakan dan unduh perpustakaan yang diperlukan. Agar
program kami dapat berjalan, kami membutuhkan perpustakaan WiFi101, perpustakaan
blynk, dan perpustakaan ultrasonik, ketiganya dapat ditemukan di pengelola perpustakaan
bawaan Arduino. Buka untuk membuat sketsa lalu sertakan perpustakaan. kemudian manajer
perpustakaan.

GPS

Rencana untuk menggabungkan proyek kami dengan Google Maps. Begini caranya:

Anda harus secara manual pergi tentang kota mengambil lokasi GPS dari setiap
tempat sampah. Kemudian simpan di Google Maps Anda. Setelah Anda melakukan itu,
dengan cara yang sama kami membuat sistem dalam model kami sebelum satu LED Anda
harus melakukan hal yang sama untuk jumlah tempat sampah yang ada. Katakanlah ada 20.

Ketika pengemudi truk memulai harinya, dia membuka Blynk dan melihat semua
tempat sampah yang memerlukan perhatian kemudian dia memilih setiap tempat sampah
(masing-masing ketika memiliki nomor spesifik mereka) dan kemudian menghasilkan rute
terpendek dan paling efisien!

Listing Program

#define BLYNK_PRINT Serial

#include <BlynkSimpleCurieBLE.h>
#include <CurieBLE.h>
#include <Ultrasonic.h>

// You should get Auth Token in the Blynk App.


// Go to the Project Settings (nut icon).
char auth[] = "8b7229b2c3ec4b999eca6781903a208d";

BLEPeripheral blePeripheral;
WidgetLED green(V1);
WidgetLED orange(V2);
WidgetLED red(V3);

Ultrasonic ultrasonic(7);
int distance = 0;
int thresh [3] = {20,12,4};
void setup() {
Serial.begin(9600);
delay(1000);

blePeripheral.setLocalName("garbage");
blePeripheral.setDeviceName("garbage");
blePeripheral.setAppearance(384);
Blynk.begin(blePeripheral, auth);
blePeripheral.begin();
Serial.println("Waiting for connections...");
}

void loop() {
distance = ultrasonic.distanceRead();
Serial.print(distance);
Blynk.run();
if(distance<=thresh[0]&&distance>=thresh[1]&&distance>=thresh[2]){
green.on();
Serial.println(1);
}
else
if(distance<=thresh[0]&&distance<=thresh[1]&&distance>=thresh[2]){
green.on();
orange.on();
Serial.println(2);
}
else
if(distance<=thresh[0]&&distance<=thresh[1]&&distance<=thresh[2]){
green.on();
orange.on();
red.on();
Serial.println(3);
}
else{
green.off();
orange.off();
red.off();
Serial.println(0);
}
delay(100);

Anda mungkin juga menyukai