Kızılötesi Algılayıcıyı Arduino ile Kullanma
Kızılötesi (diğer adıyla IR) sensör nedir?
IR sensörü, standartlara göre tanımlanan belirli frekans aralıklarında IR sinyallerini tarayan ve bunları çıkış pimindeki (tipik olarak sinyal pimi olarak adlandırılır) elektrik sinyallerine dönüştüren elektronik bir araçtır. IR sinyalleri esas olarak, TV uzaktan kumandalarında veya diğer benzer elektronik cihazlarda zaten çalıştığınız gibi kısa mesafelerde (genellikle birkaç metre) havadan komutları iletmek için kullanılır.
IR iletişim protokolü
Her sinyal belirli bir kodu temsil eder. Elektrik sinyalleri, gönderenin gönderdiği gerçek verilere / koda dönüştürülebilir. TV uzaktan kumandanızdaki bir düğmeye bastığınızda, düğme koduna karşılık gelen bir sinyal üretir (örneğin Açık / Kapalı, Sesi Açma, vb.) Ve bir alıcıya gönderir (bu durumda TV'niz). Hem gönderen hem de alıcı bir dizi kod üzerinde anlaştılar, böylece alıcı her koda göre ne yapacağını bilir. Bir kodun farklı standartlarda bir sinyal olarak tanımlanması (modellenmesi) ve her sensör üreticisi normalde farklı cihazlarda kullanılabilmesi için kendileriyle uyumlu bir ürün üretmeye çalışır. En bilinen standart protokollerden biri NEC'tir. Wikipedia'da IR protokollerinin kısa bir geçmişini Tüketici IR başlığı altında bulabilirsiniz.
Adım 1: Bir IR Sensörü Nasıl Görünüyor?
IR sensörleri farklı paketlerde mevcuttur. Burada bir IR alıcısı için bazı tipik ambalajlar görebilirsiniz.
Adım 2: IR Sensörü Koparma Kartı / modülü
Ayrıca eBay, Aliexpress veya Amazon'da bir IR modülü / koparma panosu olarak satın alabilirsiniz. Bu tür modüller normalde yukarıda belirtilen sensörlerden birini, sensör bir sinyal algıladığında yanıp sönen bir LED ile birlikte güzel bir breadboard dostu paket ile birlikte içerir. Böylece herhangi bir verinin aktarılıp aktarılmadığını fark edersiniz. Bu modüllerden biriyle başlamanızı şiddetle tavsiye ederim.
Not: Ham bir IR sensörünüz varsa, hiçbir şey değişmez, ancak doğru kabloladığınızdan emin olmak için sensörün veri sayfasını kontrol etmelisiniz, aksi takdirde uzun süre dayanacak bir kokuya sahip güzel bir mavi dumanınız olabilir. saat. Ne demek istediğimi biliyorsun ;)
Adım 3: Gerekli Parçalar ve Bileşenler
Burada bu öğreticiyi tamamlamak için ihtiyaç duyacağınız bileşenlerin listesini bulabilirsiniz:
eBay bağlantıları:
- 1 x Arduino Uno: //rover.ebay.com/rover/1/711-53200-19255-0/1 ...
- 1 x uzaktan kumandalı IR sensör modülü: //rover.ebay.com/rover/1/711 ....
- 4 x 220 ohm direnç: //rover.ebay.com/rover/1/711-53200-19255-0 / ...
- 4 x LED: //rover.ebay.com/rover/1/711-53200-19255-0 / ...
- 8 x Dupont kablosu: //rover.ebay.com/rover/1/711-53200-3=4&too ...
- 1 x Lehimsiz breadboard: //rover.ebay.com/rover/1/711-53200 -...
- 1 x Mini breadboard (isteğe bağlı): //rover.ebay.com/rover/1/711-532 ...
Amazon.com bağlantıları:
- 1 x Arduino Uno: //amzn.to/2uJfKy1
- 1 x uzaktan kumandalı IR sensör modülü: //amzn.to/2uMS1eT
- 1 x Lehimsiz breadboard: //amzn.to/2uMC6gl
- 4 x 220 ohm direnç: //amzn.to/2hbGiDs
- 4 x LED: //amzn.to/2uMEtjy
- 8 x Dupont kablosu: //amzn.to/2eXCvbT
- 1 x Mini breadboard (isteğe bağlı): //amzn.to/2vUelmC
Amazon.co.uk bağlantıları:
- 1 x Arduino Uno: //amzn.to/2u8DXKD
- 1 x uzaktan kumandalı IR sensör modülü: //amzn.to/2wagB8Y
- 4 x 220 ohm direnç: //amzn.to/2uJCsGs
- 4 x LED: //amzn.to/2u8nNRo
- 8 x Dupont kablosu: //amzn.to/2vaLDQN
- 1 x Lehimsiz breadboard: //amzn.to/2u8nkP2
- 1 x Mini breadboard (isteğe bağlı): //amzn.to/2vaKtoc
Adım 4: IR Sensörünü Arduino ya Bağlama
IR sensörü bağlantısını Arduino'ya kurmak çok basittir. VCC ve GND pininin yanı sıra, sensörde Arduino'nun dijital pinlerinden birine bağlanması gereken tek bir çıkış pimi bulunur. Bu durumda pin 13'e bağlanır.
Hem IR sensörü modülünü hem de ham IR sensörü kurulumunu göstermeye çalıştım. Resimlerde görülebileceği gibi, VCC ve GND pimlerinin sensör modülündeki konumu ham sensörün tersidir. Ancak sensörünüz için durum böyle olmayabilir, bu nedenle önceki adımda belirtildiği gibi, ham sensörü kullanmanız durumunda önce veri sayfasını kontrol edin.
Adım 5: Uzaktan Kumandadaki Her Tuşa Karşılaşan Kodu Bulun
Arduino'yu uzaktan kumandadaki bir tuşa bastığınızda bir şey yapması için programlamak için, önce o tuşa karşılık gelen kodunuz olmalıdır. Anahtar kodu, normalde onaltılı olarak sunulan bir sayıdır. İki uzaktan kumandanın aynı kodu farklı amaçlar için paylaşması mümkündür, her uzaktan kumandanın kendi anahtar kodu seti vardır. Farklı frekans aralıklarının kullanılmasıyla birlikte farklı anahtar kodlara sahip olmak, farklı cihazların iki uzaktan kumandasının parazitlenmemesini sağlar. Bu yüzden TV kanalınızı değiştirdiğinizde, DVD oynatıcınız hiç tepki vermiyor.
IR uzaktan kumandanızın kodlarını tespit etmek için, önce bir tuşa bastığınızda sensörden kodu okumaya çalışan basit bir taslak çalıştırmanız ve bunu seri port aracılığıyla bilgisayarınıza Seri Monitör araçlarını kullanarak erişebileceğiniz bir yere göndermeniz gerekir. Arduino IDE. Bu bölüme iliştirilmiş çizim budur. Kodu görmek ve kod listesini bir yere yazmak için her düğmeye basmak daha iyi olur, böylece gelecekte bu kodu çalıştırmanız gerekmez. Resimde tablo olarak gördüğünüz tuş kodlarının listesi aslında ucuz IR uzaktan kumandamdaki düğmelere basarken aldığım kodlardır.
Arduino web düzenleyicimde paylaşılan gerçek kaynak koduna ir-key-code-logger'dan da erişebilirsiniz.
Not : Arada bir yerde FFFFFF gibi bir kod görürseniz korkmayın. Bu, bir süredir bir düğmeyi basılı tuttuğunuz anlamına gelir. Daha sonra geri döneceğiz. Şimdilik onları görmezden gelin ve diğer kodlara odaklanın.
Ekler
ir-code-logger.ino Indirin
Adım 6: IR Uzaktan Kumandayı kullanarak bir dizi LED'i kontrol edin
Artık her düğme için bir kodumuz olduğuna göre, bunları kullanma şeklimize odaklanma zamanı. Normalde IR uzaktan kumandayı Arduino'ya bir lambayı açmak veya kapatmak, bir robotu belirli bir yönde hareket ettirmek, LCD / OLED ekranda bir şey görüntülemek vb. Gibi komutlar göndermek için kullanırsınız. Farklı renklerde 4 LED'den oluşan devre. Her birini IR uzaktan kumandanın özel bir düğmesiyle açmak veya kapatmak istiyoruz. Şemada görebileceğiniz gibi, Arduino'yu LED'lere ve sensöre aşağıdaki şekilde bağlamanız gerekir:
Arduino GND -> IR sensörü GND.
Arduino VCC -> IR sensörü VCC.
Arduino 13 -> IR sensörü sinyal çıkışı.
Arduino 2 -> Mavi LED'in anotu (mavi LED'in daha kısa pimi)
Arduino 3 -> Yeşil LED'in anotu (yeşil LED'in daha kısa pimi)
Arduino 4 -> Sarı LED'in anotu (sarı LED'in daha kısa pimi)
Arduino 5 -> Kırmızı LED'in anotu (kırmızı LED'in daha kısa pimi)
Arduino GND -> 220 ohm direnç ile tüm LED'lerin katodu (LED'lerin daha uzun pimi)
Bu devreye karşılık gelen kodu ekteki dosyada veya ir-led-control adresindeki Arduino web editörümde bulabilirsiniz.
Ekler
ir-led-control.ino Indirin
Adım 7: Sorun Giderme
Projenizi kurarken ve adımları takip ederken birçok garip durumla karşılaşabilirsiniz. IR sensörü ile çalışırken karşılaşabileceğiniz bazı yaygın hataların listesi aşağıdadır.
Bir tuşa basarken FFFFFF alma
Bir düğmeye bastığınızda çoğu zaman FFFFFF gibi bir kod rapor ettiğini fark edebilirsiniz. Bu, bir düğmeye basıp kısa bir süre için bile bir süre basılı tuttuğunuzda olur. Senaryo başlangıçta düğmeye bastığınızda, IR uzaktan kumandası düğme kodunu gönderir ve düğmeyi basılı tuttuğunuz sürece, FFFFFF göndermeyi tekrarlar, bu da kullanıcının son zamanlarda bildirilen düğmeye bastığı anlamına gelir. Tamam olur. Sadece atlayabilirsiniz. Gerçek kod Seri Monitörde FFFFFF'den hemen önce aldığınız koddur.
IR Sensörü hiç tepki vermiyor ve ısınıyor!
Gücü kes !!! Anahtar kodu kaydedici çiziminin doğru olduğundan eminseniz, sorun belki de kablolarınızın yanlış kurulumu nedeniyle olabilir. Bana gelen senaryo, IR modülüm (panoya bağlı olan) için VCC ve GND'yi ters şekilde bağlamıştım (bağlantı kablolarım için uygun renkler kullanmamasından dolayı). Böylece sensör bileşeni yandı ve hoş bir mavi duman yükseldi. Bir sürü ham IR sensörü aldım ve değiştirmeye çalıştım ve şimdi bir cazibe gibi çalışıyor :). Ne yazık ki ham IR sensörü ile test yaparken de aynı hatayı yaptım ve bu sefer sensörün ısınması dışında hiçbir şey olmadı. Bu yüzden gücü açmadan önce her zaman devreyi kontrol edin!
Bazen sensör daha önce hiç görmediğim bir kod algılar
Bu en yaygın sorunlardan biridir. Büyük olasılıkla aşağıdaki nedenlerden biri nedeniyle:
- IR uzaktan kumandayı doğrudan sensöre doğru yönlendirmiyorsunuz
Bu, daha önce hiç almadığınız ve normalde sahip olduğunuz kodların uzunluğuyla eşleşmeyen bazı yeni kodlara (çoğunlukla daha uzun kodlar) sahip olmanıza neden olur. Bu yüzden uzaktan kumandayı sensörünüze doğru tutmayı unutmayın.
- Ucuz bir IR uzaktan kumanda kullanıyorsunuz (bu eğitimde kullandığım gibi)
Ucuz bir öngörülemeyen uzaktan kumanda kullanmak yerine, aynı senaryoyu TV veya DVD Oynatıcı uzaktan kumandanızı veya sahip olduğunuz herhangi bir cihazın IR uzaktan kumandasını kullanarak deneyebilirsiniz. Normalde iyi bir sinyal / donanım kalitesine sahiptirler (ve elbette daha pahalıdırlar) ve deneyimlerime dayanarak, uzaktan kumandayı doğrudan sensöre yönlendirmeseniz bile normalde iyi çalışırlar.
Günlüğe kaydedilen bir kodun çöp olmadığını nasıl anlarım?
Kodlar normalde onaltılı biçimde sunulur. Bunları karşılık gelen ikili değere dönüştürürseniz, son baytın ikili gösteriminin baytın olumsuzlaması ondan önce geldiğini fark edeceksiniz. Bunu biliyorsanız, aldığınız kodun gerçekten geçerli olup olmadığından emin olmak için kodunuzda bu kontrolü yapabilirsiniz. Örnek olarak, FF7A85'iniz varsa, ikili temsili aşağıdaki gibi olacaktır:
1111 1111 0111 1010 1000 0101
Soldan sağa, 4 basamaklı her grup, orijinal onaltılık sayıdaki bir karakterin temsilidir. Gördüğünüz gibi, 7'ye karşılık gelen parti 0111'dir ve 8'e karşılık gelen parti 1000'dir ve bu tam olarak reddedilir. Olumsuzluk ile ifade etmek gerekirse, 0'ların tümü 1s ve 1'lerin tümü 0s ile değiştirilir. Aynısı bir sonraki (A (1010) ve 5 (0101)) için de geçerlidir.
Adım 8: Sonra Ne Yapmalı?
Şimdi senin sıran. Elinizdeki bu küçük basit sensörle neler yapabileceğinizi görmek hayal gücünüze kalmış. Başlamak için bazı fikirler:
- Evde sahip olduğunuz cihazlardan birinin (TV, Stereo, vb.) IR uzaktan kumandasını kullanın ve Arduino projenizde kullanmaya çalışın
- Bir tuşa basarak tüm LED'leri aynı anda açmaya çalışın ve ardından başka bir tuş kullanarak kapatın
- LED'lerin tümü açılıp kapanana kadar LED'leri tek tek açmak / kapatmak için uzaktan kumandanın Yukarı / Aşağı düğmesini kullanın
- LED'leri kullanarak bir trafik ışığı oluşturun ve uzaktan kumandayı kullanarak kontrol edin
- Elinizde küçük bir DC motor varsa, IR uzaktan kumandasıyla başlatmayı / durdurmayı veya dönüş yönünü değiştirmeyi deneyin
- TV uzaktan kumandanızı robotunuzu kontrol etmek veya üzerinde bazı sensörleri / aktüatörleri etkinleştirmek / devre dışı bırakmak için kullanabilirsiniz
IR uzaktan kumandayı kullanarak yorumlarda bana ne yapardınız (veya daha önce yaptınız).