Kazalo:

Začnite diaprojekcijo počitniških slik s pridihom čarobnosti!: 9 korakov (s slikami)
Začnite diaprojekcijo počitniških slik s pridihom čarobnosti!: 9 korakov (s slikami)

Video: Začnite diaprojekcijo počitniških slik s pridihom čarobnosti!: 9 korakov (s slikami)

Video: Začnite diaprojekcijo počitniških slik s pridihom čarobnosti!: 9 korakov (s slikami)
Video: ПОЛУЧАЙТЕ 1000 долларов США в день одним щелчком кнопки (... 2024, November
Anonim
Uvedite diaprojekcijo počitniških slik s pridihom magije!
Uvedite diaprojekcijo počitniških slik s pridihom magije!
Uvedite diaprojekcijo počitniških slik s pridihom magije!
Uvedite diaprojekcijo počitniških slik s pridihom magije!

Skozi leta sem razvil navado, da med potovanjem vzamem s seboj majhno figurico: pogosto kupim majhno, prazno artojo (kot je na sliki) in jo pobarvam tako, da ustreza zastavi in temi države, v kateri sem obiskujem (v tem primeru Sicilijo).

Zamisel je nato poslikati figurico pred prizori ali znamenitimi spomeniki iz omenjene države: zdi se mi veliko bolj smešno kot slikati samo s samim spomenikom (za to obstaja Google in je veliko cenejši), vendar je vseeno lažje kot imeti biti na vsaki sliki sam (ne oboževalec, če sem iskren)

Ker je vedno zabavno zbrati ljudi, s katerimi ste bili na počitnicah nekaj dni po tem, ko ste si ogledali slike, se mi je zdelo lepo, če bi vsaka figurica nekako samodejno sprožila diaprojekcijo slik s potovanja, za katerega so bile narejene.

Ta navodila bodo pojasnila, kako sem to storil z uporabo NFC, maline pi, nodejs in osmc

1. korak: Pregled rešitve

Pregled rešitve
Pregled rešitve
Pregled rešitve
Pregled rešitve

Ker celotna nastavitev vključuje nekaj stvari, je tukaj splošen pregled tega, kar je vključeno, da boste lažje razumeli vse, kar sledi:

Strojna oprema

- figurica je domača: ker te tečaje pišem sredi tedenskega potovanja v Københavnu/Oslu/Stockholmu/Helsinkih, bom vključil nekaj posnetkov figurice, narejene za to potovanje

- pod vsako figurico je čip NFC: uporabljam okrogle nalepke, ki jih lahko namestim pod vsako figurico, lahko pa uporabite kateri koli drug faktor - samo preverite, ali je čip, ki ga uporabljate, združljiv z vašim bralnikom

- za prikaz slik bom uporabil malinov pi z nameščenim OSMC: to je moj medijski predvajalnik, ki sem ga izbral za TV -oddaje in filme, tako da je že povezan z mojim televizorjem

- da bi malina pi brala oznake NFC, sem dodal bralnik NFC - tistega, ki sem ga uporabil, je Explore -NFC iz NXP, ki je na voljo na številnih spletnih mestih: priklopi se na Pi in deluje kot ščit

Programska oprema

Na Raspberry Pi skript NodeJS čaka, da se prebere oznaka NFC: ko je to storjeno, skript preveri svoj ID glede na seznam vrednosti/parov pri vsaki mapi iz vira slik na OSMC in ustrezen ID NFC, kot ga je konfiguriral uporabnika.

Ko je oznaka prebrana, če je ID na seznamu, skript Node pove OSMC -ju, naj za to mapo zažene diaprojekcijo. Če želite sestaviti/konfigurirati ta seznam, isti skript NodeJS zažene funkcijo skeniranja vsakih 5 minut: skenira vsak imenik v viru "Slike" na OSMC (z uporabo API-ja JSON-RPC, ki ga ponuja Kodi) in ga doda na seznam, ki se nato shrani na disk. Z neposrednim urejanjem te besedilne datoteke lahko uporabnik za vsak album doda ustrezen ID NFC.

2. korak: Ustvarjanje figurice

Ustvarjanje figurice
Ustvarjanje figurice
Ustvarjanje figurice
Ustvarjanje figurice
Ustvarjanje figurice
Ustvarjanje figurice
Ustvarjanje figurice
Ustvarjanje figurice

Za svojo figurico lahko uporabite skoraj vse, kar vam je všeč: rad uporabljam te vinilne umetniške igrače, ker jih je - relativno - enostavno narisati tudi za nekoga, kot sem jaz, ki ne mara risati, in ga je dokaj enostavno nositi. Naročim jih v njihovi prazni različici, naredi sam, v najmanjši velikosti, ki jo dobijo, in jih narišem z oznakami Posca. Tukaj si lahko ogledate tisto, ki sem jo naredil za to potovanje, z zastavami štirih držav, ki smo jih obiskali - bile so mi dovolj podobne, da sem jih združil drug ob drugem. Uporabite lahko več slojev barve, če le pustite, da se vsaka posuši, preden nanesete naslednjo. Ko končam s slikanjem, rad nekaj minut uporabljam toplotno pištolo na barvi, saj sem prebral, da pravzaprav toplota pomaga kompletu barv Posca.

Na zadnji sliki lahko vidite, da ima Sven - vedno jim dam imena - oddih v Oslu po precej dolgem jutru. Nima glave od prvotne igrače, saj mi je to uspelo zmotiti eno minuto pred odhodom: prejšnjo igračo sem moral razstaviti, da sem namesto nje uporabil glavo. Ne morem reči, da se to še nikoli ni zgodilo …

3. korak: Namestite OSMC

Namestite OSMC
Namestite OSMC

Prva stvar, ki sem jo naredil, je bila, da sem namestil OSMC na kartico micro SD za Raspberry Pi: v naši nastavitvi bo služil kot medijski predvajalnik za ogled vaših slik. Ne bom se spuščal v podrobnosti o tem vidiku, saj je precej dobro dokumentiran (na voljo je nekaj navodil, če potrebujete pomoč). Prenesite namestitveni program v računalnik in sledite navodilom. Ko sem končal, sem samo priključil tipkovnico in miško ter priključil HDMI na televizor in sledil čarovniku za nastavitev časovnega pasu itd.

Nazadnje sem med vire dodal imenik, v katerem shranjujem svoje slike: v mojem primeru so shranjene na NAS -u s fiksnim IP -jem v istem omrežju, lahko pa jih shranite tudi na pogon USB ali v domačo mapo, pod pogojem, da je vaš mikro SD dovolj velik.

Ko dodate vir, boste morali vnesti ime zanj: privzeto lahko pustite ali spremenite, vendar ga obvezno zapišite, ker ga bomo potrebovali kasneje. V mojem primeru sem to poimenoval "MyPictures"

Zdaj bi morali videti vsebino imenika, ki ste ga dodali, in pobrskati po svojih slikah: v mojem primeru imam podimenik za vsako potovanje.

Čestitamo, zdaj imate medijski center s svojimi slikami in lahko zaženete diaprojekcijo za določeno mapo (kot bonus ga lahko uporabite tudi za predvajanje videoposnetkov ali glasbe)

4. korak: Konfigurirajte bralnik

Preostanek navodil se bomo povezovali s Pi z ukazno vrstico prek SSH. Če želite to narediti, povežite Pi z omrežjem z ethernetnim kablom in uporabite terminal ali namensko programsko opremo za povezavo s Pi. V operacijskih sistemih Mac OS in Linux je ukaz

ssh [email protected]

Od vas se bo zahtevalo, da vnesete geslo, spet je osmc

Če želite bralnik delovati, morate omogočiti SPI: v večini distribucij, kot je Raspbian, je to mogoče storiti z uporabo raspi-config, orodja za konfiguracijo, ki vam omogoča spreminjanje nekaterih konfiguracijskih vrednosti.

OSMC pa zaradi lastne varnosti pri uporabi ne vključuje raspi-config. Namesto tega zaprite Raspberry, izvlecite kartico micro SD in jo le pritrdite na računalnik: zdaj bi morala biti vidna »zagonska« particija. Tam, v korenu nosilca, boste videli datoteko z imenom "config.txt" - samo odprite jo in na koncu dodajte to vrstico:

"dtparam = spi = on"

Zdaj lahko shranite datoteko, omogočite ponovni zagon in SPI.

Po tem boste morali prenesti priloženo datoteko ZIP in jo razpakirati na malini - priporočam, da ustvarite mapo Projekti in jo tam razpakirate. Če želite to narediti, se lahko povežete z Raspberryjem prek FTP prek SSH (za to uporabljam CyberDuck) ali pa datoteko postavite na pogon USB in uporabite Kodijev upravitelj datotek, da jo kopirate na Raspberry Pi.

Kakorkoli, ko ste datoteko zip kopirali v Pi, se lahko pomaknete do mape, v katero ste jo kopirali, in jo razpakirate, se pomaknete v nastalo mapo in namestite paket:

odpakiraj SW2827.zipcd SW2827sudo dpkg -i libneardal0_0.14.3-1_armhf.deb neard-explorenfc_1.2-1_armhf.deb

Če je vse v redu, bi morali priključiti bralnik, znova zagnati in nato vnesti

explorenfc-basic

Če bralcu približate čip NFC, bi moral zdaj prikazati kup informacij iz čipa (med drugim njegov ID)

5. korak: Namestite vozlišče in ustvarite projekt

Nato bomo na malino namestili NodeJS za pisanje naše aplikacije.

Želimo namestiti nodejs, vendar je različica privzetega skladišča res stara, zato morate pred tem opraviti prvi korak: v vmesnik ukazne vrstice vnesite

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Nato lahko vnesete

sudo apt namestite nodejs

namestiti najnovejšo različico nodejs in npm, ki sta na voljo.

Za nadzor KODI znotraj nodejsa bomo uporabili paket npm, imenovan kodi-ws.

Začnimo z ustvarjanjem novega projekta: samo vnesite ukaz

npm init

Zastavili vam bodo številna vprašanja: za večino jih lahko pustite privzeto, samo izberite ime za svojo aplikacijo in na koncu vnesite svoje ime. Ko vas vprašajo za izhodišče, pustite index.js

Tako boste ustvarili datoteko package.json, ki bo povzela značilnosti vašega paketa, na primer njegove odvisnosti.

Zdaj lahko vnesete

sudo npm namestitev kodi-ws sudo npm namestitev jsonfilesudo npm namestitev cronsudo npm namestitev child_process

Če po tem odprete package.json, boste opazili, da so bili vsi ti paketi dodani odvisnostim.

6. korak: Koda, pojasnjeno

Kodeks, pojasnjen
Kodeks, pojasnjen

Temu koraku je priložena koda za aplikacijo.

Pustil sem kar nekaj beleženja, ki jo je mogoče razkomentirati, da bi razumeli skript, vendar ga skupaj razčlenimo.

Opazili boste, da kljub vsem navedenim funkcijam koda sprva naredi le nekaj stvari:

kodi ('localhost', 9090).then (funkcija (povezava) {

Skript se poskuša povezati z API-jem OSMC JSON-RPC. Ko uspe (in šele nato), nadaljuje s preostalo datoteko.

Če iz nekega razloga tega ne izvajate z vašega Raspberry Pi, spremenite localhost na svoj naslov IP. Prepričajte se tudi, da je v nastavitvah storitev znotraj OSMC (Nastavitve/Storitve) potrditveno polje »Dovoli daljinsko upravljanje iz aplikacij v drugih sistemih« (glej sliko)

Preostala datoteka je večinoma deklaracija funkcij, ki jih bomo uporabili kasneje: dve funkciji, ki se dejansko zaženeta od tu, sta (vrstice 172/173)

scanAndSetCron (); listenForTag ();

V scanAndSetCron:

- zažene se funkcija scanPictures. V njej preverimo, ali je spremenljivka "mypicturedirectory", ki bo držala pot do naših slik, prazna. Če je, prosimo OSMC, da nam posreduje vse vire, ki jih ima za slikovno vsebino (znotraj funkcije getPictureDirectory, vrstica 11):

var piclist = čakajo na povezavo. Files. GetSources ("slike");

OSMC nam v zameno daje matriko: za vsako postavko preverimo, ali ime vira vsebuje "My": v tem primeru ga shranimo kot vir slike (vrstica 16 in naslednje). Tukaj boste želeli spremeniti niz iz "Moje" v tisto, kar ste prej vnesli kot ime za vir slik

if (piclist.sources .label.includes ("My")) {console.log (">>> Najden imenik" + piclist.sources .file); mypicturedirectory = piclist.sources .datoteka; }

Zdaj, ko imamo pot do vira (v bistvu korenska mapa v naših albumih), prosimo OSMC, da jo prebere in doda pot za vsako mapo v matriko, imenovano album_directories (če še ni tam). Ker se bo ta funkcija izvajala vsakih X sekund, pred dodajanjem preverimo, da imenika še ni na seznamu, pri čemer je ID NFC nastavljen na prazen niz - tako bo vsaka nova mapa, ki jo dodate slikam, samodejno dodano - vrstica 46

for (var j = 0; j <directory.length; j ++) {if (direktoriji [j].filetype.includes ("imenik")) {if (searchDirectory (imeniki [j]. datoteka, album_direktoriji)) {konzola. log (imeniki [j].file +"že tam"); } else {console.log (">> Dodajanje direktorija" + imeniki [j]. datoteka); album_directories.push ({imenik: imeniki [j]. datoteka, nfc: ""}); }}}

Na koncu shranimo matriko album_directories v datoteko json na Pi, ki jo poskušamo naložiti vsakič, ko se funkcija izvede: to se zgodi na koncu funkcije scanAndSetCron, kjer uporabljamo paket, podoben cron, da zagotovimo, da se naša funkcija izvaja vsakih 15 sekund.

Datoteko JSON, ki jo ustvarimo, album_directories.json, lahko odprete s katero koli aplikacijo za beležke. Ko to storite, se vam prikaže seznam vaših foto albumov, od katerih ima vsak prazno polje "nfc":

[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": ""}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": "" }, {"imenik": "/home/osmc/Slike/Test/", "nfc": ""}]

V to polje morate zdaj prilepiti ID oznake, ki jo želite povezati s tem albumom. Če želite pridobiti ta ID, se pomaknite do mape SW2827, zaženite explorenfc-basic in skenirajte oznako, ki jo želite uporabiti. V izhodu, ki ga dobite, poiščite vrednost poleg ISO14443A UID. Kopirajte ga v album, ki ga želite konfigurirati. V mojem primeru je npr.

[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": "040A12EAFC3881"}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": " "}, {" imenik ":"/home/osmc/Slike/Test/"," nfc ":" "}]

Shranite datoteko in njena vsebina se bo naložila ob naslednjem zagonu aplikacije.

V funkciji listenForTag naredimo prav to: ker se zdi, da za NodeJS ni namenskega pristanišča bralne knjižnice, se za zagon binarnega bralnika zanašamo na otroške procese:

var spawn = require ('child_process'). spawn, child = spawn ('/usr/bin/explorenfc-basic', );

Za sprejem izhoda iz te izvedbe se zanašamo na poslušalca dogodkov: znotraj povratnega klica za child.stdout.on ('data', function (data), razčlenimo izhod tega ukaza z uporabo funkcije analysisOutput: iščemo vrstico, ki smo jo videli prej, začenši z "ISO14443A UID:", saj je tam shranjen ID oznake, ki smo jo skenirali. Ko to vrstico najdemo, jo obrežemo in ID shranimo v predmet (imenovan ID, kako izvirnik).

Nazadnje poskušamo ta ID uskladiti z ID -ji, ki smo jih vnesli v niz objektov album_directories (naloženih prek datoteke album_directories.json). Če se najde ujemanje, naročimo OSMC, naj za to mapo zažene diaprojekcijo:

var nfcid = analysisOutput (podatki); console.log ("nfcid je" + nfcid.id); var ustreznialbum = searchTag (nfcid.id, imeniki_albumov); if (ustrezen album) {console.log ("Najden album" + JSON.stringify (ustrezen album) + "za to oznako"); var args = [{'pot': ustrezenalbum.directory}]; connection.run ('Player. Open', args); } listenForTag ();

Opazite, kako na koncu funkcije znova zaženemo listenForTag? To je edino rešitev, ki mi je omogočila delovanje aplikacije: explorenfc-basic bo privzeto počakal na oznako, jo prebral in nato zapustil. Aplikacija ima neprekinjen način, ki ga lahko pokličemo z uporabo explorenfc -basic -k, vendar v tem načinu child_process nikoli ne prikaže vsebine oznake, saj se nikoli ne konča (z drugimi besedami, child.stdout.on ('data') se nikoli ne sproži). Ker nisem našel nobenega drugega načina za uporabo tega bralnika, tukaj v bistvu zaženemo explorenfc-basic v načinu enojne oznake, in ko se oznaka prebere, zaženemo listenForTag in zato znova zaženemo explorenfc-basic.

Če bi se moral vrniti (in mislim, da se bom), bi izbral bralnik NFC, ki ponuja več možnosti: na primer, Adafruit (morda ste opazili, da so mi zelo všeč) ima tega bralca https:// www.adafruit.com/product/789, ki je združljiv z libnfc, kar po mojem mnenju pomeni, da bo bralcu veliko jasnejši vmesnik, kot pa klicanje podrejenega procesa iz vozlišča in razčlenjevanje stdout -a!

7. korak: Poskusite

Če želite zagnati aplikacijo, se pomaknite do te mape in vnesite "node index.js" (ali npm start, saj smo ga prej konfigurirali v package.json). V dnevnikih bi morali videti aplikacijo, ki se poveže z OSMC/Kodi in prvič skenira. Po nekaj sekundah bo v albumu projekta ustvarjena datoteka album_directories.json; Nato lahko vnesete ID -je oznak NFC, kot je opisano prej, in jih povežete z albumi, ki jih želite.

8. korak: Zaženi samodejno

Če povzamemo, smo ustvarili aplikacijo Node, ki (1) išče vašo knjižnico slik KODI in poskuša najti mapo, v kateri shranjujete svoje počitniške slike, (2) posluša oznake NCF, pri čemer se opira na explorenfc-basic in nato (3) zažene album, povezan s tem ID -jem NFC.

Da bi celoten proces tekel v ozadju, bomo uporabili PM2, upravitelja procesov za vozlišče.

V ukazni vrstici se pomaknite do mape projektov (kjer se nahaja datoteka index.js) in vnesite naslednje vrstice:

sudo npm install pm2 -gpm2 start index.js

Aplikacijo PM2 zdaj spremlja in se bo samodejno znova zagnala! Če se želite prepričati, da je dejansko zagnan, vnesite pm2 list in to bi morali videti na seznamu. Če si želite ogledati dnevnike, vnesite dnevnike pm2.

Priporočena: