ESP32 Modülünden Akıllı Ev Otomasyon Sistemi Nasıl Yapılır?
Bu modern çağda, ev otomasyonu kavramı büyük bir hızla büyüyor. Akıllı sistemler hemen hemen her yere kuruluyor. Akıllı Ev Sistemleri, tüm elektrikli cihazların veya cihazların tek bir uzaktan kumanda ile kontrol edildiği bir konsepttir. Bu sistemlerde uzaktan kumanda çoğu zaman bir mobil uygulamadır. Bir android cep telefonu insanlar arasında en yaygın olanı olduğundan, bir android uygulaması tüm bu cihazları kontrol etmek için en iyi seçenektir.
Dolayısıyla bu projede, evdeki elektrikli cihazlardan bazılarını Röle modülüne bağlayacağız ve ESP32 Mikroişlemci aracılığıyla kontrol edeceğiz. Bir firebase gerçek zamanlı veritabanı oluşturup bunu android uygulamasından bağlayacağız. Bu android uygulaması verileri buluta gönderecek ve ardından elektrikli cihazı açıp kapatmak için mikro denetleyiciye gönderilecektir. En iyi yanı, cihazlarınızın değiştirilmesi üzerinde dünyanın herhangi bir yerinden tam kontrole sahip olabilmenizdir. Android uygulamasını çalıştırmak için sadece bir internet bağlantısına ihtiyacınız var.
Ev Aletleri WiFi Üzerinden Nasıl Kontrol Edilir?
Halihazırda piyasada bulunan Ev Otomasyon sistemleri oldukça maliyetlidir. Farklı ev aletlerini bağlamak ve bunları bir Android Uygulaması kullanarak kontrol etmek için bir ESP32 kartı kullanabiliriz. Bu çok düşük maliyetli ve evi otomatikleştirmenin verimli bir yolu olacaktır. Şimdi bir adım öne geçelim ve projeyi başlatmak için bilgi toplamaya başlayalım.
Adım 1: Bileşenleri Toplama
Herhangi bir projeye başlamak için en iyi yaklaşım, bileşenlerin bir listesini yapmak ve bu bileşenlerin kısa bir incelemesini yapmaktır çünkü hiç kimse eksik bir bileşen yüzünden bir projenin ortasında kalmak istemeyecektir. Bu projede kullanacağımız bileşenlerin bir listesi aşağıda verilmiştir:
Adım 2: Bileşenlerin İncelenmesi
Şimdi bu projenin özetini bildiğimize göre, bir adım öne geçelim ve kullanacağımız ana bileşenlerin çalışmasıyla ilgili kısa bir çalışmadan geçelim.
ESP32dahili WiFi ve çift modlu Bluetooth modülüne sahip düşük güçlü ve düşük maliyetli bir mikro denetleyici kartıdır. Bu Mikrodenetleyici panosu tarafından oluşturulmuş ve geliştirilmiştir. Espressif Sistemleri. Bu kart yerleşik güç amplifikatörlerine, düşük hoş alıcı amplifikatörlere, filtrelere ve anten anahtarlarına sahiptir. Bir android veri kablosuyla güçlendirilmiştir ve çıkışta 3,3V'a kadar sağlayabilir. ESP32, TCP / IP, tam 802.11 b / g / n / e / I WLAN MAC kuralı ve Wi-Fi Direct özelini yürütür. Bu, ESP 32'nin istasyon (istemci) modunda kullanıldığında WiFi Yönlendiricilerin büyük bir bölümünü adresleyebileceği anlamına gelir. Aynı şekilde, tam 802.11 b / g / n / e / I ile bir Erişim noktası oluşturabilir. ESP32, en yeni BLE Bluetooth 4.2'yi desteklemekle kalmaz, aynı zamanda mükemmel Bluetooth'u destekler. Temel olarak eski ve yeni Bluetooth telefonları/masalarını ele alabileceğini ima eder. ESP32 modülünüz yoksa, ESP8266 veya Node MCU da kullanabilirsiniz. Bu kartlar, WiFi'ye bağlılarsa aynı görevi gerçekleştirmek için kullanılabilir.
Röle modülü bir anahtarlama cihazıdır. İki modda çalışır, Normalde Açık (NO) ve Normalde Kapalı (NC). NO modunda, Arduino üzerinden röleye YÜKSEK bir sinyal göndermediğiniz sürece devre her zaman kesilir. NC modu tam tersi şekilde kötüleşir, röle modülünü açmadığınız sürece devre her zaman tamamlanır. Elektrikli Cihazınızın pozitif kablosunu aşağıda gösterilen şekilde röle modülüne bağladığınızdan emin olun.
Adım 3: Blok Şeması
Yukarıdaki blok şemada, bu projenin akışı gösterilmektedir. Röleler evin elektrikli aletlerine veya cihazlarına bağlanır. Bir mobil uygulama bir Açık veya KAPALI veritabanına komut. Bu bulut, ESP32 mikro denetleyici kartına WiFi aracılığıyla bağlanır. Elektronik cihazı açmak için veri tabanına bir "1" göndereceğiz ve kapatmak için veri tabanına bir "0" göndereceğiz. Bu komut daha sonra mikrodenetleyici tarafından alınacaktır çünkü aynı zamanda veritabanına da bağlıdır. Bu 0 veya 1'e bağlı olarak, mikrodenetleyici röle modülünü açıp kapatacak ve sonuçta elektrikli cihazların açılmasına neden olacaktır.
Bu yüzden burada, bu makalede, size tüm prosedürü göstermek için iki röle modülü kullanacağım. Ancak, daha fazla sayıda elektrikli ev aletini kontrol etmek istiyorsanız, röle sayısını artırabilir ve aynı kod parçasını programınıza ekleyebilirsiniz.
Adım 4: Bileşenleri Birleştirme
Şimdi bu projede ne yapmak istediğimize dair net bir vizyonumuz olduğu için, daha fazla zaman kaybetmeyelim ve bileşenleri birleştirmeye başlayalım.
- Bir devre tahtası alın ve içindeki ESP32 mikrodenetleyicisini sabitleyin. Şimdi iki röle modülünü alın ve modüllerin Vcc ve topraklamasını Vin'e ve ESP32 mikrodenetleyici kartının topraklamasına paralel olarak bağlayın. Bağlan sabitlenmiş röle modüllerinin ESP32 kartının pin34 ve pin35'ine. Artık rölelerin açık olduğunu göreceksiniz.
- Ev aletlerini röle modülüne bağlayın. Bağlantılarınızın Adım 2'deki şekilde gösterilen bağlantılarla eşleştiğinden emin olun.
Şimdi sistemimizin donanım kısmını bağladığımız gibi. Firebase veritabanına bağlanacak bir android uygulaması geliştireceğiz. Veritabanını ve android uygulamasını bu yazının 2. bölümünde yapacağız.
Adım 5: ESP32'ye Başlarken
Daha önce Arduino IDE üzerinde çalışmadıysanız endişelenmeyin çünkü Arduino IDE'yi kurmak için adım adım adımlar aşağıda gösterilmiştir.
- Arduino IDE'nin en son sürümünü Arduino'dan indirin.
- Arduino kartınızı PC'ye bağlayın ve Kontrol Panelini açın. Tıklamak Donanım ve ses.Şimdi aç Cihazlar ve Yazıcı ve kartınızın bağlı olduğu bağlantı noktasını bulun. Benim durumumda COM14ancak farklı bilgisayarlarda farklıdır.
- Dosya'ya ve ardından Tercihler'e tıklayın. Aşağıdaki bağlantıyı kopyalayın Ek Kurul Yöneticisinin URL'si. "https://dl.espressif.com/dl/package_esp32_index.json ”
- Şimdi, ESP32'yi Arduino IDE ile kullanmak için, ESP32'ye kod yazmamıza ve kullanmamıza izin verecek özel kütüphaneleri içe aktarmamız gerekiyor. bu iki kitaplık aşağıda verilen bağlantıya eklenmiştir. Kitaplığı dahil etmek için gidin Eskiz> Kitaplığı Dahil Et> ZIP Kitaplığı Ekle. Bir kutu görünecektir. Bilgisayarınızda ZIP klasörünü bulun ve klasörleri dahil etmek için Tamam'ı tıklayın.
- Şimdi git Eskiz> Kitaplığı Dahil Et> Kitaplıkları Yönet.
- Bir Menü açılacaktır. Arama çubuğuna yazın Arduino JSON.Bir liste görünecektir. Yüklemek Benoit Blanchon tarafından Arduino JSON.
- Şimdi tıklayın Araçlar.Bir açılır menü görünecektir. Panoyu şuna ayarlayın: ESP Dev Modülü.
- Araç menüsünü tekrar tıklayın ve daha önce kontrol panelinde gözlemlediğiniz bağlantı noktasını ayarlayın.
- Şimdi aşağıdaki linkte bulunan kodu yükleyin ve kodu ESP32 mikrodenetleyici üzerinde yakmak için yükle butonuna tıklayın.
Yani şimdi kodu yüklediğinizde bir hata meydana gelebilir. Bu, Arduino IDE'nin ve Arduino JSON'un yeni bir sürümünü kullanıyorsanız ortaya çıkabilecek en yaygın hatadır. Ekranda görebileceğiniz hatalar aşağıdadır.
C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, C: \ Users \ Pro \ Desktop \ smartHome \ code \ code.ino: 2: C'den alınan dosyada : \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: error: StaticJsonBuffer, ArduinoJson'dan bir sınıftır 5. Programınızı ArduinoJson'a nasıl yükselteceğinizi öğrenmek için lütfen arduinojson.org/upgrade adresine bakın sürüm 6 StaticJsonBufferjsonBuffer; ^ C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, C: \ Users \ Pro \ Desktop \ smartHome \ code \ code.ino: 2: C:\Users\Pro\Documents\Arduino\libraries\IOXhop_FirebaseESP32-master/IOXhop_FirebaseStream.h:65:11: error: StaticJsonBuffer, ArduinoJson 5'ten bir sınıftır. Lütfen programınızı nasıl yükselteceğinizi öğrenmek için arduinojson.org/upgrade adresine bakın. ArduinoJson sürüm 6 StaticJsonBuffer döndürür () .parseObject (_data); ^ "WiFi.h" için birden fazla kitaplık bulundu Kullanılan: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ packages \ esp32 \ hardware \ esp32 \ 1.0.2 \ libraries \ WiFi Kullanılmayan: C: \ Program Files ( x86) \ Arduino \ libraries \ WiFi Klasördeki 1.0 sürümünde kütüphane WiFi kullanarak: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ packages \ esp32 \ hardware \ esp32 \ 1.0.2 \ libraries \ WiFi IOXhop_FirebaseESP32-master kitaplık kullanarak klasörde: C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master (eski) Klasördeki 1.2 sürümünde kitaplık HTTPClient kullanma: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ packages \ esp32 \ hardware \ esp32\1.0.2\libraries\HTTPClient WiFiClientSecure kütüphanesini sürüm 1.0 klasöründe kullanma: C:\Users\Pro\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\WiFiClientSecure ArduinoJson kütüphanesini kullanma sürüm 6.12.0 klasöründe: C: \ Users \ Pro \ Documents \ Arduino \ libraries \ ArduinoJson çıkış durumu 1 Kart ESP32 Dev Modülü için derleme hatası.
Endişelenecek bir şey yok çünkü bazı basit adımları izleyerek bu hataları ortadan kaldırabiliriz. Bu hatalar, Arduino JSON'un yeni sürümünün yerine başka bir sınıfa sahip olduğu için ortaya çıkıyor. StaticJsonBuffer.Bu JSON 5'in sınıfıdır. Dolayısıyla, Arduino IDE'mizin Arduino JSON sürümünü düşürerek bu hatayı ortadan kaldırabiliriz. Basitçe gidin Eskiz> Kitaplığı Dahil Et> Kitaplıkları Yönet.AramakBenoit Blanchon tarafından Arduino JSONdaha önce yüklemiş olduğunuz Önce onu kaldırın ve ardından sürümünü şu şekilde ayarlayın: 5.13.5. Şimdi Arduino JSON'un eski bir sürümünü ayarladığımız için, tekrar kurun ve kodu yeniden derleyin. Bu sefer kodunuz başarıyla derlenecektir.
Kodu indirmek için burayı tıklayın.
Adım 6: Kodu Anlama
Bu projenin kodu çok basit ve iyi yorumlanmıştır. Ancak yine de, kod aşağıda kısaca açıklanmıştır.
1. Başlangıçta, ESP32 kartının evdeki veya ofisteki yerel WiFi bağlantısına bağlanabilmesi için kitaplıklar dahil edilmiştir. Bundan sonra, firebase projenize bir bağlantı ve firebase projenizin kimlik doğrulaması tanımlanır. Ardından, ESP32'nin Wifi'ye bağlanabilmesi için yerel wifi bağlantınızın adı ve şifresi tanımlanır. ESP32'nin bazı pinleri röle modüllerine bağlanacak şekilde tanımlanmıştır. ve sonunda firebase bulutundan gelecek bazı geçici verileri depolayacak bir değişken bildirildi.
#Dahil etmek// yerel Wifi bağlantısına bağlanmak için kitaplığı dahil et #include // Firebase veritabanına bağlanmak için kitaplığı dahil et #define FIREBASE_HOST "coma-patient.firebaseio.com" // firebase projenizin bağlantısını ekleyin #define FIREBASE_AUTH "UrzlDZXMBNRhNdc5i73DRW10KFEuw8ZPEAN9lmdfSde projenizin kimlik doğrulamasını dahil edin" // "// evinizin veya ofisinizin WiFi bağlantısının adı # tanımla WIFI_PASSWORD" abcd "// evinizin veya ofisinizin WiFi bağlantısının şifresi int r1 = 34; // röle 1'i bağlamak için pin int r2 = 35; // röle 2'yi bağlamak için pin int temp; // veri taşımak için değişken
2. geçersiz kurulum ()INPUT veya OUTPUT pinlerini başlattığımız bir fonksiyondur. Bu işlev ayrıca baud hızını da ayarlar. Serial.begin () komut. Baud Hızı, mikro denetleyicinin iletişim hızıdır. ESP32'yi yerel wifi bağlantısına bağlamak için buraya bazı kod satırları eklenir. Pano, yerel kablosuz bağlantıya bağlanmaya çalışacak ve "bağlantı" yazacaktır. seri monitörde. Bağlantı kurulduğunda "Bağlandı" yazacaktır. Bu nedenle, bunu izlemek için, seri monitörü açıp orada durumunu kontrol etmek daha iyidir.
geçersiz kurulum () {Serial.begin (115200); // baud hızını ayarlama // wifi'ye bağlan. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ("bağlanıyor"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); gecikme (500); } Serial.println (); Seri.print ("bağlı:"); Serial.println(WiFi.localIP()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }
3. geçersiz döngü ()bir döngüde tekrar tekrar çalışan bir işlevdir. Bu döngüde, mikrodenetleyici kartına hangi görevlerin ve nasıl gerçekleştirileceğini söyleyen bir kod yazıyoruz. Verileri karşısına getirdik hafif ve ACveritabanından alınır ve iki geçici değişkende saklanır. Ardından, veritabanından getirilen 0 veya 1'e göre iki cihazı değiştirmek için dört koşul uygulanır.
void döngü () {// temp1 değerini al = Serial.println (Firebase.getFloat ("light")); // hafif geçişin değerini al temp2 = Serial.println (Firebase.getFloat ("AC")); // Fan gecikmesinin (1000) değiştirilmesi için değeri alın; if (temp1 == 1 && temp2 == 1) {// Işığı ve fan'ı açmak için digitalWrite (r1, HIGH); digitalWrite(r2,YÜKSEK); } if (temp1 == 0 && temp2 == 1) {// Fanı açmak ve ışığı kapatmak için digitalWrite (r1, LOW); digitalWrite (r2, YÜKSEK); } if (temp1 == 1 && temp2 == 0) {// Fanı kapatmak ve hafif digitalWrite'ı açmak için (r1, HIGH); digitalWrite (r2, DÜŞÜK); } if (temp1 == 0 && temp2 == 0) {// Fanı ve ışığı kapatmak için digitalWrite (r1, LOW); digitalWrite (r2, DÜŞÜK); }}
Bu, "ESP32 Kullanarak Akıllı Ev Sistemi Nasıl Yapılır?". Daha fazla ev aletini kontrol etmek istiyorsanız daha fazla röle modülü ekleyebilirsiniz, yapmanız gereken tek şey firebase'den veri okumak ve anahtarlama için daha fazla koşul eklemektir. Bir sonraki yazımda bir android uygulama ve Firebase veri tabanının nasıl geliştirileceğini anlatacağım. Android uygulamasını firebase'e bağlamak ve ona veri göndermek için adım adım prosedürü anlatacağım.
Sonraki eğiticiye gitmek içinBuraya tıklayın