Kurs içeriği (8 / 8)
  1. 1 Makine Öğrenmesi Nedir? 40 dk
  2. 2 İlk Modelim: Taş, Kâğıt, Makas 80 dk
  3. 3 İyi Veri, İyi Model: Işık ve Açı Deneyi 80 dk
  4. 4 Sesleri Tanıyan Model 80 dk
  5. 5 Modelimi Scratch Oyununa Bağlıyorum 80 dk
  6. 6 Modelimi Karta Bağlıyorum: PictoBlox ile Arduino 80 dk
  7. 7 Yapay Zekâ Neden Yanılır? 80 dk
  8. 8 Mini Proje: Sesle Açılan Akıllı Çöp Kutusu 120 dk

Yapay Zekâ ile Tanışıyorum: Görüntü ve Ses Tanıma · Ders 8 / 8

Mini Proje: Sesle Açılan Akıllı Çöp Kutusu

Proje ⏱ 120 dk

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:

  1. Bir projeyi planlayıp görev dağılımı yapabilecek ve adım adım uygulayabileceksiniz.
  2. PictoBlox’ta sesli komutları tanıyan bir model eğitebileceksiniz.
  3. Servo motoru Arduino’ya bağlayıp modelin kararına göre hareket ettirebileceksiniz.
  4. 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.

Akıllı çöp kutusu proje şeması

1. Aşama: Kutuyu Yapalım

  1. 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.
  2. Servoyu kutunun iç yan duvarına, kolu yukarı bakacak şekilde bantlayın.
  3. 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.

Karton akıllı çöp kutusu

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

  1. 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.
  2. Üç 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.
  3. Her sınıfa mikrofonla en az 20 örnek kaydedin; 30 örnek daha iyi olur. gurultu sınıfına sınıfın normal sesini, konuşmaları ve masa seslerini; ac ve kapat sınıflarına bu kelimeleri farklı kişilerin sesiyle, farklı hız ve yükseklikte kaydedin.
  4. 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.

  1. 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.
  2. Altına ses modelinin open recognition window (tanıma penceresini aç) bloğunu ekleyin. Bu blok mikrofonu dinlemeye başlar.
  3. 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.
  4. “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.
  5. 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.
  6. 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.

PictoBlox’ta akıllı çöp kutusu blokları

⚠️ Ö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

  1. 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.
  2. 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.
  3. 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

  1. Modelimize neden gurultu adlı bir sınıf ekledik?
  2. SG90 servonun turuncu kablosu Arduino’nun hangi pinine bağlandı? Bu kablo ne işe yarar?
  3. Kutunuz “aç” komutuna 10 denemede 7 kez doğru tepki verdi. Bunu iyileştirmek için ne yapabilirsiniz?

Cevaplar

  1. Model yalnızca bildiği sınıflardan birini seçebilir. gurultu sınıfı olmazsa sınıftaki her ses “aç” ya da “kapat” sanılabilir ve kapak kendiliğinden açılıp kapanır.
  2. 9 numaralı pine bağlandı. Sinyal kablosudur; servonun hangi açıya döneceği bilgisi bu kablodan gider.
  3. “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.