- Komponen Diperlukan
- Rajah Litar
- Pengaturcaraan ESP8266 NodeMCU untuk Penyelesaian Tempat Letak Kereta Pintar
Dengan populariti Bandar Pintar yang semakin meningkat, selalu ada permintaan untuk penyelesaian pintar untuk setiap domain. IoT telah memungkinkan kemungkinan Bandar Pintar dengan adanya ciri kawalan internet. Seseorang dapat mengawal peranti yang dipasang di rumah atau pejabatnya dari mana sahaja di dunia dengan hanya menggunakan telefon pintar atau mana-mana peranti yang tersambung ke internet. Terdapat banyak domain di bandar pintar dan Tempat Letak Kereta Pintar adalah salah satu domain popular di Bandar Pintar.
Industri Smart Parking telah melihat sejumlah inovasi seperti Smart Management Management System, Smart Gate Control, Smart Camera yang dapat mengesan jenis kenderaan, ANPR (Automatic Number Plate Recognition), Smart Payment System, Smart Entry System dan banyak lagi. Hari ini pendekatan serupa akan diikuti dan penyelesaian parkir pintar akan dibina yang akan menggunakan sensor ultrasonik untuk mengesan kehadiran kenderaan dan memicu pintu untuk membuka atau menutup secara automatik. ESP8266 NodeMCU akan digunakan di sini sebagai pengawal utama untuk mengawal semua periferal yang melekat padanya.
ESP8266 adalah pengawal yang paling popular untuk membina aplikasi berasaskan IoT kerana mempunyai sokongan dalaman untuk Wi-Fi untuk menyambung ke internet. Kami sebelum ini menggunakannya untuk membina banyak projek IoT seperti:
- Sistem Keselamatan berasaskan IOT
- Kotak Persimpangan Pintar untuk Automasi Rumah
- Sistem Pemantauan Pencemaran Udara berasaskan IOT
- Hantar data ke ThingSpeak
Lihat semua Projek berasaskan ESP8266 di sini.
Dalam Sistem Letak Pintar IoT ini, kami akan menghantar data ke pelayan web untuk mencari ketersediaan ruang untuk tempat letak kenderaan. Di sini kami menggunakan pangkalan data firebase sebagai Iot untuk mendapatkan data ketersediaan tempat letak kereta. Untuk ini, kita perlu mencari alamat host Firebase dan kunci rahsia untuk kebenaran. Sekiranya anda sudah tahu menggunakan firebase dengan NodeMCU maka anda boleh terus maju jika tidak, anda harus terlebih dahulu belajar menggunakan Google Firebase Console dengan ESP8266 NodeMCU untuk mendapatkan alamat host dan kunci rahsia.
Komponen Diperlukan
- ESP8266 NodeMCU
- Sensor Ultrasonik
- Motor Servo DC
- Sensor IR
- Paparan LCD 16x2 i2c
- Pelompat
Rajah Litar
Gambarajah litar untuk sistem tempat letak kenderaan berasaskan IoT ini diberikan di bawah. Ia melibatkan dua sensor IR, dua motor servo, satu sensor ultrasonik dan satu LCD 16x2.
Di sini ESP8266 akan mengawal proses lengkap dan juga menghantar maklumat ketersediaan tempat letak kereta ke Google Firebase sehingga dapat dipantau dari mana saja di dunia melalui internet. Dua sensor IR digunakan di pintu masuk dan keluar untuk mengesan kehadiran kereta dan secara automatik membuka atau menutup pintu. Sensor IR digunakan untuk mengesan objek apa pun dengan mengirim dan menerima sinar IR, ketahui lebih lanjut mengenai sensor IR di sini.
Dua servo akan bertindak sebagai pintu masuk dan keluar dan mereka berpusing untuk membuka atau menutup pintu pagar. Akhirnya sensor Ultrasonik digunakan untuk mengesan sama ada slot tempat letak kereta tersedia atau dihuni dan menghantar data ke ESP8266 dengan sewajarnya. Lihat video yang diberikan pada akhir tutorial ini untuk memahami kerja projek yang lengkap.
Beginilah rupa Prototaip sistem parkir pintar yang lengkap ini:
Pengaturcaraan ESP8266 NodeMCU untuk Penyelesaian Tempat Letak Kereta Pintar
Kod lengkap dengan video berfungsi diberikan pada akhir tutorial ini, di sini kami menerangkan program lengkap untuk memahami cara kerja projek.
Untuk memprogram NodeMCU, pasangkan NodeMCU ke Komputer dengan Kabel Mikro USB dan buka Arduino IDE. Perpustakaan diperlukan untuk I2C Display dan Servo Motor. LCD akan memaparkan ketersediaan Tempat Letak Kereta dan motor Servo akan digunakan untuk membuka dan menutup pintu masuk dan Keluar. The Wire.h perpustakaan akan digunakan untuk antara muka LCD dalam protokol I2C. Pin untuk I2C dalam NodeMCU ESP8266 adalah D1 (SCL) dan D2 (SDA). Pangkalan data yang digunakan di sini adalah Firebase jadi di sini kita juga menyertakan perpustakaan (FirebaseArduino.h) untuk yang sama.
#sertakan
Kemudian sertakan kelayakan firebase yang diperoleh dari Google Firebase. Ini akan merangkumi nama Host yang mengandungi nama projek anda dan kunci rahsia. Untuk mengetahui nilai-nilai ini, ikuti tutorial sebelumnya di Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Sertakan Kelayakan Wi-Fi seperti WiFi SSID dan Kata Laluan.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Permulaan LCD I2C dengan alamat peranti (Berikut adalah 0x27) dan jenis LCD. Sertakan juga Servo Motors untuk pintu masuk dan keluar.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Mulakan komunikasi I2C untuk LCD I2C.
Wire.begin (D2, D1);
Sambungkan Motor Servo Masuk dan Keluar ke Pin D5, D6 NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Pilih Trigger Pin of Ultrasonic sensor sebagai Output dan Echo Pin sebagai Input. Sensor ultrasonik akan digunakan untuk mengesan ketersediaan tempat letak kereta. Sekiranya Kereta telah memenuhi ruang maka ia akan bersinar yang lain tidak akan menyala.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
Dua pin D0 dan D4 dari NodeMCU digunakan untuk mengambil bacaan sensor IR. Sensor IR akan berfungsi sebagai sensor pintu masuk dan keluar. Ini akan mengesan kehadiran kereta.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Sambungkan ke WiFi dan tunggu sebentar sehingga ia tersambung.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Menyambung ke"); Serial.print (WIFI_SSID); sementara (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); kelewatan (500); }
Mulakan sambungan dengan Firebase dengan Host dan Secret Key sebagai bukti kelayakan.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Mula LCD 16x2 I2C dan kedudukan kursor set pada 0 th berturut-turut 0 ke lajur.
lcd.begin (); lcd.setCursor (0, 0);
Ambil Jarak dari sensor Ultrasonik. Ini akan digunakan untuk mengesan kehadiran kenderaan di tempat tertentu. Mula-mula hantarkan 2 mikrodetik dan kemudian baca nadi yang diterima. Kemudian ubah menjadi 'cm'. Ketahui lebih lanjut mengenai mengukur jarak menggunakan sensor ultrasonik di sini.
digitalWrite (TRIG, RENDAH); kelewatanMikrodetik (2); digitalWrite (TRIG, TINGGI); kelewatanMikrodetik (10); digitalWrite (TRIG, RENDAH); tempoh = nadiIn (ECHO, TINGGI); jarak = (tempoh / 2) / 29.1;
Baca secara digital secara digital pin sensor IR sebagai sensor masuk dan periksa apakah ia tinggi. Sekiranya tinggi, tambah jumlah masuk dan cetak ke paparan LCD 16x2 dan juga ke monitor bersiri.
int carEntry = digitalRead (carEnter); jika (carEntry == TINGGI) { countYa ++; Serial.print ("Kereta Dimasuki ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Kereta Dimasuki");
Gerakkan juga sudut motor servo ke pintu masuk yang terbuka. Tukar sudut mengikut kes penggunaan anda.
untuk (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); kelewatan (5); } kelewatan (2000); untuk (pos = 45; pos <= 140; pos + = 1) { // dalam langkah 1 darjah myservos.write (pos); kelewatan (5); }
Dan hantarkan bacaan ke firebase dengan menggunakan fungsi pushString perpustakaan Firebase.
Firebase.pushString ("/ Status Tempat Letak Kereta /", fireAvailable);
Lakukan langkah serupa seperti di atas untuk Exit IR sensor dan Exit servo motor.
int carExit = digitalRead (carExited); jika (carExit == TINGGI) { countYes--; Serial.print ("Car Exited ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Kereta Keluar"); untuk (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); kelewatan (5); } kelewatan (2000); untuk (pos1 = 45; pos1 <= 140; pos1 + = 1) { // dalam langkah 1 darjah myservo.write (pos1); kelewatan (5); } Firebase.pushString ("/ Status Parking /", fireAvailable); lcd.clear (); }
Periksa sama ada kereta telah sampai ke tempat letak kereta dan jika ia sudah tiba maka lampu kilat memberi isyarat bahawa tempat itu sudah penuh.
jika (jarak <6) { Serial.println ("Duduki"); digitalWrite (dipimpin, TINGGI); }
Lain-lain menunjukkan bahawa tempat itu ada.
jika (jarak> 6) { Serial.println ("Tersedia"); digitalWrite (dipimpin, RENDAH); }
Hitung jumlah ruang kosong di dalam tempat letak kereta dan simpan dalam rentetan untuk menghantar data ke firebase.
Kosong = allSpace - countYa; Terdapat = String ("Available =") + String (Kosong) + String ("/") + String (allSpace); fireAvailable = String ("Available =") + String (Kosong) + String ("/") + String (allSpace); Cetak juga data ke LCD i2C. lcd.setCursor (0, 0); lcd.print (Ada);
Ini adalah bagaimana ketersediaan tempat letak kereta dapat dikesan secara dalam talian di Firebase seperti yang ditunjukkan dalam gambar di bawah:
Ini menyelesaikan sistem parkir pintar yang lengkap menggunakan Modul NodeMCU ESP8266 dan periferal yang berbeza. Anda boleh menggunakan sensor lain juga sebagai pengganti sensor Ultrasonik dan IR. Terdapat banyak aplikasi Smart Parking System dan pelbagai produk dapat ditambahkan untuk menjadikannya lebih pintar. Komen di bawah ini jika anda mempunyai keraguan atau sampai ke forum kami untuk mendapatkan sokongan lebih lanjut.