Sadržaj:
- Korak 1: Pregled rješenja
- Korak 2: Izrada figurice
- Korak 3: Instalirajte OSMC
- Korak 4: Konfigurirajte čitač
- Korak 5: Instalirajte čvor i izradite projekt
- Korak 6: Objašnjenje koda
- Korak 7: Isprobajte
- Korak 8: Automatski pokrenite
Video: Pokrenite prezentaciju svojih slika s odmora s dodirom magije!: 9 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
S godinama sam stekao naviku da sa sobom nosim malu figuricu na putovanju: često kupujem malu, praznu artoju (poput one sa slike) i slikam je tako da odgovara zastavi i temi zemlje u kojoj sam m posjećujem (u ovom slučaju Siciliju).
Ideja je zatim snimiti figuricu ispred prizora ili poznatih spomenika iz spomenute zemlje: Smatram da je mnogo smiješnije nego slikati samo spomenik (postoji Google za to i mnogo je jeftiniji), ali ipak lakše nego imati da i ja budem na svakoj slici (ne obožavatelj, da budem iskren)
Kako je uvijek zabavno okupiti ljude s kojima ste otišli na praznike nekoliko dana nakon što ste se vratili pogledati slike, pomislio sam da bi bilo lijepo da svaka figurica može nekako automatski pokrenuti dijaprojekciju slika s putovanja za koje su napravljene.
Ova instrukcija će objasniti kako sam to učinio, koristeći NFC, maline pi, nodejs i osmc
Korak 1: Pregled rješenja
Budući da cjelokupno postavljanje uključuje nekoliko stvari, evo općeg pregleda onoga što je uključeno kako biste lakše razumjeli sve što slijedi:
Hardver
- figurica je domaća: budući da ove upute pišem upravo usred jednotjednog putovanja u Kopenhagen/Oslo/Stockholm/Helsinki, uvrstit ću nekoliko snimaka figurice napravljene za ovo putovanje
- ispod svake figurice nalazi se NFC čip: koristim okrugle naljepnice koje mogu staviti ispod svake figurice, ali možete koristiti bilo koji drugi faktor oblika - samo provjerite je li čip koji koristite kompatibilan s vašim čitačem
- za prikaz slika upotrijebit ću maline pi sa instaliranim OSMC -om: to je moj medijski player po izboru za TV emisije i filmove pa je već povezan s mojim televizorom
- kako bi malina pi mogla čitati NFC oznake, dodao sam NFC čitač - ja sam koristio Explore -NFC iz NXP -a, dostupan na mnogim web stranicama: priključuje se na Pi i djeluje kao štit
Softver
Na Raspberry Pi -u, NodeJS skripta čeka da se pročita NFC oznaka: nakon što to učini, skripta provjerava svoj ID u odnosu na popis vrijednosti/parova sa svakom mapom iz izvora slika na OSMC -u i odgovarajući NFC ID kako je konfigurirao korisnik.
Kad se oznaka pročita, ako je ID na popisu, skripta Node govori OSMC -u da pokrene slideshow za ovu određenu mapu. Kako bi izgradila/konfigurirala taj popis, ista skripta NodeJS pokreće funkciju skeniranja svakih 5 minuta: skenira svaki direktorij unutar izvora "Slike" na OSMC-u (koristeći JSON-RPC API koji Kodi nudi) i dodaje ga na popis koji se zatim sprema na disk. Izravnim uređivanjem ove tekstualne datoteke korisnik tada može dodati odgovarajući NFC ID za svaki album.
Korak 2: Izrada figurice
Za svoju figuricu možete upotrijebiti gotovo sve što vam se sviđa: obožavam koristiti te umjetničke igračke od vinila jer se - relativno - lako crtaju čak i za nekoga poput mene koji ne voli crtati i prilično ih je lako nositi. Naručujem ih u njihovoj praznoj, DIY verziji, u najmanjoj veličini u kojoj dolaze, i crtam na njima pomoću markera Posca. Ovdje možete vidjeti onu koju sam napravio za ovo putovanje sa zastavama četiri zemlje koje smo posjetili - bile su dovoljno slične da ih spojim jednu do druge. Možete upotrijebiti nekoliko slojeva boje sve dok stvarno pustite da se svaki osuši prije nego što naslikate sljedeći. Nakon što završim sa slikanjem, volim koristiti toplinski pištolj na boji nekoliko minuta, jer sam pročitao da zapravo toplina pomaže u postavljanju boje Posca.
Na posljednjoj slici možete vidjeti Svena - uvijek im dajem imena - kako ima pauzu u Oslu nakon prilično dugog jutra. On nema glavu od originalne igračke, budući da sam to uspio zabrljati jednu minutu prije odlaska: morao sam demontirati prethodnu igračku kako bih umjesto nje koristio njenu glavu. Ne mogu reći da se to nikada prije nije dogodilo …
Korak 3: Instalirajte OSMC
Prvo što sam učinio bilo je instaliranje OSMC -a na mikro SD karticu za Raspberry Pi: u našim postavkama poslužit će kao medijski player za gledanje vaših slika. Neću ulaziti u detalje o ovom aspektu jer je prilično dobro dokumentiran (postoji nekoliko instrukcija na raspolaganju ako vam je potrebna pomoć). Samo preuzmite instalacijski program na računalo i slijedite upute. Kad sam završio, samo sam priključio tipkovnicu i miš, priključio HDMI na televizor i slijedio čarobnjaka za postavljanje kako bih postavio vremensku zonu itd.
Na kraju, izvorima sam dodao direktorij u koji spremam svoje slike: u mom slučaju one su pohranjene na NAS -u s fiksnim IP -om na istoj mreži, ali ih možete pohraniti i na USB pogon ili u samu matičnu mapu, pod uvjetom da je vaš mikro SD dovoljno velik.
Prilikom dodavanja izvora od vas će se tražiti da unesete naziv za njega: možete ostaviti zadanu vrijednost ili je promijeniti, ali je obavezno zapišite jer će nam kasnije trebati. U mom slučaju nazvao sam to "Moje slike"
Sada biste trebali vidjeti sadržaj imenika koji ste dodali i pregledati svoje slike: u mom slučaju imam poddirektorij za svako putovanje.
Čestitamo, sada imate medijski centar sa svojim slikama i možete pokrenuti dijaprojekciju za određenu mapu (kao bonus, možete ga koristiti i za reprodukciju vaših videozapisa ili glazbe)
Korak 4: Konfigurirajte čitač
Za ostatak instrukcija povezivat ćemo se s Pi -om pomoću naredbenog retka preko SSH -a. Da biste to učinili, samo povežite Pi na svoju mrežu pomoću Ethernet kabela i upotrijebite terminal ili namjenski softver za spajanje na Pi. Na Mac OS -u i Linuxu naredba je
Od vas će se tražiti da unesete lozinku, ponovno je osmc
Da bi čitač mogao funkcionirati, mora biti omogućen SPI: u većini distribucija, poput Raspbiana, to se može učiniti pomoću raspi-config, alata za konfiguraciju koji vam omogućuje promjenu nekih konfiguracijskih vrijednosti.
OSMC, međutim, ne uključuje raspi-config, radi vlastite sigurnosti pri korištenju. Umjesto toga, isključite Raspberry, izbacite mikro SD karticu i samo je montirajte na računalo: particija "boot" sada bi trebala biti vidljiva. Tamo, u korijenu volumena, vidjet ćete datoteku pod nazivom "config.txt" - samo je otvorite i dodajte ovaj redak na kraju:
"dtparam = spi = on"
Sada možete spremiti datoteku, ponovno pokretanje i SPI bi trebali biti omogućeni.
Nakon toga ćete morati preuzeti priloženu ZIP datoteku i raspakirati je na malini - preporučujem da stvorite mapu Projects i tamo je raspakirate. Da biste to učinili, možete se povezati s Raspberry -jem pomoću FTP -a preko SSH -a (za to koristim CyberDuck) ili staviti datoteku na USB pogon i upotrijebiti Kodijev upravitelj datoteka za kopiranje na Raspberry Pi.
U svakom slučaju, nakon što ste kopirali zip datoteku u Pi, tada se možete pomaknuti do mape u koju ste je kopirali i raspakirati, premjestiti se u rezultirajuću mapu i instalirati paket:
raspakiraj SW2827.zipcd SW2827sudo dpkg -i libneardal0_0.14.3-1_armhf.deb neard-explorenfc_1.2-1_armhf.deb
Ako je sve u redu, trebali biste moći priključiti čitač, ponovno ga pokrenuti i zatim unijeti
explorenfc-basic
Ako čitatelju približite NFC čip, on bi sada trebao prikazati hrpu podataka iz čipa (između ostalog, njegov ID)
Korak 5: Instalirajte čvor i izradite projekt
Zatim ćemo instalirati NodeJS na malinu za pisanje naše aplikacije.
Želimo instalirati nodejs, ali verzija zadanog spremišta je zaista stara, pa prije toga morate proći prvi korak: u sučelje naredbenog retka upišite
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Zatim možete upisati
sudo apt install nodejs
za instaliranje najnovije dostupne verzije nodejsa i npm -a.
Kako bismo kontrolirali KODI iz nodejsa, koristit ćemo npm paket koji se zove kodi-ws.
Počnimo s stvaranjem novog projekta: samo upišite naredbu
npm init
Bit će vam postavljeno nekoliko pitanja: za većinu njih možete ostaviti zadanu vrijednost, samo odaberite naziv svoje aplikacije i na kraju unesite svoje ime. Na upit za početnu točku samo ostavite index.js
Ovo će stvoriti datoteku package.json koja će sažeti karakteristike vašeg paketa, kao što su njegove ovisnosti.
Sada možete ući
sudo npm install kodi-ws sudo npm install jsonfilesudo npm install cronsudo npm install child_process
Ako nakon toga otvorite package.json, primijetit ćete da su svi ti paketi dodani ovisnostima.
Korak 6: Objašnjenje koda
Ovom koraku prilaže se kôd aplikacije.
Ostavio sam priličnu količinu bilježenja koja se može komentirati kako bi se razumio scenarij, ali ćemo je zajedno razbiti.
Primijetit ćete da, unatoč svim deklariranim funkcijama, kôd u početku čini samo nekoliko stvari:
kodi ('localhost', 9090).then (funkcija (veza) {
Skripta se pokušava povezati s OSMC JSON-RPC API. Nakon što uspije (i tek tada), nastavlja se s ostatkom datoteke.
Ako iz nekog razloga ovo ne pokrećete sa svog Raspberry Pi, promijenite localhost na svoju IP adresu. Također provjerite je li u postavkama usluge unutar OSMC -a (Postavke/Usluge) potvrdan okvir "Dopusti daljinsko upravljanje iz aplikacija na drugim sustavima" (vidi sliku)
Ostatak datoteke uglavnom su deklaracije funkcija koje ćemo kasnije koristiti: dvije funkcije koje se zapravo pokreću odavde su (retci 172/173)
scanAndSetCron (); listenForTag ();
U scanAndSetCron:
- pokrenuta je funkcija scanPictures. Unutar njega provjeravamo je li varijabla "mypicturedirectory", koja će držati put do naših slika, prazna. Ako jest, tražimo od OSMC -a da nam da sve izvore koje ima za sadržaj slike (unutar funkcije getPictureDirectory, redak 11):
var piclist = await connection. Files. GetSources ("slike");
OSMC nam zauzvrat daje niz: za svaku stavku provjeravamo uključuje li naziv izvora "Moje": ako je to slučaj, spremamo ga kao izvor slike (redak 16 i sljedeće). Ovdje ćete htjeti promijeniti niz iz "Moje" u ono što ste prethodno unijeli kao naziv izvora slika
if (piclist.sources .label.includes ("My")) {console.log (">>> Pronađen direktorij" + piclist.sources .file); mypicturedirectory = piclist.sources .datoteka; }
Sada kada imamo put do izvora (u biti korijenske mape do naših albuma), tražimo od OSMC -a da ga skenira i doda put za svaku mapu u niz koji se zove album_directories (ako već ne postoji). Budući da će se ova funkcija pokretati svakih X sekundi, provjeravamo da direktorij već nije na popisu prije dodavanja, s NFC ID -om postavljenim na prazan niz - na taj će način svaka nova mapa koju dodate svojim slikama biti automatski dodan - redak 46
for (var j = 0; j <directory.length; j ++) {if (direktoriji [j].filetype.includes ("direktorij")) {if (searchDirectory (direktoriji [j].datoteka, album_direktoriji)) {konzola. log (direktoriji [j].datoteka +"već postoje"); } else {console.log (">> Dodavanje direktorija" + direktoriji [j].datoteka); album_directories.push ({direktorij: direktoriji [j].datoteka, nfc: ""}); }}}
Na kraju spremamo niz album_directories u json datoteku na Pi, koju pokušavamo učitati svaki put kad se funkcija izvrši: to se događa na kraju funkcije scanAndSetCron gdje koristimo paket sličan cron-u kako bismo osigurali da naša funkcija radi svakih 15 sekundi.
JSON datoteku koju generiramo, album_directories.json, možemo otvoriti pomoću bilo koje bilježnice. Nakon što to učinite, bit će vam prikazan popis vaših foto albuma, svaki s praznim poljem "nfc":
[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": ""}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": "" }, {"directory": "/home/osmc/Pictures/Test/", "nfc": ""}]
U ovo polje sada morate zalijepiti ID oznake koju želite povezati s ovim albumom. Da biste dobili ovaj ID, samo idite do mape SW2827, pokrenite explorenfc-basic i skenirajte oznaku koju želite koristiti. U ispisu koji dobijete samo potražite vrijednost pored ISO14443A UID. Kopirajte ga u album koji želite konfigurirati. U mom slučaju, na primjer,
[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": "040A12EAFC3881"}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": " "}, {" directory ":"/home/osmc/Pictures/Test/"," nfc ":" "}]
Spremite datoteku i njezin će se sadržaj učitati prilikom sljedećeg pokretanja aplikacije.
U funkciji listenForTag radimo upravo to: budući da izgleda da nema namjenskog porta čitateljske biblioteke za NodeJS, oslanjamo se na dječje procese za pokretanje binarnog programa za čitatelja:
var spawn = require ('child_process'). spawn, child = spawn ('/usr/bin/explorenfc-basic', );
Oslanjamo se na eventlistener za primanje rezultata iz ove izvedbe: unutar povratnog poziva za child.stdout.on ('data', function (data), raščlanjujemo izlaz ove naredbe pomoću funkcije analysisOutput: tražimo redak koji smo vidjeli ranije, počevši s "ISO14443A UID:", budući da je tu pohranjen ID oznake koju smo skenirali. Kad pronađemo tu liniju, skratimo je i spremamo ID u objekt (naziva se ID, kako izvornik).
Na kraju, pokušavamo uskladiti ovaj ID s ID -ovima koje smo unijeli u niz objekata album_directories (učitano putem datoteke album_directories.json). Ako se pronađe podudaranje, upućujemo OSMC da pokrene dijaprojekciju za tu određenu mapu:
var nfcid = analysisOutput (podaci); console.log ("nfcid je" + nfcid.id); var odgovarajućialbum = searchTag (nfcid.id, direktoriji_ albuma); if (odgovarajući album) {console.log ("Pronađen album" + JSON.stringify (odgovarajući album) + "za ovu oznaku"); var args = [{'put': odgovarajućialbum.direktorij}]; connection.run ('Player. Open', args); } listenForTag ();
Primijetili ste kako na kraju funkcije ponovno pokrećemo ListenForTag? To je jedino zaobilazno rješenje za koje sam naveo da aplikacija radi: explorenfc-basic će prema zadanim postavkama čekati oznaku, pročitati je, a zatim izaći. Aplikacija ima kontinuirani način rada koji možemo nazvati pomoću explorenfc -basic -k, ali u ovom načinu rada child_process nikada ne emitira sadržaj oznake jer nikad ne završava (drugim riječima child.stdout.on ('data') se nikad ne pokreće). Kako nisam pronašao drugi način korištenja ovog čitača, ovdje radimo u osnovi pokretanje explorenfc-basic u načinu rada s jednom oznakom, a kad se oznaka pročita, pokrećemo listenForTag i stoga ponovno pokrećemo explorenfc-basic.
Da se moram vratiti (a mislim da hoću), odabrao bih NFC čitač koji nudi više mogućnosti: na primjer, Adafruit (možda ste primijetili da mi se jako sviđaju) ima ovaj čitač https:// www.adafruit.com/product/789 koji je kompatibilan s libnfc, što vjerujem da znači da će čitatelju biti puno jasnije sučeliti se nego pozvati podređeni proces iz čvora i raščlaniti stdout!
Korak 7: Isprobajte
Da biste pokrenuli aplikaciju, samo idite do te mape i upišite "node index.js" (ili npm start budući da smo je ranije konfigurirali u package.json). U zapisnicima biste trebali vidjeti aplikaciju koja se povezuje s OSMC/Kodi i skenira po prvi put. Nakon nekoliko sekundi datoteka album_directories.json bit će stvorena unutar direktorija projekta; Zatim možete unijeti ID -ove oznaka NFC kao što je ranije objašnjeno i povezati ih s albumima koje želite.
Korak 8: Automatski pokrenite
Ukratko, stvorili smo aplikaciju Node koja (1) skenira vašu biblioteku slika KODI i pokušava pronaći mapu u koju pohranjujete slike s odmora, (2) osluškuje NCF oznake oslanjajući se na explorenfc-basic, a zatim (3) pokreće album povezan s ovim NFC ID -om.
Kako bismo cijeli proces pokrenuli u pozadini, koristit ćemo PM2, upravitelja procesa za čvor.
U naredbenom retku idite do mape svojih projekata (gdje se nalazi datoteka index.js) i upišite sljedeće retke:
sudo npm install pm2 -gpm2 start index.js
PM2 vašu aplikaciju sada nadzire i automatski će se ponovno pokrenuti! Da biste bili sigurni da je zaista pokrenut, upišite pm2 list i trebali biste ga vidjeti na popisu. Ako želite vidjeti zapisnike, samo upišite zapisnike pm2.
Preporučeni:
Primajte obavijesti e -poštom sa svojih IoT projekata: 6 koraka
Primajte obavijesti e -poštom sa svojih IoT projekata: Programske obavijesti putem e -pošte koje povezuju vaše IoT projekte s Adafruit IO -om i IFTTT -om. Objavio sam neke IoT projekte. Nadam se da ste ih vidjeli. Ako ne, pozivam vas na svoj profil i provjeravam ih. Htio sam primiti neke obavijesti kada varijabla
Kako napraviti PowerPoint prezentaciju: 18 koraka
Kako napraviti PowerPoint prezentaciju: Odricanje od odgovornosti - Ovo je opći uvod u stvaranje osnovne prezentacije s Microsoft PowerPointom, nije sveobuhvatni vodič. Koraci se mogu razlikovati ovisno o verziji PowerPointa koju koristite i operacijskom sustavu vašeg računala
Čarobni štapić za prezentaciju s Arduinom: 3 koraka
Čarobni štapić za prezentaciju s Arduinom: Ovaj uređaj namijenjen je korištenju u prezentaciji za proširenje izlagačevog pristupa računalnim uslužnim programima bez izravne kontrole računala pomoću miša ili tipkovnice. Prevlačenjem čarobnog štapića na mnogo različitih načina voditelj je abl
Pokrenite i pokrenite Ubuntu s flash pogona: 6 koraka
Pokrenite i pokrenite Ubuntu s flash pogona: Pokretanje operacijskog sustava, poput Windows -a, s vašeg flash pogona ponekad može biti vrlo korisno. Možete oporaviti svoje podatke s tvrdog diska i kopirati ih na vanjski tvrdi disk ako se to računalo neće pokrenuti ili skenirati to računalo na viruse i s
Renderirajte 3D slike svojih PCB-a pomoću Eagle3D i POV-Ray: 5 koraka (sa slikama)
Renderirajte 3D slike svojih PCB-a pomoću Eagle3D-a i POV-Raya: Pomoću Eagle3D i POV-Ray možete stvoriti realistične 3D renderiranje vaših PCB-a. Eagle3D je skripta za EAGLE Layout Editor. To će generirati datoteku za praćenje zraka, koja će biti poslana na POV-Ray, koja će zauzvrat na kraju iskočiti finalizirana slika