Uzaktan kumanda | Haberler Online

semaver

New member
Bu kısa ekstra blog, kızılötesi uzaktan kumandalardaki uzaktan kumanda ile ilgilidir. Bir WS2812B matrisi veya bir WS2812B LED şeridi bir gösteri nesnesi olarak hareket eder.



Son sayıda, WS2812B piksellerinin kontrolüyle yüzleşmiştik. Bir uzaktan kumanda kullanımı özellikle aydınlatma efektleri için yararlıdır. Bir IR alıcısının ortak kombinasyonları ve eBay'de bir elma ve yumurta için uzaktan kumanda vardır.

Özellikle, karşılık gelen bir set bazen 5 Euro'dan daha az mevcuttur. Ancak, uzaktan kumandanın kalitesi hakkında yüksek beklentileri ortadan kaldırmalısınız. Ancak, hedeflenen amaç için gerekli olan şey yeterlidir.

IR kontrolü nasıl çalışır


Kızılötesi uzaktan kumanda, maksimum 10-20 metrelik nispeten küçük vakalara 940 nm dürtü gönderir. Göndermek için bir kızılötesi LED kullanılır. Kullanılan frekans modülasyonu yaklaşık 20-70 kHz, yaklaşık 0 = 38 kHz patlama, 1 = dürtü veya duraklama ile çalışır. Bit başına iletim süresi genellikle 560 mikrosaniyedir. Genel olarak, uzaktan kumanda başlangıçta bir karakteristik başlık ve ardından gerçek anahtar kodu gönderir. Sonuç olarak, LED şerit için bir uzaktan kumanda televizyonu aynı anda kontrol edemez. Bir bant geçişi filtresi kullanarak, IR alıcıları girişim frekanslarını filtreleyebilir. Resepsiyon uygun Photodiodi ile gerçekleştirilir.

Son uzaktan kumandalar, 2.4 GHz gibi daha yüksek frekanslarla veya Bluetooth gibi alternatif iletişim işlemleri ile çalışır.

devre




Kraliyet devresinin yapısına geliyoruz: WS2812B bölümünün devresine kıyasla sadece bir değişiklik var. Pin 11'de, IR uzaktan kumandasından kod alabilmek için bir kızılötesi alıcı bağlanır. Bir sonraki eskiz, gönderilen kodları kabul eder ve LED çizgilerde veya LED matrisinde kontrol olarak yorumlar. Bu yüzden yerel otomasyonla ışık kontrolü şeklinde uğraşıyoruz. Uzaktan kumandaya basılan düğmeye bağlı olarak, tüm LED'ler kırmızı (“1” düğmesine basıldığında), yeşil (“2” düğmesine basıldığında) veya maviye (“3” tuşuna basarak) ayarlanır. Öte yandan, “0” tuşuna basıldığında, eskiz LED'leri kapatır.




WS2812B ve entegre kızılötesi alıcı ile devre (fotoğrafın sol üst kısmında)



WS2812B ve entegre kızılötesi alıcı ile devre (fotoğrafın sol üst kısmında)



Daha az LED'li daha küçük ışık tesisatları için, devreye dış güç kaynağını da kaydedebilir veya en azından daha zayıf bir şekilde değiştirebiliriz.

Örneğin, yukarıdaki testi yapılandırmak için 8×8 LED bir matris kullandım ve doğrudan kullandıkları bir kapasitör ve dirençle güç verdim.

eskiz


IR uzaktan kumandaları ile iletişim için uygun bir kütüphane Deli. Arduino fikrinde gezin Sketch | Include Library | Manager Libraries

Araştırma alanına koydular Deli bir araştırma terimi olarak. Bu nedenle IDE, kurulum için ilgili Shiriff kütüphanesini sunmalıdır.

Kurulumdan sonra hemen başlayabilirsiniz. Bir uzaktan kumanda tarafından yayılan IR kodlarının donanıma bağlı olduğu unutulmamalıdır. Uzaktan kumandamda, '1' anahtarı kodu oluşturur, örneğin 0xFD00FF:

Bu nedenle, kodu seri monitörde alınan kodları yayan alt eskize ekledim. “1”, “2” ve “3” tuşlarına basmıştım, daha sonra IR alıcısı aşağıdaki kodları aldı:




IR Kodları Seri Monitörde Alınan Çıktı



IR Kodları Seri Monitörde Alınan Çıktı



Uzaktan kumandanızda tekrarlanan ve eskiz sürümünüzün kodlarına anahtarların atanmasını hatırlayın. Ardından, kullandığım yerine bu kodları eskiz içine ekleyin: Sürekli Döngü ().

////////////////////////////////////////////////////////
//
// Mini Demo zur Verwendung einer IR-Fernbedienung,
// um bequem Lichteffekte auszulösen
//
////////////////////////////////////////////////////////
// Importieren der Bibliothek IRremote:

#include <IRremote.h>

// Importieren der Adafruit Neopixel Library:
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

// Der IR-Signalempfänger ist an Pin 11 angeschlossen:
const int recvPort = 11;

// Die WS2812B-LED-Matrix oder den Streifen schließen wir an
// Pin 6 an:

const int pixelPin = 6;

// Objekt zur Verbindung mit dem IR-Empfänger:
IRrecv irBeacon(recvPort);

// Initialisieren der Neopixel-Bibliothek. Ich benutze eine LED-Matrix
// mit 64 Pixeln. Geben Sie als erstes Argument die Zahl Ihrer Pixel ein:

Adafruit_NeoPixel strip = Adafruit_NeoPixel(64,
pixelPin,
NEO_GRB + NEO_KHZ800);

// Ergebnisvariable für empfangene IR-Codes:
decode_results irReceived;

// Initialisierung:

void setup() {
Serial.begin(9600); // seriellen Monitor starten
strip.begin(); // LEDs initialisieren
strip.show(); // Anfangs sind alle LEDs aus

Serial.println("Empfang von IR-Codes starten:");
irBeacon.enableIRIn(); // Start
}

// Die Methode colorWipe aus dem Beispielssketch strandtest
// der Neopixel-Bibliothek lässt alle LEDs in der gewünschten
// Farbe <c> leuchten. Die Wartezeit zwischen dem Ansteuern
// einzelner LEDs beträgt <wait> Millisekunden:

void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}

// Die Ereignisschleife:
void loop() {
if (irBeacon.decode(&irReceived)) // IR-Kommando empfangen
{
Serial.print("Data received ...");
Serial.println(irReceived.value, HEX); // Ausgabe am seriellen Monitor
if (irReceived.value == 0xFD00FF) { // Taste 1
colorWipe(strip.Color(255, 0, 0), 50); // Rot
}
if (irReceived.value == 0xFD807F) { // Taste 2
colorWipe(strip.Color(0, 255, 0), 50); // Grün
}
if (irReceived.value == 0xFD40BF) { // Taste 3
colorWipe(strip.Color(0, 0, 255), 50); // Blau
}
if (irReceived.value == 0xFFFFFFFF) { // Taste 0
colorWipe(strip.Color(0, 0, 0), 50); // LEDs aus
}
irBeacon.resume(); // und zum nächsten IR-Empfang weiter
}
}

Uzatma


Tabii ki örneği de genişletebilirsiniz. Daha fazla hafif animasyon için kontroller eklemek veya parlaklığı kısaltılabilir hale getirmek mümkündür.

Ayrıca, örneğin mobil kurulumlar için Arduino Uno yerine daha küçük bir kart varyantı seçebilirsiniz.

Ek olarak, devreyi WLAN'a bağlamak için bir ESP-01 (ESP8266) modülü kullanılabilir.

Özet


Bu bölümde IR iletişimini devreleri kontrol etmek için başka bir seçenek olarak karşıladık. Pixel WS8212B ile birlikte, örnek bir proje olarak yerli otomasyondan bir uygulama kullandık. Arduino'ya bağlı bir kızılötesi alıcı kullanılarak, IR kodları uzaktan kumandandan alınabilir ve vergi komutlarında uygulanabilir.

Kullanmak DeliBu arada, -ibliothek, tüketici elektronik üreticilerinin mevcut uzak kontrollerini de yorumlayabilir. Bu durumda, IR alıcısı yeterlidir.




()
 
Üst