Мазмуну:

LED POVstick Bluetooth аз энергия менен: 10 кадам (сүрөттөр менен)
LED POVstick Bluetooth аз энергия менен: 10 кадам (сүрөттөр менен)

Video: LED POVstick Bluetooth аз энергия менен: 10 кадам (сүрөттөр менен)

Video: LED POVstick Bluetooth аз энергия менен: 10 кадам (сүрөттөр менен)
Video: DIY Propeller LED Clock with Arduino || LED Clock POV Display 2024, Ноябрь
Anonim
LED POVstick Bluetooth аз энергия менен
LED POVstick Bluetooth аз энергия менен

Бул көрсөтмө сизге телефонуңуздан BLE аркылуу башкарыла турган RGB светодиоддору менен жарык жазуучу таякчаны кантип курууну көрсөтөт!

Эми караңгы мезгил башталып, узак экспозициядагы сүрөттөрдү тартуу керек: Бул таякчанын жардамы менен сүрөткө кол тамгаңызды же мотивациялык цитатаны же сүйүү декларациясын, QR-кодду, веб-даректи же башка көптөгөн нерселерди жаза аласыз. башка нерселер…

Бул өнүгүүнүн бир нече темаларын камтыйт:

  • аппараттык курулуш
  • Cypress BLE чипсетин C менен программалоо
  • аны көзөмөлдөө үчүн өз колдонмо жаса.

1-кадам: BLE-LED-Stick үчүн жабдыктар

BLE-LED-Stick үчүн жабдыктар
BLE-LED-Stick үчүн жабдыктар
BLE-LED-Stick үчүн жабдыктар
BLE-LED-Stick үчүн жабдыктар
BLE-LED-Stick үчүн жабдыктар
BLE-LED-Stick үчүн жабдыктар
BLE-LED-Stick үчүн жабдыктар
BLE-LED-Stick үчүн жабдыктар

Чач үчүн сизге төмөнкүлөр керек:

  • Кипарис BLE модулу (CY8C4247LQI-BL583)
  • WS2812b RGB-LED-Strip (метр тилкесине 144Ledден 64LED)
  • ылайыктуу кармагычы бар Li-Ion батареясы (18650)
  • баскыч
  • нан бир кесим

Таяктын аппараттык жабдуулары абдан жөнөкөй.

Cypress BLE модулу нан табактын бир бөлүгүнө орнотулган жана светодиоддор, баскычы жана электр менен камсыздоо бул панельге гана туташкан.

Бардыгы монтаждалат, желимделет же кичине жыгач тилкесине буралат, ал өзү жарым -жартылай тунук полиакрил түтүккө салынат. Бирок бул милдеттүү эмес. Мен бардыгын түтүктүн ичине салгым келди, бирок BLE-модулуна жана LEDга салыштырмалуу абдан чоң батареяга ылайыктуусун тапкан жокмун. Биринчи атуу үчүн акрил түтүктүн кереги жок.

2 -кадам: Электрондук Ассамблея

Электроника Ассамблеясы
Электроника Ассамблеясы
Электроника Ассамблеясы
Электроника Ассамблеясы

Бул кадам сизге BLE-модулу кантип орнотулганын жана кайсы казыктар кандай максатта колдонуларын көрсөтөт.

Менин бир нече көрсөтмөлөрүмдөгүдөй эле, мен Cypress BLE Development Kitти колдондум. CY8CKIT-042-BLE Ыкчам баштоо көрсөтмөсү

Эгерде сиз модулду өз алдынча иштеткиңиз келсе, анда электр булактары жана колдонулган казыктар гана туташышы керек.

Биздин долбоор үчүн биз LED-Stripти айдап өтүү үчүн 3,5 пинди гана колдонобуз. Бирок, албетте, муну PSoC Жаратуучусу менен өзгөртө аласыз.

ПХБнын сүрөтүндө көрүнүп тургандай, мен чиптин бардык бурчтарына түйрүкчөлөрдү коштум, бирок VREF пинин өткөрүп жибердим.

Ошентип, модуль туура орнотулган жана модулду туура эмес туташтыруу мүмкүн эмес.

3 -кадам: Шрифттерди кантип түзүү керек?

Шрифттерди кантип түзүү керек?
Шрифттерди кантип түзүү керек?

Ооба, мен бул долбоордун жүрүшүндө чечкен эң кызыктуу маселелердин бири болду деп ойлойм.

Албетте, жаңы арипти иштеп чыгып, аны массивге жазууга болот, бирок бул чындыгында көп эмгек!

Анда мен эмне кылдым?

Мен hex-bitmap конверсиясына кандайдыр бир ASCII керек экенин билчүмүн. Жана мен бактылуу болдум, анткени мен бул көйгөй менен биринчи эмесмин!:-)

"GLCD шрифт генератору" программасы эң туура кылган:

Мен LED таякчасынан максималдуу түрдө пайда көргүм келгендиктен, шрифтти чоң өлчөмдө (~ 32 пиксел) импорттодум. Эгерде сиз чоң тамгаларды гана колдонсоңуз, анда жогорулоо жөнүндө кам көрүүнүн кажети жок, бул сиздин көрүнөө шрифтиңиздин өлчөмүн дагы бир нече пикселге көбөйтөт. Бирок мен баш тамгаларды да, кичине тамгаларды да колдонууну чечтим. (https://en.wikipedia.org/wiki/Ascender_%28typography%29)

GLCD Font генераторуна шрифт импорттогондон кийин, аны ар кандай форматта экспорттоону тандай аласыз.

Мен аны түздөн -түз баштыктарга экспорттоого аракет кылдым, бул жакшы, бирок кемчиликсиз эмес. Натыйжада экспорттоо-бул 128-ascii биринчи белгинин ар бир белгиси үчүн мамычалар үчүн байт-гекс-мааниси бар шорты (16 бит). Мен каалагандай же керектүү эмес …

Ошентип, мен массивди ачык кеңсе калькуляциялоо барагына импорттодум. Анан мен "0x" төрт баанын үчөөсүн алып салдым жана аларды 32 биттик узундукка бириктирдим. Мен ошондой эле жеке байттардын туура эмес учурун оңдоп койдум.

Алынган массив Nbit -32 массив болуп саналат. М - тиешелүү тамга, ал эми N - бул тамганын дисплейин түзгөн мамычалар. Бул биринчи долбоордо бардык символдор бирдей мамычаларга ээ, башкача айтканда, бардык тамгалар белгилүү Courier шрифти сыяктуу бирдей кенен. "I" же "t" сыяктуу кичинекей каармандар мейкиндикте жоголгондой көрүнөт.

Ошондуктан мен ар бир символдун башына жаңы белгини коштум, бул символдун канча мамычасы бар же канчалык кең экенин. Бул эс тутумду үнөмдөйт жана текстти жакшыраак кылат!

4 -кадам: BLE Control Software

BLE Control программалык камсыздоо
BLE Control программалык камсыздоо

BLE-программасынын принциби абдан оңой:

  • Башында эч нерсе кылбайт.
  • BLE аркылуу ар кандай анимацияларды же тексттерди көрсөтө аласыз.
  • Сиз баскычты баскандан кийин, анимациянын же тексттин жеке тилкелери көрсөтүлөт.
  • Текст көрсөтүлгөндөн кийин, ал дагы күтө берет.

Кипарис долбоорун PSoC-Creatorго импорттоп, кааласаңыз, аны өзгөртүңүз.

PSoC-4 тамгаларынын толук RGB-сүрөттөрүн кармап туруу үчүн анчалык оперативдүү жана флэшка ээ эмес. Ошондуктан мен тексттен динамикалык түрдө LED мазмунун түзүүнүн жолуна муктаж болдум. Бул абдан жөнөкөй, азырынча өзгөчө эч нерсе жок. Көптөгөн тамгалары бар тексттен алгоритм бир тамга алып, аны ак-кара түстөгү массивге айландырат. Андан кийин бул бир тамгадан турган битмаптын ар бир тилкесин алат жана ак түстүн ордуна, LED массивине учурдагы RGB түсүн жазат. Ошентип, сиз бир түстүү тексттерди түзө аласыз же кошумча функция аркылуу түстү ар бир мамычадан, ар бир тамгадан кийин, ал тургай ар бир пикселден кийин өзгөртө аласыз.

"Катты" бир байт өзгөрмөсүндө сактаса болот, ал эми ак-кара түстүү разряд кандайдыр бир массивде сакталышы керек.

Маалымат структурасы бул:

Стринг: newtext = "Hello";

Шрифт: uint32 characters = {FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn,… SecondCharacter_ColumnCount, SecondCharacter_FirstColumn,…… LastCharacter_ColumnCount,… LastCharacter_LastColumn}; Түсү: uint32 rgbcolor = 0xHHBBGGRR; // Жарыктык, Көк, Жашыл, Кызыл 8bit мааниге ээ

Сапты дисплейге айландыруу үчүн биз төмөнкүлөрдү кылабыз:

getCharacter (): H (8 бит)

getColumn (int i): мамыча (32 бит) (i биринчи колонкадан башталат, акырына чейин иштейт.) if (тилкедеги бит 1) Stripтеги LED түскө коюлган. LED-Strip Array-ар бири 32 бит түстүү 64 LED!

Ал эми бул тилке көрсөтүлсө, биз кийинки бирин улантабыз.

Бул оңой.

5 -кадам: Биринчи тест

Биринчи тест
Биринчи тест
Биринчи тест
Биринчи тест
Биринчи тест
Биринчи тест

Эми программа иштей баштаганда, биз биринчи сыноолорго даярбыз.

Камтылган функцияны тестирлөөнүн эң оңой жолу - бул Bluetooth аз энергия сыноо колдонмосу. Скандинавиялык же кипарис колдонмолору сыяктуу.

Скандинавия: Mobile үчүн nRF Connect

Cypress: CySmart

Pov-Stickти баштаңыз жана демо-сап кантип көрсөтүлөрүн байкаңыз. Бул аяктагандан кийин, колдонмону баштоого убакыт келди. Povstick түзмөгүн издеп, туташууну чыкылдатыңыз.

Байланыш түзүлгөндөн кийин, колдонмо автоматтык түрдө бардык аныкталган кызматтарды жана мүнөздөмөлөрдү табат.

Биринчи кызматты издеңиз (0000ccce менен башталышы керек …). Аны ачуу үчүн басыңыз жана биринчи мүнөздөмөнү көрсөтүңүз (0000ccc1 менен башталат). Андан кийин жазуу (же жүктөө) баскычын басыңыз жана бул мүнөздөмөгө 01 жазыңыз.

Жөнөтүүнү баскандан кийин, POVstick Color-Knight-rider анимациясын, башкача айтканда Ларсон сканерин, түстөрдү өзгөртүү менен баштайт.

BLE аркылуу биринчи бааңызды жөнөткөнүңүзгө рахмат!

6 -кадам: Анимацияларды тандаңыз

Анимацияларды тандаңыз
Анимацияларды тандаңыз
Анимацияларды тандаңыз
Анимацияларды тандаңыз
Анимацияларды тандаңыз
Анимацияларды тандаңыз
Анимацияларды тандаңыз
Анимацияларды тандаңыз

Программада биз "e_Animation" деген энумду төмөнкү баалуулуктар менен аныктадык:

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}

Бул ccc1 мүнөздөмөсү үчүн жарактуу болгон баалуулуктар. Эгерде сиз CandyCane-Animation көргүңүз келсе, анда бул мүнөздөмөгө 4, 5 же 6 жазышыңыз керек. Алар түстөр менен айырмаланат.

Эки атайын анимация - бул RGB_Control жана TextAnimation. Эгер сиз буларды активдештирүүнү тандасаңыз, таяк албетте эч нерсени көрсөтпөйт. Бирок ал башка кызматтар менен таякты башкаруунун кошумча мүмкүнчүлүктөрүн сунуштайт.

7 -кадам: RGB Control

RGB Control
RGB Control
RGB Control
RGB Control
RGB Control
RGB Control
RGB Control
RGB Control

RGB көзөмөлү CySmart тиркемеси менен оңой эле сыналышы мүмкүн, анткени мен Cypress Demo сыяктуу эле ушул мүнөздөмө үчүн UUIDди колдонгом.

CySmart колдонмосун иштетип, Povstickке туташыңыз. Алгач ccc1 мүнөздөмөсүнө "0x0A" жазышыңыз керек.

0x0A-бул энциклдеги RGB-Control анимациясы болгон 10 үчүн он алтылык мааниси.

Андан кийин CySmart тиркемесиндеги RGB-LED башкаруу панелине которула аласыз. Балким, сиз бул экранга өтүү үчүн колдонмону өчүрүп күйгүзүшүңүз керек. Андан кийин бул RGB-диаграмма менен бардык светодиоддордун түсүн көзөмөлдөй аласыз.

Албетте, сиз баалуулуктарды мүнөздөмөгө түз жаза аласыз.

8 -кадам: Text_Animation кызматы жана туруктуу сактоо кызматы

Text_Animation кызматы жана туруктуу сактоо кызматы
Text_Animation кызматы жана туруктуу сактоо кызматы

Бул кызматтарды сыноо оңой эмес.

Техникалык жактан бул үчүн скандинавдык колдонмону колдонсоңуз болот, бирок кайсы мүнөздөмөгө кандай баалуулуктарды жазуу керек экенин билишиңиз керек.

Демек, эгер сиз буларды сынап көргүңүз келсе, анда PSUC долбоорун карап чыгыңыз, кайсы мүнөздөмө UUIDге ээ.

Маанилүү нерсе-"Set-Speed" мүнөздөмөсү. Бул өзгөчөлүк менен сиз анимациялардын ылдамдыгын көзөмөлдөй аласыз.

PersistentStorageServiceтин "Set_Animation" мүнөздөмөсү менен текст сабынын шрифттерин жана түстөрүн көзөмөлдөй аласыз. Жарактуу маанилер "povanimation.h", "mono" жана "serif" эки шрифт жана бир түстүү жана асан-үсөн түсү менен аныкталат. 0 жана 1 баалуулуктары текстти RGB_Control мүнөздөмөсү аркылуу башкарылуучу туруктуу түс менен көрсөтөт. 2 жана 3 баалуулуктары ар бир мамычанын түсүн өзгөртүп, сапка сонун асан -үсөн тартуулайт.

"Write_Text_Service" башкача. "Set_Character" мүнөздөмөсүнө жеке тамгаларды жазуу менен түзмөккө жаңы сап жаза аласыз. Ар бир жазууда сиз саптын узундугу жөнүндө эскертме аласыз.

Жаңы сапты баштоо үчүн "Clear_String" ге "true" деп жазыңыз.

Бул эң жакшы ишке ашыруу эмес, бирок MTU өлчөмүн өзгөртпөстөн, 250 белгиге чейин каалаган сапта иштейт.

Povstick баскычы басылганда башталышы менен жаңы саптын көрүнүшү.

9 -кадам: Android колдонмосун баштаңыз

Бул маанилүү кадам, бирок бул көрсөтмө берүүнүн чегинен тышкары. Бул үчүн кечирим сурайм!

Балким, мен тест-тиркемени оюн дүкөнүнө жүктөшүм мүмкүн, бирок ал бүтө элек же чыгарыла элек.

10 -кадам: Билдирүүлөрдү Сүрөттөргө жазуу

Билдирүүлөрдү Сүрөттөргө Жазуу
Билдирүүлөрдү Сүрөттөргө Жазуу
Билдирүүлөрдү Сүрөттөргө Жазуу
Билдирүүлөрдү Сүрөттөргө Жазуу
Билдирүүлөрдү Сүрөттөргө Жазуу
Билдирүүлөрдү Сүрөттөргө Жазуу

Ооба, мен бул повистти биринчи кезекте куруп жатам: сүрөттөргө билдирүүлөрдү жазуу.

Сизге штатив, узак экспозициядагы камера жана жакшы жайгашуу керек.

Камераны орнотуп, биринчи сыноо үчүн экспозиция убактысын 10 секундга чейин тууралаңыз.

Чыгарууну козгоңуз жана таякчадагы текст-дисплейди баштап, сүрөттү аралай баштаңыз.

Et Voila биз барбыз!

Жарык диоддун жарыктыгы, диафрагмасы жана экспозиция убактысынын туура айкалышы менен таң атканда да сүрөткө тартууга болот.

Бул кадамдагы үч сүрөт мүмкүнчүлүктөрдүн толук спектрин көрсөтөт.

Биринчисинде, Светодиоддор ашыкча экспозицияга түшүп, сыйкырдуу жаркыроону жаратат. Бирок ошол себептен жердеги чагылуулар көрүнүп турат жана фону жакшы.

Экинчи сүрөт светодиоддор үчүн ачык, бирок бул фону таптакыр кара.

Үчүнчүсү күн баткандан көп өтпөй, начар LED диоддорун көрсөтөт. Светодиоддор башка сүрөттөрдөгүдөй жарык, бирок айлана -чөйрө ушунчалык жарык болгондуктан, диоддор караңгы болуп көрүнүшү үчүн мен аз аппертияны жана төмөн ISOны колдонууга туура келди.

2018 Glow Contest кыл
2018 Glow Contest кыл
2018 Glow Contest кыл
2018 Glow Contest кыл

Экинчи сыйлык Make It Glow конкурсунда 2018

Сунушталууда: