Kumandalı otomatik perde maketi; 28BYJ-48 step motor, ULN2003 sürücü kartı, IR kumanda alıcısı ve Arduino Uno ile yapılır. Kumandanın yukarı tuşu perdeyi açar, aşağı tuşu kapatır; Arduino attığı adımları sayarak perdenin konumunu bilir. Bir mikro switch, açılışta perdenin tam açık noktasını bulmaya yarar.
Akıllı evlerdeki motorlu perdeler, küçük bir maketle sınıfta da gösterilebilir. Bu yazıda 28BYJ-48 step motor, ULN2003 sürücü kartı, IR kumanda ve Arduino Uno ile kumandayla açılıp kapanan bir stor perde maketi yapıyoruz. Ortaokul, lise ve meslek lisesi öğrencileri için malzeme listesi, adım adım bağlantı, açıklamalı kod, güvenlik notları ve TÜBİTAK 4006 sergisi için sunum önerileri yazıda yer alıyor.
Kumandalı otomatik perde nedir?
Kumandalı otomatik perde, bir motorun perdeyi bir makaraya sararak açtığı ya da makaradan bırakarak kapattığı, komutların da uzaktan kumandayla verildiği bir ev otomasyonu uygulamasıdır. Bu projede gerçek bir perde değil, ayakkabı kutusu boyutunda bir pencere maketi kullanılır.
Step motor seçilmesinin nedeni konum bilgisidir. Step motor her komutta belirli bir açı kadar döner. Arduino attığı adımları sayarak perdenin ne kadar açık olduğunu her an bilir; ayrı bir konum sensörüne gerek kalmaz.
Hangi malzemeler gerekir?
Arduino Uno, 28BYJ-48 motor ve ULN2003 sürücü kartı seti, HX1838 IR kumanda ve alıcı kiti, bir mikro switch ve jumper kablolar yeterlidir. Maket için karton kutu, kalem ya da ahşap çubuk ve hafif bir kumaş veya kâğıt gerekir.
Malzeme listesi
| Malzeme | Adet | Ne işe yarar? |
|---|---|---|
| Arduino Uno R3 (CH340, USB kablolu) | 1 | Kumanda kodunu çözer, motoru yönetir |
| 28BYJ-48 redüktörlü step motor ve ULN2003A sürücü kartı | 1 set | Perde makarasını döndürür |
| HX1838 IR kumanda ve alıcı kiti | 1 | Aç, kapat, dur komutlarını verir |
| VM3 mikro switch (3 pinli) | 1 | Perdenin tam açık konumunu algılar |
| Erkek-dişi jumper kablo ve 830 pinli breadboard | 1 set | Bağlantılar için |
| Karton kutu, kalem ya da 20 mm çaplı çubuk, hafif kumaş | 1 | Pencere ve stor perde maketi |
28BYJ-48'in adım sayıları ve sürücü kartının ayrıntıları ULN2003 ile 28BYJ-48 step motor sürme yazımızda anlatılıyor.
Perde kaç adımda açılır?
Perdenin açılması için gereken adım sayısı, perde yüksekliğinin makara çevresine bölünmesi ve tur başına adım sayısıyla çarpılmasıyla bulunur. 28BYJ-48, Arduino'nun Stepper kütüphanesiyle tam adım modunda yaklaşık 2048 adımda bir tur döner.
Örneğin 20 mm çaplı bir makaranın çevresi π × 20 ≈ 63 mm'dir. 40 cm'lik bir perde için 400 / 63 ≈ 6,4 tur gerekir; bu da 6,4 × 2048 ≈ 13.000 adım eder. Kumaş makaraya sarıldıkça çap biraz büyür; bu yüzden kesin değeri maketiniz üzerinde deneyerek bulun.
| Perde yüksekliği | Tur (20 mm makara) | Adım (yaklaşık) | Süre (12 devir/dk) |
|---|---|---|---|
| 20 cm | 3,2 | 6.500 | ≈ 16 s |
| 30 cm | 4,8 | 9.800 | ≈ 24 s |
| 40 cm | 6,4 | 13.000 | ≈ 32 s |
Motor yavaştır ama redüktörü sayesinde hafif bir maket perdeyi rahatlıkla kaldırır. Daha hızlı açılma isterseniz makara çapını büyütebilirsiniz; bu durumda motorun zorlanmaması için perdenin hafif olması daha da önemli hale gelir.
Devre nasıl bağlanır?
ULN2003 kartının IN1-IN4 uçları D8, D9, D10 ve D11'e; IR alıcının sinyal ucu D2'ye; mikro switch ise D7 ile GND arasına bağlanır. Motor, beyaz soketiyle ULN2003 kartına takılır.
- ULN2003 kartını bağlayın: IN1 → D8, IN2 → D9, IN3 → D10, IN4 → D11, + → 5V, − → GND. Motorun soketini karttaki beyaz yuvaya takın.
- IR alıcıyı bağlayın: sinyal (S ya da OUT) → D2, + (VCC) → 5V, − (GND) → GND. Pin sırası alıcıya göre değişebilir; kartın üzerindeki yazıları kontrol edin.
- Mikro switch'in ortak (C) ucunu D7'ye, normalde açık (NO) ucunu GND'ye bağlayın. Kodda dahili pull-up açık olduğu için ayrı direnç gerekmez.
- Switch'i maketin üst kısmına, perde tamamen açıldığında perdenin alt çıtası ona değecek şekilde yapıştırın.
- Kalemi ya da çubuğu motor miline sıkıca geçirin, perde kumaşının üst kenarını bantla bu makaraya tutturun.
- Arduino IDE'de "IRremote" kütüphanesini kurun. Kodu yüklemeden önce bir yetişkine bağlantıları kontrol ettirin.
#include <IRremote.hpp>
#include <Stepper.h>
Stepper motor(2048, 8, 10, 9, 11); // IN1-IN3-IN2-IN4 sirasi
const byte IR_PIN = 2, SWITCH = 7;
const long PERDE_ADIM = 13000; // kendi maketinize gore ayarlayin
const int YON = 1; // ters donuyorsa -1 yapin
const byte TUS_AC = 0x18, TUS_KAPA = 0x52, TUS_YARIM = 0x40, TUS_DUR = 0x1C;
long konum = 0; // 0 = tam acik, PERDE_ADIM = kapali
long hedef = 0;
void bobinleriKapat() { for (byte p = 8; p <= 11; p++) digitalWrite(p, LOW); }
void setup() {
Serial.begin(9600);
pinMode(SWITCH, INPUT_PULLUP);
motor.setSpeed(12); // devir/dakika
IrReceiver.begin(IR_PIN);
long sayac = 0; // acilista switch'e kadar ac
while (digitalRead(SWITCH) == HIGH && sayac < PERDE_ADIM + 2000) {
motor.step(-YON * 8);
sayac += 8;
}
bobinleriKapat();
}
void loop() {
if (IrReceiver.decode()) {
if (!(IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT)) {
byte kod = IrReceiver.decodedIRData.command;
Serial.print(F("Tus: 0x"));
Serial.println(kod, HEX);
if (kod == TUS_AC) hedef = 0;
else if (kod == TUS_KAPA) hedef = PERDE_ADIM;
else if (kod == TUS_YARIM) hedef = PERDE_ADIM / 2;
else if (kod == TUS_DUR) hedef = konum;
}
IrReceiver.resume();
}
if (hedef - konum >= 8) { // kapat yonunde 8 adim
motor.step(YON * 8);
konum += 8;
} else if (konum - hedef >= 8) { // ac yonunde 8 adim
if (digitalRead(SWITCH) == LOW) { konum = 0; hedef = 0; } // tam acik
else { motor.step(-YON * 8); konum -= 8; }
} else {
bobinleriKapat(); // dururken akim cekmesin
}
}
Kod nasıl çalışır?
Kod, perdenin konumunu adım sayısı olarak tutar ve her döngüde perdeyi hedefe doğru 8 adım ilerletir. Motor küçük parçalar halinde döndüğü için Arduino arada kumandayı dinleyebilir; böylece perde hareket ederken "dur" tuşu çalışır.
| Kumanda tuşu | Koddaki kod | Hedef konum |
|---|---|---|
| ▲ (yukarı) | 0x18 | 0 adım: tam açık |
| ▼ (aşağı) | 0x52 | 13.000 adım: tam kapalı |
| 5 | 0x40 | 6.500 adım: yarı açık |
| OK | 0x1C | Bulunduğu yerde durur |
Tablodaki tuş kodları bu kitlerde sık görülen değerlerdir, ancak kumandanız farklı kodlar gönderebilir. Seri Monitör'ü 9600 baud'da açın, tuşlara basın ve görünen kodları koddaki sabitlere yazın. IR alıcının çalışma ilkesi kızılötesi sensör ve kumanda yazımızda, röleli benzer bir proje ise uzaktan kumandalı lamba yazısında yer alıyor.
Açılışta motor, switch'e basılana kadar perdeyi açar ve bu noktayı sıfır kabul eder. Elektrik kesilip yeniden gelse bile perde konumunu böylece yeniden bulur. Switch bağlı değilse motor en çok 15.000 adım döner ve durur; kumaş makaradan boşalmasın diye ilk denemede perdeyi elle yarıya getirin.
Hangi güvenlik kurallarına dikkat edilmeli?
Bu proje bir maket içindir; yalnızca USB'nin 5V gerilimiyle çalışır ve evdeki gerçek perdelere ya da 220V perde motorlarına bağlanmaz.
- Arduino'yu bilgisayardan ya da 5V 1A'lik bir USB telefon şarj adaptöründen besleyin; adaptörü prize bir yetişkin taksın.
- Motorun bobinleri 5V'ta toplam yaklaşık 200 mA'e kadar akım çekebilir. Kod, motor dururken bobinleri kapatarak ısınmayı ve gereksiz tüketimi önler.
- Dönen makaraya parmak, saç ya da kablo kaptırmayın; sergide makarayı maketin içinde tutun.
- Perdeyi elle zorlayarak çevirmeyin; redüktörün plastik dişlileri zarar görebilir.
Projeyi nasıl sunarsınız?
Projeyi, kumandayla canlı gösterim yapıp adım sayısı ile perde konumu arasındaki ilişkiyi hesaplarla açıklayarak sunabilirsiniz.
- Problem: "Perde motoru, perdenin nerede olduğunu nasıl bilir?"
- Hesap afişi: Makara çevresi, tur sayısı ve adım sayısı hesabını adım adım gösterin; ölçtüğünüz açılma süresini hesapla karşılaştırın.
- Deney: Farklı makara çaplarıyla (ör. 10 mm ve 20 mm) açılma süresini kronometreyle ölçün, tabloya yazın.
- Geliştirme fikirleri: Bir LDR ile sabah perdenin kendiliğinden açılması, bir saat modülüyle zamanlı açılma ya da Bluetooth ile telefondan kontrol.
Sık sorulan sorular
Motor titriyor ama dönmüyorsa ne yapmalıyım?
Bu durumda motor bobinleri yanlış sırayla sürülüyordur ya da hız çok yüksektir. Koddaki Stepper motor(2048, 8, 10, 9, 11) sırasını değiştirmeyin ve IN1-IN4 kablolarının D8-D11'e sırayla takıldığını kontrol edin. Hızı 10 devir/dakikaya düşürmek ve perdenin sıkışmadığından emin olmak da işe yarar.
Perde ters yöne gidiyorsa nasıl düzeltilir?
Koddaki YON sabitini 1 yerine −1 yapmanız yeterlidir. Perdenin makaraya önden ya da arkadan sarılması dönüş yönünü tersine çevirir. Yönü değiştirdikten sonra açılışta motorun perdeyi switch'e doğru, yani yukarı sardığını kontrol edin.
Kumanda bazen çalışmıyorsa sorun nedir?
IR alıcı, kumandanın alıcıyı doğrudan görmesine ihtiyaç duyar; alıcıyı maketin önüne, kutunun dışında kalacak şekilde yerleştirin. Güneş ışığı ve bazı LED lambalar da kızılötesi gürültü üretir. Kumandanın pilini kontrol edin ve Seri Monitör'de tuş kodunun doğru göründüğünden emin olun.
Perde tam kapanmıyor ya da fazla iniyorsa ne yapmalıyım?
PERDE_ADIM değeri maketinize uygun değildir. Perdeyi kapatın, eksik ya da fazla kalan mesafeyi ölçün ve değeri orantılı olarak artırın ya da azaltın. Örneğin 13.000 adımda 5 cm eksik kalan 40 cm'lik perde için yaklaşık 14.600 adım deneyin.
Özet
- Kumandalı otomatik perde maketi; 28BYJ-48, ULN2003, IR alıcı ve Arduino Uno ile yapılır.
- ULN2003 IN1-IN4 → D8-D11, IR alıcı → D2, mikro switch D7 ile GND arasına bağlanır.
- 20 mm makarayla 40 cm perde yaklaşık 6,4 tur, yani yaklaşık 13.000 adımda açılır.
- Arduino konumu adım sayarak bilir; switch açılışta sıfır noktasını bulur.
- Proje USB'nin 5V gerilimiyle çalışan bir maket içindir; gerçek perde motorlarına bağlanmaz.
