Sadržaj:

LED POVstick sa Bluetooth -om sa niskom potrošnjom energije: 10 koraka (sa slikama)
LED POVstick sa Bluetooth -om sa niskom potrošnjom energije: 10 koraka (sa slikama)

Video: LED POVstick sa Bluetooth -om sa niskom potrošnjom energije: 10 koraka (sa slikama)

Video: LED POVstick sa Bluetooth -om sa niskom potrošnjom energije: 10 koraka (sa slikama)
Video: Опыты с айкос. 2024, Novembar
Anonim
LED POVstick sa Bluetooth -om niske energije
LED POVstick sa Bluetooth -om niske energije

Ova instrukcija vam pokazuje kako izgraditi svjetlosni štapić sa RGB LED diodama koji se može kontrolirati putem BLE -a sa vašeg telefona!

Sada kada počinje mračna sezona i morate snimiti fotografije s dugom ekspozicijom: Ovim štapićem možete zapisati svoj potpis na sliku, ili motivacijski citat, ili izjavu ljubavi, QR kod, web adresu ili mnoge druge stvari druge…

Pokriva nekoliko razvojnih tema:

  • izgradnja hardvera
  • programiranje Cypress BLE čipseta sa C
  • napravite vlastitu aplikaciju za kontrolu.

Korak 1: Hardver za BLE-LED-Stick

Hardver za BLE-LED-Stick
Hardver za BLE-LED-Stick
Hardver za BLE-LED-Stick
Hardver za BLE-LED-Stick
Hardver za BLE-LED-Stick
Hardver za BLE-LED-Stick
Hardver za BLE-LED-Stick
Hardver za BLE-LED-Stick

Za štap vam je potrebno sljedeće:

  • BLE modul čempresa (CY8C4247LQI-BL583)
  • WS2812b RGB-LED traka (64LED sa 144Led trake po metru)
  • Li-Ion baterija sa odgovarajućim držačem (18650)
  • dugme
  • komad matične ploče

Hardver samog štapa prilično je jednostavan.

Cypress BLE modul montiran je na komad ploče, a LED diode, gumb i napajanje su samo spojeni na ovu ploču.

Sve je montirano, zalijepljeno ili privijeno na mali komad drvene trake, koja je sama djelomično umetnuta u prozirnu poliakrilnu cijev. Ali to nije potrebno. Htio sam sve montirati u cijev, ali nisam našao odgovarajući za BLE-modul i bateriju koji su prilično veliki, u odnosu na LED diode. Za prvi snimak ne trebate akrilnu cijev.

Korak 2: Montaža elektronike

Sklop elektronike
Sklop elektronike
Sklop elektronike
Sklop elektronike

Ovaj korak prikazuje kako se BLE-modul montira i koji se pinovi koriste u koje svrhe.

Kao i u nekoliko mojih instrukcija, koristio sam Cypress BLE Development Kit. CY8CKIT-042-BLE Vodič za brzi početak

Ako želite samostalno upravljati modulom, sve što vam je potrebno za povezivanje su izvori napajanja i korišteni pinovi.

Za naš projekt koristimo samo pin 3.5 za pogon LED trake. Naravno, to možete promijeniti sa PSoC Creator.

Kao što možete vidjeti na slici PCB -a, dodao sam pinheads u sve uglove čipa, ali sam preskočio VREF pin.

Na ovaj način modul je pravilno montiran i nemoguće je pogrešno spojiti modul.

Korak 3: Kako generirati fontove?

Kako generirati fontove?
Kako generirati fontove?

Pa, mislim da je ovo bio jedan od najzanimljivijih problema koje sam riješio tokom ovog projekta.

Naravno da se može jednostavno dizajnirati novi font i zapisati u niz, ali to je zaista mnogo posla!

Pa šta sam uradio?

Znao sam da mi je potrebna neka vrsta ASCII konverzije u hex-bitmap. I imao sam sreću, jer nisam bio prvi sa ovim problemom!:-)

Softver "GLCD Font Generator" učinio je pravu stvar:

Budući da sam želio izvući maksimum iz LED štapa, uvezao sam font u prilično velikoj veličini (~ 32 piksela). Ako koristite samo velika slova, ne morate brinuti o uzlaznim linijama, što će povećati vašu vidljivu veličinu fonta za još nekoliko piksela. No, odlučio sam koristiti velika i mala slova. (https://en.wikipedia.org/wiki/Ascender_%28typography%29)

Nakon što uvezete font u GLCD Font generator, možete izabrati da ga izvezete u različitim formatima.

Pokušao sam ga izvesti izravno u zaglavlja što je bilo dobro, ali nije savršeno. Rezultirajući izvoz je niz kratkih prikaza (16 bita) sa hete-hete-vrijednostima za stupce za svaki znak prvog 128-ascii znaka. Nije baš ono što sam želio ili trebao …

Tako sam uvezao niz u otvoreni uredski radni list calc. Zatim sam uklonio "0x" na tri od četiri vrijednosti i spojio ih u jednu vrijednost od 32 bita. Takođe sam ispravio pogrešnu krajnost pojedinačnih bajtova.

Rezultirajući niz je N*M niz od 32 -bitnih vrijednosti. M je odgovarajući znak, a N su stupci koji čine prikaz ovog slova. U ovom prvom nacrtu svi znakovi imaju isti broj stupaca, što znači da su sva slova jednako široka, kao u poznatom Courier fontu. Mali likovi poput "i" ili "t" izgledaju kao da su izgubljeni u prostoru.

Stoga sam dodao novi parametar na početak svakog znaka kako bih rekao koliko kolona ima ovaj znak ili koliko je širok. Ovo štedi memoriju i čini da tekst izgleda bolje!

Korak 4: Softver za kontrolu BLE

BLE softver za kontrolu
BLE softver za kontrolu

Princip BLE softvera je vrlo jednostavan:

  • Na početku jednostavno ne radi ništa.
  • Putem BLE -a možete postaviti različite animacije ili tekstove za prikaz.
  • Kada pritisnete dugme, prikazuju se pojedinačne kolone animacije ili teksta.
  • Nakon što se tekst prikaže, nastavlja čekati ponovo.

Samo uvezite projekat čempresa u svoj PSoC-Creator i izmijenite ga ako želite.

PSoC-4 nema toliko RAM-a i flash memorije da može držati potpune RGB slike fontova. Stoga mi je trebao način za dinamičko generiranje LED sadržaja iz teksta. To je prilično jednostavno, do sada ništa posebno. Od teksta s mnogo slova, algoritam uzima jedno slovo i pretvara ga u crno-bijeli niz bitmapa. Zatim uzima svaku kolonu ove bitmape od jednog slova i umjesto bijele, upisuje trenutnu RGB boju u LED niz. Na ovaj način možete generirati jednobojne tekstove ili dodatnom funkcijom promijeniti boju iza svake kolone, svakog slova ili čak iza svakog piksela.

"Slovo" se može pohraniti u jednu bajt-varijablu, dok crno-bijelu bitmapu treba pohraniti u neku vrstu niza.

Struktura podataka je sljedeća:

String: newtext = "Zdravo";

Font: uint32 znakova = {FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn,… SecondCharacter_ColumnCount, SecondCharacter_FirstColumn,…… LastCharacter_ColumnCount, … LastCharacter_LastColum}; Boja: uint32 rgbcolor = 0xHHBBGGRR; // Svjetlina, plava, zelena, crvena svaka kao 8 -bitna vrijednost

Za pretvaranje niza za prikaz radimo sljedeće:

getCharacter (): H (8 bit)

getColumn (int i): kolona (32bit) (i počinje sa prvom kolonom, radi do poslednje.) if (bit u koloni je 1) LED u traci je podešen na boju. Niz LED traka sastoji se od 64 LED diode sa po 32 bitne boje!

A ako se ova kolona prikaže, nastavljamo sa sljedećom.

To je tako lako.

Korak 5: Prvi test

Prvi test
Prvi test
Prvi test
Prvi test
Prvi test
Prvi test

Sada kada softver radi, spremni smo za prve testove.

Najjednostavniji način testiranja ugrađene funkcije je pomoću Bluetooth aplikacije za testiranje niske potrošnje energije. Kao Nordic ili Cypress Apps.

Nordijski: nRF Connect for Mobile

Čempres: CySmart

Pokrenite Pov-Stick i promatrajte kako će se demonstrirati niz. Kada ovo završi, vrijeme je za pokretanje aplikacije. Pretražite Povstick uređaj i kliknite na poveži.

Nakon što se veza uspostavi, aplikacija automatski otkriva sve definirane usluge i karakteristike.

Potražite prvu uslugu (trebala bi početi s 0000ccce …). Kliknite na nju da biste je otvorili i prikazali prvu karakteristiku (počinje s 0000ccc1). Zatim pritisnite dugme za pisanje (ili učitavanje) i napišite 01 ovoj karakteristici.

Nakon što pritisnete send, POVstick će pokrenuti animaciju Color-Knight-jahača zvanu Larson Scanner s promjenom boja.

Čestitamo, poslali ste svoju prvu vrijednost putem BLE -a!

Korak 6: Odaberite animacije

Odaberite Animacije
Odaberite Animacije
Odaberite Animacije
Odaberite Animacije
Odaberite Animacije
Odaberite Animacije
Odaberite Animacije
Odaberite Animacije

U softveru smo definirali popis "e_Animation" sa sljedećim vrijednostima:

typedef enum {Knightrider = 0, ColorKnightRider, Rainbowswirl, Valueswirl, WS_CandyCane, WS_CandyCane_2, WS_CandyCane_3, WS_Twinkle, WS_Icicle, WS_ColorWheel, RGB_xControl,, Ovo su vrijednosti koje vrijede za karakteristiku ccc1. Ako želite vidjeti animaciju CandyCane, morate ovoj značajki napisati 4, 5 ili 6. Razlikuju se po bojama.

Dvije posebne animacije su RGB_Control i TextAnimation. Ako ste odabrali da ih aktivirate, štap u početku očito neće ništa pokazati. Ali nudi vam dodatne mogućnosti za kontrolu štapa s drugim uslugama.

Korak 7: RGB kontrola

RGB kontrola
RGB kontrola
RGB kontrola
RGB kontrola
RGB kontrola
RGB kontrola
RGB kontrola
RGB kontrola

RGB-kontrola može se vrlo lako testirati pomoću CySmart aplikacije jer sam za ovu karakteristiku koristio isti UUID kao u Cypress Demo-u.

Pokrenite aplikaciju CySmart i spojite se na Povstick. Prvo morate upisati "0x0A" u karakteristiku ccc1.

0x0A je heksadecimalna vrijednost za 10, što je animacija RGB kontrole u enumu.

Zatim se možete prebaciti na RGB-LED kontrolnu ploču u aplikaciji CySmart. Možda ćete morati ponovo pokrenuti aplikaciju da biste došli do ovog ekrana. Tada možete kontrolirati boju svih LED dioda pomoću ovog RGB-dijagrama.

Naravno, vrijednosti možete upisati i direktno u karakteristiku.

Korak 8: Usluga Text_Animation i usluga trajnog skladištenja

Usluga Text_Animation i usluga trajnog skladištenja
Usluga Text_Animation i usluga trajnog skladištenja

Ove usluge nije tako lako testirati.

Tehnički za to možete koristiti i nordijsku aplikaciju, ali morate znati koje vrijednosti napisati na koju karakteristiku.

Dakle, ako ih želite testirati, trebali biste pogledati PSoC projekt, čija karakteristika ima koji UUID.

Važna karakteristika je "Set-Speed" karakteristika. Pomoću ove karakteristike možete kontrolirati koliko su brze animacije.

Sa "Set_Animation" karakteristikom PersistentStorageService možete kontrolirati fontove i boje tekstualnog niza. Važeće vrijednosti su definirane u "povanimation.h", dva fonta "mono" i "serif" i jednobojni i dugini. Vrijednosti 0 i 1 prikazuju tekst fiksne boje, kojim se može upravljati pomoću karakteristike RGB_Control. Vrijednosti 2 i 3 mijenjaju boju za svaku kolonu i daju nizu lijepu dugu.

"Write_Text_Service" je nešto drugačije. Možete upisati novi niz na uređaj upisivanjem pojedinačnih znakova u karakteristiku "Set_Character". Prilikom svakog pisanja dobit ćete obavijest o trenutnoj dužini niza.

Da biste započeli novi niz, napišite "true" u "Clear_String".

Ovo nije najbolja implementacija, ali radi za bilo koji niz do 250 znakova bez promjene veličine MTU -a.

Prikaz novog niza sa početkom kada se pritisne dugme na Povstick -u.

Korak 9: Pokrenite Android aplikaciju

Ovo je važan korak, ali daleko izvan okvira ovog uputstva. Žao mi je zbog toga!

Možda bih mogao otpremiti svoju testnu aplikaciju u trgovinu za igru, ali još nije dovršena niti se može objaviti.

Korak 10: Napišite poruke u slikama

Pišite poruke u slikama
Pišite poruke u slikama
Pišite poruke u slikama
Pišite poruke u slikama
Pišite poruke u slikama
Pišite poruke u slikama

Pa, ovo je razlog zašto ja uopće stvaram ovaj povstick: Za pisanje poruka u slikama.

Potreban vam je stativ, kamera s funkcijom duge ekspozicije i dobra lokacija.

Postavite kameru i podesite vrijeme ekspozicije na 10s za prvi test.

Pokrenite otpuštanje i počnite hodati kroz sliku, pokrećući prikaz teksta na štapiću.

Evo Voile, tu smo!

Uz odgovarajuću kombinaciju LED svjetline, otvora blende i vremena ekspozicije moguće je čak i slikati u zoru.

Tri slike u ovom koraku prikazuju potpuni spektar mogućnosti.

U prvom, LED diode su preeksponirane i stvaraju čarobni sjaj. Ali zato su refleksije na tlu vidljive i pozadina je prilično dobra.

Druga slika je izložena LED diodama, ali pozadina ostaje potpuno crna.

I treći prikazuje prilično prigušene LED diode ubrzo nakon zalaska sunca. LED diode su svijetle kao i na drugim slikama, ali okruženje je bilo toliko svijetlo da sam morao koristiti nisku otvor blende i nizak ISO tako da LED diode izgledaju prilično tamno.

Napravi takmičenje Glow 2018
Napravi takmičenje Glow 2018
Napravi takmičenje Glow 2018
Napravi takmičenje Glow 2018

Druga nagrada na takmičenju Make it Glow 2018

Preporučuje se: