Съдържание:

LED POVstick с Bluetooth с ниска енергия: 10 стъпки (със снимки)
LED POVstick с Bluetooth с ниска енергия: 10 стъпки (със снимки)

Видео: LED POVstick с Bluetooth с ниска енергия: 10 стъпки (със снимки)

Видео: LED POVstick с Bluetooth с ниска енергия: 10 стъпки (със снимки)
Видео: POV Bluetooth Controlled v1.0 2024, Ноември
Anonim
LED POV стик с Bluetooth с ниска енергия
LED POV стик с Bluetooth с ниска енергия

Тази инструкция ви показва как да изградите светкавична пръчка с RGB светодиоди, която да се контролира чрез BLE от вашия телефон!

Сега, когато тъмният сезон започва и трябва да направите снимки с продължителна експозиция: С тази пръчка можете да напишете своя подпис в картината, или мотивационен цитат, или признание в любов, 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 лента (64LEDs от 144Led на метър лента)
  • литиево-йонна батерия с подходящ държач (18650)
  • бутон
  • парче макет

Хардуерът на самата пръчка е доста прост.

Модулът Cypress BLE е монтиран на парче макет и светодиодите, бутонът и захранването са просто свързани към тази дъска.

Всичко е монтирано, залепено или завито към малко парче дървена лента, което само по себе си е частично поставено в прозрачна полиакрилна тръба. Но това не е задължително. Исках да монтирам всичко в тръба, но не намерих подходящ за BLE-модула и батерията, които са доста големи, в сравнение със светодиодите. За първи изстрел не ви е необходима акрилната тръба.

Стъпка 2: Сглобяване на електроника

Сглобяване на електроника
Сглобяване на електроника
Сглобяване на електроника
Сглобяване на електроника

Тази стъпка ви показва как е монтиран BLE-модулът и кои щифтове се използват за каква цел.

Както в няколко от моите инструкции, използвах Cypress BLE Development Kit. CY8CKIT-042-BLE Ръководство за бързо стартиране

Ако искате да работите с модула самостоятелно, всичко, което трябва да свържете, са източниците на захранване и използваните щифтове.

За нашия проект използваме само щифт 3.5 за задвижване на LED лентата. Но разбира се можете да промените това с PSoC Creator.

Както можете да видите на снимката на печатната платка, добавих щифтове във всички ъгли на чипа, но пропуснах щифта VREF.

По този начин модулът е монтиран правилно и е невъзможно неправилното свързване на модула.

Стъпка 3: Как да генерирате шрифтове?

Как да генерирате шрифтове?
Как да генерирате шрифтове?

Е, мисля, че това беше един от най -интересните проблеми, които реших по време на този проект.

Разбира се, човек може просто да проектира нов шрифт и да го напише в масив, но това наистина е много работа!

И така, какво направих?

Знаех, че се нуждая от някакво преобразуване на ASCII в шестнадесетична растерна карта. И аз имах късмет, защото не бях първият с този проблем!:-)

Софтуерът "GLCD Font Generator" направи точно правилното нещо:

Тъй като исках да извлека максимума от LED стика, импортирах шрифта в доста голям размер (~ 32 пиксела). Ако използвате само главни букви, не е нужно да се грижите за изкачванията, което ще увеличи видимия ви размер на шрифта с още няколко пиксела. Но аз избрах да използвам главни и малки букви. (https://en.wikipedia.org/wiki/Ascender_%28typography%29)

След като импортирате шрифт в генератора на шрифтове на GLCD, можете да изберете да го експортирате в различни формати.

Опитах се да го експортирам директно в заглавки, което беше добро, но не перфектно. Полученият експорт е масив от къси панталони (16 бита) с байт-шестнадесетични стойности за колоните за всеки знак от първия 128-ascii символ. Не съвсем това, което исках или имах нужда …

Затова импортирах масива в отворен офис calc работен лист. След това премахнах "0x" на три от четирите стойности и ги свързах в една 32 -битова дълга стойност. Също така поправих грешната крайност на отделните байтове.

Полученият масив е N*M масив с 32 -битови стойности. M е съответният знак и N са колоните, които съставляват показването на тази буква. В тази първа чернова всички знаци имат еднакъв брой колони, което означава, че всички букви са еднакво широки, както в добре познатия шрифт Courier. Малките герои като „i“или „t“изглеждат така, сякаш са загубени в космоса.

Затова добавих нов параметър в началото на всеки знак, за да кажа колко колони има този знак или колко широк е този знак. Това спестява памет и прави текста да изглежда по -добре!

Стъпка 4: Софтуер за управление на BLE

Софтуер за управление на BLE
Софтуер за управление на BLE

Принципът на софтуера BLE е много лесен:

  • В началото просто не прави нищо.
  • Чрез BLE можете да зададете различни анимации или текстове, които да се показват.
  • След като натиснете бутона, се показват отделните колони на анимацията или текста.
  • След като текстът се покаже, той продължава да чака отново.

Просто импортирайте проекта кипарис във вашия PSoC-Creator и го променете, ако желаете.

PSoC-4 няма толкова RAM и флаш, за да може да съхранява пълни RGB изображения на шрифтовете. Затова имах нужда от начин за динамично генериране на LED-съдържанието от текста. Това е доста ясно, нищо особено засега. От текст с много букви алгоритъмът взема една буква и я преобразува в черно-бял-растров масив. След това той взема всяка колона от тази еднобуквена растерна карта и вместо бяла, тя записва текущия RGB цвят в LED-масива. По този начин можете да генерирате едноцветни текстове или чрез допълнителна функция да промените цвета след всяка колона, всяка буква или дори след всеки пиксел.

"Буква" може да се съхранява в една байтова променлива, докато черно-бяла растерна карта трябва да се съхранява в някакъв вид масив.

Структурата на данните е следната:

Низ: newtext = "Здравейте";

Шрифт: uint32 знака = {FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn,… SecondCharacter_ColumnCount, SecondCharacter_FirstColumn,…… LastCharacter_ColumnCount,… LastCharacter_LastColum}; Цвят: uint32 rgbcolor = 0xHHBBGGRR; // Яркост, синьо, зелено, червено всяка като 8 -битова стойност

За да преобразуваме низ за показване, правим следното:

getCharacter (): H (8 бита)

getColumn (int i): колона (32bit) (i започва с първата колона, работи до последната.) if (bit в колона е 1) LED в Strip е настроен на цвят. LED-Strip Array е 64 светодиода с 32-битови цветове всеки!

И ако тази колона се показва, продължаваме със следващата.

Това е толкова лесно.

Стъпка 5: Първи тест

Първи тест
Първи тест
Първи тест
Първи тест
Първи тест
Първи тест

Сега, когато софтуерът работи, ние сме готови за първите тестове.

Най -лесният начин да тествате вградената функция е с Bluetooth ниско енергийно приложение за тестване. Подобно на Nordic или Cypress Apps.

Скандинавски: nRF Connect за мобилни устройства

Кипарис: CySmart

Стартирайте Pov-Stick и наблюдавайте как ще се покаже демонстрационният низ. След като това приключи, е време да стартирате приложението. Потърсете в устройството Povstick и кликнете върху свързване.

След като връзката се установи, приложението автоматично открива всички определени услуги и характеристики.

Потърсете първата услуга (трябва да започне с 0000ccce …). Щракнете върху него, за да го отворите и покажете първата характеристика (започва с 0000ccc1). След това натиснете бутона за запис (или качване) и напишете 01 към тази характеристика.

След като натиснете изпращане, POVstick ще стартира анимацията Color-Knight-ездач, известен още като Larson Scanner с променящи се цветове.

Поздравления, изпратихте първата си стойност чрез 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_Contation, Text, Animation, Text

Това са стойностите, които са валидни за характеристиката ccc1. Ако искате да видите CandyCane-Animation, трябва да напишете 4, 5 или 6 към тази характеристика. Те се различават по цветовете.

Две специални анимации са RGB_Control и TextAnimation. Ако сте избрали да ги активирате, пръчката очевидно първо няма да покаже нищо. Но той ви предлага допълнителни опции за управление на пръчката с другите услуги.

Стъпка 7: RGB контрол

RGB контрол
RGB контрол
RGB контрол
RGB контрол
RGB контрол
RGB контрол
RGB контрол
RGB контрол

RGB-Control може много лесно да бъде тестван с приложението CySmart, защото използвах същия UUID за тази характеристика, както в демонстрацията на Cypress.

Стартирайте приложението CySmart и се свържете с Povstick. Първо трябва да напишете "0x0A" към характеристиката ccc1.

0x0A е шестнадесетичната стойност за 10, която е анимацията RGB-Control в изброяването.

След това можете да превключите към контролния панел RGB-LED в приложението CySmart. Може би трябва да рестартирате приложението, за да стигнете до този екран. След това можете да контролирате цвета на всички светодиоди с тази RGB-диаграма.

Разбира се, можете също да запишете стойностите директно в характеристиката.

Стъпка 8: Услуга Text_Animation и Услуга за постоянно съхранение

Услуга Text_Animation и Услуга за постоянно съхранение
Услуга Text_Animation и Услуга за постоянно съхранение

Тези услуги не са толкова лесни за тестване.

Технически можете също да използвате nordic приложението за това, но трябва да знаете какви стойности да напишете към коя характеристика.

Така че, ако искате да ги тествате, трябва да разгледате проекта PSoC, чиято характеристика има кой UUID.

Важно е характеристиката "Set-Speed". С тази характеристика можете да контролирате колко бързи са анимациите.

С характеристиката "Set_Animation" на PersistentStorageService можете да контролирате шрифтовете и цветовете на текстовия низ. Валидните стойности са дефинирани в "povanimation.h", два шрифта "моно" и "засечка" и едноцветни и в цвят на дъгата. Стойностите 0 и 1 показват текста с фиксиран цвят, управляем чрез характеристиката RGB_Control. Стойностите 2 и 3 променят цвета на всяка колона и придават на низа хубава дъга.

"Write_Text_Service" е нещо различно. Можете да напишете нов низ на устройството, като напишете отделни знаци към характеристиката "Set_Character". При всяко записване ще получавате известие обратно за текущата дължина на низа.

За да стартирате нов низ, напишете „true“в „Clear_String“.

Това не е най -доброто изпълнение, но работи за всеки низ до 250 знака, без да променя размера на MTU.

Показване на нов низ с начало при натискане на бутона на Povstick.

Стъпка 9: Стартирайте приложението Android

Това е важна стъпка, но далеч извън обхвата на тази инструкция. Съжалявам за това!

Може би бих могъл да кача тестовото си приложение в магазина за игри, но все още не е завършено или освободено.

Стъпка 10: Напишете съобщения в снимки

Пишете съобщения в картини
Пишете съобщения в картини
Пишете съобщения в картини
Пишете съобщения в картини
Пишете съобщения в картини
Пишете съобщения в картини

Е, ето защо на първо място изграждам този повдик: да пиша съобщения в снимки.

Нуждаете се от статив, камера с функция за продължителна експозиция и добро местоположение.

Настройте камерата и регулирайте времето на експозиция на 10s за първи тест.

Задействайте освобождаването и започнете да се разхождате из картината, като стартирате текстовия дисплей на стика.

Et Voila, ето ни!

С правилната комбинация от LED яркост, бленда и време на експозиция е възможно дори да се правят снимки на разсъмване.

Трите снимки в тази стъпка показват пълния спектър от възможности.

В първия светодиодите са преекспонирани и създават магическа светлина. Но затова отраженията на земята са видими и фонът е доста добър.

Втората картина е изложена за светодиодите, но това оставя фона напълно черен.

И третият показва доста приглушени светодиоди малко след залез слънце. Светодиодите са толкова ярки, колкото на другите снимки, но околната среда беше толкова ярка, че трябваше да използвам ниска апертура и ниско ISO, така че светодиодите да изглеждат доста тъмни.

Направи го Glow Contest 2018
Направи го Glow Contest 2018
Направи го Glow Contest 2018
Направи го Glow Contest 2018

Втора награда в конкурса Make it Glow 2018

Препоръчано: