Satura rādītājs:

Sāciet brīvdienu attēlu slaidrādi ar maģijas pieskārienu!: 9 soļi (ar attēliem)
Sāciet brīvdienu attēlu slaidrādi ar maģijas pieskārienu!: 9 soļi (ar attēliem)

Video: Sāciet brīvdienu attēlu slaidrādi ar maģijas pieskārienu!: 9 soļi (ar attēliem)

Video: Sāciet brīvdienu attēlu slaidrādi ar maģijas pieskārienu!: 9 soļi (ar attēliem)
Video: Часть 2. Аудиокнига Натаниэля Хоторна «Дом с семью фронтонами» (главы 4–7) 2024, Jūlijs
Anonim
Sāciet brīvdienu attēlu slaidrādi ar maģijas pieskārienu!
Sāciet brīvdienu attēlu slaidrādi ar maģijas pieskārienu!
Sāciet brīvdienu attēlu slaidrādi ar maģijas pieskārienu!
Sāciet brīvdienu attēlu slaidrādi ar maģijas pieskārienu!

Gadu gaitā esmu izveidojis ieradumu ceļojumā ņemt līdzi mazu figūriņu: es bieži pērku mazu, tukšu artoy (piemēram, attēlā redzamo) un krāsoju to, lai tas atbilstu manas valsts karogam un tēmai. m apmeklēju (šajā gadījumā Sicīliju).

Tad ideja ir nofotografēt figūriņu ainu vai slavenu pieminekļu priekšā no minētās valsts: man šķiet daudz smieklīgāk nekā bildes ar tikai pašu pieminekli (tam ir Google un tas ir daudz lētāk), bet tomēr vieglāk nekā lai es būtu uz katras bildes pats (nevis ventilators, godīgi sakot)

Tā kā vienmēr ir jautri savākt cilvēkus, ar kuriem kopā bijāt brīvdienās, dažas dienas pēc atgriešanās skatīties attēlus, es domāju, ka būtu jauki, ja katra figūriņa kaut kādā veidā automātiski sāktu slaidrādi no attēliem no ceļojuma, kam tie tika veikti.

Šajā pamācībā tiks paskaidrots, kā es to izdarīju, izmantojot NFC, aveņu pi, nodejs un osmc

1. darbība. Risinājuma pārskats

Pārskats par risinājumu
Pārskats par risinājumu
Pārskats par risinājumu
Pārskats par risinājumu

Tā kā visa iestatīšana ietver dažas lietas, šeit ir sniegts vispārīgs pārskats par to, kas ir iesaistīts, lai palīdzētu jums saprast visu, kas seko:

Aparatūra

- figūriņa ir pašdarināta: tā kā es rakstu šīs pamācības nedēļas nedēļu ilga ceļojuma laikā Kopenhāgenā/Oslo/Stokholmā/Helsinkos, es pievienošu dažus šā brauciena veidotās figūriņas kadrus.

- zem katras figūriņas ir NFC mikroshēma: es izmantoju apaļas uzlīmes, kuras es varu ievietot zem katras figūriņas, bet jūs varat izmantot jebkuru citu formas faktoru - tikai pārliecinieties, vai jūsu izmantotā mikroshēma ir saderīga ar jūsu lasītāju

- lai parādītu attēlus, es izmantošu aveņu pi ar instalētu OSMC: tas ir mans izvēlētais multivides atskaņotājs TV šoviem un filmām, tāpēc tas jau ir pievienots manam televizoram

- lai aveņu pi lasītu NFC tagus, es pievienoju NFC lasītāju - es izmantoju NXP Explore -NFC, kas pieejams daudzās vietnēs: tas tiek pievienots Pi un darbojas kā vairogs

Programmatūra

Raspberry Pi NodeJS skripts gaida, kamēr tiks nolasīts NFC tags: kad tas būs izdarīts, skripts pārbaudīs, vai tā ID atbilst vērtību/pāru sarakstam ar katru mapi no attēlu avota OSMC un atbilstošo NFC ID, kā to konfigurējis lietotājs.

Kad tags tiek nolasīts, ja ID ir sarakstā, mezgla skripts liek OSMC palaist šīs konkrētās mapes slaidrādi. Lai izveidotu/konfigurētu šo sarakstu, tas pats NodeJS skripts ik pēc 5 minūtēm palaiž skenēšanas funkciju: skenē katru direktoriju OSMC avotā "Attēli" (izmantojot Kodi piedāvāto JSON-RPC API) un pievieno to sarakstam, kas pēc tam tiek saglabāts diskā. Rediģējot šo teksta failu tieši, lietotājs pēc tam var pievienot atbilstošo NFC ID katram albumam.

2. darbība: izveidojiet figūriņu

Figūriņas veidošana
Figūriņas veidošana
Figūriņas veidošana
Figūriņas veidošana
Figūriņas veidošana
Figūriņas veidošana
Figūriņas veidošana
Figūriņas veidošana

Savai figūriņai varat izmantot gandrīz visu, kas jums patīk: man patīk izmantot šīs vinila mākslas rotaļlietas, jo tās - salīdzinoši - ir viegli uzzīmēt pat tādam cilvēkam kā man, kuram nepatīk zīmēt, un diezgan viegli nēsāt līdzi. Es pasūtu tos tukšā, DIY versijā, mazākajā izmērā, kādā tie nāk, un zīmēju uz tiem, izmantojot Posca marķierus. Šeit jūs varat redzēt to, ko esmu izveidojis šim ceļojumam, ar četru mūsu apmeklēto valstu karogiem - tie bija pietiekami līdzīgi, lai es tos varētu apvienot. Jūs varat izmantot vairākas krāsas kārtas, ja vien ļaujat katrai nožūt pirms nākamās krāsošanas. Kad esmu pabeidzis krāsošanu, man patīk dažas minūtes pielietot krāsai termo pistoli, jo esmu lasījis, ka patiesībā karstums palīdz Posca krāsai.

Pēdējā attēlā jūs varat redzēt Svenu - es vienmēr dodu viņiem vārdus - atpūsties Oslo pēc diezgan ilga rīta. Viņam nav galvas no oriģinālās rotaļlietas, jo vienu minūti pirms aiziešanas man izdevās sajaukt: man bija jāizjauc iepriekšējā rotaļlieta, lai tā vietā izmantotu tās galvu. Es nevaru teikt, ka tas nekad agrāk nav noticis…

3. darbība: instalējiet OSMC

Instalējiet OSMC
Instalējiet OSMC

Pirmā lieta, ko es izdarīju, bija instalēt OSMC micro SD kartē Raspberry Pi: mūsu iestatījumos tā kalpos kā multivides atskaņotājs, lai skatītos jūsu attēlus. Es neiedziļināšos šajā aspektā, jo tas ir diezgan labi dokumentēts (ja jums nepieciešama palīdzība, ir pieejamas dažas instrukcijas). Vienkārši lejupielādējiet instalētāju datorā un izpildiet norādījumus. Kad biju pabeidzis, es vienkārši pievienoju tastatūru un peli, pievienoju HDMI televizoram un sekoju iestatīšanas vednim, lai iestatītu laika joslu utt.

Visbeidzot, avotiem pievienoju direktoriju, kurā es glabāju savus attēlus: manā gadījumā tie tiek glabāti NAS ar fiksētu IP tajā pašā tīklā, bet tos var saglabāt arī USB diskdzinī vai pašā mājas mapē, ar nosacījumu, ka jūsu micro SD ir pietiekami liels.

Pievienojot avotu, jums tiks lūgts ievadīt tā nosaukumu: varat atstāt noklusējumu vai mainīt to, bet noteikti pierakstiet to, jo tas mums būs vajadzīgs vēlāk. Manā gadījumā es to nosaucu par "MyPictures"

Tagad jums vajadzētu redzēt pievienotā direktorija saturu un pārlūkot attēlus: manā gadījumā katram ceļojumam ir apakšdirektorijs.

Apsveicam! Tagad jums ir multivides centrs ar attēliem un varat sākt slaidrādi noteiktai mapei (kā bonusu varat to izmantot arī videoklipu vai mūzikas atskaņošanai)

4. darbība: konfigurējiet lasītāju

Pārējā instrukcijā mēs izveidosim savienojumu ar Pi, izmantojot komandrindu, izmantojot SSH. Lai to izdarītu, vienkārši pievienojiet Pi tīklam, izmantojot Ethernet kabeli, un izmantojiet termināli vai īpašu sotware, lai izveidotu savienojumu ar Pi. Operētājsistēmā Mac OS un Linux komanda ir

ssh [email protected]

Jums tiks lūgts ievadīt paroli, tas atkal ir osmc

Lai lasītājs varētu darboties, SPI ir jāiespējo: lielākajā daļā izplatīšanas gadījumu, piemēram, Raspbian, to var izdarīt, izmantojot raspi-config-konfigurācijas rīku, kas ļauj mainīt dažas konfigurācijas vērtības.

Tomēr OSMC neietver raspi-config jūsu drošībai, kad to lietojat. Tā vietā izslēdziet Raspberry, izņemiet micro SD karti un vienkārši pievienojiet to datoram: tagad vajadzētu būt redzamam "boot" nodalījumam. Tur sējuma saknē redzēsit failu ar nosaukumu "config.txt" - vienkārši atveriet to un beigās pievienojiet šo rindu:

"dtparam = spi = ieslēgts"

Tagad jūs varat saglabāt failu, atsāknēt un SPI jābūt iespējotam.

Pēc tam jums būs nepieciešams lejupielādēt pievienoto ZIP failu un izpakot to avenē - iesaku izveidot mapi Projekti un tur to izpakot. Lai to izdarītu, varat vai nu izveidot savienojumu ar Raspberry, izmantojot FTP, izmantojot SSH (es to izmantoju, izmantojot CyberDuck), vai arī ievietot failu USB diskā un izmantot Kodi failu pārvaldnieku, lai to kopētu uz Raspberry Pi.

Jebkurā gadījumā, kad esat nokopējis zip failu uz Pi, varat pāriet uz mapi, kurā to kopējāt, un izpakot to, pāriet uz iegūto mapi un instalēt paketi:

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

Ja viss ir kārtībā, jums vajadzētu būt iespējai pievienot lasītāju, pārstartēt un pēc tam ievadīt

explorenfc-basic

Ja jūs pietuvojat lasītāju NFC mikroshēmai, tai tagad vajadzētu parādīt virkni informācijas no mikroshēmas (cita starpā, tās ID)

5. darbība: instalējiet mezglu un izveidojiet projektu

Tālāk mēs instalēsim NodeJS avenēs, lai uzrakstītu mūsu lietotni.

Mēs vēlamies instalēt nodejs, bet noklusējuma repozitorija versija ir patiešām veca, tāpēc jums vispirms jāiziet pirmais solis: komandrindas saskarnē ierakstiet

čokurošanās -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Pēc tam varat ierakstīt

sudo apt instalēt nodejs

lai instalētu jaunāko pieejamo nodejs un npm versiju.

Lai kontrolētu KODI no nodejs, mēs izmantosim npm pakotni ar nosaukumu kodi-ws.

Sāksim ar jauna projekta izveidi: vienkārši ierakstiet komandu

npm init

Jums tiks uzdoti vairāki jautājumi: lielākajai daļai no tiem varat atstāt noklusējuma iestatījumus, vienkārši izvēlieties lietotnes nosaukumu un beigās ievadiet savu vārdu. Kad tiek prasīts sākuma punkts, vienkārši atstājiet index.js

Tādējādi tiks izveidots fails package.json, kas apkopos jūsu pakotnes īpašības, piemēram, tās atkarības.

Tagad jūs varat ieiet

sudo npm instalēt kodi-ws sudo npm instalēt jsonfilesudo npm instalēt cronsudo npm instalēt child_process

Ja pēc tam atverat package.json, jūs atzīmēsit, ka visas šīs paketes tika pievienotas atkarībām.

6. darbība: kods, paskaidrots

Kods, izskaidrots
Kods, izskaidrots

Šim solim ir pievienots lietotnes kods.

Esmu atstājis diezgan daudz mežizstrādes, ko var nekomentēt, lai saprastu skriptu, bet kopā to sadalīt.

Jūs pamanīsit, ka, neraugoties uz visām deklarētajām funkcijām, vispirms kods veic tikai dažas darbības:

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

Skripts mēģina izveidot savienojumu ar OSMC JSON-RPC API. Kad tas izdodas (un tikai tad), tas turpinās ar pārējo failu.

Ja kāda iemesla dēļ to neizmantojat no sava Raspberry Pi, nomainiet localhost uz savu IP adresi. Pārliecinieties arī, ka OSMC pakalpojumu iestatījumos (Iestatījumi/Pakalpojumi) ir atzīmēta izvēles rūtiņa "Atļaut tālvadību no citu sistēmu lietojumprogrammām" (skat. Attēlu)

Pārējā datne lielākoties ir funkciju deklarācijas, kuras mēs izmantosim vēlāk: divas funkcijas, kas faktiski tiek palaistas no šejienes, ir (172./173.rindas)

scanAndSetCron (); listenForTag ();

ScanAndSetCron:

- tiek palaista funkcija scanPictures. Tajā pārbaudām, vai mainīgais "mypicturedirectory", kas turēs ceļu uz mūsu attēliem, nav tukšs. Ja tā ir, mēs lūdzam OSMC sniegt mums visus attēla satura avotus (getPictureDirectory funkcijas 11. rindā):

var piclist = gaidīt savienojumu. Files. GetSources ("attēli");

OSMC mums dod masīvu: katram vienumam mēs pārbaudām, vai avota nosaukumā ir iekļauts "Mans": ja tas tā ir, mēs to saglabājam kā mūsu attēla avotu (16. un nākamā rinda). Šeit jūs vēlaties mainīt virkni no "Mans" uz to, ko iepriekš ievadījāt kā attēlu avota nosaukumu

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

Tagad, kad mums ir ceļš uz avotu (būtībā mūsu albumu saknes mape), mēs lūdzam OSMC to skenēt un pievienot katras mapes ceļu masīvam ar nosaukumu albums_directories (ja tas vēl nav pieejams). Tā kā šī funkcija tiks palaista ik pēc X sekundēm, pirms pievienošanas mēs pārbaudām, vai direktorija vēl nav sarakstā, un NFC ID ir iestatīta uz tukšu virkni - tādā veidā katra jauna mape, ko pievienosit saviem attēliem, tiks automātiski pievienots - 46. rinda

for (var j = 0; j <directories.length; j ++) {if (direktoriji [j].filetype.includes ("direktorijs")) {if (searchDirectory (katalogi [j].fails, albuma_direktorijas)) {konsole. žurnāls (direktoriji [j].file +"jau tur"); } else {console.log (">> Pievienojot dir" + direktoriji [j].file); album_directories.push ({direktorijs: direktoriji [j].fails, nfc: ""}); }}}

Beigās mēs saglabājam masīvu album_directories json failā Pi, kuru mēs cenšamies ielādēt katru reizi, kad funkcija tiek izpildīta: tas notiek funkcijas scanAndSetCron beigās, kur mēs izmantojam cron līdzīgu pakotni, lai nodrošinātu mūsu funkciju darbību ik pēc 15 sekundēm.

Mūsu ģenerēto JSON failu album_directories.json var atvērt, izmantojot jebkuru piezīmju grāmatiņas lietotni. Kad esat to izdarījis, jums tiks parādīts jūsu fotoattēlu albumu saraksts, katrs ar tukšu lauku “nfc”:

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

Šajā laukā tagad ir jāielīmē tās ID ID, kuru vēlaties saistīt ar šo albumu. Lai iegūtu šo ID, vienkārši dodieties uz mapi SW2827, palaidiet explorenfc-basic un skenējiet tagu, kuru vēlaties izmantot. Iegūtajā izejā vienkārši meklējiet vērtību blakus ISO14443A UID. Kopējiet to albumā, kuru vēlaties konfigurēt. Manā gadījumā, piemēram,

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

Saglabājiet failu, un tā saturs tiks ielādēts, nākamreiz palaižot lietotni.

Funkcijā listenForTag mēs to darām: tā kā šķiet, ka NodeJS lasītāju bibliotēkai nav īpašas ostas, mēs paļaujamies uz bērnu procesiem, lai lasītājam palaistu bināro:

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

Mēs paļaujamies uz notikumu klausītāju, lai saņemtu šīs izpildes izvadi: atzvanīšanas laikā bērnam.stdout.on ('dati', funkcija (dati), mēs parsējam šīs komandas izvadi, izmantojot funkciju analyOutput: mēs meklējam rinda, ko mēs redzējām iepriekš, sākot ar "ISO14443A UID:", jo tieši tur tiek glabāts skenētā taga ID. Kad esam atraduši šo rindu, mēs to sagriežam un saglabājam ID objektā (ko sauc par ID, kā oriģināls).

Visbeidzot, mēs cenšamies saskaņot šo ID ar ID, ko ievadījām albuma_direktoriju objektu masīvā (ielādēts, izmantojot failu_albums_direktorijas.json). Ja tiek atrasta atbilstība, mēs uzdodam OSMC sākt slaidrādi šai konkrētajai mapei:

var nfcid = analyOutput (dati); console.log ("nfcid ir" + nfcid.id); varrespondingalbum = searchTag (nfcid.id, album_directories); if (respondingalbum) {console.log ("Atrasts albums" + JSON.stringify (respondingalbum) + "šim tagam"); var args = [{'ceļš':respondingalbum.directory}]; connection.run ('Player. Open', args); } listenForTag ();

Jūs pamanāt, kā funkcijas beigās mēs atkal palaižam listenForTag? Tas ir vienīgais risinājums, ko esmu atradis, lai lietotne darbotos: explorenfc-basic pēc noklusējuma gaidīs tagu, izlasīs to un pēc tam izies. Lietotnei ir nepārtraukts režīms, kuru mēs varam izsaukt, izmantojot explorenfc -basic -k, taču šajā režīmā bērns_process nekad neizvada taga saturu, jo tas nekad nebeidzas (citiem vārdiem sakot, bērns.stdout.on (“dati”) nekad netiek aktivizēts). Tā kā es neesmu atradis nevienu citu šī lasītāja izmantošanas veidu, mēs šeit pamatā esam palaiduši explorenfc-basic viena taga režīmā, un, kad tiek nolasīts tags, mēs palaižam listenForTag un tāpēc restartējam explorenfc-basic.

Ja man būtu jāatgriežas (un es domāju, ka es to darīšu), es izvēlētos NFC lasītāju, kas piedāvā vairāk iespēju: piemēram, Adafruit (iespējams, pamanījāt, ka man tie ļoti patīk) ir šis lasītājs https:// www.adafruit.com/product/789, kas ir saderīgs ar libnfc, kas, manuprāt, nozīmē, ka lasītājam būs daudz tīrāka saskarne, nekā zvanīt bērna procesam no mezgla un parsēt stdout!

7. solis: izmēģiniet to

Lai palaistu lietotni, vienkārši dodieties uz šo mapi un ierakstiet “mezgls index.js” (vai npm start, jo mēs to iepriekš konfigurējām pakotnē package.json). Žurnālos jums vajadzētu redzēt lietotni, kas pirmo reizi savienojas ar OSMC/Kodi un skenē. Pēc dažām sekundēm fails directory_directories.json tiks izveidots projekta direktorijā; Pēc tam varat ievadīt NFC tagu ID, kā paskaidrots iepriekš, un saistīt tos ar vajadzīgajiem albumiem.

8. darbība: palaidiet automātiski

Apkopojot, mēs esam izveidojuši lietotni Node, kas (1) meklē jūsu KODI attēlu bibliotēku un mēģina atrast mapi, kurā glabājat savus svētku attēlus, (2) klausās NCF tagus, paļaujoties uz explorenfc-basic un pēc tam (3) palaiž ar šo NFC ID saistīto albumu.

Lai viss šis process darbotos fonā, mēs izmantosim PM2 - mezgla procesa pārvaldnieku.

Komandrindā dodieties uz savu projektu mapi (kur atrodas fails index.js) un ierakstiet šādas rindas:

sudo npm instalēt pm2 -gpm2 start index.js

Jūsu lietotni tagad uzrauga PM2, un tā tiks automātiski restartēta! Lai pārliecinātos, ka tas tiešām ir palaists, ierakstiet pm2 list, un jums tas jāredz sarakstā. Ja vēlaties redzēt žurnālus, vienkārši ierakstiet pm2 žurnālus.

Ieteicams: