Mündəricat:

Bluetooth Enerjisi Az olan LED POVstick: 10 Addım (Şəkillərlə birlikdə)
Bluetooth Enerjisi Az olan LED POVstick: 10 Addım (Şəkillərlə birlikdə)

Video: Bluetooth Enerjisi Az olan LED POVstick: 10 Addım (Şəkillərlə birlikdə)

Video: Bluetooth Enerjisi Az olan LED POVstick: 10 Addım (Şəkillərlə birlikdə)
Video: SONOFF L2 - RGB светодиодная лента с wi-fi и bluetooth, Ewelink, Google Home, Home Assistant 2024, Noyabr
Anonim
Bluetooth aşağı enerjili LED POVstick
Bluetooth aşağı enerjili LED POVstick

Bu təlimat, telefonunuzdan BLE vasitəsilə idarə edilə bilən RGB LED -ləri olan bir yazıçı çubuğunun necə qurulacağını göstərir!

Artıq qaranlıq mövsüm başlayanda və uzun pozlama şəkilləri çəkməyiniz lazımdır: Bu çubuqla şəklinizə imzanızı və ya motivasion bir sitat və ya sevgi bəyannaməsini, QR kodunu, veb ünvanınızı və ya bir çoxunu yaza bilərsiniz. başqa şeylər…

Bir neçə inkişaf mövzusunu əhatə edir:

  • aparat qurmaq
  • Cypress BLE çipsetini C ilə proqramlaşdırmaq
  • nəzarət etmək üçün öz tətbiqinizi yaradın.

Addım 1: BLE-LED-Stick üçün avadanlıq

BLE-LED-Stick üçün avadanlıq
BLE-LED-Stick üçün avadanlıq
BLE-LED-Stick üçün avadanlıq
BLE-LED-Stick üçün avadanlıq
BLE-LED-Stick üçün avadanlıq
BLE-LED-Stick üçün avadanlıq
BLE-LED-Stick üçün avadanlıq
BLE-LED-Stick üçün avadanlıq

Çubuq üçün aşağıdakılara ehtiyacınız var:

  • Sərvi BLE modulu (CY8C4247LQI-BL583)
  • bir WS2812b RGB-LED Şeridi (metr başına 144Led-dən 64 LED)
  • uyğun tutucu ilə Li-Ion batareya (18650)
  • bir düymə
  • bir parça çörək taxtası

Çubuğun aparatı olduqca sadədir.

Cypress BLE modulu bir parça çörək taxtasına quraşdırılmışdır və LED-lər, düymə və enerji təchizatı yalnız bu çörək taxtasına bağlıdır.

Hər şey özü qismən şəffaf bir poliakril boruya daxil edilmiş kiçik bir taxta zolağa yapışdırılır, yapışdırılır və ya vidalanır. Ancaq bu bir şərt deyil. Hər şeyi bir borunun içərisinə quraşdırmaq istədim, amma LED-lərlə müqayisədə olduqca böyük olan BLE-modulu və batareyası üçün uyğun bir şey tapmadım. İlk çəkiliş üçün akril boruya ehtiyac yoxdur.

Addım 2: Elektronika Quraşdırması

Elektronika Məclisi
Elektronika Məclisi
Elektronika Məclisi
Elektronika Məclisi

Bu addım, BLE modulunun necə quraşdırıldığını və hansı pinlərin hansı məqsədlə istifadə edildiyini göstərir.

Bir neçə təlimatımda olduğu kimi, Cypress BLE İnkişaf etdirmə Kitindən istifadə etdim. CY8CKIT-042-BLE Tez Başlanğıc Kılavuzu

Modulu tək başına idarə etmək istəyirsinizsə, bağlamaq üçün lazım olan tək şey enerji mənbələri və istifadə olunan pinlərdir.

Layihəmiz üçün LED şeridini idarə etmək üçün yalnız pin 3.5 istifadə edirik. Ancaq təbii ki, bunu PSoC Creator ilə dəyişə bilərsiniz.

PCB şəkilində gördüyünüz kimi, çipin bütün künclərinə pinheadlər əlavə etdim, amma VREF pinini atladım.

Bu şəkildə modul düzgün şəkildə quraşdırılır və modulu səhv bağlamaq mümkün deyil.

Addım 3: Şriftləri Necə Yaratmaq olar?

Şriftləri necə yaratmaq olar?
Şriftləri necə yaratmaq olar?

Düşünürəm ki, bu layihə zamanı həll etdiyim ən maraqlı problemlərdən biri idi.

Əlbəttə ki, yeni bir şrift tərtib etmək və onu bir sıra yazmaq olar, amma bu həqiqətən çox işdir!

Bəs mən nə etdim?

Hex-bitmap çevrilməsi üçün bir növ ASCII-ə ehtiyacım olduğunu bilirdim. Bəxtim gətirdi, çünki bu problemlə ilk deyiləm!:-)

"GLCD Font Generator" proqramı doğru işi etdi:

LED çubuqdan maksimum istifadə etmək istədiyim üçün fontu olduqca böyük ölçüdə (~ 32 piksel) idxal etdim. Yalnız böyük hərflərdən istifadə edirsinizsə, görünən şrift ölçüsünüzü bir neçə piksel artıracaq yüksələnlərə əhəmiyyət verməyinizə ehtiyac yoxdur. Ancaq həm böyük, həm də kiçik hərflərdən istifadə etməyi seçdim. (https://az.wikipedia.org/wiki/Ascender_%28typography%29)

GLCD Font generatoruna bir font idxal etdikdən sonra onu müxtəlif formatlarda ixrac etməyi seçə bilərsiniz.

Bunu yaxşı olan, lakin mükəmməl olmayan başlıqlara birbaşa ixrac etməyə çalışdım. Yaranan ixrac, ilk 128-ascii xarakterinin hər bir xarakteri üçün sütunlar üçün bayt-hex dəyərləri olan bir sıra şortlardır (16bit). İstədiyim və ya ehtiyac duyduğum şey deyil …

Beləliklə, dizini açıq bir ofis hesablama səhifəsinə idxal etdim. Sonra dörd dəyərdən üçündəki "0x" ı sildim və onları 32 bitlik uzun bir dəyərə birləşdirdim. Fərdi baytların səhv səhvlərini də təyin etdim.

Yaranan sıra, 32 bitlik bir N*M dizisidir. M müvafiq xarakterdir və N bu hərfin görüntüsünü təşkil edən sütunlardır. Bu ilk qaralamada bütün simvollar eyni sayda sütuna malikdir, yəni bütün məktublar tanınmış Courier şriftindəki kimi eyni dərəcədə genişdir. "İ" və ya "t" kimi kiçik personajlar kosmosda itmiş kimi görünürlər.

Buna görə hər bir xarakterin əvvəlinə bu xarakterin nə qədər sütun və ya nə qədər geniş olduğunu söyləmək üçün yeni bir parametr əlavə etdim. Bu yaddaşa qənaət edir və mətnin daha yaxşı görünməsini təmin edir!

Addım 4: BLE Nəzarət Proqramı

BLE Nəzarət Proqramı
BLE Nəzarət Proqramı

BLE proqramının prinsipi çox asandır:

  • Başlanğıcda heç nə etmir.
  • BLE vasitəsi ilə fərqli animasiyalar və ya mətnlər göstərə bilərsiniz.
  • Düyməni basdıqdan sonra animasiyanın və ya mətnin fərdi sütunları göstərilir.
  • Mətn göründükdən sonra yenidən gözləməyə davam edir.

Sərvi layihəsini PSoC-Creator-a idxal edin və istəsəniz dəyişdirin.

PSoC-4, yazı tiplərinin tam RGB şəkillərini saxlaya biləcək qədər RAM və flaşa sahib deyil. Buna görə mətndən LED məzmununu dinamik şəkildə yaratmaq üçün bir yola ehtiyacım var idi. Bu olduqca sadədir, indiyə qədər xüsusi bir şey yoxdur. Çox hərfli bir mətndən alqoritm bir hərf götürür və onu qara-ağ-bitmap sırasına çevirir. Sonra bu bir hərfli bitmapin hər bir sütununu götürür və ağ əvəzinə LED-massivinə indiki RGB rəngini yazır. Bu şəkildə tək rəngli mətnlər yarada və ya əlavə bir funksiya ilə hər sütundan, hər hərfdən sonra və ya hətta hər pikseldən sonra rəngini dəyişə bilərsiniz.

Bir "məktub" bir bayt dəyişənində saxlanıla bilər, qara və ağ rəngli bitmapin bir növ dizidə saxlanılması lazımdır.

Məlumat quruluşu belədir:

String: newtext = "Salam";

Yazı tipi: uint32 characters = {FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn,… SecondCharacter_ColumnCount, SecondCharacter_FirstColumn,…… LastCharacter_ColumnCount,… LastCharacter_LastColumn}; Rəng: uint32 rgbcolor = 0xHHBBGGRR; // Parlaqlıq, Mavi, Yaşıl, Qırmızı hər biri 8 bitlik dəyər

Görünüş üçün bir simli çevirmək üçün aşağıdakıları edirik:

getCharacter (): H (8 bit)

getColumn (int i): sütun (32bit) (i birinci sütundan başlayır, sona qədər işləyir.) əgər (sütundakı bit 1 -dirsə) Stripdəki LED rəngə ayarlanır. LED-Strip Array, hər biri 32 bit rəngli 64 LED-dir!

Və bu sütun göstərilirsə, bir sonrakı ilə davam edirik.

Bu asandır.

Addım 5: İlk test

İlk Test
İlk Test
İlk Test
İlk Test
İlk Test
İlk Test

Proqram işə salındıqdan sonra ilk sınaqlara hazırıq.

Daxili funksiyanı sınamağın ən asan yolu Bluetooth aşağı enerji test proqramıdır. Nordic və ya Cypress Tətbiqləri kimi.

Nordic: Mobil üçün nRF Connect

Cypress: CySmart

Pov-Stick-i işə salın və demo siminin necə göstəriləcəyini müşahidə edin. Bu bitdikdən sonra tətbiqə başlamağın vaxtı gəldi. Povstick cihazını axtarın və qoşulun.

Bağlantı qurulduqdan sonra tətbiq avtomatik olaraq bütün təyin edilmiş xidmətləri və xüsusiyyətləri kəşf edir.

İlk xidməti axtarın (0000ccce ilə başlamalıdır …). Açmaq və ilk xarakteristikanı göstərmək üçün üzərinə vurun (0000ccc1 ilə başlayır). Sonra yaz (və ya yüklə) düyməsini vurun və bu xüsusiyyətə 01 yazın.

Göndərmə düyməsini vurduqdan sonra POVstick, rəngləri dəyişən Larson Scanner adlı Color-Knight-rider animasiyasına başlayacaq.

İlk dəyərinizi BLE vasitəsilə göndərdiyiniz üçün təşəkkürlər!

Addım 6: Animasiyaları seçin

Animasiyalar seçin
Animasiyalar seçin
Animasiyalar seçin
Animasiyalar seçin
Animasiyalar seçin
Animasiyalar seçin
Animasiyalar seçin
Animasiyalar seçin

Proqramda aşağıdakı dəyərləri olan bir "e_Animation" təyin etdik:

typedef enum {Knightrider = 0, ColorKnightRider, Rainbowswirl, Valueswirl, WS_CandyCane, WS_CandyCane_2, WS_CandyCane_3, WS_Twinkle, WS_Icicle, WS_ColorWheel, RGB_Cax, Animation_nimation}

Bunlar ccc1 xarakteristikası üçün etibarlı olan dəyərlərdir. CandyCane-Animasiyasını görmək istəyirsinizsə, bu xüsusiyyətə 4, 5 və ya 6 yazmalısınız. Rəngləri ilə fərqlənirlər.

İki xüsusi animasiya RGB_Control və TextAnimation -dır. Bunları aktivləşdirməyi seçsəniz, çubuq əvvəlcə heç bir şey göstərməyəcək. Ancaq çubuğu digər xidmətlərlə idarə etmək üçün sizə əlavə seçimlər təklif edir.

Addım 7: RGB Nəzarəti

RGB Nəzarəti
RGB Nəzarəti
RGB Nəzarəti
RGB Nəzarəti
RGB Nəzarəti
RGB Nəzarəti
RGB Nəzarəti
RGB Nəzarəti

RGB-Control CySmart Tətbiqi ilə çox asanlıqla sınaqdan keçirilə bilər, çünki Cypress Demosundakı kimi bu xüsusiyyət üçün eyni UUID istifadə etdim.

CySmart tətbiqini işə salın və Povstickə qoşulun. Əvvəlcə ccc1 xüsusiyyətinə "0x0A" yazmalısınız.

0x0A, siyahıda RGB-Control animasiyası olan 10 üçün hex-dəyərdir.

Sonra CySmart Tətbiqində RGB-LED İdarəetmə Panelinə keçə bilərsiniz. Bəlkə bu ekrana keçmək üçün proqramı yenidən başlatmalısınız. Sonra bu RGB diaqramı ilə bütün LED-lərin rəngini idarə edə bilərsiniz.

Əlbəttə ki, dəyərləri birbaşa xarakteristikaya da yaza bilərsiniz.

Addım 8: Text_Animation Service və Daimi Saxlama Xidməti

Text_Animation Service və Daimi Saxlama Xidməti
Text_Animation Service və Daimi Saxlama Xidməti

Bu xidmətləri sınamaq o qədər də asan deyil.

Texniki olaraq bunun üçün nordic tətbiqdən də istifadə edə bilərsiniz, ancaq hansı xüsusiyyətə hansı dəyərlərin yazılacağını bilməlisiniz.

Buna görə də bunları sınamaq istəyirsinizsə, hansı UUID xüsusiyyətinə malik olan PSoC layihəsinə baxmalısınız.

"Set-Speed" xüsusiyyətinin vacib bir xüsusiyyəti. Bu xüsusiyyətlə animasiyaların nə qədər sürətli olduğunu idarə edə bilərsiniz.

PersistentStorageService -in "Set_Animation" xüsusiyyəti ilə mətn sətrinin şriftlərini və rənglərini idarə edə bilərsiniz. Etibarlı dəyərlər "povanimation.h", iki yazı tipi "mono" və "serif" və tək rəngli və göy qurşağı rəngində müəyyən edilir. 0 və 1 dəyərləri, mətni RGB_Control xüsusiyyəti ilə idarə oluna bilən sabit bir rənglə göstərir. 2 və 3 dəyərləri hər bir sütunun rəngini dəyişir və ipə gözəl bir göy qurşağı verir.

"Write_Text_Service" bir az fərqlidir. Fərdi simvolları "Set_Character" xüsusiyyətinə yazaraq cihaza yeni bir sim yaza bilərsiniz. Hər bir yazıda, sətrin cari uzunluğu barədə bir bildiriş alacaqsınız.

Yeni bir simli başlamaq üçün "Clear_String" ə "doğru" yazın.

Bu ən yaxşı tətbiq deyil, ancaq MTU ölçüsünü dəyişdirmədən 250 simvola qədər hər hansı bir simli işləyir.

Povstickdəki düyməyə basıldıqda başlanğıc ilə yeni bir sətrin göstərilməsi.

Addım 9: Android tətbiqini işə salın

Bu vacib bir addımdır, amma bu təlimatlandırmanın çərçivəsindən kənara çıxır. Bunun üçün üzr istəyirik!

Bəlkə test tətbiqimi oyun mağazasına yükləyə bilərəm, amma hələ bitməmiş və ya buraxılmamışdır.

Addım 10: Şəkillərə Mesaj Yazın

Şəkillərdə Mesaj Yazın
Şəkillərdə Mesaj Yazın
Şəkillərdə Mesaj Yazın
Şəkillərdə Mesaj Yazın
Şəkillərdə Mesaj Yazın
Şəkillərdə Mesaj Yazın

Bu povstick'i ilk növbədə qurmağımın səbəbi budur: şəkillərə mesaj yazmaq.

Bir tripod, uzun pozlama funksiyası olan bir kamera və yaxşı bir yerə ehtiyacınız var.

İlk test üçün kameranı qurun və pozlama müddətini 10 saniyəyə ayarlayın.

Sərbəst buraxmağı tetikleyin və çubuqdakı mətn görüntüsünə başlayaraq şəkil boyunca gəzməyə başlayın.

Et Voila oradayıq!

LED parlaqlığı, diyafram və ekspozisiya vaxtının düzgün birləşməsi ilə hətta şəfəqdə şəkil çəkmək mümkündür.

Bu addımdakı üç şəkil bütün imkanları göstərir.

Birincisində, LEDlər həddindən artıq pozulur və sehrli bir parıltı yaradır. Ancaq buna görə də yerdəki əkslər görünür və fon olduqca yaxşıdır.

İkinci şəkil LED -lər üçün açıqdır, ancaq fon tamamilə qara olur.

Üçüncüsü, gün batandan qısa bir müddət sonra olduqca zəif LEDləri göstərir. LED -lər digər şəkillərdəki kimi parlaqdır, amma mühit o qədər parlaq idi ki, LED -lərin daha qaranlıq görünməsi üçün aşağı bir tətbiq və aşağı bir ISO istifadə etməli oldum.

2018 Parlaq Yarışması olun
2018 Parlaq Yarışması olun
2018 Parlaq Yarışması olun
2018 Parlaq Yarışması olun

Make it Glow Yarışmasında 2018 -ci ilin ikinci mükafatı

Tövsiyə: