Project Smart Parting IoT Menggunakan ESP8266 NodeMCU
Dengan semakin populernya Kota Cerdas, selalu ada permintaan akan solusi cerdas untuk setiap hari. IoT telah memungkinkan kemungkinan Kota Cerdas dengan fitur kontrol melalui internet. Seseorang dapat mengontrol perangkat yang dipasang di rumah atau kantornya dari mana saja di dunia hanya dengan menggunakan smartphone atau perangkat apa pun yang terhubung ke internet.
Industri Smart Parking telah melihat sejumlah inovasi seperti Smart Parking Management System, Smart Gate Control, Smart Camera yang dapat mendeteksi jenis kendaraan, ANPR (Automatic Number Plate Recognition), Smart Payment System, Smart Entry System dan masih banyak lagi. dan kali ini kita akan buat project Smart Parking bebasis IoT.
Dalam Sistem Parkir Cerdas IoT ini , kita akan mengirimkan data ke server web untuk mencari ketersediaan ruang untuk parkir kendaraan. Disini kami menggunakan firebase sebagai database Iot untuk mendapatkan data ketersediaan parkir. Untuk ini kita perlu menemukan alamat host Firebase dan kunci rahasia untuk otorisasi.
Okeee Mari Kita Buat...!
Komponen yang Diperlukan
- ESP8266 NodeMCU
- Sensor ultrasonik
- Motor Servo DC
- Sensor Inframerah
- Layar LCD 16x2 i2c
- jumper
Diagram Sirkuit
ProtoType dari Smart Home
Pemrograman ESP8266 NodeMCU untuk Solusi Parkir Cerdas
#include <ESP8266WiFi.h> #include <Servo.h> #include <LiquidCrystal_I2C.h> #include <Wire.h> #include <FirebaseArduino.h>
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Sertakan Kredensial Wi-Fi seperti SSID WiFi dan Kata Sandi.
#menentukan WIFI_SSID "teknologi" #menentukan WIFI_PASSWORD "teknologi"
Inisialisasi LCD I2C dengan alamat perangkat (Ini dia 0x27) dan jenis LCD. Juga termasuk Motor Servo untuk pintu masuk dan keluar.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Mulai komunikasi I2C untuk LCD I2C.
Wire.begin(D2, D1);Hubungkan Motor Servo Masuk dan Keluar ke Pin D5, D6 dari NodeMCU.
myservo.attach(D6); myservos.attach(D5);
Pilih Pin Pemicu sensor Ultrasonik sebagai Output dan Pin Gema sebagai Input. Sensor ultrasonik akan digunakan untuk mendeteksi ketersediaan tempat parkir. Jika Mobil telah menempati ruang maka itu akan bersinar selain itu tidak akan bersinar.
pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT);
Dua pin D0 dan D4 dari NodeMCU digunakan untuk mengambil pembacaan sensor IR. Sensor IR akan bertindak sebagai sensor gerbang Masuk dan Keluar. Ini akan mendeteksi keberadaan mobil.
pinMode(CarExited, INPUT); pinMode(carEnter, INPUT);
Hubungkan ke WiFi dan tunggu beberapa saat hingga terhubung.
WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("Connecting to "); Serial.print(WIFI_SSID); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); }
Mulai koneksi dengan Firebase dengan Host dan Kunci Rahasia sebagai kredensial.
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);Mulai LCD i2c 16x2 dan atur posisi kursor pada baris ke-0 kolom ke - 0.
lcd.begin(); lcd.setCursor(0, 0);
Ambil Jarak dari sensor Ultrasonik. Ini akan digunakan untuk mendeteksi keberadaan kendaraan di tempat tertentu. Pertama kirim pulsa 2 mikrodetik dan kemudian baca pulsa yang diterima. Kemudian ubah menjadi 'cm'.
digitalWrite(TRIG, LOW); delayMicroseconds(2); digitalWrite(TRIG, HIGH); delayMicroseconds(10); digitalWrite(TRIG, LOW); duration = pulseIn(ECHO, HIGH); distance = (duration / 2) / 29.1;
int carEntry = digitalRead(carEnter); if (carEntry == HIGH) { countYes++; Serial.print("Car Entered = " ); Serial.println(countYes ); lcd.setCursor(0, 1); lcd.print("Car Entered");
for (pos = 140; pos >= 45; pos -= 1) { myservos.write(pos); delay(5); } delay(2000); for (pos = 45; pos <= 140; pos += 1) { // in steps of 1 degree myservos.write(pos); delay(5); }
Firebase.pushString("/Parking Status/", fireAvailable );Lakukan langkah serupa seperti di atas untuk Exit IR sensor dan Exit servo motor.
int carExit = digitalRead(carExited); if (carExit == HIGH) { countYes--; Serial.print("Car Exited = " ); Serial.println(countYes); lcd.setCursor(0, 1); lcd.print("Car Exited"); for (pos1 = 140; pos1 >= 45; pos1 -= 1) { myservo.write(pos1); delay(5); } delay(2000); for (pos1 = 45; pos1 <= 140; pos1 += 1) { // in steps of 1 degree myservo.write(pos1); delay(5); } Firebase.pushString("/Parking Status/", fireAvailable ); lcd.clear(); }
Periksa apakah mobil sudah sampai tempat parkir dan jika sudah sampai maka led glow memberi sinyal bahwa tempat sudah penuh.
if (distance < 6) { Serial.println("Occupied "); digitalWrite(led, HIGH); }
Lain menunjukkan bahwa tempat tersedia.
if (distance > 6) { Serial.println("Available "); digitalWrite(led, LOW); }
Hitung total ruang kosong di dalam tempat parkir dan simpan dalam string untuk mengirim data ke firebase.
Empty = allSpace - countYes;
Available = String("Available= ") + String(Empty) + String("/") + String(allSpace);
fireAvailable = String("Available=") + String(Empty) + String("/") + String(allSpace);
Also print the data to the i2C LCD.
lcd.setCursor(0, 0);
lcd.print(Available);Ini menyelesaikan sistem parkir pintar lengkap menggunakan Modul ESP8266 NodeMCU dan periferal yang berbeda. Anda dapat menggunakan sensor lain juga sebagai pengganti sensor Ultrasonik dan IR. Ada aplikasi yang luas dari Sistem Parkir Cerdas dan produk yang berbeda dapat ditambahkan untuk membuatnya lebih pintar.
}
penundaan(2000);for (pos1 = 45; pos1 <= 140; pos1 += 1) { // mengubah posisi servo
// dalam langkah 1 derajat
myservo.write(pos1);
penundaan (5);
}
Firebase.pushString("/Status Parkir/", fireAvailable ); // kirim string ke firebase
lcd.clear();
}
if (jarak < 6) { //jika jarak kurang dari 6cm maka di led
Serial.println("Occupied ");
digitalWrite (dipimpin, TINGGI);
}if (jarak > 6) { //jika jarak lebih dari 6cm maka mati led
Serial.println("Tersedia ");
digitalWrite (dipimpin, RENDAH);
}Kosong = allSpace - countYa; //hitung data yang tersedia
Tersedia = String("Tersedia= ") + String(Kosong) + String("/") + String(allSpace); // mengubah int menjadi string
fireAvailable = String("Available=") + String(Empty) + String("/") + String(allSpace);lcd.setCursor(0, 0);
lcd.print(Tersedia); //mencetak data yang tersedia ke lcd}
إرسال تعليق