Akıllı Şehirlerin artan popülaritesiyle, her alan için akıllı çözümlere her zaman bir talep vardır. IoT, internet üzerinden kontrol özelliği ile Akıllı Şehirler olasılığını sağladı. Bir kişi, evine veya ofisine kurulu cihazları dünyanın herhangi bir yerinden sadece bir akıllı telefon veya internete bağlı cihaz kullanarak kontrol edebilir. Akıllı bir şehirde birden fazla alan vardır ve Akıllı Park, Akıllı Şehir'deki popüler alanlardan biridir.
Akıllı Park endüstrisi, Akıllı Park Yönetim Sistemi, Akıllı Kapı Kontrolü, araç türlerini algılayabilen Akıllı Kameralar, ANPR (Otomatik Plaka Tanıma), Akıllı Ödeme Sistemi, Akıllı Giriş Sistemi ve çok daha fazlası gibi bir dizi yenilik gördü. Bugün benzer bir yaklaşım izlenecek ve aracın varlığını tespit etmek ve kapının otomatik olarak açılıp kapanmasını tetiklemek için ultrasonik bir sensör kullanacak akıllı bir park çözümü inşa edilecek. ESP8266 NodeMCU, kendisine bağlı tüm çevre birimlerini kontrol etmek için burada ana denetleyici olarak kullanılacaktır.
ESP8266, internete bağlanmak için Wi-Fi için dahili desteğe sahip olduğu için IoT tabanlı uygulamalar oluşturmak için en popüler denetleyicidir. Daha önce aşağıdakiler gibi birçok IoT projesi oluşturmak için kullandık:
- IOT tabanlı Güvenlik Sistemi
- Ev Otomasyonu için Akıllı Bağlantı Kutusu
- IOT tabanlı Hava Kirliliği İzleme Sistemi
- ThingSpeak'e veri gönder
ESP8266 tabanlı tüm Projeleri buradan kontrol edin.
Bu IoT Akıllı Park Sisteminde, araç park yeri olup olmadığını araştırmak için web sunucusuna veri göndereceğiz. Burada otopark kullanılabilirlik verilerini almak için çok veritabanı olarak firebase kullanıyoruz. Bunun için Firebase ana bilgisayar adresini ve yetkilendirme için gizli anahtarı bulmamız gerekir. Firebase'i NodeMCU ile kullanmayı zaten biliyorsanız, devam edebilirsiniz, aksi takdirde önce ana bilgisayar adresini ve gizli anahtarı almak için Google Firebase Konsolu'nu ESP8266 NodeMCU ile kullanmayı öğrenmelisiniz.
Gerekli Bileşenler
- ESP8266 NodeMCU
- Ultrasonik sensör
- DC Servo Motor
- IR Sensörleri
- 16x2 i2c LCD Ekran
- Süveter
Devre şeması
Bu IoT tabanlı araç park sistemi için devre şeması aşağıda verilmiştir. İki IR sensörü, iki servo motor, bir ultrasonik sensör ve bir 16x2 LCD içerir.
Burada ESP8266 tüm süreci kontrol edecek ve ayrıca park uygunluk bilgilerini internet üzerinden dünyanın her yerinden izlenebilmesi için Google Firebase'e gönderecektir. Giriş ve çıkış kapısında arabanın varlığını tespit etmek ve kapıyı otomatik olarak açmak veya kapatmak için iki IR sensörü kullanılır. IR Sensörü, IR ışınlarını göndererek ve alarak herhangi bir nesneyi algılamak için kullanılır, burada IR sensörü hakkında daha fazla bilgi edinin.
İki servo giriş ve çıkış kapısı olarak görev yapacak ve kapıyı açmak veya kapatmak için dönecekler. Son olarak, park boşluğunun müsait olup olmadığını veya dolu olup olmadığını tespit etmek ve verileri buna göre ESP8266'ya göndermek için bir Ultrasonik sensör kullanılır. Projenin tam çalışmasını anlamak için bu eğitimin sonunda verilen videoyu kontrol edin.
Bu eksiksiz Akıllı park sistemi Prototipi şöyle görünecek:
Akıllı Park Çözümü için ESP8266 NodeMCU Programlama
Bu eğitimin sonunda bir çalışma videosu ile birlikte eksiksiz kod verilmiştir, burada projenin çalışmasını anlamak için tüm programı açıklıyoruz.
NodeMCU'yu programlamak için, NodeMCU'yu bir Mikro USB Kablosu ile Bilgisayara takın ve Arduino IDE'yi açın. Kitaplıklar I2C Ekran ve Servo Motor için gereklidir. LCD, Park Alanlarının kullanılabilirliğini gösterecek ve Servo motorlar Giriş ve Çıkış kapılarını açıp kapatmak için kullanılacaktır. Wire.h kütüphane i2c protokolünde LCD arayüz için kullanılacaktır. ESP8266 NodeMCU’daki I2C Pimleri D1 (SCL) ve D2 (SDA) 'dır. Burada kullanılan veritabanı Firebase olacaktır, bu yüzden burada aynı kitaplığı (FirebaseArduino.h) da ekliyoruz .
#Dahil etmek
Ardından, Google Firebase'den alınan firebase kimlik bilgilerini ekleyin. Bunlar, proje adınızı ve gizli bir anahtarı içeren Ana Bilgisayar adını içerecektir. Bu değerleri bulmak için Firebase ile ilgili önceki eğiticiyi izleyin.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
WiFi SSID ve Parola gibi Wi-Fi Kimlik Bilgilerini ekleyin.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Cihaz adresi (Burada 0x27) ve LCD türü ile I2C LCD'yi başlatın. Ayrıca giriş ve çıkış kapısı için Servo Motorları içerir.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
I2C LCD için I2C iletişimini başlatın.
Wire.begin (D2, D1);
Giriş ve Çıkış Servo Motorunu NodeMCU’nun D5, D6 Pinlerine bağlayın.
myservo.attach (D6); myservos.attach (D5);
Ultrasonik sensörün Tetik Pimini Çıkış olarak ve Yankı Pimini Giriş olarak seçin. Ultrasonik sensör, park yeri kullanılabilirliğini tespit etmek için kullanılacaktır. Araba alanı işgal etmişse o zaman parlayacak, aksi takdirde parlamayacaktır.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
NodeMCU’nun iki pini D0 ve D4, IR sensör okumasını almak için kullanılır. IR sensörü Giriş ve Çıkış kapısı sensörü olarak hareket edecektir. Bu, arabanın varlığını algılayacaktır.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
WiFi'ye bağlanın ve bağlanana kadar bir süre bekleyin.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Bağlanılıyor"); Seri baskı (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Seri.print ("."); gecikme (500); }
Firebase ile bağlantıya kimlik bilgileri olarak Host ve Secret Key ile başlayın.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
0'dan i2c 16x2 LCD ve set imleç konumunu başlayın inci satır 0 inci sütunu.
lcd.begin (); lcd.setCursor (0, 0);
Ultrasonik sensörden uzaklığı alın. Bu, belirli bir noktada aracın varlığını tespit etmek için kullanılacaktır. İlk önce 2 mikrosaniye darbesini gönderin ve ardından alınan darbeyi okuyun. Sonra onu 'cm'ye dönüştürün. Ultrasonik sensör kullanarak mesafe ölçümü hakkında daha fazla bilgiyi buradan edinebilirsiniz.
digitalWrite (TRIG, DÜŞÜK); gecikme Mikrosaniye (2); digitalWrite (TRIG, HIGH); gecikme Mikrosaniye (10); digitalWrite (TRIG, DÜŞÜK); süre = pulseIn (ECHO, HIGH); mesafe = (süre / 2) / 29.1;
IR sensör pimini giriş sensörü olarak dijital olarak okuyun ve yüksek olup olmadığını kontrol edin. Yüksekse, giriş sayısını artırın ve 16x2 LCD ekrana ve ayrıca seri monitöre yazdırın.
int carEntry = digitalRead (carEnter); eğer (carEntry == HIGH) { countYes ++; Seri.print ("Arabaya Girildi ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Arabaya Girildi");
Giriş kapısını açmak için servo motor açısını da hareket ettirin. Açıyı kullanım durumunuza göre değiştirin.
for (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); gecikme (5); } gecikme (2000); for (pos = 45; pos <= 140; pos + = 1) { // 1 derecelik adımlarla myservos.write (pos); gecikme (5); }
Ve okumayı Firebase kitaplığının pushString işlevini kullanarak firebase'e gönderin.
Firebase.pushString ("/ Park Durumu /", fireAvailable);
IR sensöründen Çık ve Servo motordan çık için yukarıdaki gibi benzer adımları uygulayın .
int carExit = digitalRead (carExited); eğer (carExit == HIGH) { countYes--; Serial.print ("Araba Çıktı ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Araba Çıktı"); için (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); gecikme (5); } gecikme (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // 1 derecelik adımlarla myservo.write (pos1); gecikme (5); } Firebase.pushString ("/ Park Durumu /", fireAvailable); lcd.clear (); }
Aracın park yerine gelip gelmediğini kontrol edin ve eğer varmışsa, spotun dolu olduğuna dair sinyal veren yanan led.
eğer (mesafe <6) { Serial.println ("Dolu"); digitalWrite (led, YÜKSEK); }
Aksi takdirde, yerin müsait olduğunu gösterin.
if (mesafe> 6) { Serial.println ("Kullanılabilir"); digitalWrite (led, DÜŞÜK); }
Park yeri içindeki toplam boş alanı hesaplayın ve verileri firebase'e göndermek için dizeye kaydedin.
Empty = allSpace - countYes; Kullanılabilir = Dize ("Kullanılabilir =") + Dize (Boş) + Dize ("/") + Dize (allSpace); fireAvailable = String ("Available =") + String (Empty) + String ("/") + String (allSpace); Ayrıca verileri i2C LCD'ye yazdırın. lcd.setCursor (0, 0); lcd.print (Mevcut);
Bu nasıl park durumu Firebase online takip edilebilir aşağıda anlık gösterildiği gibi:
Bu, ESP8266 NodeMCU Modülünü ve farklı çevre birimlerini kullanarak eksiksiz akıllı park sistemini bitirir. Ultrasonik ve IR sensör yerine başka sensörleri de kullanabilirsiniz. Akıllı Park Sisteminin geniş bir uygulaması vardır ve daha akıllı hale getirmek için farklı ürünler eklenebilir. Herhangi bir şüpheniz varsa aşağıya yorum yapın veya daha fazla destek için forumumuza ulaşın.