İçindekiler:
- Adım 1: BLE-LED-Stick için Donanım
- Adım 2: Elektronik Montaj
- Adım 3: Yazı Tipleri Nasıl Oluşturulur?
- Adım 4: BLE Kontrol Yazılımı
- Adım 5: İlk Test
- Adım 6: Animasyonları Seçin
- 7. Adım: RGB Kontrolü
- 8. Adım: Text_Animation Hizmeti ve Kalıcı Depolama Hizmeti
- 9. Adım: Android Uygulamasını Başlatın
- Adım 10: Resimlere Mesaj Yazın
Video: Bluetooth Düşük Enerjili LED POVstick: 10 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bu talimat, telefonunuzdan BLE ile kontrol edilebilen RGB LED'li bir ışık yazarı çubuğunun nasıl oluşturulacağını gösterir!
Artık karanlık mevsim başladığına ve uzun pozlamalı fotoğraflar çekmeniz gerektiğine göre: Bu çubukla resme imzanızı veya motivasyonel bir alıntıyı veya bir aşk ilanı, bir QR kodu, bir web adresi veya daha fazlasını yazabilirsiniz. başka şeyler…
Çeşitli geliştirme konularını kapsar:
- donanımı inşa etmek
- Cypress BLE yonga setini C ile programlama
- kontrol etmek için kendi uygulamanızı yapın.
Adım 1: BLE-LED-Stick için Donanım
Çubuk için aşağıdakilere ihtiyacınız var:
- Bir selvi BLE modülü (CY8C4247LQI-BL583)
- bir WS2812b RGB-LED-Strip (metre şeridi başına 144Led'den 64LED)
- uygun bir tutucuya sahip bir Li-Ion pil (18650)
- bir buton
- bir parça ekmek tahtası
Çubuğun donanımı oldukça basittir.
Cypress BLE modülü bir breadboard üzerine monte edilmiştir ve LED'ler, buton ve güç kaynağı sadece bu breadboard'a bağlanmıştır.
Her şey, kendisi kısmen şeffaf bir poliakril tüpe yerleştirilmiş küçük bir tahta şeride monte edilir, yapıştırılır veya vidalanır. Ama bu bir zorunluluk değil. Her şeyi bir tüp içine monte etmek istedim, ancak LED'lere kıyasla oldukça büyük olan BLE modülü ve pil için uygun bir şey bulamadım. İlk çekim için akrilik tüpe ihtiyacınız yok.
Adım 2: Elektronik Montaj
Bu adım size BLE modülünün nasıl monte edildiğini ve hangi pinlerin hangi amaçla kullanıldığını gösterir.
Instructables'ımın birçoğunda olduğu gibi Cypress BLE Geliştirme Kitini kullandım. CY8CKIT-042-BLE Hızlı Başlangıç Kılavuzu
Modülü kendi başına çalıştırmak istiyorsanız, tek yapmanız gereken güç kaynakları ve kullanılan pinlerdir.
Projemiz için LED-Strip'i sürmek için sadece 3.5 pinini kullanıyoruz. Ama elbette bunu PSoC Creator ile değiştirebilirsiniz.
PCB resminde gördüğünüz gibi chipin her köşesine pinhead ekledim fakat VREF pinini atladım.
Bu şekilde modül düzgün bir şekilde monte edilir ve modülün yanlış bağlanması imkansızdır.
Adım 3: Yazı Tipleri Nasıl Oluşturulur?
Sanırım bu proje sırasında çözdüğüm en ilginç problemlerden biriydi.
Tabii ki yeni bir yazı tipi tasarlayıp bir diziye yazabilirsiniz, ancak bu gerçekten çok fazla iş!
Peki ne yaptım?
Bir çeşit ASCII'den hex-bitmap dönüşümüne ihtiyacım olduğunu biliyordum. Ve şanslıydım çünkü bu sorunu yaşayan ilk kişi ben değildim!:-)
"GLCD Font Generator" yazılımı doğru olanı yaptı:
LED çubuğundan en iyi şekilde yararlanmak istediğim için yazı tipini oldukça büyük boyutta (~32 piksel) içe aktardım. Yalnızca büyük harfler kullanırsanız, görünen yazı tipi boyutunuzu birkaç piksel daha artıracak olan yükselen işaretlerle ilgilenmeniz gerekmez. Ama ben hem büyük hem de küçük harfleri kullanmayı seçtim. (https://en.wikipedia.org/wiki/Ascender_%28typography%29)
Bir yazı tipini GLCD Yazı Tipi oluşturucusuna aktardıktan sonra, onu farklı formatlarda dışa aktarmayı seçebilirsiniz.
Onu doğrudan iyi olan ama mükemmel olmayan başlıklara aktarmaya çalıştım. Ortaya çıkan dışa aktarma, ilk 128 ascii karakterinin her karakteri için sütunlar için bayt-hex değerlerine sahip bir kısa devre (16 bit) dizisidir. Tam olarak istediğim veya ihtiyacım olan şey değil…
Bu yüzden diziyi bir açık ofis kireç çalışma sayfasına aktardım. Sonra dört değerden üçünde "0x" i kaldırdım ve bunları 32 bit uzunluğunda bir değerde birleştirdim. Ayrıca bireysel baytların yanlış girişini de düzelttim.
Ortaya çıkan dizi, 32 bit değerlerden oluşan bir N*M dizisidir. M ilgili karakterdir ve N bu harfin görüntüsünü oluşturan sütunlardır. Bu ilk taslakta tüm karakterler aynı sayıda sütuna sahiptir, bu da iyi bilinen Courier yazı tipinde olduğu gibi tüm harflerin eşit genişlikte olduğu anlamına gelir. "i" veya "t" gibi küçük karakterler boşlukta kaybolmuş gibi görünürler.
Bu yüzden her karakterin başına bu karakterin ne kadar kolona sahip olduğunu veya bu karakterin ne kadar geniş olduğunu söylemek için yeni bir parametre ekledim. Bu, hafızadan tasarruf sağlar ve metnin daha iyi görünmesini sağlar!
Adım 4: BLE Kontrol Yazılımı
BLE yazılımının prensibi çok kolaydır:
- Başlangıçta sadece hiçbir şey yapmaz.
- BLE aracılığıyla, görüntülenecek farklı animasyonlar veya metinler ayarlayabilirsiniz.
- Düğmeye bastığınızda, animasyonun veya metnin ayrı sütunları görüntülenir.
- Metin görüntülendikten sonra tekrar beklemeye devam eder.
Sadece selvi projesini PSoC-Creator'ınıza aktarın ve isterseniz değiştirin.
PSoC-4, yazı tiplerinin tam RGB görüntülerini tutabilmek için çok fazla RAM ve flaşa sahip değil. Bu nedenle, LED içeriğini metinden dinamik olarak oluşturmanın bir yoluna ihtiyacım vardı. Bu oldukça basit, şimdiye kadar özel bir şey yok. Algoritma, çok harfli bir metinden bir harf alır ve onu siyah-beyaz-bitmap dizisine dönüştürür. Daha sonra bu tek harfli bitmap'in her sütununu alır ve beyaz yerine geçerli RGB rengini LED dizisine yazar. Bu şekilde tek renkli metinler oluşturabilir veya ek bir işlevle her sütundan, her harften veya hatta her pikselden sonra rengi değiştirebilirsiniz.
Bir "harf" tek bir bayt değişkeninde saklanabilirken, siyah beyaz bir bitmap'in bir tür dizide saklanması gerekir.
Veri yapısı şudur:
String: newtext = "Merhaba";
Yazı tipi: uint32 karakter = { FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn, … SecondCharacter_ColumnCount, SecondCharacter_FirstColumn, … … LastCharacter_ColumnCount, … LastCharacter_LastColumn }; Renk: uint32 rgbcolor = 0xHHBBGGRR; // Parlaklık, Mavi, Yeşil, Kırmızı her biri 8 bit değerinde
Bir dizgiyi gösterime dönüştürmek için aşağıdakileri yaparız:
getCharacter(): H (8bit)
getColumn(int i): sütun (32bit) (i ilk sütunla başlar, sonuncuya kadar çalışır.) if(sütundaki bit 1) Strip'teki LED renkli olarak ayarlanır. LED Şerit Dizisi, her biri 32 bit renkli 64 LED'dir!
Ve bu sütun görüntülenirse, bir sonrakiyle devam ederiz.
Bu kadar kolay.
Adım 5: İlk Test
Artık yazılım çalıştığına göre, ilk testler için hazırız.
Yerleşik işlevi test etmenin en kolay yolu, bir Bluetooth düşük enerji test uygulamasıdır. Nordic veya Cypress Uygulamaları gibi.
İskandinav: Mobil için nRF Connect
Selvi: CySmart
Pov-Stick'i başlatın ve demo-string'in nasıl görüntüleneceğini gözlemleyin. Bu bittiğinde, uygulamayı başlatmanın zamanı geldi. Povstick cihazını arayın ve bağlan'a tıklayın.
Bağlantı kurulduktan sonra uygulama, tanımlanan tüm hizmetleri ve özellikleri otomatik olarak keşfeder.
İlk servisi arayın (0000ccce ile başlamalıdır…). Açmak ve ilk özelliği görüntülemek için üzerine tıklayın (0000ccc1 ile başlar). Ardından yaz (veya yükle) düğmesine basın ve bu özelliğe 01 yazın.
Gönder'e bastığınızda, POVstick, Color-Knight-rider animasyonu, yani Larson Scanner'ı değişen renklerle başlatır.
İlk değerinizi BLE aracılığıyla gönderdiğiniz için teşekkür ederiz!
Adım 6: Animasyonları Seçin
Yazılımda, aşağıdaki değerlerle bir enum "e_Animation" tanımladık:
typedef enum { Knightrider = 0, ColorKnightRider, Rainbowswirl, Valueswirl, WS_CandyCane, WS_CandyCane_2, WS_CandyCane_3, WS_Twinkle, WS_Icicle, WS_ColorWheel, RGB_Control, TextAnimation, Animation_Animation };
Bunlar ccc1 karakteristiği için geçerli olan değerlerdir. CandyCane-Animation'ı görmek istiyorsanız, bu özelliğe 4, 5 veya 6 yazmanız gerekir. Renklerde farklılık gösterirler.
İki özel animasyon, RGB_Control ve TextAnimation'dır. Bunları etkinleştirmeyi seçerseniz, çubuk açıkça ilk başta hiçbir şey göstermeyecektir. Ancak çubuğu diğer hizmetlerle kontrol etmek için size ek seçenekler sunar.
7. Adım: RGB Kontrolü
Bu özellik için Cypress Demo'dakiyle aynı UUID'yi kullandığım için RGB-Control, CySmart Uygulaması ile çok kolay bir şekilde test edilebilir.
CySmart uygulamasını başlatın ve Povstick'e bağlanın. Öncelikle ccc1 karakteristiğine bir "0x0A" yazmalısınız.
0x0A, numaralandırmadaki RGB Kontrol animasyonu olan 10 için onaltılık değerdir.
Ardından CySmart Uygulamasında RGB-LED Kontrol Paneline geçebilirsiniz. Belki bu ekrana ulaşmak için uygulamayı yeniden başlatmanız gerekir. Ardından bu RGB diyagramı ile tüm LED'lerin rengini kontrol edebilirsiniz.
Tabii ki değerleri doğrudan karakteristiğe de yazabilirsiniz.
8. Adım: Text_Animation Hizmeti ve Kalıcı Depolama Hizmeti
Bu hizmetleri test etmek o kadar kolay değil.
Teknik olarak bunun için nordic uygulamasını da kullanabilirsiniz, ancak hangi özelliğe hangi değerleri yazacağınızı bilmeniz gerekir.
Yani bunları test etmek istiyorsanız, hangi özelliğin hangi UUID'ye sahip olduğu PSoC projesine bir göz atmalısınız.
Önemli bir açık "Hız Ayarı" özelliğidir. Bu özellik ile animasyonların ne kadar hızlı olduğunu kontrol edebilirsiniz.
PersistentStorageService'in "Set_Animation" özelliğiyle, metin dizesinin yazı tiplerini ve renklerini kontrol edebilirsiniz. Geçerli değerler "povanimation.h", iki yazı tipi "mono" ve "serif" ve tek renkli ve gökkuşağı renginde tanımlanmıştır. 0 ve 1 değerleri, metni RGB_Control özelliği ile kontrol edilebilen sabit bir renkle görüntüler. 2 ve 3 değerleri her sütunun rengini değiştirir ve dizeye güzel bir gökkuşağı verir.
"Write_Text_Service" biraz farklıdır. "Set_Character" karakteristiğine tek tek karakterler yazarak cihaza yeni bir dize yazabilirsiniz. Her yazma işleminde, dizenin mevcut uzunluğu hakkında bir bildirim alacaksınız.
Yeni bir dize başlatmak için "Clear_String"e "true" yazın.
Bu en iyi uygulama değildir, ancak MTU boyutunu değiştirmeden 250 karaktere kadar herhangi bir dize için çalışır.
Povstick'teki düğmeye basıldığında başlayan yeni bir dizenin görüntülenmesi.
9. Adım: Android Uygulamasını Başlatın
Bu önemli bir adımdır, ancak bu talimatın kapsamının çok ötesindedir. Bunun için özür dilerim!
Belki test uygulamamı oyun mağazasına yükleyebilirim, ancak henüz bitmedi veya yayınlanamaz.
Adım 10: Resimlere Mesaj Yazın
İşte bu yüzden ilk etapta bu povstick'i yapıyorum: Resimlere mesaj yazmak için.
Bir tripoda, uzun pozlama işlevine sahip bir kameraya ve iyi bir konuma ihtiyacınız var.
Kamerayı kurun ve ilk test için pozlama süresini 10 saniyeye ayarlayın.
Serbest bırakmayı tetikleyin ve çubuktaki metin ekranını başlatarak resimde yürümeye başlayın.
Et Voila işte buradayız!
LED parlaklığı, diyafram açıklığı ve pozlama süresinin doğru kombinasyonu ile şafakta bile fotoğraf çekmek mümkündür.
Bu adımdaki üç resim, tüm olasılıkları göstermektedir.
İlkinde, LED'ler aşırı pozlanmış ve büyülü bir parıltı yaratıyor. Ama bu yüzden zemindeki yansımalar görülebilir ve arka plan oldukça iyi.
İkinci resim LED'ler için gösteriliyor, ancak bu arka planı tamamen siyah bırakıyor.
Üçüncüsü ise gün batımından kısa bir süre sonra oldukça sönük LED'ler gösteriyor. LED'ler diğer resimlerdeki kadar parlak, ancak ortam o kadar parlaktı ki, LED'lerin oldukça karanlık görünmesi için düşük bir diyafram ve düşük bir ISO kullanmak zorunda kaldım.
Make it Glow Yarışması 2018'de İkincilik Ödülü
Önerilen:
Güneş Enerjili Robot: 17 Adım (Resimlerle)
Güneş Enerjili Robot: Bir süre önce, büyük ölçüde BEAM Robotics'ten ilham alan düzinelerce robot yaptım. Bilmeyenler için, BEAM temelde biyoloji, elektronik, estetik ve mekaniğe vurgu yapan özel bir robot oluşturma yöntemidir (dolayısıyla kısaltma
Kendi Düşük Bütçeli Bluetooth Müzik Sisteminizi Yapın: 5 Adım (Resimlerle)
Kendi Düşük Bütçeli Bluetooth Müzik Sisteminizi Yapın: Bu projede size nasıl "kaynaştığımı" göstereceğim. eski bir hoparlörüm olan ucuz bir bluetooth müzik alıcısı. Ana odak noktası, LM386 ve NE5534 etrafında düşük maliyetli bir ses yükseltici devresi tasarlamak olacaktır. Bluetooth alıcısı
NaTaLia Hava İstasyonu: Arduino Güneş Enerjili Hava İstasyonu Doğru Şekilde Yapıldı: 8 Adım (Resimlerle)
NaTaLia Hava İstasyonu: Arduino Güneş Enerjili Hava İstasyonu Doğru Şekilde Yapıldı: 2 farklı lokasyonda 1 yıllık başarılı operasyonun ardından, güneş enerjili meteoroloji istasyonu proje planlarımı paylaşıyor ve gerçekten uzun süre hayatta kalabilen bir sisteme nasıl evrildiğini açıklıyorum. güneş enerjisinden dönemler. Takip ederseniz
LP-2010 AES17 1998 Anahtarlamalı Amplifikatör Düşük Geçişli (düşük geçişli) Filtre: 4 Adım
LP-2010 AES17 1998 Anahtarlamalı Amplifikatör Düşük Geçişli (düşük geçişli) Filtre: Bu, düşük geçişli filtrenin harika bir D sınıfı yükseltici ölçümüdür. İnce işçilik, üstün performans, kolay bağlantı, bu ürünün kullanımını kolaylaştırır ve sahip olunmaya değer bir üründür. yüksek maliyet performansı
Basit WiFi'den BLE'ye (Bluetooth Düşük Enerji) Köprü: 9 Adım (Resimlerle)
Basit WiFi'den BLE'ye (Bluetooth Düşük Enerji) Köprüsü: 4 Aralık 2017 Güncellemesi - Feather nRF52 eskizleri ve hata ayıklama ipuçları gözden geçirildi. Kutuya monte edilmiş köprü resimleri eklendi. Bu basit proje, Nordic'in TX Notify ile UART'ını uygulayan herhangi bir Bluetooth Düşük Enerji (BLE) modülüne WiFi erişimi sağlar. NS