Satura rādītājs:

LED POVstick ar Bluetooth zemu enerģiju: 10 soļi (ar attēliem)
LED POVstick ar Bluetooth zemu enerģiju: 10 soļi (ar attēliem)

Video: LED POVstick ar Bluetooth zemu enerģiju: 10 soļi (ar attēliem)

Video: LED POVstick ar Bluetooth zemu enerģiju: 10 soļi (ar attēliem)
Video: Campark TC21 Solar Trail Camera - Full In-Depth Review 2024, Novembris
Anonim
LED POVstick ar Bluetooth Low Energy
LED POVstick ar Bluetooth Low Energy

Šī pamācība parāda, kā izveidot gaismas rakstītāja nūju ar RGB gaismas diodēm, kuru no tālruņa var kontrolēt, izmantojot BLE!

Tagad, kad sākas tumšā sezona un jums jāuzņem attēli ar ilgu ekspozīciju: ar šo nūju jūs varat ierakstīt attēlā savu parakstu vai motivējošu citātu, vai mīlestības apliecinājumu, QR kodu, tīmekļa adresi vai daudzus citus citas lietas…

Tas aptver vairākas attīstības tēmas:

  • aparatūras veidošana
  • programmēt Cypress BLE mikroshēmojumu ar C
  • izveidojiet savu lietotni, lai to kontrolētu.

1. solis: BLE-LED-Stick aparatūra

Aparatūra BLE-LED-Stick
Aparatūra BLE-LED-Stick
Aparatūra BLE-LED-Stick
Aparatūra BLE-LED-Stick
Aparatūra BLE-LED-Stick
Aparatūra BLE-LED-Stick
Aparatūra BLE-LED-Stick
Aparatūra BLE-LED-Stick

Nūjai nepieciešams šāds materiāls:

  • Kipreses BLE modulis (CY8C4247LQI-BL583)
  • WS2812b RGB-LED sloksne (64LED no 144Led uz metru sloksnes)
  • litija jonu akumulators ar piemērotu turētāju (18650)
  • spiedpoga
  • maizes dēļa gabals

Nūjas aparatūra ir diezgan vienkārša.

Cypress BLE modulis ir uzstādīts uz maizes dēļa gabala, un gaismas diodes, poga un barošanas avots ir vienkārši pievienoti šim maizes dēlim.

Viss ir uzstādīts, pielīmēts vai pieskrūvēts pie neliela koka sloksnes gabala, kas pats ir daļēji ievietots caurspīdīgā poliakrilcaurulē. Bet tas nav obligāti. Es gribēju visu uzstādīt caurulē, bet neatradu piemērotu BLE modulim un akumulatoram, kas ir diezgan lieli, salīdzinot ar gaismas diodēm. Pirmajam šāvienam jums nav nepieciešama akrila caurule.

2. solis: elektronikas montāža

Elektronikas montāža
Elektronikas montāža
Elektronikas montāža
Elektronikas montāža

Šis solis parāda, kā BLE modulis ir uzstādīts un kuras tapas tiek izmantotas šim nolūkam.

Tāpat kā vairākos savos norādījumos, es izmantoju Cypress BLE izstrādes komplektu. CY8CKIT-042-BLE Īsā lietošanas pamācība

Ja vēlaties darbināt moduli atsevišķi, viss, kas jums jāpievieno, ir barošanas avoti un izmantotās tapas.

Mūsu projektam mēs izmantojam tikai tapu 3.5, lai vadītu LED sloksni. Bet, protams, jūs to varat mainīt, izmantojot PSoC Creator.

Kā redzat PCB attēlā, es pievienoju tapas galviņas visos mikroshēmas stūros, bet es izlaidu VREF tapu.

Tādā veidā modulis ir pareizi uzstādīts, un nav iespējams nepareizi savienot moduli.

3. darbība: kā ģenerēt fontus?

Kā ģenerēt fontus?
Kā ģenerēt fontus?

Es domāju, ka šī bija viena no interesantākajām problēmām, ko es atrisināju šī projekta laikā.

Protams, varētu vienkārši noformēt jaunu fontu un ierakstīt to masīvā, bet tas tiešām ir daudz darba!

Ko tad es darīju?

Es zināju, ka man ir nepieciešama kāda veida ASCII pārvēršana hex-bitmap. Un man paveicās, jo es nebiju pirmais ar šo problēmu!:-)

Programmatūra "GLCD fontu ģenerators" rīkojās pareizi:

Tā kā es gribēju maksimāli izmantot LED spraudni, es importēju fontu diezgan lielā izmērā (~ 32 pikseļi). Ja izmantojat tikai lielos burtus, jums nav jārūpējas par kāpējiem, kas palielinās jūsu redzamā fonta lielumu vēl par dažiem pikseļiem. Bet es izvēlējos izmantot gan lielos, gan mazos burtus. (https://en.wikipedia.org/wiki/Ascender_%28typography%29)

Kad esat importējis fontu GLCD fontu ģeneratorā, varat izvēlēties to eksportēt dažādos formātos.

Es mēģināju to eksportēt tieši galvenēs, kas bija labi, bet ne perfekti. Iegūtais eksports ir šortu masīvs (16 biti) ar baitu heksadecimālajām vērtībām kolonnām katrai pirmās 128 ascii rakstzīmes rakstzīmei. Ne gluži tas, ko es gribēju vai vajadzēja…

Tāpēc es importēju masīvu atvērtā biroja aprēķina darblapā. Tad es noņēmu "0x" trīs no četrām vērtībām un apvienoju tās vienā 32 bitu vērtībā. Es arī noteicu atsevišķu baitu nepareizo galotni.

Iegūtais masīvs ir N*M masīvs ar 32 bitu vērtībām. M ir attiecīgā rakstzīme, un N ir kolonnas, kas veido šī burta attēlojumu. Šajā pirmajā melnrakstā visām rakstzīmēm ir vienāds kolonnu skaits, kas nozīmē, ka visi burti ir vienādi plaši, piemēram, labi zināmajā Courier fontā. Mazās rakstzīmes, piemēram, "i" vai "t", izskatās kā pazudušas telpā.

Tāpēc katras rakstzīmes sākumā es pievienoju jaunu parametru, lai pateiktu, cik kolonnu ir šai rakstzīmei vai cik šī rakstzīme ir plaša. Tas ietaupa atmiņu un padara tekstu labāku!

4. solis: BLE kontroles programmatūra

BLE kontroles programmatūra
BLE kontroles programmatūra

BLE programmatūras princips ir ļoti vienkāršs:

  • Sākumā tas vienkārši neko nedara.
  • Izmantojot BLE, varat iestatīt dažādu animāciju vai tekstu parādīšanu.
  • Nospiežot pogu, tiek parādītas atsevišķas animācijas kolonnas vai teksts.
  • Pēc teksta parādīšanas tas turpina gaidīt.

Vienkārši importējiet cipreses projektu savā PSoC-Creator un modificējiet to, ja vēlaties.

PSoC-4 nav tik daudz RAM un zibspuldzes, lai varētu turēt pilnus fontu RGB attēlus. Tāpēc man vajadzēja veidu, kā dinamiski ģenerēt LED saturu no teksta. Tas ir diezgan vienkārši, līdz šim nekas īpašs. No teksta ar daudziem burtiem algoritms paņem vienu burtu un pārvērš to melnbaltā bitkartes masīvā. Tad tā paņem katru šīs viena burta bitkartes kolonnu un baltā vietā tā uzraksta LED masīvam pašreizējo RGB krāsu. Tādā veidā jūs varat ģenerēt vienkrāsainus tekstus vai ar papildu funkciju mainīt krāsu pēc katras kolonnas, katra burta vai pat pēc katra pikseļa.

"Burtu" var saglabāt vienā baitu mainīgajā, bet melnbalto bitkarti ir jāglabā sava veida masīvā.

Datu struktūra ir šāda:

String: newtext = "Labdien";

Fonts: uint32 rakstzīmes = {FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn,… SecondCharacter_ColumnCount, SecondCharacter_FirstColumn,…… LastCharacter_ColumnCount,… LastCharacter_LastColumn}; Krāsa: uint32 rgbcolor = 0xHHBBGGRR; // Spilgtums, zils, zaļš, sarkans katrs kā 8 bitu vērtība

Lai pārvērstu virkni attēlošanai, mēs rīkojamies šādi:

getCharacter (): H (8 bitu)

getColumn (int i): kolonna (32 bitu) (i sākas ar pirmo kolonnu, darbojas līdz pēdējai.), ja (bits kolonnā ir 1) LED joslā ir iestatīta krāsa. LED sloksnes masīvs ir 64 gaismas diodes ar 32 bitu krāsām katrā!

Un, ja tiek parādīta šī kolonna, mēs turpinām ar nākamo.

Tas ir tik vienkārši.

5. solis: pirmais tests

Pirmais tests
Pirmais tests
Pirmais tests
Pirmais tests
Pirmais tests
Pirmais tests

Tagad, kad programmatūra darbojas, mēs esam gatavi pirmajiem testiem.

Vienkāršākais veids, kā pārbaudīt iegulto funkciju, ir Bluetooth zema enerģijas patēriņa testa lietotne. Tāpat kā Nordic vai Cypress Apps.

Nordic: nRF Connect mobilajām ierīcēm

Ciprese: CySmart

Palaidiet Pov-Stick un novērojiet, kā tiks parādīta demonstrācijas virkne. Kad tas ir pabeigts, ir pienācis laiks sākt lietotni. Atrodiet Povstick ierīci un noklikšķiniet uz savienojuma.

Kad savienojums ir izveidots, lietotne automātiski atklāj visus definētos pakalpojumus un īpašības.

Meklējiet pirmo pakalpojumu (jāsāk ar 0000ccce…). Noklikšķiniet uz tā, lai to atvērtu un parādītu pirmo raksturlielumu (sākas ar 0000ccc1). Pēc tam nospiediet rakstīšanas (vai augšupielādes) pogu un uzrakstiet 01 šai īpašībai.

Tiklīdz jūs nospiežat sūtīt, POVstick sāks Color-Knight-rider animāciju jeb Larsona skeneri ar mainīgām krāsām.

Pateicība, ka nosūtījāt savu pirmo vērtību, izmantojot BLE!

6. darbība: atlasiet animācijas

Atlasiet animācijas
Atlasiet animācijas
Atlasiet animācijas
Atlasiet animācijas
Atlasiet animācijas
Atlasiet animācijas
Atlasiet animācijas
Atlasiet animācijas

Programmatūrā mēs definējām enum "e_Animation" ar šādām vērtībām:

typedef enum {Knightrider = 0, ColorKnightRider, Rainbowswirl, Valueswirl, WS_CandyCane, WS_CandyCane_2, WS_CandyCane_3, WS_Twinkle, WS_Icicle, WS_ColorWheel, RGB_Control, TextAnimation; Animācijas animācija;

Šīs ir vērtības, kas ir derīgas ccc1 raksturlielumam. Ja vēlaties redzēt CandyCane animāciju, šai īpašībai ir jāraksta 4, 5 vai 6. Tās atšķiras pēc krāsām.

Divas īpašas animācijas ir RGB_Control un TextAnimation. Ja izvēlējāties tos aktivizēt, sākumā nūja acīmredzot neko nerādīs. Bet tas piedāvā papildu iespējas, lai kontrolētu nūju ar citiem pakalpojumiem.

7. darbība: RGB kontrole

RGB vadība
RGB vadība
RGB vadība
RGB vadība
RGB vadība
RGB vadība
RGB vadība
RGB vadība

RGB-Control var ļoti viegli pārbaudīt, izmantojot lietotni CySmart, jo šai īpašībai es izmantoju to pašu UUID kā Cypress Demo.

Palaidiet lietotni CySmart un izveidojiet savienojumu ar Povstick. Vispirms ccc1 raksturlielumam ir jāraksta "0x0A".

0x0A ir heksadecimālā vērtība 10, kas ir RGB kontroles animācija.

Pēc tam lietotnē CySmart varat pārslēgties uz RGB-LED vadības paneli. Varbūt jums ir jārestartē lietotne, lai nokļūtu šajā ekrānā. Tad jūs varat kontrolēt visu gaismas diožu krāsu, izmantojot šo RGB diagrammu.

Protams, jūs varat arī ierakstīt vērtības tieši raksturlielumā.

8. darbība: teksta_animācijas pakalpojums un pastāvīgas uzglabāšanas pakalpojums

Text_Animation Service un Pastāvīgās krātuves pakalpojums
Text_Animation Service un Pastāvīgās krātuves pakalpojums

Šos pakalpojumus nav tik viegli pārbaudīt.

Tehniski šim nolūkam varat izmantot arī nordic lietotni, taču jums jāzina, kādas vērtības kādai īpašībai rakstīt.

Tātad, ja vēlaties tos pārbaudīt, jums vajadzētu apskatīt PSoC projektu, kuram raksturlielumam ir kāds UUID.

Svarīgi ir "Set-Speed" raksturlielums. Izmantojot šo īpašību, jūs varat kontrolēt animāciju ātrumu.

Ar PersistentStorageService raksturlielumu "Set_Animation" jūs varat kontrolēt fontus un teksta virknes krāsas. Derīgās vērtības ir definētas sadaļā "povanimation.h", divi fonti "mono" un "serif" un vienkrāsaini un varavīksnes krāsas. Vērtības 0 un 1 parāda tekstu ar fiksētu krāsu, ko var kontrolēt, izmantojot RGB_Control raksturlielumu. Vērtības 2 un 3 maina katras kolonnas krāsu un piešķir virknei jauku varavīksni.

"Write_Text_Service" ir atšķirīgs. Ierīcē varat ierakstīt jaunu virkni, rakstot atsevišķas rakstzīmes raksturlielumam "Set_Character". Katrā rakstīšanas reizē jūs saņemsit paziņojumu par virknes pašreizējo garumu.

Lai sāktu jaunu virkni, ierakstiet "true" uz "Clear_String".

Šī nav labākā ieviešana, taču tā darbojas jebkurai virknei līdz 250 rakstzīmēm, nemainot MTU lielumu.

Jaunas virknes parādīšana ar sākumu, kad tiek nospiesta poga uz pogas.

9. darbība: palaidiet Android lietotni

Tas ir svarīgs solis, taču tālu no šī pamācības darbības jomas. Atvainojos par to!

Varbūt es varētu augšupielādēt savu testa lietotni Play veikalā, bet tā vēl nav pabeigta vai izlaižama.

10. solis: rakstiet ziņojumus attēlos

Rakstiet ziņojumus attēlos
Rakstiet ziņojumus attēlos
Rakstiet ziņojumus attēlos
Rakstiet ziņojumus attēlos
Rakstiet ziņojumus attēlos
Rakstiet ziņojumus attēlos

Tāpēc es vispirms izveidoju šo povstick: lai rakstītu ziņojumus attēlos.

Jums ir nepieciešams statīvs, kamera ar ilgstošas ekspozīcijas funkciju un laba atrašanās vieta.

Uzstādiet kameru un noregulējiet ekspozīcijas laiku līdz 10 sekundēm pirmajam testam.

Ieslēdziet atbrīvošanu un sāciet staigāt pa attēlu, sākot teksta displeju uz nūjas.

Et Voila, tur mēs esam!

Izmantojot pareizo LED spilgtuma, diafragmas atvēruma un ekspozīcijas laika kombināciju, ir iespējams fotografēt pat rītausmā.

Trīs attēli šajā solī parāda visu iespēju spektru.

Pirmajā gadījumā gaismas diodes ir pārmērīgi eksponētas un rada maģisku mirdzumu. Bet tāpēc atstarojumi uz zemes ir redzami, un fons ir diezgan labs.

Otrais attēls ir eksponēts gaismas diodēm, bet fons paliek pilnīgi melns.

Un trešajā īsi pēc saulrieta ir redzamas diezgan vājas gaismas diodes. Gaismas diodes ir tikpat spilgtas kā citos attēlos, bet vide bija tik spilgta, ka man bija jāizmanto zems izskats un zems ISO, lai gaismas diodes būtu diezgan tumšas.

Padariet to mirdzošu konkursu 2018
Padariet to mirdzošu konkursu 2018
Padariet to mirdzošu konkursu 2018
Padariet to mirdzošu konkursu 2018

Otrā balva konkursā Make it Glow 2018

Ieteicams: