Günümüzde, piyasada açmak için bir çeşit şifreye ihtiyaç duyan çok sayıda kilit var. Bu kilitler çok verimli ancak çok maliyetlidir. Küçük ölçekli bir amaç için otomatikleştirilen ve herhangi bir şifre olmadan ancak bir akıllı telefonla kilitlenen veya kilitlenen bir kilit yapmamız gerekirse, piyasada kolayca bulunabilen bazı bileşenleri kullanarak bunu başarabiliriz.
Bu kilidin maliyeti çok düşük olacak ve küçük ölçekte mükemmel çalışacaktır. Bir Android uygulama bu kilidi çalıştırmak için gerekli olacaktır. Şimdi ESP32'yi kurmaya, gerekli paketleri kurmaya ve bazı donanım değişikliklerini yapmaya doğru ilerleyelim!
Otomatik Kapı Kilidi
Hiç vakit kaybetmeden, önemli kavramları incelemeye ve bu proje üzerinde çalışmaya başlayalım.
Android ile Çalışan SmartLock Nasıl Yapılır?
Adım 1: Bileşenleri Toplama
Herhangi bir projeye başlamadan önce, eğer projenin ortasında sıkışıp kalacağınız ve zamanınızı boşa harcayacağınız korkusu varsa, bundan kaçınmak için mükemmel bir yaklaşım var. Projede ihtiyaç duyacağınız tüm bileşenlerin tam bir listesini yapın ve ilk etapta satın alın. Bu projede kullanacağımız tüm bileşenlerin tam listesi aşağıdadır. Tüm bu bileşenler piyasada kolaylıkla bulunabilir.
- ESP32
- Atlama Telleri
- Servo motor
- Vidalar
- Kilit
- Matkap Makinesi
Adım 2: Uygulamayı Hazırlama
Cep telefonu ile çalışacak bir akıllı kilit yapacağımız için buton içeren bir android uygulaması geliştirmemiz gerekiyor. Bu düğmeye basarak akıllı kilidi açıp kapatabileceğiz. Önceden, birkaç tane geliştirdik android uygulamaları. İçinde sadece bir butondan oluşan bir uygulama geliştirdik zaten. Bu düğme veri tabanına veri göndermek için kullanılır. Firebase veritabanına '1' itilirse, anahtar kilidi açılır ve bu veritabanına '0' itilirse kilit kapatılır.
Lütfen adlı makalemize bakın Bilgisayarınız İçin Kablosuz Açma / Kapama Anahtarı Oluşturma Akıllı kilidi çalıştırmak için kullanılacak kendi android uygulamanızı geliştirmek için yardım almak.
Adım 3: Bileşenleri Birleştirme
Bu projeyi tamamlamak için ihtiyaç duyduğumuz tüm bileşenlerin tam bir listesine sahip olduğumuz için, bir adım öne geçelim ve tüm bileşenleri bir araya getirelim.
Servo motoru alın ve Vcc'sini ve toprağını sırasıyla ESP kartının Vcc ve toprağına bağlayın. Servo motorunuzun PWM pinini sürücünüzün 34 numaralı pinine bağlayın. ESP32 kurulu . Şimdi bir servo motor üzerinde dişli tipi bir düğme olduğuna bakın. Kilidin sapını çevirerek çıkarınız ve bir miktar yapıştırıcı yardımı ile dişli motor kolunu kilide sabitleyiniz.
Şimdi, matkap makinesinin yardımıyla, bu akıllı kilidi yerleştirmek istediğiniz kapıda birkaç delik açın. Delikleri, kilidin delikleri kapaktaki deliklerle üst üste gelecek ve vidanın sabitlenmesini sağlayacak şekilde açtığınızdan emin olun.
Adım 4: Çalışmak
Şimdi bu projenin arkasındaki ana fikri bildiğimiz için, bu projenin nasıl çalışacağını anlayalım.
ESP32, bu projenin kalbidir. Bu panele bir servo motor bağlıdır ve bu mikro denetleyicinin firebase veri tabanına bağlantısı vardır. Kilidi açmak için uygulamadaki düğmeye basıldığında, '1' firebase veritabanına itilir ve kilidi kapatmak için düğmeye basıldığında, '0' firebase veritabanına itilir. ESP kartı, firebase veritabanındaki bu değeri sürekli olarak okuyor. 0 olduğu sürece, ESP32 servo motoru başlangıç konumunda kalması için yönlendirecektir. Ateş üssüne 1 gelir gelmez, ESP kartı onu okuyacak ve servo motora kilidi açacak bir dönüş yapmasını söyleyecektir.
5. Adım: 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ü şuradan indirin: Arduino.
- 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 COM14 ancak farklı bilgisayarlarda farklıdır.
Bağlantı Noktası Bulma
- 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 '
Tercihler
- Şimdi, ESP32'yi Arduino IDE ile kullanmak için, ESP32 üzerine 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.
Kitaplığı Dahil Et
- Şimdi git Eskiz> Kitaplığı Dahil Et> Kitaplıkları Yönet.
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.
Arduino JSON
- Şimdi tıklayın Araçlar. Bir açılır menü görünecektir. Panoyu şuna ayarlayın: ESP Dev Modülü.
Ayar Panosu
- Araç menüsünü tekrar tıklayın ve daha önce kontrol panelinde gözlemlediğiniz bağlantı noktasını ayarlayın.
Bağlantı Noktası Ayarlama
- Şimdi aşağıdaki bağlantıya ekli olan kodu yükleyin ve kodu ESP32 mikro denetleyicisine yazmak için karşıya yükle düğmesine tıklayın.
Yükle
Yani şimdi kodu yüklediğinizde bir hata meydana gelebilir. Bu, Arduino IDE 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 StaticJsonBuffer jsonBuffer; ^ 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. Programınızı nasıl yükselteceğinizi öğrenmek için lütfen arduinojson.org/upgrade adresine bakın. ArduinoJson sürüm 6, StaticJsonBuffer (). 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ılmıyor: 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 Şu klasörde sürüm 1.0'da WiFiClientSecure kitaplığını 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 Module 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 çıkmaktadır. StaticJsonBuffer. Bu JSON 5'in sınıfıdır. Dolayısıyla, Arduino IDE'mizin Arduino JSON versiyonunu düşürerek bu hatayı ortadan kaldırabiliriz. Basitçe gidin Eskiz> Kitaplığı Dahil Et> Kitaplıkları Yönet. Aramak Benoit Blanchon tarafından Arduino JSON daha önce kurduğ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, Tıklayın buraya.
Adım 6: Kod
Bu projenin kodu çok basit ama yine de bazı parçaları aşağıda açıklanmıştır.
1. Kodun başlangıcında üç kitaplık ekleyeceğiz. Birincisi ESP kartında Wifi'ı etkinleştirmek, ikincisi ESP'nin servo motoru kullanmasını sağlamak ve üçüncüsü ESP kartını firebase veritabanına bağlamak. Bundan sonra, firebase ana bilgisayarını, kimlik doğrulamasını, yerel internet bağlantımızın adını ve şifresini koda ekleyeceğiz. Bunu yaptıktan sonra, servo motoru kullanmak için bir nesne oluşturun.
#include // WiFi kullanmak için kitaplığı dahil et #include // servo motor için kitaplığı dahil et #include // Firebase'e bağlanmak için kitaplığı dahil et #define FIREBASE_HOST 'xxxxxxxxxx' // xxxxxxxxxx'i burada firebase ana makinenizle değiştirin #define FIREBASE_AUTH 'xxxxxxxxxx' / / xxxxxxxxxx'i firebase kimlik doğrulamanızla değiştirin burada # tanımlayın WIFI_SSID 'xx kodu, xxxxxxxx' // xxxxxxxxxx'i Wifi bağlantımızın adıyla değiştirin #define WIFI_PASSWORD 'xxxxxxxxxx' // xxxxxxxxxx'i wifi şifrenizle değiştirin Servo myservo; // servo motor için nesne oluştur int pos = 0; // değişken int durumu oluşturma; // değişken oluşturma
2. geçersiz kurulum () mikro denetleyici kartı açıldığında veya etkinleştirme düğmesine basıldığında bir programda yalnızca bir kez çalışan bir işlevdir. Baud hızı bu işlevde ayarlanır. Baud hızı, aslında mikro denetleyicinin harici cihazlarla iletişim kurduğu saniyede bit cinsinden iletişim hızıdır. Servo motor, ESP kartının pimine34 bağlanır. Bu işlevde mikro denetleyiciyi yerel internet bağlantısına bağlamak için kod yazılır.
geçersiz kurulum () {Serial.begin (115200); // baud hızını ayarlamak myservo.attach (34); // servo motorun PWM pinini ESP32 myservo.write (60) pin34'e bağlayın; gecikme (1000); // wifi'ye bağlanın. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('bağlanıyor'); while (WiFi.status ()! = WL_CONNECTED) {Seri.print ('.'); gecikme (500); } Serial.println (); Serial.print ('bağlı:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }
3. geçersiz döngü () bir döngü içinde tekrar tekrar çalışan bir işlevdir. Bu fonksiyonda mikrodenetleyiciye hangi işlemlerin nasıl yapılacağını anlatıyoruz. Burada veriler firebase'den okunuyor ve int isimli değişkenle saklanıyor durum . Durumda '0' değeri varsa, servo motorun konumu 8 dereceye ayarlanır. Değişken durumdaki değer '1' e eşitse, servo motorun konumu 55 dereceye ayarlanacaktır.
void döngü () {state = Serial.println (Firebase.getFloat ('motor')); // verileri firebase'den okuyun // eğer durum '0' ise DC motor kapanacaktır eğer (state == '0') {myservo.write (8); // servo motor gecikmesinin konumunu ayarlayın (1000); // onw saniye bekleyin Serial.println ('Kapı Kilitli'); } else if (state == '1') {myservo.write (55); // servo motor gecikmesinin yeni konumunu ayarlayın (1000); // bir saniye bekleyin Serial.println ('Kapı Kilitli Değil'); } // if (Firebase.failed ()) {Serial.print ('ayar / numara başarısız oldu:'); Serial.println (Firebase.error ()); dönüş; } gecikme (1000);