Kurs içeriği (8 / 8)
Yapay Zekâ ile Tanışıyorum: Görüntü ve Ses Tanıma · Ders 8 / 8
Mini Proje: Sesle Açılan Akıllı Çöp Kutusu
Kursun son projesinde öğrendiklerimizi birleştiriyoruz: “aç” dediğimizde kapağını açan, “kapat” dediğimizde ya da birkaç saniye sonra kendiliğinden kapanan karton bir akıllı çöp kutusu yapıyoruz. Sesli komut modelini PictoBlox’ta eğitiyor, kapağı Arduino’ya bağlı bir servo motorla hareket ettiriyor, projemizi test edip sunuyoruz.
Bu derste
- Bir projeyi planlar, görev dağılımı yapar ve adım adım uygular.
- PictoBlox’ta sesli komutları tanıyan bir ses sınıflandırma modeli eğitir.
- Servo motoru Arduino’ya bağlar ve modelin kararına göre hareket ettirir.
- Projesini deneme tablosuyla test eder, sonuçlarını ve sınırlılıklarını sunar.
Malzemeler
- Mikrofonlu Windows, macOS veya Linux bilgisayar ve PictoBlox masaüstü uygulaması
- Arduino Uno ve USB kablosu
- SG90 servo motor ve 3 adet erkek-erkek jumper kablo
- İsteğe bağlı: yeşil LED ve 220 Ω direnç
- Karton kutu, hafif karton kapak, bant, makas, pipet veya tel
Elleriniz doluyken ya da kirliyken çöp kutusunun kapağını açmak zor olabilir. Peki kutu sizi duysa? Bu projede “aç” dediğinizde kapağını açan, “kapat” dediğinizde ya da 5 saniye sonra kendiliğinden kapanan bir akıllı çöp kutusu yapacağız. Kursta öğrendiğimiz her şey bu projede bir araya geliyor: veri toplama, model eğitme, test etme ve modeli bir karta bağlama.
Dersin Amacı ve Kazanımlar
Bu dersin sonunda:
- Bir projeyi planlayıp görev dağılımı yapabilecek ve adım adım uygulayabileceksiniz.
- PictoBlox’ta sesli komutları tanıyan bir model eğitebileceksiniz.
- Servo motoru Arduino’ya bağlayıp modelin kararına göre hareket ettirebileceksiniz.
- Projenizi test edip sonuçlarını ve sınırlılıklarını sunabileceksiniz.
Gerekli Malzemeler
| Malzeme | Açıklama |
|---|---|
| Bilgisayar ve PictoBlox | 6. derste kurduğunuz PictoBlox masaüstü uygulaması; mikrofon gerekli |
| Arduino Uno ve USB kablosu | 6. dersteki kart |
| SG90 servo motor | Küçük, 5 V ile çalışan servo; 3 kablosu vardır: kahverengi (GND), kırmızı (5 V), turuncu (sinyal) |
| Yeşil LED ve 220 Ω direnç (isteğe bağlı) | Kapak açıkken yanan uyarı ışığı için |
| Kutu malzemeleri | Ayakkabı kutusu büyüklüğünde karton kutu, hafif karton kapak, bant, makas, servo kolunu kapağa bağlamak için pipet veya tel |
💡 İpucu
Dört kişilik gruplarla çalışın ve görevleri paylaşın: Bir “veri sorumlusu” ses örneklerini toplar, bir “mühendis” devreyi kurar, bir “yazılımcı” blokları yazar, bir “tasarımcı” kutuyu yapar. Her aşamanın sonunda herkes birbirinin işini kontrol etsin.
Proje Planı
Kutumuz iki durumda olabilir: Kapalı ve Açık. Kapalıyken “aç” komutunu bekler. Açıkken “kapat” komutu gelirse ya da 5 saniye geçerse kapanır. Model sürekli dinler; sınıftaki diğer sesleri “gürültü” olarak tanır ve onlara tepki vermez.

1. Aşama: Kutuyu Yapalım
- Kutunun üst yüzüne bir atık deliği açın. Deliği örtecek hafif bir karton kapak kesin ve kapağın bir kenarını bantla kutuya tutturun; bant menteşe görevi görür.
- Servoyu kutunun iç yan duvarına, kolu yukarı bakacak şekilde bantlayın.
- Servo kolunu bir pipet ya da tel parçasıyla kapağın altına bağlayın. Elinizle servo kolunu yavaşça çevirerek kapağın açılıp kapandığını kontrol edin.

2. Aşama: Servoyu Bağlayalım
USB kablosu takılı değilken servonun kablolarını Arduino’ya bağlayın:
| Servo kablosu | Arduino Uno pini |
|---|---|
| Kahverengi (GND) | GND |
| Kırmızı (güç) | 5V |
| Turuncu (sinyal) | 9 |
İsterseniz yeşil LED’i 6. dersteki gibi bir 220 Ω direnç üzerinden 3 numaralı pine bağlayın; kapak açıkken yansın. Sonra USB kablosunu takın, PictoBlox’ta Board → Arduino Uno seçip Connect ile bağlanın. Kart 6. dersten farklıysa Upload Firmware işlemini yapmayı unutmayın.
3. Aşama: Ses Modelini Eğitelim
- Files → Open ML Environment → Create New Project yolunu izleyin. Proje adına “akilli kutu” yazın, Audio Classifier (Ses sınıflandırıcı) seçeneğini seçip projeyi oluşturun.
- Üç sınıf oluşturun:
gurultu,ac,kapat. Sınıf adlarını örnek eklemeden önce yazın; PictoBlox, örnek eklendikten sonra sınıf adının değiştirilmesine izin vermez. - Her sınıfa mikrofonla en az 20 örnek kaydedin; 30 örnek daha iyi olur.
gurultusınıfına sınıfın normal sesini, konuşmaları ve masa seslerini;acvekapatsınıflarına bu kelimeleri farklı kişilerin sesiyle, farklı hız ve yükseklikte kaydedin. - Train Model ile eğitin, test bölümünde mikrofonla deneyin. Sonuçtan memnunsanız Export Model ile blok kodlamaya aktarın.
4. Aşama: Blokları Yazalım
Bloklar İngilizce görünür; yanlarına Türkçe karşılıklarını yazdık. Ses modeli bloklarının adları PictoBlox sürümüne göre biraz farklı görünebilir.
- when flag clicked bloğunun altına Arduino kategorisinden set servo on (9) to (0) angle (9 numaralı pindeki servoyu 0 dereceye getir) bloğunu koyun. Kutu kapalı başlasın.
- Altına ses modelinin open recognition window (tanıma penceresini aç) bloğunu ekleyin. Bu blok mikrofonu dinlemeye başlar.
- Altına bir forever (sürekli tekrarla) bloğu koyun. İçine bir if … then (eğer … ise) bloğu yerleştirin; koşul yerine is identified class … (ac) bloğunu koyun.
- “ise” bölümüne sırasıyla şunları koyun: servoyu 90 dereceye getiren set servo on (9) to (90) angle bloğu, LED kullanıyorsanız set digital pin (3) output as (HIGH) bloğu ve Algılama kategorisinden reset timer (zamanlayıcıyı sıfırla) bloğu.
- Bunların altına Kontrol kategorisinden repeat until (… olana kadar tekrarla) bloğunu ekleyin. Koşul yerine İşlemler kategorisindeki or (veya) bloğunu koyun. “veya” bloğunun bir tarafına is identified class … (kapat) bloğunu, diğer tarafına (timer) > (5) (zamanlayıcı 5’ten büyük) karşılaştırmasını yerleştirin. Tekrarın içine wait (0.1) seconds (0,1 saniye bekle) koyun. Böylece kutu, “kapat” duyana ya da 5 saniye geçene kadar açık bekler.
- Tekrar bloğunun altına servoyu 0 dereceye getiren blok ve 3 numaralı pini LOW yapan blok gelsin. Hepsi bu kadar; yeşil bayrağa tıklayıp “aç” deyin.

⚠️ Önemli Not
Servo motorun dişlileri plastiktir; kapak çok ağırsa ya da sıkışırsa servo zorlanır, ısınır ve Arduino yeniden başlayabilir. Kapağı hafif tutun ve servo çalışırken parmaklarınızı kapağın arasına sokmayın. Devrede değişiklik yapmadan önce USB kablosunu çıkarın. Bu kutuyu bir öğrenme projesi olarak düşünün: Model kimi zaman yanılabilir, bu yüzden kutuya kesici ya da tehlikeli atık koymayın.
5. Aşama: Test Edelim
Her komutu 10 kez, grubun farklı üyelerinin sesiyle deneyin. Ayrıca 1 dakika boyunca normal konuşun ve kutunun kendiliğinden açılıp açılmadığına bakın.
| Deneme | Sayı | Doğru tepki | Notlar |
|---|---|---|---|
| “aç” → kapak açıldı mı? | 10 | ||
| “kapat” → kapak kapandı mı? | 10 | ||
| 5 saniye sonra kendiliğinden kapandı mı? | 5 | ||
| 1 dakika konuşma → kapak kapalı kaldı mı? | 1 |
Proje Değerlendirme Ölçütleri
| Ölçüt | Puan |
|---|---|
| Kutu ve kapak düzeneği sağlam ve düzgün çalışıyor. | 20 |
| Ses modeli her sınıfta yeterli ve çeşitli örnekle eğitilmiş. | 20 |
| Bloklar doğru: “aç” ile açılıyor, “kapat” ile ya da süre dolunca kapanıyor. | 25 |
| Test tablosu doldurulmuş ve sonuçlar yorumlanmış. | 15 |
| Sunum: Proje, sınırlılıkları ve geliştirme fikirleri anlatılmış; grup çalışması dengeli. | 20 |
Sıra Sizde
- Kutu açılırken bir “bip” sesi duyulsun: Arduino’ya bir buzzer bağlayın ya da PictoBlox’un ses bloklarıyla bilgisayardan ses çalın.
- Kutuya bir sayaç ekleyin: Kutu her açıldığında bir değişken 1 artsın ve sahnede “Bugün 12 kez kullanıldı” gibi bir yazı görünsün.
- Kutunun en çok yanıldığı durumu bulun (örneğin belirli bir kişinin sesi ya da gürültülü ortam). Veri ekleyerek bu sorunu azaltın ve test tablosunu yeniden doldurun.
Kendini Dene
- Modelimize neden
gurultuadlı bir sınıf ekledik? - SG90 servonun turuncu kablosu Arduino’nun hangi pinine bağlandı? Bu kablo ne işe yarar?
- Kutunuz “aç” komutuna 10 denemede 7 kez doğru tepki verdi. Bunu iyileştirmek için ne yapabilirsiniz?
Cevaplar
- Model yalnızca bildiği sınıflardan birini seçebilir.
gurultusınıfı olmazsa sınıftaki her ses “aç” ya da “kapat” sanılabilir ve kapak kendiliğinden açılıp kapanır. - 9 numaralı pine bağlandı. Sinyal kablosudur; servonun hangi açıya döneceği bilgisi bu kablodan gider.
- “ac” sınıfına farklı kişilerin sesiyle, farklı hız ve yükseklikte daha çok örnek ekleyip modeli yeniden eğitebilir, sonra testi tekrarlayabilirsiniz.