BYGG EN EGEN MOODLIGHT

Datormagazin - - HÅRDVARA | GÖR DET SJÄLV - AV PATRIK HER­MANS­SON

En så kal­lad moodlight är en li­ten lam­pa som kan fås att ly­sa med oli­ka styr­ka och färg ef­ter hu­mör. En så­dan vill vi byg­ga! Som hårdvara an­vänds en No­deMCU och en di­gi­talt styr­bar ljus­käl­la. Grundtanken är att ljus­käl­lan kopp­las till pro­ces­sor­kor­tet, vars kod kan få ljus­käl­lan att ly­sa i oli­ka fär­ger och med oli­ka styr­ka. Kor­tet kopp­lar även upp sig till ett tråd­löst nät­verk, vil­ket öpp­nar för möj­lig­he­ter att sty­ra ljus­käl­lan via and­ra enheter, till ex­em­pel via en mo­bil­te­le­fon och en spe­ci­ell app. Styr­ning­en kan även ske från en webb­si­da, via MQTT el­ler med hjälp av hem­au­to­ma­ti­se­rings­mjuk­va­ran Ho­me As­si­stant.

MÖT MCLIGHTING

Det­ta må lå­ta kom­pli­ce­rat, och är väl det egent­li­gen ock­så un­der ska­let, men vi tar en gen­väg ge­nom att dra nyt­ta av öp­pen käll­kod. Det­ta i form av ett pro­jekt kal­lat McLighting av ut­veck­la­ren To­bi­as Blum.

Ko­den till­hö­ran­de pro­jekt McLighting är pub­li­ce­rad un­der GPL v3 och finns till­gäng­lig på Git­hub. Pro­jek­tet är väl do­ku­men­te­rat och un­der ut­veck­ling, det till­kom­mer nya funk­tio­ner re­gel­bun­det och det går att få hjälp via Is­sue-funk­tio­nen på Git­hub.

För vår del pas­sar McLighting bra, då det lå­ter an­vän­da­ren sty­ra lys­dio­der­na på fle­ra oli­ka sätt. En me­tod är att an­vän­da en webb­si­da som pre­sen­te­ras av pro­ces­sor­kor­tet. På den­na kan öns­kad färg väl­jas med hjälp av en fär­g­cir­kel (whe­el), men det finns fler möj­lig­he­ter. Där finns näm­li­gen även ett an­tal för­de­fi­ni­e­ra­de funk­tio­ner som till ex­em­pel bre­ath (fläm­tan­de), slump­vis färg, stro­bo­skop i oli­ka fär­ger och ”spring­an­de fär­ger” där en färg ”spring­er” ge­nom LED-lis­ten. För­u­tom des­sa al­ter­na­tiv finns yt­ter­li­ga­re ett an­tal förin­ställ­da sce­ner, in­te mind­re än 56 styc­ken. På den­na si­da finns även möj­lig­het att stäl­la in fär­gen ma­nu­ellt med steg­lö­sa reg­lage för rött, grönt re­spek­ti­ve blått. Det går ock­så att stäl­la in has­tig­he­ten på ani­me­ra­de ef­fek­ter och ljus­styr­kan.

Det finns fler sätt att sty­ra lju­set, vil­ka kan ak­ti­ve­ras ef­ter öns­ke­mål. En möj­lig­het är att kopp­la in en fy­sisk tryck­knapp, en an­nan att sty­ra via mjuk­va­ror som Ho­me As­si­stant och Ho­mebridge. Det finns även stöd för styr­ning via ett HTTP-API, MQTT och ett Web­soc­ket-API. Slut­li­gen finns

ock­så en app för Pebb­le samt en app för Android.

HÅRDVARA ATT AN­VÄN­DA

Det pro­ces­sor­kort vi an­vän­der är ett No­deMCU, men det går även att an­vän­da We­mos el­ler lik­nan­de Esp8266-ba­se­ra­de kort. No­deMCU är dock en­kelt att få tag i, bil­ligt och väl fun­ge­ran­de. Där­för blev det­ta vårt val och vi köp­te det för 59 kro­nor hos Lawi­cel.

Som ljus­käl­la an­vänds så kal­la­de ne­o­pix­els. Det­ta är en sorts in­tel­li­gen­ta fler­fär­ga­de lys­dio­der som med enk­la me­del kan fås att ly­sa med oli­ka färg och styr­ka. En av för­de­lar­na är dess­utom att styr­ning­en sker med hjälp av en elektro­nisk buss och ett spe­ci­ellt pro­to­koll. Ge­nom det­ta kan fle­ra lys­dio­der mon­te­ras ”på sam­ma ka­bel”. Det finns till ex­em­pel ljus­lis­ter, ring­ar, ma­tri­ser och lö­sa lys­dio­der att kö­pa. Du väl­jer ef­ter öns­ke­mål, det är ba­ra att stäl­la in i ko­den hur många ljus­käl­lor man har och se­dan an­pas­sa ström­för­sörj­ning­en.

Det går till ex­em­pel att byg­ga vår moodlight med en en­da WS2812B-LED som kos­tar sex kro­nor. Den kom­mer då na­tur­ligt­vis in­te att ge så myc­ket ljus, men det är ju in­te sä­kert att det be­hövs i al­la lä­gen. För dem som öns­kar mer ljus kan fle­ra lys­dio­der se­ri­e­kopp­las, och det går även att kö­pa ring­ar och ma­tri­ser med fler dio­der (som ock­så de kan se­ri­e­kopp­las).

Ge­men­samt för al­la des­sa va­ri­an­ter är att de har fy­ra an­slut­ning­ar. Lys­dio­der­na spän­nings­sätts med plus fem volt på en an­slut­ning och det finns även en jor­dan­slut­ning. Den tred­je an­slut­ning­en är da­ta in, även kal­lad DIN el­ler DI. Det­ta är lo­giskt nog där da­ta om färg och ljus­styr­ka ska skic­kas in från pro­ces­sorn. Det finns vi­da­re en an­slut­ning kal­lad Dout. Den­na an­vänds om fle­ra ne­o­pix­els ska se­ri­e­kopp­las. An­vänds ba­ra en kan den­na läm­nas där­hän.

FRISKT KOPPLAT

Te­o­re­tiskt kan ne­o­pix­els kopp­las di­rekt till pro­ces­sor­kor­tet, men till­ver­ka­ren re­kom­men­de­rar att man an­vän­der två ex­tra kom­po­nen­ter för att skyd­da elekt­ro­ni­ken. Dels re­kom­men­de­ras att en elekt­ro­nik­kon­den­sa­tor på 1 000 mik­ro­fa­rad (µF) an­sluts över plus och minus på di­na ne­o­pix­els. Dels ska en re­sis­tor på 330 el­ler 470 ohm pla­ce­ras i se­rie med da­ta in.

An­vän­der man någ­ra få ne­o­pix­els, till ex­em­pel någ­ra lö­sa lys­dio­der el­ler en mind­re ring, kan ström­för­sörj­ning ske di­rekt från pro­ces­sor­kor­tet som i sin tur ström­sätts via en USB-ka­bel kopp­lad till da­torn. Fal­ler va­let på fler ne­o­pix­els re­kom­men­de­ras istäl­let att des­sa får sin ström från en se­pa­rat ström­för­sörj­ning. Ett ex­em­pel på det­ta kan du se i sche­mat här in­till. Det är vik­tigt att kon­den­sa­torn vänds åt rätt håll. På dess kap­sel finns tyd­li­ga mar­ke­ring­ar i form av mi­nus­tec­ken. Des­sa mås­te kopp­las till Gnd/jord, an­nars kan kon­den­sa­torn ex­plo­de­ra. Kon­den­sa­torns plu­san­slut­ning kopp­las till 3V3 på pro­ces­sor­kor­tet. När en lös ne­o­pix­el ska kopp­las in finns inga mar­ke­ring­ar som på ring­ar­na och lis­ter­na. Be­nen iden­ti­fie­ras istäl­let via den plat­ta si­dan på kap­selns si­da. Hål­ler man den­na åt hö­ger, så är an­slut­ning­ar­na från väns­ter till hö­ger: Da­ta in, +, Gnd och Da­ta out.

PRO­GRAM­ME­RA PRO­CES­SOR­KOR­TET

För att pro­gram­me­ra din No­deMCU kopp­las den till da­torn via en USB-ka­bel. I da­torn in­stal­le­ras se­dan Ar­du­i­no IDE. Den­na mjukvara finns till­gäng­lig för al­la sto­ra ope­ra­tiv­sy­stem och in­stal­la­tions­fi­len lad­das ned från www.ar­du­i­no.cc/en/Main/Soft­wa­re.

”För att pro­gram­me­ra din No­deMCU kopp­las den till da­torn via en USB­ka­bel. I da­torn in­stal­le­ras se­dan Ar­du­i­no IDE.”

När pro­gram­met är in­stal­le­rat öpp­nas inställningarna som åter­finns i Fil-me­nyn. I inställningarna finns en tex­tru­ta med ti­teln ”Ad­di­tio­nal Boards Ma­na­ger Urls”. Där skrivs föl­jan­de adress:

http://ar­du­i­no.esp8266.com/stab­le/ pac­ka­ge_e­sp8266com_in­dex.json

Där­ef­ter stängs inställningarna ge­nom ett klick på OK. Nu är det dags för me­ny­al­ter­na­ti­vet Verk­tyg > Kort > Kort­han­te­ra­re. Skriv ”esp” i sök­fäl­tet och bland sökre­sul­ta­ten klic­kar du på al­ter­na­ti­vet ”esp8266 by ESP8266 Com­mu­ni­ty”. När det­ta görs vi­sas en knapp med ti­teln Installera, klic­ka på den knap­pen och pro­gram­met laddar ned stöd för pro­ces­sor­kort ba­se­ra­de på Esp8266, pre­cis som vårt No­deMCU. När pro­ces­sen är klar stäng­er du kort­han­te­ra­ren. Gå till Verk­tyg och välj ”No­deMCU 1.0” som pro­ces­sor­kort.

Nu be­hö­ver vi även installera ett an­tal bib­li­o­tek för att få stöd för vå­ra lys­dio­der och en del funk­tio­ner i mjuk­va­ran. Det­ta görs enklast ge­nom att gå till me­nyn Skiss > In­klu­de­ra bib­li­o­tek > Han­te­ra bib­li­o­tek. Här söks i tur och ord­ning föl­jan­de bib­li­o­tek upp:

• WiFiMa­na­ger by @tza­pu

• We­bSoc­kets

• Adafruit Ne­o­Pix­el by @adafruit

• Ar­du­i­noJ­son by Be­no­it Blan­chon

• PubSubC­li­ent by Nick O’Le­a­ry

• Ne­oPix­elBus by @Ma­ku­na

Det be­hövs även två bib­li­o­tek som in­te finns till­gäng­li­ga i bib­li­o­teks­han­te­ra­ren. Des­sa lad­das istäl­let ned från Git­hub i zip­for­mat. Där­ef­ter an­vänds me­nyn Skiss > In­klu­de­ra bib­li­o­tek > Lägg till .zip-bib­li­o­tek. Det hand­lar om föl­jan­de två bib­li­o­tek:

• WS2812FX – https://git­hub.com/ki­te­sur­fer1404/WS2812FX

• Ne­oA­ni­ma­tionFX – https://git­hub.com/deb­sa­hu/Ne­oA­ni­ma­tionFX

DAGS FÖR MCLIGHTING

Där­ef­ter lad­das själ­va McLighting ned i zip-for­mat från pro­jek­tets Git­hub-si­da. Pac­ka upp fi­len i Sketch­book-ka­ta­lo­gen och öpp­na den se­dan i ut­veck­lings­mil­jön (Fil > Öpp­na). Här väx­lar vi nu till fli­ken ”de­fi­ni­tions.h” för att gö­ra vissa ju­ste­ring­ar. Först och främst är det an­ta­let in­kopp­la­de lys­dio­der som ska de­fi­nie­ras. Då vi här an­vän­der två lö­sa lys­dio­der ju­ste­rar vi till det­ta på rad sex:

#de­fi­ne NUMLEDS 2

Vi väl­jer även att an­vän­da ”PubSubC­li­ent” istäl­let för Async MQTT. Det­ta ge­nom att kom­men­te­ra bort ”AMQTT” och ta bort kom­men­tars­teck­nen vid ”MQTT”:

//#de­fi­ne ENABLE_AMQTT #de­fi­ne ENABLE_MQTT

Slut­li­gen kan det även be­hö­vas en änd­ring gäl­lan­de typ av lys­diod. De fles­ta lys­dio­der an­vän­der for­ma­tet GRB för att ange fär­gen, men in­te al­la. De vi an­vän­de ha­de istäl­let det al­ter­na­ti­va for­ma­tet RGB. De fun­ge­rar li­ka bra men fär­gen som lys­dio­den ly­ser med kom­mer in­te att bli den tänk­ta. Det­ta går dock att ju­ste­ra i ko­den i fi­len McLighting, runt rad 98–99: //WS2812FX strip = WS2812FX(NUMLEDS, PIN, NEO_GRB + NEO_KHZ800);

WS2812FX strip = WS2812FX(NUMLEDS, PIN, NEO_RGB + NEO_KHZ800);

”Nu be­hö­ver vi även installera ett an­tal bib­li­o­tek för att få stöd för vå­ra lys­dio­der och en del funk­tio­ner i mjuk­va­ran.”

Här kom­men­te­ras en av ra­der­na och den rad som mot­sva­rar vår lys­diod läm­nas okom­men­te­rad. Det kan va­ra svårt att ve­ta vad som är rätt, så låt det­ta va­ra tills du har tes­tat hur he­la kon­struk­tio­nen fun­ge­rar i prak­ti­ken. Gå se­dan till­ba­ka och änd­ra om fär­ger­na in­te blev de för­vän­ta­de. När det­ta är gjort kopp­las vår No­deMCU och dess lys­dio­der in till da­torn. Där­ef­ter väl­jer vi rätt port (Verk­tyg > Port) och laddar upp ko­den (sym­bo­len ”pil hö­ger” el­ler Ctrl-U).

EGET TRÅD­LÖST NÄT­VERK

När upp­ladd­ning­en är klar star­tar pro­ces­sor­kor­tet om och mjuk­va­ran sät­ter upp ett eget tråd­löst nät­verk.

För att an­slu­ta till det­ta an­vänds en mo­bil­te­le­fon, da­torplat­ta el­ler da­tor med stöd för tråd­löst nät­verk. Nät­ver­kets namn är ”McLigh­ting01”. Be­ro­en­de på vil­ket sy­stem du an­vän­der kan du bli om­bedd att logga in på nät­ver­ket. Då öpp­nas webb­lä­sa­ren med den webb­si­da som till­han­da­hålls av pro­ces­sor­kor­tet. I an­nat fall kan det­ta gö­ras ma­nu­ellt, adres­sen till kor­tet är 192.168.244.1.

På webb­si­dan pre­sen­te­ras Wi­fi Ma­na­ger, en funk­tion som gör det möj­ligt att väl­ja vil­ket an­nat be­fint­ligt nät­verk som Wi-Fi-kret­sen i fort­sätt­ning­en ska an­slu­ta till. Klic­ka på ”Con­fi­gu­re Wi­fi” och välj det nät­verk du öns­kar att din moodlight ska var an­slu­ten till fram­ö­ver. Det går även att fyl­la i upp­gif­ter för MQTT om man öns­kar sty­ra lju­set via det­ta pro­to­koll.

När du har spa­rat inställningarna (Sa­ve) star­tar kret­sen om och för­sö­ker an­slu­ta till det val­da nät­ver­ket. Den­na process kan föl­jas i Ar­du­i­no IDE (Se­ri­al Mo­ni­tor). Där vi­sas in­for­ma­tion om vad kret­sen gör och vi kan bland an­nat se föl­jan­de:

Open http://192.168.1.202/ to open McLighting

Nu åter­står egent­li­gen ba­ra en sak, att lad­da upp en fil. Det­ta görs ge­nom att öpp­na kret­sens adress följt av /uplo­ad, till ex­em­pel http://192.168.1.202/uplo­ad. På den si­da som då öpp­nas finns en knapp för att väl­ja en fil från da­torns fil­sy­stem samt en knapp kal­lad Uplo­ad. Fi­len som ska lad­das upp he­ter in­dex.htm och finns i McLighting > cli­ents > web > build.

När fi­len har lad­dats upp går vi till­ba­ka till hu­vudsi­dan (http://192.168.1.202/ ) och tit­tar på re­sul­ta­tet. Där ska nu fin­nas en färg­väl­ja­re, någ­ra knap­par med me­ra. När du klic­kar på en färg i färg­hju­let kom­mer lys­dio­der­na nå­got ögon­blick se­na­re att by­ta till mot­sva­ran­de färg. Rätt kul, onek­li­gen. Det blir gär­na att man pro­var det­ta en stund. När du så har trött­nat på det­ta kan du tes­ta län­ken Mo­des. Den ger till­gång till al­la de 56 för­kon­fi­gu­re­ra­de lä­ge­na som be­skrevs i in­led­ning­en, så ock­så möj­lig­he­ten att själv ju­ste­ra färg och ljus­styr­ka. Där­ef­ter kan det va­ra spän­nan­de att gå vi­da­re med de and­ra möj­lig­he­ter­na att sty­ra kon­struk­tio­nen, till ex­em­pel via Ho­me As­si­stant el­ler MQTT.

Vi har här byggt en moodlight på ett pro­to­typ­kort med två lö­sa ne­o­pix­els. Det går som all­tid att byg­ga på fle­ra oli­ka sätt, för en mer per­ma­nent lös­ning re­kom­men­de­ras att kom­po­nen­ter­na löds ihop med löd­kolv och löd­tenn.

Stöd för Esp8266ba­se­ra­de kort in­stal­le­ras i Ar­du­i­no IDE.

På si­dan Mo­des går det att stäl­la in färg, styr­ka och has­tig­het på ani­ma­tio­ner­na. Det går dess­utom att väl­ja ett av 56 för­kon­fi­gu­re­ra­de färg­möns­ter, det går till ex­em­pel att få lys­dio­der­na att ef­ter­lik­na ett stro­bo­skop el­ler att väx­la mel­lan oli­ka fär­ger på oli­ka sätt. Färg­hju­let som pre­sen­te­ras av webb­si­dan an­vänds för att by­ta färg på lys­dio­der­na.

Fler lys­dio­der och du be­hö­ver mer ström. Det är in­te sä­kert att den som kan läm­nas av USB­por­ten/pro­ces­sor­kor­tet räc­ker till. Du kan då an­vän­da en ex­tern ström­käl­la i form av en USB-lad­da­re el­ler lik­nan­de.

An­vänds ett få­tal lys­dio­der be­hövs ing­en ex­tern ström­för­sörj­ning.

Newspapers in Swedish

Newspapers from Sweden

© PressReader. All rights reserved.