Mundarija:

Bluetooth past quvvatli LED POVstick: 10 qadam (rasmlar bilan)
Bluetooth past quvvatli LED POVstick: 10 qadam (rasmlar bilan)

Video: Bluetooth past quvvatli LED POVstick: 10 qadam (rasmlar bilan)

Video: Bluetooth past quvvatli LED POVstick: 10 qadam (rasmlar bilan)
Video: Умные часы GOKOO S11: что нужно знать // Обзор из реальной жизни 2024, Noyabr
Anonim
Bluetooth past quvvatli LED POVstick
Bluetooth past quvvatli LED POVstick

Bu ko'rsatma sizga telefoningizdan BLE orqali boshqariladigan RGB svetodiodli yoritgichli tayoqchani qanday yasashni ko'rsatib beradi!

Endi qorong'u mavsum boshlanadi va siz uzoq vaqt rasmga olishingiz kerak bo'ladi: bu tayoq yordamida siz rasmga o'z imzoingizni yoki motivatsion taklifni yoki sevgi izhorini, QR-kodni, veb-manzilni yoki ko'p narsalarni yozishingiz mumkin. boshqa narsalar …

U rivojlanishning bir nechta mavzularini o'z ichiga oladi:

  • uskunani qurish
  • Cypress BLE chipsetini C bilan dasturlash
  • uni boshqarish uchun o'z ilovangizni yarating.

1-qadam: BLE-LED-Stick uchun uskunalar

BLE-LED-Stick uchun uskunalar
BLE-LED-Stick uchun uskunalar
BLE-LED-Stick uchun uskunalar
BLE-LED-Stick uchun uskunalar
BLE-LED-Stick uchun uskunalar
BLE-LED-Stick uchun uskunalar
BLE-LED-Stick uchun uskunalar
BLE-LED-Stick uchun uskunalar

Pichoq uchun sizga quyidagilar kerak bo'ladi:

  • Cypress BLE moduli (CY8C4247LQI-BL583)
  • WS2812b RGB-LED tasmasi (har bir metr uchun 144Leddan 64 LED)
  • mos keladigan ushlagichli Li-Ion batareyasi (18650)
  • tugma
  • non bo'lagi

Tayoqning apparati juda oddiy.

Cypress BLE moduli bir bo'lak non paneliga o'rnatilgan va LEDlar, tugma va quvvat manbai faqat shu taxtaga ulangan.

Hamma narsa yog'och polosaning kichik qismiga o'rnatiladi, yopishtiriladi yoki vidalanadi, uning o'zi qisman shaffof poliakril naychaga solinadi. Lekin bu shart emas. Men hamma narsani quvur ichiga o'rnatishni xohlardim, lekin BLE-moduli va LED-larga qaraganda ancha katta bo'lgan batareyani topa olmadim. Birinchi tortishish uchun sizga akril naycha kerak emas.

2 -qadam: elektronika yig'ilishi

Elektronika yig'ilishi
Elektronika yig'ilishi
Elektronika yig'ilishi
Elektronika yig'ilishi

Bu qadam sizga BLE-moduli qanday o'rnatilishini va qaysi pinlar qaysi maqsadda ishlatilishini ko'rsatadi.

Bir nechta ko'rsatmalarim singari, men Cypress BLE Development Kit -dan foydalandim. CY8CKIT-042-BLE tez ishga tushirish bo'yicha qo'llanma

Agar siz modulni mustaqil boshqarishni xohlasangiz, faqat quvvat manbalari va ishlatilgan pimlarni ulashingiz kerak.

Loyihamiz uchun biz LED-chizig'ini haydash uchun faqat 3,5-pinni ishlatamiz. Albatta, siz buni PSoC Creator yordamida o'zgartirishingiz mumkin.

PCB rasmida ko'rib turganingizdek, men chipning har bir burchagiga pinhon qo'shdim, lekin men VREF pinini o'tkazib yubordim.

Shunday qilib, modul to'g'ri o'rnatilgan va modulni noto'g'ri ulash mumkin emas.

3 -qadam: Shriftlarni qanday yaratish kerak?

Shriftlarni qanday yaratish kerak?
Shriftlarni qanday yaratish kerak?

Menimcha, bu loyiha davomida men hal qilgan eng qiziqarli muammolardan biri edi.

Albatta, yangi shriftni loyihalash va uni qatorga yozish mumkin, lekin bu juda ko'p ish!

Xo'sh, men nima qildim?

Men hex-bitmap konvertatsiyasiga qandaydir ASCII kerakligini bilardim. Va men omadli edim, chunki men bu muammo bilan birinchi emasman!:-)

"GLCD shrift generatori" dasturi to'g'ri ish qildi:

Men LED-tayoqchadan maksimal darajada foydalanishni xohlaganim uchun shriftni juda katta hajmda (~ 32 piksel) import qildim. Agar siz faqat katta harflardan foydalansangiz, ko'tarilish haqida g'amxo'rlik qilishingiz shart emas, bu sizning ko'rinadigan shrift hajmini yana bir necha pikselga oshiradi. Lekin men ham katta harflarni, ham kichik harflarni ishlatishni tanladim. (https://uz.wikipedia.org/wiki/Ascender_%28typography%29)

GLCD shrift generatoriga shriftni import qilganingizdan so'ng, siz uni turli formatlarda eksport qilishni tanlashingiz mumkin.

Men uni yaxshi, lekin mukammal bo'lmagan sarlavhalarga eksport qilishga harakat qildim. Olingan eksport-bu birinchi 128-ascii belgisining har bir belgi uchun ustunlar uchun bayt-olti qiymatli qisqa chiziqlar (16bit). Men xohlagan yoki kerak bo'lgan narsa emas …

Shunday qilib, men qatorni ochiq ofis ishchi varag'iga import qildim. Keyin men "0x" ni to'rtta qiymatdan uchtasini olib tashladim va ularni 32 bitli uzunlikdagi qiymatga birlashtirdim. Shuningdek, men alohida baytlarning xatoligini aniqladim.

Olingan qator 32 bitli N*M massividir. M - tegishli belgi va N - bu harfni ko'rsatadigan ustunlar. Bu birinchi qoralamada barcha belgilar bir xil miqdordagi ustunlarga ega, ya'ni hamma harflar, xuddi Courier shriftidagi kabi, bir xil kenglikda. "I" yoki "t" kabi kichik belgilar kosmosda yo'qolganga o'xshaydi.

Shuning uchun men har bir belgining boshiga bu belgi qancha ustunli yoki bu belgi qanchalik kengligini aytish uchun yangi parametr qo'shdim. Bu xotirani tejaydi va matnni yanada yaxshi qiladi!

4 -qadam: BLE boshqaruv dasturi

BLE boshqaruv dasturi
BLE boshqaruv dasturi

BLE-dasturiy tamoyili juda oson:

  • Boshida hech narsa qilmaydi.
  • BLE orqali siz ko'rsatiladigan turli animatsiyalar yoki matnlarni o'rnatishingiz mumkin.
  • Tugmani bosgandan so'ng, animatsiya yoki matnning alohida ustunlari ko'rsatiladi.
  • Matn ko'rsatilgandan so'ng, u yana kutishda davom etadi.

Kipr loyihasini PSoC-Creator-ga import qiling va agar xohlasangiz, uni o'zgartiring.

PSoC-4-da shriftlarning to'liq RGB-tasvirlarini ushlab turish uchun RAM va fleshka unchalik katta emas. Shuning uchun men LED-kontentni matndan dinamik ravishda yaratish usulini tanlashim kerak edi. Bu juda oddiy, hozircha alohida hech narsa yo'q. Ko'p harfli matndan algoritm bitta harfni oladi va uni qora-oq-bitmapli massivga aylantiradi. Keyin bitta harfli bitmapning har bir ustunini oladi va oq o'rniga LED-qatorga joriy RGB rangini yozadi. Shunday qilib, siz bitta rangli matnlarni yaratishingiz yoki qo'shimcha funktsiya yordamida har bir ustundan, har bir harfdan yoki hatto har bir pikseldan keyin rangni o'zgartirishingiz mumkin.

"Harf" ni bitta bayt o'zgaruvchida saqlash mumkin, qora va oq rangli bitmapni qandaydir massivda saqlash kerak.

Ma'lumotlar tuzilishi quyidagicha:

String: newtext = "Salom";

Shrift: uint32 belgilar = {FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn,… SecondCharacter_ColumnCount, SecondCharacter_FirstColumn,…… LastCharacter_ColumnCount,… LastCharacter_LastColumn}; Rang: uint32 rgbcolor = 0xHHBBGGRR; // Yorqinlik, ko'k, yashil, qizil ranglarning har biri 8 bitli qiymat

Satrni ekranga aylantirish uchun biz quyidagilarni bajaramiz:

getCharacter (): H (8bit)

getColumn (int i): ustun (32bit) (i birinchi ustundan boshlanadi, oxirigacha ishlaydi.) agar (ustundagi bit 1) Stripdagi LED rangga o'rnatilgan bo'lsa. LED-Strip Array-har biri 32 bitli 64 ta LED!

Va agar bu ustun ko'rsatilsa, biz keyingisiga o'tamiz.

Bu oson.

5 -qadam: Birinchi sinov

Birinchi test
Birinchi test
Birinchi test
Birinchi test
Birinchi test
Birinchi test

Endi dasturiy ta'minot ishga tushganda, biz birinchi sinovlarga tayyormiz.

O'rnatilgan funktsiyani sinovdan o'tkazishning eng oson usuli - bu Bluetooth kam quvvatli sinov dasturi. Skandinaviya yoki Cypress ilovalari kabi.

Skandinaviya: mobil uchun nRF ulanish

Cypress: CySmart

Pov-Stick-ni ishga tushiring va demo-satr qanday ko'rsatilishini kuzatib boring. Bu tugallangach, dasturni ishga tushirish vaqti keldi. Povstick qurilmasini qidiring va ulanishni bosing.

Ulanish o'rnatilgandan so'ng, dastur avtomatik ravishda barcha xizmatlar va xususiyatlarni aniqlaydi.

Birinchi xizmatni qidiring (0000ccce bilan boshlanishi kerak …). Uni ochish va birinchi belgini ko'rsatish uchun ustiga bosing (0000ccc1 bilan boshlanadi). Keyin yozish (yoki yuklash) tugmachasini bosing va bu belgiga 01 yozing.

Yuborish tugmachasini bosganingizda, POVstick rang o'zgaruvchi Larson skaneri deb nomlangan Color-Knight-rider animatsiyasini ishga tushiradi.

Tabriklaymiz, siz birinchi qiymatingizni BLE orqali yubordingiz!

6 -qadam: Animatsiyalarni tanlang

Animatsiyalarni tanlang
Animatsiyalarni tanlang
Animatsiyalarni tanlang
Animatsiyalarni tanlang
Animatsiyalarni tanlang
Animatsiyalarni tanlang
Animatsiyalarni tanlang
Animatsiyalarni tanlang

Dasturiy ta'minotda biz quyidagi qiymatlarga ega "e_Animation" ni aniqladik:

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}

Bu qiymatlar ccc1 xarakteristikasi uchun amal qiladi. Agar siz CandyCane-animatsiyasini ko'rishni xohlasangiz, bu xususiyatga 4, 5 yoki 6 yozishingiz kerak. Ular ranglarda farq qiladi.

Ikkita maxsus animatsiya - RGB_Control va TextAnimation. Agar siz ularni faollashtirishni tanlagan bo'lsangiz, tayoq birinchi bo'lib hech narsani ko'rsatmaydi. Lekin u sizga tayoqni boshqa xizmatlar bilan boshqarish uchun qo'shimcha variantlarni taklif qiladi.

7 -qadam: RGB nazorati

RGB nazorati
RGB nazorati
RGB nazorati
RGB nazorati
RGB nazorati
RGB nazorati
RGB nazorati
RGB nazorati

RGB-Controlni CySmart ilovasi yordamida osonlikcha sinab ko'rish mumkin, chunki men Cypress Demo-dagi kabi bir xil UUID-dan foydalanganman.

CySmart dasturini ishga tushiring va Povstick -ga ulaning. Avval ccc1 xarakteristikasiga "0x0A" yozishingiz kerak.

0x0A-bu 10 uchun olti qiymat, bu ro'yxatda RGB-Control animatsiyasi.

Keyin CySmart ilovasida RGB-LED boshqaruv paneliga o'tishingiz mumkin. Ehtimol, bu ekranga o'tish uchun dasturni qayta ishga tushirishingiz kerak bo'ladi. Keyin siz RGB-diagramma yordamida barcha LEDlarning rangini boshqarishingiz mumkin.

Albatta, siz qiymatlarni to'g'ridan -to'g'ri xarakteristikaga yozishingiz mumkin.

8 -qadam: Text_Animation xizmati va doimiy saqlash xizmati

Text_Animation xizmati va doimiy saqlash xizmati
Text_Animation xizmati va doimiy saqlash xizmati

Bu xizmatlarni tekshirish oson emas.

Texnik jihatdan siz buning uchun odatiy ilovadan ham foydalanishingiz mumkin, lekin siz qaysi xarakteristikaga qanday qiymatlarni yozishni bilishingiz kerak.

Agar siz buni sinab ko'rmoqchi bo'lsangiz, qaysi UUID xususiyatiga ega bo'lgan PSoC loyihasini ko'rib chiqishingiz kerak.

"O'rnatish tezligi" xususiyati muhim ahamiyatga ega. Bu xususiyat yordamida siz animatsiyalar qanchalik tezligini boshqarishingiz mumkin.

PersistentStorageService -ning "Set_Animation" xarakteristikasi yordamida siz matn satrining shriftlari va ranglarini boshqarishingiz mumkin. Amaliy qiymatlar "povanimation.h", ikkita shrift "mono" va "serif" va bitta rangli va kamalak rangida belgilanadi. 0 va 1 qiymatlari matnni RGB_Control xarakteristikasi orqali boshqariladigan sobit rangda ko'rsatadi. 2 va 3 qiymatlari har bir ustun rangini o'zgartiradi va ipga chiroyli kamalak beradi.

"Write_Text_Service" boshqacha. Siz "Set_Character" belgisiga individual belgilar yozib, qurilmaga yangi satr yozishingiz mumkin. Har bir yozishda siz satrning joriy uzunligi to'g'risida bildirishnoma olasiz.

Yangi qatorni boshlash uchun "Clear_String" ga "rost" yozing.

Bu eng yaxshi dastur emas, lekin MTU hajmini o'zgartirmasdan 250 belgigacha bo'lgan har qanday satr uchun ishlaydi.

Povstickdagi tugma bosilganda start bilan yangi qatorning ko'rsatilishi.

9 -qadam: Android ilovasini ishga tushiring

Bu muhim qadam, lekin bu ko'rsatma doirasidan tashqarida. Buning uchun uzr!

Ehtimol, men test-ilovani o'yin do'koniga yuklashim mumkin, lekin u hali tugallanmagan yoki chiqarilmagan.

10 -qadam: Xabarlarni rasmlarga yozing

Xabarlarni rasmlarga yozish
Xabarlarni rasmlarga yozish
Xabarlarni rasmlarga yozish
Xabarlarni rasmlarga yozish
Xabarlarni rasmlarga yozish
Xabarlarni rasmlarga yozish

Xo'sh, shuning uchun men birinchi navbatda bu povstikni quraman: rasmlarga xabar yozish.

Sizga tripod, uzoq ta'sir qilish funktsiyali kamera va yaxshi joylashuv kerak.

Birinchi sinov uchun kamerani o'rnating va ekspozitsiya vaqtini 10 soniyagacha sozlang.

Chiqarishni ishga tushiring va rasm bo'ylab yurishni boshlang, tayoqdagi matnli displeyni boshlang.

Et Voila mana biz!

LED yorug'ligi, diafragma va ta'sir qilish vaqtining to'g'ri kombinatsiyasi bilan hatto tong otganda ham suratga olish mumkin.

Bu bosqichdagi uchta rasm imkoniyatlarning to'liq spektrini ko'rsatadi.

Birinchisida, LEDlar haddan tashqari oshib ketadi va sehrli porlashni yaratadi. Ammo shuning uchun erdagi akslar ko'rinadi va fon yaxshi.

Ikkinchi rasm LEDlar uchun ochiq, lekin bu fonni butunlay qora rangda qoldiradi.

Uchinchisi, quyosh botganidan ko'p o'tmay, xira LEDlarni ko'rsatadi. LEDlar boshqa rasmlardagidek yorug ', lekin atrof -muhit shunchalik yorqin ediki, men LEDlar ancha qorong'i bo'lib ko'rinishi uchun past kuch va past ISO qiymatidan foydalanishim kerak edi.

Buni "Yorqin tanlov" 2018 qiling
Buni "Yorqin tanlov" 2018 qiling
Buni "Yorqin tanlov" 2018 qiling
Buni "Yorqin tanlov" 2018 qiling

"Make it Glow" tanlovining ikkinchi mukofoti - 2018

Tavsiya: