Kaçırılan teslimatlara ve beklenmedik misafirlere veda edin! Bugünkü blogumuzda, bozuk bir kapı ziline heyecan verici bir yükseltme yaparak, Makine Öğrenimi gücünü Telegram bildirimleriyle birleştiren bir ev geliştirme projesine dalıyoruz. Bu dönüşümün sadece bir kapı zilini onarmakla kalmayıp, aynı zamanda onu akıllı ve duyarlı bir ön kapı bekçisine dönüştürdüğünü keşfedin.
Seeed Donanımı: Seeed Studio XIAO ESP32S3 Sense
Yazılım: Arduino
Sektör: Ev Otomasyonu, Bina Güvenliği

Arka Plan
Zorluklarla karşılaşmanın dikkate değer yönlerinden biri, bunların ilham kaynakları haline gelme potansiyelidir. Roni Bandini‘nin durumunda, sürekli olarak doğru çalışmayan geleneksel bir kablolu kapı zili ile ilgili bir sorunla karşılaştı. Bazen tamamen sessiz kalıyor, bazen de çaldığında sesi evimin bazı bölgelerine ulaşamıyordu. Bu durum, Roni’yi kapsamlı bir çözüm düşünmeye yönlendirdi: bir ESP32, bir buton, Wi-Fi bildirimleri ve bu eksiklikleri gidermek için iki veya belki üç zilden oluşan özel bir kapı zili sistemi tasarlama fikrini geliştirdi.

Çözüm
Roni, sorunu çözmek için bir ESP32, bir buton, WiFi bildirimleri ve bir çift zil veya hoparlör kullanarak özel bir kapı zili sistemi oluşturmayı seçti.
Projeyi daha fazla düşündüğünde, ziyaretçilerin görüntülerini yakalamak için yüz tanıma teknolojisini uygulayarak işlevselliğini artırabileceğini fark etti; bu, yalnızca seslerine güvenmeyi ortadan kaldırıyordu. Bu yenilik, kapıdaki yüzleri tanımada Makine Öğrenimi yetenekleri sayesinde butonu gereksiz hale getirdi.
Roni, XIAO ESP32S3’ün kompakt ama tam donanımlı bir kart olduğunu ve bu görev için ideal olduğunu buldu. Bu kart, yüksek kaliteli bir kamera, WiFi bağlantısı ve Makine Öğrenimi uygulamaları için yeterince güçlü bir işlemci içeriyordu.
Kurulum
- Antenin kartın üzerine takılması
- Kameranın kartın üzerine takılması
- microSD’yi Fat32 olarak biçimlendirin ve microSD yuvasına yerleştirin


Yazılım yapılandırması

ESP32S3 kartı ile Arduino IDE’de Edge Impulse’u kurmak için şu adımları izleyin:
- Arduino IDE’yi başlatın, ardından “Dosya” > “Tercihler” menüsüne gidin. “Ek Kart Yöneticisi URL’si” alanına şu URL’yi ekleyin: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
- “Araçlar” > “Kart” > “Kart Yöneticisi” menüsüne gidin. Arama çubuğuna “esp32” yazın, ESP32 paketini seçin ve yükleyin.
- ESP32S3 kartınızı bir USB-C kablosu ile bağlayın. Arduino IDE’de “Kart”ı seçin ve “XIAO ESP32S3” seçeneğini belirleyin. Ayrıca mevcut seçeneklerden “OPI PSRAM”ı seçin.

- UniversalTelegramBot kütüphanesini kullanmak için “Sketch” menüsüne gidin, ardından “Kütüphane Ekle” seçeneğine tıklayın ve “Kütüphaneleri Yönet” seçeneğini seçin.
- .ino dosyasını ve Makine Öğrenimi modelini indirin. “Sketch” menüsünden “Kütüphane Ekle” seçeneğini seçin ve ardından sıkıştırılmış model dosyasını eklemek için “Zip Dosyası Ekle” seçeneğini seçin.
- Kod dosyasını açın: Arduino/Documents/libraries/Face_detection_inferencing/scr/edge-impulse-sdk/classifier/ei_classifier_config.h
- “#define EI_CLASSIFIER_TFLITE_ENABLE_ESP_NN 1” içeren satırı bulun ve “1” değerini “0” olarak değiştirin.
Model eğitimi
Bir veya birden fazla yüz ile arka plan veya diğer nesneleri bir görüntüde nasıl ayırt ederiz? Edge Impulse, tam olarak bu amaç için tasarlanmış FOMO (Daha Hızlı Nesneler, Daha Fazla Nesne) adlı güçlü bir algoritma sunar. FOMO, kaynak kısıtlı cihazlarda nesne tespiti yapabilen yenilikçi bir makine öğrenimi algoritmasıdır. Size nesneleri tanımlama ve sayma, görüntü içinde konumlarını belirleme ve birden fazla nesneyi gerçek zamanlı olarak takip etme yeteneği kazandırır.
Kendi görüntülerinizi bu görev için yakalamanız gerekmiyor, çünkü birçok yüz veri seti zaten mevcut. Ben yakın zamanda, zaten bir yüz veri seti içeren mevcut bir Edge Impulse projesini kopyaladım ve bu yeterli oldu. Ancak, kendi görüntülerinizi kullanmak ve yeni bir model eğitmek isterseniz, izlenecek adımlar şunlardır:
- Yaklaşık 400 yüz fotoğrafı toplayın.
- Bu görüntüleri yüz bölgesini seçerek ve “yüz” olarak etiketleyerek anotlayın.
- 96×96 piksel boyutunda görüntü verisi ile bir Impulse oluşturun ve bir görüntü işleme bloğu kurun.
- Nesne tespiti uygulamak için Impulse içinde bir öğrenme bloğu oluşturun.
- 0.00015 öğrenme oranı ile 70 eğitim döngüsü gerçekleştirin.
- Son olarak, eğitilen modeli bir Arduino kütüphanesi olarak dağıtın ve ortaya çıkan Zip dosyasını kaydedin.
Bu talimatları izleyerek, kendi görüntülerinizi kullanarak yüz tespiti için özel bir model etkili bir şekilde eğitebilirsiniz.


Yazılım ayarları
Wi-Fi kimlik bilgilerinizi girin
#define WIFI_SSID ""
#define WIFI_PASSWORD ""
- Telegram Uygulamasına gidin, botfather’ı arayın, /start gönderin, /newbot gönderin
- t.me/sandoombot adresine gidin ve tokeninizi alın
- Telegram Uygulamasında idBot’u arayın
- /getId gönderin
- Linki arayarak oluşturduğunuz bota bir mesaj gönderin
- Bir Grup oluşturun ve botu ekleyin
- https://api.telegram.org/botXXXXXXX:YYYYYYY/getUpdates adresini yükleyin
- ID’yi çıkarın, örneğin id: -1234567890
- Bu ayarlara Token ve ID’yi girin
- ino dosyasını XIAO ESP32S3 Sense kartına yükleyin.
Sonuç
Özetle, XIAO ESP32S3 Sense cihazı görüntüleri yakalar, bunları bir yüz tespit modelinden geçirir ve bir yüz bulunduğunda harekete geçer. Eğer bir yüz tespit ederse, bir LED’i yakar, görüntüyü kaydeder ve aile Telegram grubuna bir bildirim gönderir.
Bu görevler karmaşık gibi görünse de, uygulanması oldukça kolaydı. Bu küçük cihaz, Makine Öğrenimi yardımıyla sadece bir kapı zili olarak değil, aynı zamanda ekstra özellikler sunarak da hizmet vermektedir.
Henüz geleneksel bir kapı zili sesi içermese de, yerel veya uzaktan kolayca ekleyebilirsiniz. Ayrıca, kapıdaki insanları sayarak, arkadaşları tanıyarak ve ziyaretçilere bir mesaj oynatarak geliştirebilirsiniz.

Daha Fazla Bilgi
Daha Fazla Proje Detayı Öğrenin Hackster’da: XIAO ESP32S3 Sense ile Makine Öğrenimi Zili
Herhangi bir soru için lütfen maker.team@seeed.cc ile iletişime geçmekten çekinmeyin veya daha fazla proje tartışmalarına katılmak isterseniz. Sorularınız ve ilginiz memnuniyetle karşılanır.
