Arduino Ses İle Beşik Kontrolü
Bebek dünyası, tavana asılmış iki çengelle sallanan beşiklerden bugünkü otomatik beşiklere kadar gelmiştir. Yıllar geçtikçe teknolojinin esas amacı ortaya çıkmış oldu; insanlara kolaylık sağlamak. Biz de bu projede yeni annelerimiz için çok gerekli olan bebeğin ağlaması ile çalışan bir beşik tasarlayacağız. Beşiğin bebekten tarafına doğru yerleştirilmiş ses sensörü ile beşiğin sallanmasını sağlayacağız.
Kullanılan Malzemeler
- Bir adet bebek beşiği,
- Bir adet Arduino Uno kartı,
- Bir adet ses sensörü,
- Bir adet DC motor,
- Bir adet kalın ip,
- Bir adet 12 volt batarya,
- Bir adet 1K ohm direnç,
- Bir adet BC237 transistor,
- Bir adet 1N4001 diyot,
- Bir adet 1 uf kondansatör ve bağlantı elemanları.
Tasarım
Projenin hedefi ses sensöründen gelen veriyi Arduino kartında işleyip motora hareket olarak vermektir. İlk yapacağımız iş, ses sensörünü Arduino kartına bağlamak. Sensörü kartın analog-0 girişine bağlayacağız.
İkinci işimiz, dc motoru Uno kartına bağlamak. Projede kullanacağımız dc motordan bahsedecek olursak; tork değeri 0.35~1.25nm, Çıkış Gücü: 100w ~350w, 1000~8000 rpm ve Voltaj (V): 12v, 24v~48v özelliklerinde olursa daha iyi performans alırız. Motoru Uno kartının PWM uçlarından 9 numaralı pine bağlayacağız. PWM, darbe genişlik modülasyonu demektir. Modülasyon işlemi gerçekleştiren bu tekniğin asıl amacı cihazlara verilen elektriğin gücünü kontrol altında tutmaktır.
Yazacağımız kod ile, motoru yavaştan hızlıya doğru 3 saniye hareket ettirip sonra tekrar yavaşça durduracağız. Bu 3 saniye içerisinde motorun ucuna bağladığımız ip ile beşiği çekip bırakmış olacağız. Motoru tetikleyecek olan ise analog-0’daki ses sensörüdür. Bebeğin ağlaması sensörü tetikleyecek ve Arduino motoru harekete geçirip beşiği sallayacak. Şimdi koda bakalım.
Kodlama
int motor_pin = 9; // motorun bağlı olduğu PWM pin int esik_degeri = 500; // bebek sesi için bizim seçtiğimiz eşik değeri int deger; // okunan analog verinin aktarılacağı değişken void setup() { Serial.begin(9600); // Seri iletişim başlıyor. pinMode(motor_pin, OUTPUT); //motor pini çıkış olarak kullanılacak } void loop() { deger = analogRead(A0); //bebeğin sesi alınıp değişkene aktarılıyor if(deger>=esik_degeri)// eğer ses eşiğe eşit ve büyükse { for(int i=0;i<256;i++) // motor hızı artsın { analogWrite(motor_pin,i);// ve çalışmaya başlasın delay(10); //çakışma olmaması için gecikme sağlanıyor } delay(3000); // motor 3 saniye çalışıyor for(int i=255;i>=0;i--) // motor yavaşlıyor { analogWrite(motor_pin,i); // ve duruyor. delay(10); // çakışma olmaması için gecikme sağlanıyor } delay(3000); // motor 3 saniye duruyor. } else { analogWrite(motor_pin,LOW); // bebeğin sesi az ise motor çalışmıyor. } }