INHOUDSOPGAWE:
- Stap 1: Hardeware vir die BLE-LED-Stick
- Stap 2: Elektroniese samestelling
- Stap 3: Hoe om die lettertipes te genereer?
- Stap 4: BLE -beheersagteware
- Stap 5: Eerste toets
- Stap 6: Kies die animasies
- Stap 7: RGB -beheer
- Stap 8: Text_Animation Service en Persistent Storage Service
- Stap 9: Begin die Android -app
- Stap 10: Skryf boodskappe in prente
Video: LED POVstick met Bluetooth lae energie: 10 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Hierdie instruksies wys u hoe u 'n ligskrywerstok met RGB -LED's kan bou wat via BLE vanaf u telefoon beheer kan word!
Noudat die donker seisoen begin en u lang foto's moet neem: Met hierdie stok kan u u handtekening in die prentjie skryf, of 'n motiverende aanhaling, of 'n liefdesverklaring, 'n QR-kode, 'n webadres, of baie ander dinge…
Dit dek verskeie ontwikkelingsonderwerpe:
- bou van die hardeware
- die programmering van die Cypress BLE -skyfiestel met C
- maak u eie app om dit te beheer.
Stap 1: Hardeware vir die BLE-LED-Stick
Vir die stok benodig jy die volgende:
- 'N Sipres BLE-module (CY8C4247LQI-BL583)
- 'n WS2812b RGB-LED-strook (64 LED's vanaf 'n strook van 144 LED per meter)
- 'n Li-Ion-battery met 'n geskikte houer (18650)
- 'n drukknop
- 'n stukkie broodbord
Die hardeware van die stok self is redelik eenvoudig.
Die Cypress BLE-module is op 'n stuk broodbord gemonteer en die LED's, die knoppie en die kragtoevoer is net aan hierdie broodbord gekoppel.
Alles word gemonteer, vasgeplak of vasgeskroef aan 'n klein stuk houtstrook, wat self gedeeltelik in 'n deurskynende buis van poliakriel geplaas word. Maar dit is nie 'n moet nie. Ek wou alles in 'n buis monteer, maar ek het nie 'n geskikte vir die BLE-module en die battery gevind nie, wat redelik groot is in vergelyking met die LED's. Vir 'n eerste opname het u nie die akrielbuis nodig nie.
Stap 2: Elektroniese samestelling
Hierdie stap wys hoe die BLE-module gemonteer is en watter penne vir watter doel gebruik word.
Soos in verskeie van my instruksies, het ek die Cypress BLE Development Kit gebruik. CY8CKIT-042-BLE Vinnige gids
As u die module alleen wil bedryf, hoef u slegs die kragbronne en die gebruikte penne aan te sluit.
Vir ons projek gebruik ons slegs die pen 3.5 om die LED-strook aan te dryf. Maar u kan dit natuurlik verander met die PSoC Creator.
Soos u op die prentjie van die PCB kan sien, het ek speldekoppe in alle hoeke van die skyfie bygevoeg, maar ek het die VREF -pen oorgeslaan.
Op hierdie manier is die module behoorlik gemonteer en is dit onmoontlik om die module verkeerd te koppel.
Stap 3: Hoe om die lettertipes te genereer?
Ek dink dit was een van die interessantste probleme wat ek tydens hierdie projek opgelos het.
U kan natuurlik 'n nuwe lettertipe ontwerp en dit in 'n skikking skryf, maar dit is regtig baie werk!
So, wat het ek gedoen?
Ek het geweet dat ek 'n soort ASCII na hex-bitmap-omskakeling nodig het. En ek was gelukkig, want ek was nie die eerste met hierdie probleem nie!:-)
Die sagteware "GLCD Font Generator" het presies die regte ding gedoen:
Omdat ek die meeste uit die LED-stick wou put, het ek die lettertipe in 'n redelik groot grootte (~ 32 pixels) ingevoer. As u slegs hoofletters gebruik, hoef u nie omhoog te gaan vir opstygers nie, wat u letterlike grootte nog 'n paar pixels verhoog. Maar ek het gekies om beide hoofletters en klein letters te gebruik. (https://en.wikipedia.org/wiki/Ascender_%28typography%29)
Sodra u 'n lettertipe in die GLCD Font -generator ingevoer het, kan u kies om dit in verskillende formate uit te voer.
Ek het probeer om dit direk na headers uit te voer, wat goed was, maar nie perfek nie. Die gevolglike uitvoer is 'n verskeidenheid kortbroek (16bit) met byte-hex-waardes vir die kolomme vir elke karakter van die eerste 128-ascii-karakter. Nie heeltemal wat ek wou of nodig gehad het nie …
Ek het die skikking dus in 'n oop kantoorrekeningblad ingevoer. Toe verwyder ek die "0x" op drie van vier waardes en voeg dit saam in 'n 32bit lange waarde. Ek het ook die verkeerde endianess van die individuele grepe reggestel.
Die gevolglike skikking is 'n N*M -skikking van 32bit -waardes. M is die onderskeie karakter en N is die kolomme waaruit hierdie letter verskyn. In hierdie eerste konsep het alle karakters dieselfde aantal kolomme, wat beteken dat alle letters ewe breed is, soos in die bekende Courier -lettertipe. Klein karakters soos "i" of "t" lyk asof hulle verlore is in die ruimte.
Daarom het ek aan die begin van elke karakter 'n nuwe parameter bygevoeg om te vertel hoeveel kolomme hierdie karakter het of hoe wyd hierdie karakter is. Dit bespaar geheue en laat die teks beter lyk!
Stap 4: BLE -beheersagteware
Die beginsel van die BLE-sagteware is baie maklik:
- Aan die begin doen dit net niks.
- Via BLE kan u verskillende animasies of tekste stel wat vertoon moet word.
- Sodra u op die knoppie gedruk het, word die individuele kolomme van die animasie of die teks vertoon.
- Nadat die teks vertoon is, wag dit weer.
Voer net die sipresprojek in na u PSoC-Creator en verander dit as u wil.
Die PSoC-4 het nie soveel RAM en flits om volledige RGB-beelde van die lettertipes te kan hou nie. Daarom het ek 'n manier nodig gehad om die LED-inhoud dinamies uit die teks te genereer. Dit is redelik eenvoudig, tot dusver niks besonders nie. Uit 'n teks met baie letters neem die algoritme een letter en omskep dit in 'n swart-wit-bitmap-skikking. Dan neem dit elke kolom van hierdie een-letter-bitmap en in plaas van wit skryf dit die huidige RGB-kleur na die LED-skikking. Op hierdie manier kan u enkelkleurtekste genereer of deur 'n ekstra funksie die kleur na elke kolom, elke letter of selfs na elke pixel verander.
'N' Letter 'kan in 'n enkele byte-veranderlike gestoor word, terwyl 'n swart-en-wit bitmap in 'n soort skikking gestoor moet word.
Die datastruktuur is soos volg:
String: newtext = "Hallo";
Font: uint32 characters = {FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn, … SecondCharacter_ColumnCount, SecondCharacter_FirstColumn, … … LastCharacter_ColumnCount, … LastCharacter_LastColumn}; Kleur: uint32 rgbcolor = 0xHHBBGGRR; // Helderheid, blou, groen, rooi elk as 8bit waarde
Om 'n string vir vertoning te omskep, doen ons die volgende:
getCharacter (): H (8bit)
getColumn (int i): kolom (32bit) (i begin met die eerste kolom, loop tot by die laaste.) as (bit in kolom 1 is) LED in Strip is ingestel op kleur. LED-Strip Array is 64 LED's met 32bit kleure elk!
En as hierdie kolom vertoon word, gaan ons voort met die volgende een.
Dit is so maklik.
Stap 5: Eerste toets
Noudat die sagteware werk, is ons gereed vir die eerste toetse.
Die maklikste manier om die ingebedde funksie te toets, is met 'n Bluetooth -laenergietoets -app. Soos die Nordiese of Cypress Apps.
Nordies: nRF Connect for Mobile
Sipres: CySmart
Begin die Pov-Stick en kyk hoe die demo-string vertoon word. Sodra dit klaar is, is dit tyd om die app te begin. Soek op die Povstick -toestel en klik op connect.
Sodra die verbinding tot stand gebring is, ontdek die app outomaties alle gedefinieerde dienste en kenmerke.
Soek die eerste diens (moet begin met 0000ccce …). Klik daarop om dit oop te maak en die eerste kenmerk te vertoon (begin met 0000ccc1). Druk dan op die skryf (of oplaai) knoppie en skryf 'n 01 op hierdie eienskap.
Sodra u op Send gestuur het, begin die POVstick die Color-Knight-rider-animasie, oftewel Larson Scanner, met veranderende kleure.
Baie geluk, jy het jou eerste waarde via BLE gestuur!
Stap 6: Kies die animasies
In die sagteware definieer ons 'n enum "e_Animation" met die volgende waardes:
typedef enum {Knightrider = 0, ColorKnightRider, Rainbowswirl, Valueswirl, WS_CandyCane, WS_CandyCane_2, WS_CandyCane_3, WS_Twinkle, WS_Icicle, WS_ColorWheel, RGB_Control, TextAnimation, TextAnimation;
Dit is die waardes wat geldig is vir die ccc1 -eienskap. As u die CandyCane-animasie wil sien, moet u 'n 4, 5 of 6 by hierdie kenmerk skryf. Hulle verskil in die kleure.
Twee spesiale animasies is die RGB_Control en die TextAnimation. As u gekies het om dit te aktiveer, sal die stok aanvanklik duidelik niks wys nie. Maar dit bied u ekstra opsies om die stok met die ander dienste te beheer.
Stap 7: RGB -beheer
Die RGB-Control kan baie maklik met die CySmart-app getoets word, omdat ek dieselfde UUID vir hierdie kenmerk gebruik het as in die Cypress Demo.
Begin die CySmart -app en maak verbinding met die Povstick. Eerstens moet u 'n "0x0A" skryf aan die ccc1 -eienskap.
0x0A is die hex-waarde vir 10, wat die RGB-beheer-animasie in die enum is.
Dan kan u oorskakel na die RGB-LED-bedieningspaneel in die CySmart-app. Miskien moet u die app herlaai om by hierdie skerm te kom. Dan kan u die kleur van alle LED's beheer met hierdie RGB-diagram.
U kan die waardes natuurlik ook direk in die kenmerk skryf.
Stap 8: Text_Animation Service en Persistent Storage Service
Hierdie dienste is nie so maklik om te toets nie.
Tegnies kan u ook die nordic -app hiervoor gebruik, maar u moet weet watter waardes om na watter kenmerk te skryf.
As u dit wil toets, moet u na die PSoC -projek kyk, watter eienskap het watter UUID.
'N Belangrike aspek is die' Set-Speed 'eienskap. Met hierdie kenmerk kan u beheer hoe vinnig die animasies is.
Met die kenmerk "Set_Animation" van die PersistentStorageService kan u die lettertipes en die kleure van die teksstring beheer. Die geldige waardes word gedefinieer in "povanimation.h", twee lettertipes "mono" en "serif" en enkelkleurig en reënboogkleurig. Die waardes 0 en 1 vertoon die teks met 'n vaste kleur, beheerbaar via die RGB_Control -kenmerk. Die waardes 2 en 3 verander die kleur vir elke kolom en gee die string 'n mooi reënboog.
Die 'Write_Text_Service' is soortgelyk. U kan 'n nuwe string op die toestel skryf deur individuele karakters na die "Set_Character" -kenmerk te skryf. By elke skryf kry u 'n kennisgewing van die huidige lengte van die string.
Om 'n nuwe string te begin, skryf 'true' na 'Clear_String'.
Dit is nie die beste implementering nie, maar dit werk vir enige string tot 250 karakters sonder om die MTU -grootte te verander.
Die vertoning van 'n nuwe string met begin wanneer die knoppie op die Povstick ingedruk word.
Stap 9: Begin die Android -app
Dit is 'n belangrike stap, maar ver buite die omvang van hierdie instruksies. Jammer daaroor!
Miskien laai ek my toets-app na die speelwinkel, maar dit is nog nie klaar of vrygestel nie.
Stap 10: Skryf boodskappe in prente
Dit is hoekom ek in die eerste plek hierdie povstick bou: om boodskappe in foto's te skryf.
U benodig 'n driepoot, 'n kamera met lang blootstelling en 'n goeie ligging.
Stel die kamera op en pas die blootstellingstyd aan tot 10 sekondes vir 'n eerste toets.
Begin die vrylating en begin deur die prentjie loop, met die teksvertoning op die stokkie.
Et Voila daar is ons!
Met die regte kombinasie van LED-helderheid, diafragma en blootstellingstyd is dit selfs moontlik om met dagbreek foto's te neem.
Die drie foto's in hierdie stap toon die volledige spektrum van moontlikhede.
In die eerste is die LED's oorbelicht en skep 'n magiese gloed. Maar daarom is die weerkaatsings op die grond sigbaar en die agtergrond redelik goed.
Die tweede prentjie word blootgestel vir die LED's, maar dit laat die agtergrond heeltemal swart.
En die derde een toon effe dowwe LED's kort na sononder. Die LED's is so helder soos op die ander foto's, maar die omgewing was so helder dat ek 'n lae opening en 'n lae ISO moes gebruik sodat die LED's nogal donker lyk.
Tweede prys in die Make it Glow Contest 2018
Aanbeveel:
Maak u eie Bluetooth -musiekstelsel met 'n lae begroting: 5 stappe (met foto's)
Maak u eie Bluetooth -musiekstelsel met 'n lae begroting: in hierdie projek sal ek u wys hoe ek " versmelt het " 'n vuil goedkoop bluetooth musiek ontvanger met 'n ou luidspreker van my. Die belangrikste fokus sal wees op die ontwerp van 'n goedkoop klankversterker kring rondom die LM386 en die NE5534. Die Bluetooth -ontvangs
Hoe om 'n pasgemaakte PCB te maak met 'n lasergraveur met lae krag: 8 stappe (met foto's)
Hoe om 'n pasgemaakte PCB te maak met 'n lasergraveur met 'n lae krag: As u 'n tuisgemaakte PCB wil maak, kan u verskeie metodes aanlyn vind: van die mees basiese, met slegs 'n pen, tot die meer gesofistikeerde met behulp van 3D -drukkers en ander toerusting. En hierdie tutoriaal val op die laaste geval! In hierdie projek vertel ek
LEIDS - IOT -deursensor met lae energie: 8 stappe (met foto's)
LEIDS - IOT -deursensor met lae energie: wat is LEIDS? LEIDS is 'n IOT -sensor wat gebaseer is op die ESP8266. Hierdie sensor maak gebruik van hierdie bord, 'n sagte vergrendelingskring, 'n rietskakelaar en 'n paar magnete om 'n deursensor te skep wat u 'n waarskuwing sal stuur wanneer u deur oopmaak en sluit
Lae-poliêre ysterman met Wifi-beheerde LED-strokies: 8 stappe (met foto's)
Ysterman met 'n lae poli met Wifi-beheerde LED-stroke: hierdie interaktiewe muurkunsstuk is ongeveer 39 " lank en 24 " wyd. Ek het die hout by die Clemson University Student Makerspace gesny, en dan al die driehoeke met die hand geverf en die ligte agterop aangebring. Hierdie opdragbare
Vervang lae-spanning tweespeld-halogene met LED's: 6 stappe (met foto's)
Vervang lae-spanning tweepeld-halogene met LED's: hierdie instruksies gee 'n uiteensetting van hoe u 'n lae-spanning (12V) tweepeld-halogeenarmatuur met 'n hoë-krag LED " gloeilamp " wat minder krag (<10W) gebruik, langer hou (50 000 uur) en ongeveer dieselfde liguitset lewer (~ 300 lumen