İçindekiler:

Kablosuz İvmeölçer Kontrollü RGB-LED'ler: 4 Adım
Kablosuz İvmeölçer Kontrollü RGB-LED'ler: 4 Adım

Video: Kablosuz İvmeölçer Kontrollü RGB-LED'ler: 4 Adım

Video: Kablosuz İvmeölçer Kontrollü RGB-LED'ler: 4 Adım
Video: Raspberry Pi Led Kontrol 2024, Temmuz
Anonim
Kablosuz İvmeölçer Kontrollü RGB-LED'ler
Kablosuz İvmeölçer Kontrollü RGB-LED'ler
Kablosuz İvmeölçer Kontrollü RGB-LED'ler
Kablosuz İvmeölçer Kontrollü RGB-LED'ler

MEMS (Mikro-Elektro-Mekanik Sistemler) İvmeölçerler, cep telefonlarında ve kameralarda eğim sensörleri olarak yaygın olarak kullanılmaktadır. Basit ivmeölçerler hem ic-chip'ler hem de ucuz geliştirme baskılı devre kartları olarak mevcuttur.

Kablosuz çipler de uygun fiyatlıdır ve uyumlu anten ağı ve yerleşik dekuplaj kapakları ile birlikte monte edilmiş devrelerde mevcuttur. Seri arabirim aracılığıyla hem kablosuz kartı hem de ivmeölçeri bir mikro denetleyiciye bağladığınızda, nintendo-wii işlevlerine sahip bir kablosuz denetleyiciye sahip olursunuz. Ardından, aynı tip kablosuz çip ve pwm kontrollü rgb-LED'lerle bir alıcı oluşturun, işte, kablosuz, eğim kontrollü renkli oda aydınlatmanız var. Verici kartı seviyesini, devre tahtası yukarı bakacak şekilde tutun ve LED soğuk mavidir, yalnızca mavi led etkindir. Ardından vericiyi bir yöne eğin ve hangi yöne eğdiğinize bağlı olarak kırmızı veya yeşil karıştırın. 90 dereceye kadar tamamen eğin ve 90 derecelik eğimde yalnızca kırmızı veya yeşil etkin olana kadar tüm kırmızı ve mavi veya yeşil ve mavi karışımlarından geçin. Hem x hem de y yönünde biraz eğin ve tüm renklerin bir karışımını elde edin. Her yöne 45 derecede ışık, kırmızı, yeşil ve mavinin eşit bir karışımı, yani beyaz ışıktır. Kullanılan parçalar internet hobi-elektronik mağazalarından temin edilebilir. Bazı resimlerden tanınabilir olmalıdır.

Adım 1: İvmeölçerli Verici

İvmeölçerli Verici
İvmeölçerli Verici
İvmeölçerli Verici
İvmeölçerli Verici
İvmeölçerli Verici
İvmeölçerli Verici
İvmeölçerli Verici
İvmeölçerli Verici

Verici, Atmel avr168 mikro denetleyicisine dayanmaktadır. 168 ile kullanışlı kırmızı kart, voltaj regülatörlü ve sıfırlama devreli bir arduino kartıdır. İvmeölçer, avr'a bit-banged i2c veriyolu ile bağlanır ve kablosuz kart, donanım SPI'si (Seri Çevre Birimi Arayüzü) ile bağlanır.

Breadboard, altına sarılı 4, 8V pil paketi ile tamamen kablosuz. Kablosuz kart ve arduino çiş 9 V'a kadar kabul eder ve yerleşik lineer voltaj regülatörüne sahiptir, ancak ivmeölçer çiş üzerindeki düzenlenmiş raydan 3, 3V'ye ihtiyaç duyar.

Adım 2: RGB-LED'li Alıcı

RGB-LED'li Alıcı
RGB-LED'li Alıcı
RGB-LED'li Alıcı
RGB-LED'li Alıcı
RGB-LED'li Alıcı
RGB-LED'li Alıcı

Alıcı, kelebek adlı atmel avr169 demo panosuna dayanmaktadır. Pano, bu projede kullanılmayan birçok özelliğe sahiptir. Kablosuz alıcı-verici PortB'ye, pwm kontrollü led ise PortD'ye bağlanır. ISP başlığında güç sağlanır, 4.5V yeterlidir. Kablosuz kart, i/o pinlerinde 5V'u tolere edebilir, ancak yerleşik regülatör tarafından sağlanan 3.3V beslemeye ihtiyaç duyar.

Rf alıcı-vericisi için değiştirilmiş başlık kablosu gerçekten kullanışlıdır ve kablosuz kartı güç ve donanım spi denetleyicisi ile kelebek üzerinde bağlar. Shiftbright, 4 baytlık bir komutu kabul eden rgb liderliğindeki bir darbe genişlik modülasyonu kontrolörüdür ve bu komut çıkış pinlerine takılır ve ardından mandallanır. Seri olarak bağlamak gerçekten çok kolay. Sadece birçok komut kelimesini değiştirin ve ilk kaydırılan, zincirleme zincirdeki en son bağlanan LED'de sona erecektir.

Adım 3: C-programlama

Arduino'nun dayandığı "daha kolay" işleme dilini öğrenmeyi umursamadığım için kod C ile yazılmıştır. Öğrenme deneyimi için SPI ve rf alıcı-verici arayüzünü kendim yazdım, ancak i2c montajcı kodunu avrfreaks.net'ten ödünç aldım. shiftbright arabirimi C kodunda bitlendi. Karşılaştığım bir problem, ivmeölçer çıkışındaki küçük, irradik farklılıklardı, bu led'in titremesine neden oldu. Bunu bir yazılım düşük geçiş filtresiyle çözdüm. İvmeölçer-değerlerinde hareketli ağırlıklı bir ortalama. Rf-tranceiver, donanım crc ve ack'i otomatik yeniden iletmeyi destekler, ancak bu proje için ledlerin gerçek zamanlı, düzgün güncellenmesi daha önemliydi. İvmeölçer değerlerine sahip her paketin, bozuk paketler atıldığı sürece alıcıya sağlam bir şekilde ulaşması gerekmez. 20 metrelik görüş alanı içinde kaybolan RF paketleri ile ilgili hiçbir problem yaşamadım. Ama daha uzakta bağlantı kararsız hale geldi ve ledler sürekli güncellenmedi. Sözde kodda vericinin ana döngüsü:initialize();while(true){ Values = abs(get x, y, z ivmeölçer değerleri()); RF_send(Değerler); delay(20ms);}Sahte koddaki alıcının ana döngüsü:initialize();while(true){ newValues =blocking_receiveRF()); rgbValues = rgbValues + 0.2*(newValues-rgbValues); shiftbrigth'e rgbValues yazın;}

4. Adım: Sonuç

Sonuç
Sonuç
Sonuç
Sonuç
Sonuç
Sonuç
Sonuç
Sonuç

Kontrolün ne kadar düzgün ve doğru olduğuna şaşırdım. Rengin gerçekten parmak ucuyla doğruluk kontrolüne sahipsiniz. pwm-LED denetleyici, her renk için 10 bit çözünürlüğe sahiptir, bu da milyonlarca olası renk sağlar. Ne yazık ki ivmeölçer, teorik renk sayısını binlere indiren yalnızca 8 bit çözünürlüğe sahip. Ancak yine de renk değişiminde herhangi bir adım algılamak mümkün değil. Alıcıyı bir IKEA lambasına yerleştirdim ve aşağıda farklı renklerin resmini çektim. Bir video da var (yine de korkunç kalite)

Önerilen: