Taula de continguts:

LED POVstick amb Bluetooth de baixa energia: 10 passos (amb imatges)
LED POVstick amb Bluetooth de baixa energia: 10 passos (amb imatges)

Vídeo: LED POVstick amb Bluetooth de baixa energia: 10 passos (amb imatges)

Vídeo: LED POVstick amb Bluetooth de baixa energia: 10 passos (amb imatges)
Vídeo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Desembre
Anonim
LED POVstick amb Bluetooth de baixa energia
LED POVstick amb Bluetooth de baixa energia

Aquest instructiu us mostra com construir un llapis lightwriter amb LED RGB que es pugui controlar mitjançant BLE des del vostre telèfon.

Ara que comença la temporada fosca i heu de fer fotos d’exposició llarga: amb aquest pal podeu escriure la vostra firma a la imatge, o una cita motivadora, o una declaració d’amor, un codi QR, una adreça web o molts altres coses …

Cobreix diversos temes de desenvolupament:

  • construint el maquinari
  • programant el chipset Cypress BLE amb C
  • fes la teva pròpia aplicació per controlar-la.

Pas 1: maquinari per al BLE-LED-Stick

Maquinari per al BLE-LED-Stick
Maquinari per al BLE-LED-Stick
Maquinari per al BLE-LED-Stick
Maquinari per al BLE-LED-Stick
Maquinari per al BLE-LED-Stick
Maquinari per al BLE-LED-Stick
Maquinari per al BLE-LED-Stick
Maquinari per al BLE-LED-Stick

Per al pal necessiteu el següent:

  • Un mòdul BLE de xiprer (CY8C4247LQI-BL583)
  • una tira LED-RGB WS2812b (64 LED d'una tira de 144Led per metre)
  • una bateria Li-Ion amb un suport adequat (18650)
  • un polsador
  • un tros de pissarra

El maquinari del stick en si és bastant senzill.

El mòdul Cypress BLE està muntat en un panell i els LED, el botó i la font d’alimentació s’acaben de connectar a aquest tauler.

Tot està muntat, enganxat o cargolat a una petita peça de tira de fusta, que per si mateixa s’insereix parcialment en un tub de poliacril transparent. Però això no és imprescindible. Volia muntar-ho tot dins d’un tub, però no vaig trobar cap producte adequat per al mòdul BLE i la bateria bastant gran, en comparació amb els LED. Per a una primera presa no cal el tub d’acril.

Pas 2: Muntatge d'electrònica

Muntatge d'electrònica
Muntatge d'electrònica
Muntatge d'electrònica
Muntatge d'electrònica

Aquest pas us mostra com es munta el mòdul BLE i quins pins s'utilitzen per a quin propòsit.

Com en diversos dels meus instructables, vaig utilitzar el Cypress BLE Development Kit. CY8CKIT-042-BLE Guia d'inici ràpid

Si voleu fer funcionar el mòdul tot sol, només cal que connecteu les fonts d’alimentació i els pins utilitzats.

Per al nostre projecte, només fem servir el pin 3.5 per conduir el LED-Strip. Però, per descomptat, podeu canviar-ho amb el creador de PSoC.

Com podeu veure a la imatge del PCB, he afegit caps de pin a totes les cantonades del xip, però he saltat el pin VREF.

D'aquesta manera, el mòdul es munta correctament i és impossible desconnectar-lo.

Pas 3: Com es generen els tipus de lletra?

Com es generen els tipus de lletra?
Com es generen els tipus de lletra?

Bé, crec que aquest va ser un dels problemes més interessants que vaig resoldre durant aquest projecte.

Per descomptat, només es podria dissenyar un tipus de lletra nou i escriure-ho en una matriu, però això és realment molt útil.

Què he fet, doncs?

Sabia que necessitava algun tipus de conversió ASCII a mapa de bits hexadecimal. I vaig tenir sort, perquè no vaig ser el primer amb aquest problema.:-)

El programari "GLCD Font Generator" va fer el correcte:

Com que volia treure el màxim partit al disc LED, vaig importar el tipus de lletra en una mida bastant gran (~ 32 píxels). Si només feu servir majúscules, no us heu de preocupar pels ascendents, cosa que augmentarà la mida de la font visible uns quants píxels. Però vaig optar per utilitzar tant majúscules com minúscules. (https://ca.wikipedia.org/wiki/Ascender_%28typography%29)

Un cop importeu un tipus de lletra al generador de tipus de lletra GLCD, podeu exportar-lo en diferents formats.

Vaig intentar exportar-lo directament a capçaleres, cosa que era bona, però no perfecta. L'exportació resultant és una matriu de pantalons curts (16 bits) amb valors de byte-hex per a les columnes de cada caràcter del primer caràcter de 128 ascii. No és exactament el que volia o necessitava …

Per tant, he importat la matriu a un full de càlcul d’oficina oberta. Després he eliminat el "0x" de tres de quatre valors i els he concatenat en un valor de 32 bits de llarg. També he corregit la finalitat incorrecta dels bytes individuals.

La matriu resultant és una matriu N * M de valors de 32 bits. M és el caràcter respectiu i N són les columnes que conformen la visualització d'aquesta lletra. En aquest primer esborrany, tots els caràcters tenen el mateix nombre de columnes, és a dir, totes les lletres són igualment amples, com en la coneguda font Courier. Els personatges petits com "i" o "t" semblen que es perden a l'espai.

Per tant, he afegit un paràmetre nou al principi de cada caràcter per explicar, quantes columnes té aquest caràcter o quina amplada té aquest caràcter. Això estalvia memòria i fa que el text sembli millor.

Pas 4: programari de control BLE

Programari de control BLE
Programari de control BLE

El principi del programari BLE és molt fàcil:

  • Al principi no fa res.
  • Mitjançant BLE podeu configurar diferents animacions o textos que es mostrin.
  • Un cop premeu el botó, es mostraran les columnes individuals de l'animació o del text.
  • Després que es mostri el text, continua esperant un altre cop.

Només cal que importeu el projecte cypress al vostre PSoC-Creator i que el modifiqueu si voleu.

El PSoC-4 no té tanta memòria RAM ni flash per poder contenir imatges RGB completes de les fonts. Per tant, necessitava una manera de generar dinàmicament el contingut LED a partir del text. Això és bastant senzill, fins ara res especial. A partir d’un text amb moltes lletres, l’algorisme pren una lletra i la converteix en una matriu de mapa de bits negre-blanc. A continuació, agafa cada columna d’aquest mapa de bits d’una lletra i, en comptes de blanc, escriu el color RGB actual a la matriu de LED. D'aquesta manera podeu generar textos d'un sol color o mitjançant una funció addicional canviar el color després de cada columna, cada lletra o fins i tot després de cada píxel.

Una "lletra" es pot emmagatzemar en una sola variable de byte, mentre que un mapa de bits en blanc i negre s'ha d'emmagatzemar en algun tipus de matriu.

L’estructura de dades és la següent:

Cadena: newtext = "Hola";

Tipus de lletra: uint32 characters = {FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn, … SecondCharacter_ColumnCount, SecondCharacter_FirstColumn, … … LastCharacter_ColumnCount, … LastCharacter_LastColumn}; Color: uint32 rgbcolor = 0xHHBBGGRR; // Brillantor, blau, verd, vermell cadascun com a valor de 8 bits

Per convertir una cadena de visualització fem el següent:

getCharacter (): H (8 bits)

getColumn (int i): columna (32 bits) (i comença per la primera columna, s'executa fins a l'última). El LED-Strip Array té 64 LEDs amb colors de 32 bits cadascun.

I si es mostra aquesta columna, continuem amb la següent.

És tan fàcil.

Pas 5: primera prova

Primera prova
Primera prova
Primera prova
Primera prova
Primera prova
Primera prova

Ara que el programari s’executa, estem preparats per a les primeres proves.

La manera més senzilla de provar la funció incrustada és amb una aplicació de prova de baix consum Bluetooth. Com les aplicacions nòrdiques o Cypress.

Nòrdic: nRF Connect per a mòbils

Cypress: CySmart

Inicieu el Pov-Stick i observeu com es mostrarà la cadena de demostració. Un cop acabat, és hora d'iniciar l'aplicació. Cerqueu al dispositiu Povstick i feu clic a connecta.

Un cop establerta la connexió, l'aplicació descobreix automàticament tots els serveis i característiques definits.

Cerqueu el primer servei (hauria de començar amb 0000ccce …). Feu-hi clic per obrir-lo i mostrar la primera característica (comença per 0000ccc1). A continuació, premeu el botó d'escriptura (o càrrega) i escriviu un 01 a aquesta característica.

Un cop feu clic a Envia, el POVstick iniciarà l'animació Color-Knight-rider, també coneguda com Larson Scanner, amb canvis de colors.

Enhorabona que heu enviat el vostre primer valor mitjançant BLE.

Pas 6: seleccioneu les animacions

Seleccioneu Animacions
Seleccioneu Animacions
Seleccioneu Animacions
Seleccioneu Animacions
Seleccioneu Animacions
Seleccioneu Animacions
Seleccioneu Animacions
Seleccioneu Animacions

Al programari hem definit un enum "e_Animation" amb els valors següents:

typedef enum {Knightrider = 0, ColorKnightRider, Rainbowswirl, Valueswirl, WS_CandyCane, WS_CandyCane_2, WS_CandyCane_3, WS_Twinkle, WS_Icicle, WS_ColorWheel, RGB_Control, TextAnimation;

Aquests són els valors vàlids per a la característica ccc1. Si voleu veure el CandyCane-Animation, heu d’escriure un 4, 5 o 6 a aquesta característica. Es diferencien pels colors.

Dues animacions especials són RGB_Control i TextAnimation. Si decidiu activar-los, evidentment el pal no mostrarà res al principi. Però us ofereix opcions addicionals per controlar el pal amb la resta de serveis.

Pas 7: control RGB

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

El control RGB es pot provar molt fàcilment amb l'aplicació CySmart perquè he utilitzat el mateix UUID per a aquesta característica que a la demostració de Cypress.

Inicieu l'aplicació CySmart i connecteu-vos al Povstick. Primer heu d’escriure un "0x0A" a la característica ccc1.

0x0A és el valor hexadecimal de 10, que és l'animació de control RGB a l'enum.

A continuació, podeu canviar al tauler de control RGB-LED de l'aplicació CySmart. Potser heu de reiniciar l'aplicació per accedir a aquesta pantalla. A continuació, podeu controlar el color de tots els LED amb aquest diagrama RGB.

Per descomptat, també podeu escriure els valors directament a la característica.

Pas 8: servei d'animació de text i servei d'emmagatzematge persistent

Servei d’animació de text i servei d’emmagatzematge persistent
Servei d’animació de text i servei d’emmagatzematge persistent

Aquests serveis no són tan fàcils de provar.

Tècnicament, també podeu utilitzar l'aplicació nòrdica per a això, però heu de saber quins valors escriviu a quina característica.

Per tant, si voleu provar-los, hauríeu de fer una ullada al projecte PSoC, que característica té quin UUID.

Una característica important és la característica "Velocitat de set". Amb aquesta característica es pot controlar la velocitat de les animacions.

Amb la característica "Set_Animation" del PersistentStorageService podeu controlar els tipus de lletra i els colors de la cadena de text. Els valors vàlids es defineixen a "povanimation.h", dos tipus de lletra "mono" i "serif" i de color únic i de color arc de Sant Martí. Els valors 0 i 1 mostren el text amb un color fix, controlable mitjançant la característica RGB_Control. Els valors 2 i 3 canvien el color de cada columna i donen a la corda un bonic arc de Sant Martí.

El servei "Write_Text_Service" és una mica diferent. Podeu escriure una nova cadena al dispositiu escrivint caràcters individuals a la característica "Set_Character". A cada escriptura, rebreu una notificació de la longitud actual de la cadena.

Per iniciar una cadena nova, escriviu "true" a "Clear_String".

Aquesta no és la millor implementació, però funciona per a qualsevol cadena de fins a 250 caràcters sense canviar la mida de la MTU.

La visualització d’una nova cadena amb arrencada quan es prem el botó del Povstick.

Pas 9: inicieu l'aplicació Android

Aquest és un pas important, però molt més enllà de l’abast d’aquest instructiu. Ho sento per això!

Potser podria penjar la meva aplicació de prova a Play Store, però encara no està acabada ni es pot publicar.

Pas 10: escriviu missatges en imatges

Escriure missatges en imatges
Escriure missatges en imatges
Escriure missatges en imatges
Escriure missatges en imatges
Escriure missatges en imatges
Escriure missatges en imatges

Bé, per això construeixo aquest povstick en primer lloc: escriure missatges en imatges.

Necessiteu un trípode, una càmera amb funció d’exposició llarga i una bona ubicació.

Configureu la càmera i ajusteu el temps d’exposició a 10 segons per fer una primera prova.

Activeu el llançament i comenceu a caminar per la imatge, començant la visualització de text al pal.

Et Voila hi som!

Amb la combinació adequada de brillantor LED, obertura i temps d’exposició, fins i tot és possible fer fotos a la matinada.

Les tres imatges d’aquest pas mostren l’espectre complet de possibilitats.

A la primera, els LED estan sobreexposats i creen una resplendor màgica. Per això, les reflexions sobre el terreny són visibles i el fons és bastant bo.

La segona imatge està exposada als LED, però això deixa el fons completament negre.

I el tercer mostra LEDs poc foscos poc després de la posta de sol. Els LED són tan brillants com a la resta d’imatges, però l’entorn era tan brillant que vaig haver d’utilitzar un diafragma baix i un ISO baix perquè els LED semblessin bastant foscos.

Concurs Make it Glow 2018
Concurs Make it Glow 2018
Concurs Make it Glow 2018
Concurs Make it Glow 2018

Accèssit al concurs Make it Glow 2018

Recomanat: