Inhoudsopgave:

Sonos Spotify Vinyl Emulator: 26 stappen
Sonos Spotify Vinyl Emulator: 26 stappen

Video: Sonos Spotify Vinyl Emulator: 26 stappen

Video: Sonos Spotify Vinyl Emulator: 26 stappen
Video: 30 лучших советов и рекомендаций по Windows 10 на 2020 год 2024, Juli-
Anonim
Image
Image
Sonos Spotify Vinyl-emulator
Sonos Spotify Vinyl-emulator

Houd er rekening mee dat dit niet de nieuwste set instructies voor dit project is:

Ga naar https://www.hackster.io/mark-hank/sonos-spotify-vinyl-emulator-3be63d voor de nieuwste instructies en ondersteuning

Muziek luisteren op vinyl is geweldig. Het is fysiek en tactiel. Je luistert naar een heel album in plaats van willekeurige nummers. Je merkt wanneer het voorbij is en kiest bewust voor iets anders. U kunt een verzameling opbouwen en er doorheen bladeren in plaats van te moeten zoeken naar precies wat u zoekt.

Het is ook duur en omvangrijk, vooral als je bedenkt dat al het geld dat je uitgeeft aan vinyl zeer waarschijnlijk een duplicaat is van muziek waartoe je al toegang hebt via een streamingdienst waarop je bent geabonneerd.

Dit project probeert de tactiliteit en collectieopbouwende aspecten van vinyl te repliceren, terwijl het vertrouwt op Spotify om de muziek daadwerkelijk te leveren. Als u een fysiek object op een NFC-lezer plaatst die is aangesloten op een Raspberry Pi (die beide kunnen worden verborgen), wordt het album afgespeeld dat bij die tag hoort.

Ik zal je door alle stappen leiden - van het instellen van de Raspberry Pi tot het coderen van de NFC-tags. Dit is mijn allereerste Raspberry Pi-project en mijn eerste Python-code, dus ik heb mezelf beide geleerd tijdens het ontwikkelen hiervan. Als zodanig veronderstellen deze instructies letterlijk nul voorkennis en helpen ze u bij elke stap.

De totale kosten voor de essentiële componenten om dit te bouwen bedragen ongeveer £ 50-60.

Ik zou graag zien wat je bouwt!

Stap 1: Benodigde benodigdheden 1: Raspberry Pi

De back-end die communiceert met uw netwerk, Sonos en Spotify, wordt beheerd door een Raspberry Pi. Er is eigenlijk heel weinig dat je nodig hebt om dit op gang te krijgen.

Essentieel:

Raspberry Pi: ik heb een Raspberry Pi 3 Model B+ gebruikt, maar hij werkt ook met een Raspberry Pi 3 Model A+ (£ 23)

USB-voeding: ik had er een liggen - er is een officiële beschikbaar als je die niet hebt (£ 9)

Micro SD-kaart: ik heb er een van 32 GB, wat genoeg is voor deze toepassing, op Amazon (£ 6)

Sommige Sonos-apparatuur draait op je netwerk (ik vermoed dat je dit al hebt als je hier bent…)

Een Spotify Premium-account

Aanbevolen:

Een zaak voor de Pi: er zijn veel opties, vanaf £ 5

Een fles fatsoenlijke California Zinfandel: ik raad Ridge aan, maar er zijn ook andere beschikbaar

Stap 2: Benodigde benodigdheden 2: NFC-lezer

Vereiste benodigdheden 2: NFC-lezer
Vereiste benodigdheden 2: NFC-lezer
Vereiste benodigdheden 2: NFC-lezer
Vereiste benodigdheden 2: NFC-lezer

Deze instructies zijn bedoeld voor een ACR122U NFC-lezer die verbinding maakt via USB.

ACR122U

Ik kocht deze van Amazon voor £ 38 (voornamelijk omdat het eersteklas bezorging had) maar er zijn goedkopere opties om dezelfde lezer te kopen.

Verwarrend genoeg lijkt de ACR122U onder een heleboel verschillende merknamen te worden verkocht (de mijne kwam onder de verre van geruststellende merknaam "Yosoo"), maar voor zover ik kan zien, zijn ze allemaal hetzelfde en gebouwd door American Card Systems.

De goedkoopste die ik heb gevonden voor de geadverteerde ACR122U is £ 21 inclusief verzendkosten, maar dat komt rechtstreeks uit China, dus daar moet je misschien even op wachten.

Andere opties

Dit project is gebaseerd op een python-bibliotheek genaamd nfcpy die hier een lijst met ondersteunde apparaten bijhoudt:

In theorie zou dit project moeten werken met een van degenen op die lijst met weinig integratie.

Een verleidelijke optie is de Adafruit PN532, een bord dat rechtstreeks op je Raspberry Pi moet worden aangesloten met behulp van startkabels. Ik heb het geprobeerd en vond het een echte faff. Er moet bijvoorbeeld gesoldeerd worden.

Een voordeel hiervan is, oppervlakkig gezien, dat het kleiner is, maar in werkelijkheid is het bord ongeveer even groot als het lef van de ACR122U. Als je echt veel ruimte nodig hebt voor je toepassing, kun je het plastic van de ACR122U strippen en gewoon het bord gebruiken.

Stap 3: Benodigde benodigdheden 3: NFC-tags

Vereiste benodigdheden 3: NFC-tags
Vereiste benodigdheden 3: NFC-tags

Voor elk album dat u wilt maken, heeft u een NFC-tag nodig die voldoet aan de NTAG213-standaard.

Er zijn veel plaatsen om deze te kopen.

Ik kocht mijn eerste batch van Amazon, waar ik een pakket van 10 kreeg voor £ 9 (inclusief Prime-bezorging)

De beste die ik hier in het VK heb gevonden, is Seritag - ze hebben een heel brede selectie van verschillende stijlen, geweldig advies op hun website, je weet precies wat je krijgt (niet altijd waar op Amazon). Ze hebben geen minimale bestelgrootte en een heleboel opties. Tags beginnen bij 27p per tag

Stap 4: Download het Raspberry Pi OS naar een SD-kaart

Download het Raspberry Pi OS naar een SD-kaart
Download het Raspberry Pi OS naar een SD-kaart
Download het Raspberry Pi OS naar een SD-kaart
Download het Raspberry Pi OS naar een SD-kaart

Download en voer de Raspberry PI imager-toepassing op uw pc of Mac uit.

Plaats de SD-kaart waarop u het Raspberry Pi-besturingssysteem wilt installeren.

Klik op KIES OS en selecteer de standaard Rasbian.

Klik op KIES SD-KAART en selecteer de SD-kaart die u hebt aangesloten.

Klik op SCHRIJVEN. Dit kan een tijdje duren.

Als het klaar is, wordt u gevraagd de SD-kaart te verwijderen, wat u moet doen. Maar sluit hem dan weer aan, want er zijn een paar huishoudelijke taken die u eerst moet doen.

Stap 5: Schakel SSH in op uw Raspberry Pi OS-afbeelding

Schakel SSH in op uw Raspberry Pi OS-afbeelding
Schakel SSH in op uw Raspberry Pi OS-afbeelding

Nadat het besturingssysteem naar de SD-kaart is geschreven, zijn er een paar extra taken die u moet doen.

We willen toegang tot de Raspberry Pi zonder een toetsenbord of monitor aan te sluiten (ook bekend als "headless"), wat we via ons lokale netwerk kunnen doen met onze pc of Mac via een protocol genaamd SSH. Om veiligheidsredenen is SSH echter standaard uitgeschakeld. We moeten het inschakelen.

We kunnen dit doen door een leeg bestand te maken met de naam:

ssh

op de SD-kaart die we zojuist hebben gemaakt. Het is belangrijk dat dit geen enkele extensie heeft (bijv..txt). Het bestand zelf hoeft geen inhoud te bevatten - alleen het bestaan ervan zal SSH inschakelen wanneer de Pi opstart.

Stap 6: Optioneel: Wifi instellen op uw Raspberry Pi

Optioneel: Wifi instellen op je Raspberry Pi
Optioneel: Wifi instellen op je Raspberry Pi
Optioneel: Wifi instellen op je Raspberry Pi
Optioneel: Wifi instellen op je Raspberry Pi

U kunt deze stap overslaan als u van plan bent uw Raspberry Pi via ethernet op uw router aan te sluiten. (Hoewel je misschien goed over die beslissing wilt nadenken - als je het via wifi laat lopen, wordt het leven een stuk eenvoudiger om dit te positioneren)

Maak een tekstbestand met de naam wpa_supplicant.conf in de hoofdmap van de SD-kaart.

Plaats de onderstaande tekst in het bestand:

land=gb

update_config=1 ctrl_interface=/var/run/wpa_supplicant network={ scan_ssid=1 ssid="MijnNetworkSSID" psk="MijnWachtwoord"}

Wijzig het land waar nodig (GB is het VK, VS is de VS, DE is Duitsland, enz.)

Wijzig de wifi-inloggegevens daar om uw werkelijke wifi-routerdetails te zijn.

Bewaar het bestand.

Werp de SD-kaart veilig uit.

Stap 7: Schakel uw Raspberry Pi in

Zet je Raspberry Pi aan
Zet je Raspberry Pi aan

Plaats de SD-kaart die u zojuist hebt gemaakt in uw Raspberry Pi.

Steek je Raspberry Pi via de USB-kabel in het stopcontact. Wacht een minuut totdat het is opgestart.

Stap 8: Zoek het IP-adres van uw Raspberry Pi

U moet nu het IP-adres van de Raspberry Pi vinden, zodat u er verbinding mee kunt maken. U kunt dit op twee manieren doen:

  • via de instellingenpagina van je router - als je een moderne router zoals eero hebt, is dit supereenvoudig;
  • of via een smartphone-app die beschikbaar is voor iOS en Android genaamd "fing" - download deze, maak verbinding met uw router en scan naar apparaten - een van hen zou "Raspberry" moeten heten - dit is het IP-adres dat u nodig hebt.

Stap 9: Maak verbinding met uw Raspberry Pi-opdrachtregel

Maak verbinding met uw Raspberry Pi-opdrachtregel
Maak verbinding met uw Raspberry Pi-opdrachtregel

Open Terminal op je Mac (of als je Windows gebruikt, download en gebruik dan Putty).

Voer de volgende opdracht in:

ssh pi@[het IP-adres van je Pi]

Accepteer eventuele beveiligingswaarschuwingen die u krijgt. U wordt gevraagd om het wachtwoord voor de standaard pi-gebruiker, namelijk:

framboos

Stap 10: Stel de Raspberry Pi OS GUI in

Stel de Raspberry Pi OS GUI in
Stel de Raspberry Pi OS GUI in
Stel de Raspberry Pi OS GUI in
Stel de Raspberry Pi OS GUI in

Je bent nu verbonden met je Pi via de opdrachtregel, wat geweldig is, maar je wilt het ook zo instellen dat je toegang hebt tot de grafische gebruikersinterface die we zullen openen via VNC (Virtual Network Computing). Voorspelbaar moeten we dit ook mogelijk maken.

Controleer eerst of uw Pi-software up-to-date is door de volgende twee opdrachten (elk gevolgd door enter) in de opdrachtregel in te voeren:

sudo apt update

sudo apt install realvnc-vnc-server realvnc-vnc-viewer

Open vervolgens het Raspberry Pi-instellingenmenu door in te voeren:

sudo raspi-config

Navigeer naar Interfacing-opties > VNC > Ja.

Sluit de configuratietoepassing af door op de escape-toets te drukken en start de Pi opnieuw op vanaf de opdrachtregel door te typen:

sudo reboot

Stap 11: Maak verbinding met en stel uw Raspberry Pi GUI in

Maak verbinding met en stel uw Raspberry Pi GUI in
Maak verbinding met en stel uw Raspberry Pi GUI in
Maak verbinding met en stel uw Raspberry Pi GUI in
Maak verbinding met en stel uw Raspberry Pi GUI in

Download en open VNC Viewer.

Typ het IP-adres van je Raspberry Pi in en druk op verbinden. Het zal u om gebruikersnaam en wachtwoord vragen, die zijn:

Gebruikersnaam = pi

Wachtwoord = framboos

Dit zou je moeten opstarten naar de GUI.

Het zal u vragen om uw geografie en toetsenbordindeling te bevestigen.

Vervolgens wordt u gevraagd uw wachtwoord te wijzigen (goed idee).

Het zal je vragen om je wifi-gegevens in te stellen, maar je kunt dit overslaan omdat ze al werken. (Hoewel als je op ethernet draait en twijfelt, dan is dit je kans … maar houd er rekening mee dat je IP-adres kan veranderen)

Het zal dan controleren op updates, deze downloaden en installeren (kan even duren).

Als je eenmaal door de installatiewizard bent, raad ik aan om de schermresolutie te wijzigen, omdat de standaard vrij klein is. U kunt dit doen door op de Raspberry linksboven te klikken> Voorkeuren> Raspberry Pi-configuratie> Display> Resolutie instellen

U moet de Pi opnieuw opstarten om dit van kracht te laten worden.

Stap 12: Installeer Node.js en NPM

Installeer Node.js en NPM
Installeer Node.js en NPM

Vervolgens wil je de Raspberry Pi-opdrachtregel laden om de afhankelijkheden te installeren die we nodig hebben.

U kunt dit doen door verbinding te maken via VNC en op de knop bovenaan te klikken die op een opdrachtregel lijkt; of u kunt rechtstreeks vanaf uw Mac/pc verbinding maken met Terminal en Putty, zoals we eerder deden. Als je minder gewend bent om met de Raspberry Pi te werken, dan is het makkelijker om de eerste te doen.

(Tip: je kunt tekst van je Mac/pc kopiëren en via VNC in de Raspberry Pi plakken door op CONTROL-V te drukken, maar als je in de Terminal probeert te plakken, moet je op CONTROL-SHIFT-V drukken)

De eerste taak is om opnieuw te controleren of uw software up-to-date is door de volgende twee opdrachten te typen. Het kan even duren voordat ze zijn gedownload en geïnstalleerd.

sudo apt-get update

sudo apt-get upgrade

Vervolgens wil je node.js en NPM downloaden en installeren (maak je geen zorgen over wat ze zijn, ze zijn nuttig en noodzakelijk voor onze volgende taken) door het volgende te typen:

sudo apt-get install nodejs npm

Het zal je een paar keer vragen of je hiermee schijfruimte wilt innemen - je bent zo druk op Y

Stap 13: Installeer de SONOS HTTP API

Installeer de SONOS HTTP API
Installeer de SONOS HTTP API
Installeer de SONOS HTTP API
Installeer de SONOS HTTP API

De basis van de back-end voor ons project is het node-sonos-http-api-pakket gemaakt door jishi. Je kunt er hier alles over lezen:

We zullen dit downloaden van github met de volgende opdracht ingevoerd in de opdrachtregel:

git clone

en we zullen het installeren met de volgende commando's:

cd node-sonos-http-api

npm installeren --productie

We kunnen het dan uitvoeren met het volgende commando:

npm start

Zodra dat is gebeurd, moeten we testen of het werkt.

Open eerst de internetbrowser op onze Raspberry Pi en ga naar https://localhost:5005/. Er zou een mooie interface moeten openen met het Sonos-logo en wat documentatie over hoe de API werkt.

Laten we vervolgens controleren of dit werkt vanuit het bredere netwerk door een browser op een andere pc of Mac op hetzelfde netwerk te gebruiken en naar https://[theIPaddressofyourPi]:5005/ te navigeren en te kijken of we hetzelfde resultaat krijgen. We zouden.

Nu gaan we het systeem daadwerkelijk iets laten doen. Gebruik een browser en navigeer naar:

192.168.4.102:5005/Eetkamer/afspeelpauze

U dient het bovenstaande IP-adres te vervangen door het adres van uw Raspberry Pi en "Dining Room" door een van de namen van uw Sonos-zones. Het moet de muziek in die kamer afspelen of pauzeren (afhankelijk van of er al muziek wordt afgespeeld of niet). Het is duidelijk dat er iets in de Sonos-wachtrij moet staan om dat te laten werken.

In de toekomst ga ik het bovenstaande IP-adres en de eetkamer gebruiken als voorbeelden in deze tutorial. Uiteraard moet u ze bij elke gelegenheid vervangen door uw IP-adres en uw zonenaam.

Stap 14: Laat de Sonos HTTP API constant draaien

De Sonos HTTP API constant laten draaien
De Sonos HTTP API constant laten draaien

Het is geweldig dat we de Sonos HTTP API hebben draaien, maar wat als deze crasht? Of verlies je stroom of moet je je Raspberry Pi opnieuw opstarten?

U kunt het effect zien door het terminalvenster te sluiten en opnieuw te proberen wat we zojuist hebben geprobeerd. Het werkt niet omdat de HTTP-API samen met het terminalvenster is gestopt.

We willen eigenlijk dat dit constant draait en doen dit elke keer vanaf het opstarten. We doen dit met een cool ding genaamd PM2.

Installeer en voer het als volgt uit in een nieuw terminalvenster:

sudo npm install -g pm2

pm2-status

Laten we nu onze Sonos HTTP API laten draaien:

cd node-sonos-http-api

pm2 start npm -- start pm2 opstartsysteemd

Dit laatste commando genereert iets dat er een beetje uitziet als:

sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 opstartsysteem -u pi --hp /home/pi

Kopieer wat je Pi genereert (niet de exacte tekst hierboven - de jouwe kan anders zijn) en voer het in de opdrachtregel in. Dit geeft het systeem de opdracht om elke keer PM2 bij het opstarten uit te voeren.

Voer tot slot in:

pm2 opslaan

die alles bespaart.

Test nu of dit heeft gewerkt door je Raspberry Pi opnieuw op te starten met het commando

sudo reboot

Hopelijk start de Pi zodra hij opnieuw is opgestart ook PM2 en op zijn beurt de Sonos HTTP API. Je kunt dit controleren door met een browser op hetzelfde netwerk te navigeren naar het adres dat we eerder hebben gebruikt en het Sonos-logo en de instructies te bekijken:

192.168.4.102:5005/

is wat voor mij is, maar de jouwe zal afhangen van het IP-adres.

Stap 15: Speel wat Spotify

Laten we controleren of de service toegang heeft tot Spotify.

Open een browser en ga naar het volgende adres (uiteraard vervangen door uw IP-adres en kamernaam):

192.168.4.102:5005/Eetkamer/spotify/nu/spotify/spotify:album:2dfTV7CktUEBkZCHiB7VQB

Je zou wat John Grant moeten horen. Genieten van.

Stap 16: Zoek Spotify URI's

Spotify URI's vinden
Spotify URI's vinden

Vreemd, ik weet het, maar niet iedereen mag John Grant. Misschien wil je iets anders luisteren?

Je kunt de Spotify-links krijgen van de desktop-, web- of mobiele apps, maar de Desktop is verreweg het gemakkelijkst omdat het de URI levert in precies het formaat dat je wilt, dus begin daarmee.

Navigeer in de Spotify desktop-app naar het album waar je naar wilt luisteren (misschien Lemonade van Beyonce?)

Klik op de drie kleine puntjes naast de hartknop.

Ga naar beneden in het menu om te delen en kies Spotify URI kopiëren

Dit kopieert iets als

spotify:album:7dK54iZuOxXFarGhXwEXfF

naar je klembord, de Spotify URI voor Beyonce's Lemondade-album.

Start uw browser opnieuw en navigeer naar het volgende adres (uiteraard het IP-adres en de kamer vervangen en plakken in de URI die u zojuist hebt gekopieerd):

192.168.4.102:5005/Eetkamer/spotify/nu/[Spotify URI die je wilt spelen]

Je zou je keuze moeten horen spelen.

Als u liever de web-app gebruikt, krijgt u een weblink (zoiets als hieronder):

open.spotify.com/album/7dK54iZuOxXFarGhXwEXfF

je moet dit converteren naar het bovenstaande spotify:album:code-formaat om het te laten werken.

Stap 17: Een opmerking over Spotify URI's

Spotify URI's en de manier waarop ze communiceren met de node-sonos-http-api zijn voor het grootste deel intuïtief.

U kunt rechtstreeks linken naar albums, tracks en afspeellijsten.

Een album-URI ziet er als volgt uit:

spotify:album:6agCM9GJcebduMddgFmgsO

Een track-URI ziet er als volgt uit:

spotify:track:4fNDKbaeEjk2P4GrRE1UbW

Afspeellijsten werken een beetje anders. Wanneer u de URI van Spotify kopieert, ziet deze er ongeveer zo uit:

spotify:afspeellijst:5huIma0YU4iusLcT2reVEU

Om het echter daadwerkelijk op de API te laten werken, moet u spotify:user: toevoegen aan het begin van het bovenstaande. Dit geldt zelfs voor openbare afspeellijsten en, ja, het betekent dat je spotify twee keer zegt.

Voor alle duidelijkheid: gebruiker hoeft niet de naam van een bepaalde gebruiker te zijn, alleen de tekstgebruiker. Dus de juiste URI voor de bovenstaande afspeellijst om het te laten werken zou zijn:

spotify:gebruiker:spotify:afspeellijst:5huIma0YU4iusLcT2reVEU

Stap 18: Raspberry Pi instellen om HTTP-verzoeken te verzenden

Raspberry Pi instellen om HTTP-verzoeken te verzenden
Raspberry Pi instellen om HTTP-verzoeken te verzenden

In plaats van handmatig HTTP-verzoeken in een webbrowser te typen, willen we het automatiseren, zodat de Raspberry Pi dat zelf doet wanneer hij een bepaalde stimulus krijgt (de NFC-lezer wordt geactiveerd).

We zullen een bibliotheek gebruiken met de naam verzoeken om onze Raspberry Pi dit te laten doen. Laten we controleren of het is geïnstalleerd.

Open de terminal op je Pi en typ het volgende:

sudo pip installatieverzoeken

Het is waarschijnlijk dat het terugkomt en zegt dat het al is geïnstalleerd, in welk geval geweldig. Zo niet, dan wordt het geïnstalleerd.

Stap 19: Genereer NFCC-tag(s) met Spotify-gegevens

Genereer NFCC-tag(s) met Spotify-gegevens
Genereer NFCC-tag(s) met Spotify-gegevens
Genereer NFCC-tag(s) met Spotify-gegevens
Genereer NFCC-tag(s) met Spotify-gegevens
Genereer NFCC-tag(s) met Spotify-gegevens
Genereer NFCC-tag(s) met Spotify-gegevens
Genereer NFCC-tag(s) met Spotify-gegevens
Genereer NFCC-tag(s) met Spotify-gegevens

Nu willen we een Spotify-album-URI naar een NFC-tag schrijven. Elk van deze tags is wat je gaat gebruiken om de Raspberry Pi te vertellen om een bepaald album af te spelen.

Je kunt met een Android-telefoon naar een NFC-tag schrijven, maar ik vind het het gemakkelijkst om dit via een mac of pc te doen, omdat je dan het gemakkelijkst de Spotify URI's van de Spotify-desktopapp kunt krijgen.

Sluit uw USB NFC-lezer aan op uw pc of Mac. Ik gebruik de ACR122U van American Card Systems.

Download NFC Tools naar uw pc of Mac. Installeer en open het.

Het kan soms een beetje traag zijn om verbinding te maken met de lezer en kan zeggen dat het de lezer helemaal niet kan vinden. Ga naar het tabblad Overig in NFC-tools en klik af en toe op de knop Connected NFC Reader. Mogelijk moet u de lezer een paar keer loskoppelen en opnieuw aansluiten voordat hij deze vindt.

Uiteindelijk krijgt u de mogelijkheid om uw lezer uit een lijst te kiezen en te zeggen dat deze is aangesloten. Ga naar het tabblad Informatie waar niets anders wordt weergegeven dan "Wachten op een NFC-tag".

Neem een lege NFC-tag. Zet het op de lezer en laat het daar. NFC Tools geeft de informatie over de tag weer.

Ga naar het tabblad Schrijven en klik op Een record toevoegen > Tekst. (Pas op dat u geen URL of URI kiest - ik weet dat het verleidelijk is omdat u een URI kopieert, maar u wilt tekst)

Pak een URI van Spotify met behulp van de methode die we eerder hebben gebruikt. Als je een eenvoudig voorbeeld wilt, dan is het volgende ons John Grant-album van eerder.

spotify:album:2dfTV7CktUEBkZCHiB7VQB

Klik op OK en klik vervolgens op Schrijven (vergeet deze laatste stap niet - het schrijft het pas echt als u hierop klikt). Het zal u vertellen dat de tag met succes is geschreven.

Haal de tag van de lezer

Stap 20: Stel de NFC-lezer in op de Raspberry Pi

De NFC-lezer instellen op de Raspberry Pi
De NFC-lezer instellen op de Raspberry Pi

Sluit je NFC-lezer aan op een van de USB-poorten van je Raspberry Pi.

We zullen de nfcpy Python-bibliotheek gebruiken om met de NFC-lezer te communiceren. Installeer het door het volgende op uw Pi-opdrachtregel te typen:

pip install -U nfcpy

We kunnen dan controleren of deze bibliotheek onze NFC-lezer kan zien door het volgende te typen:

python -m nfc

Als het heeft gewerkt, ziet u het volgende:

Dit is de 1.0.3-versie van nfcpy die wordt uitgevoerd in Python 2.7.16 op Linux-4.19.97-v7+-armv7l-with-debian-10.3

Ik zoek nu in uw systeem naar contactloze apparaten ** heb ACS ACR122U PN532v1.6 gevonden op usb:001:011 Ik probeer geen seriële apparaten omdat u het me niet hebt verteld -- voeg de optie '--search-tty' toe om me te laten kijken -- maar pas op dat dit andere seriële ontwikkelaars kan breken

De kans is echter groot dat u een foutmelding krijgt dat de lezer is gevonden, maar dat uw gebruiker (pi) geen toestemming heeft om deze te openen. Als u deze foutmelding krijgt, wordt ook uitgelegd hoe u het probleem kunt oplossen, namelijk door twee opdrachten te typen die er ongeveer als volgt uitzien:

sudo sh -c 'echo SUBSYSTEM==\"usb\", ACTION==\"add\", ATTRS{idVendor}==\"04e6\", ATTRS{idProduct}==\"5591\", GROUP= \"plugdev\" >> /etc/udev/rules.d/nfcdev.rules'

sudo udevadm control -R

Kopieer en voer beide opdrachten uit die het u geeft (niet precies wat hierboven staat, omdat de uwe anders kan zijn), koppel vervolgens uw NFC-lezer los en sluit deze opnieuw aan op de USB-poort.

Probeer het check-commando opnieuw:

python -m nfc

Deze keer zou het moeten zeggen dat het het zonder foutmeldingen heeft gevonden.

Stap 21: Installeer de Vinylemulator Python-scripts

We hebben nu alle bouwstenen op hun plaats:

  • Onze Raspberry Pi kan luisteren naar NFC-invoer
  • Onze Raspberry Pi kan Sonos vertellen om Spotify-afspeellijsten af te spelen wanneer een Spotify-URI wordt gegeven
  • We hebben een NFC-tag met een Spotify URI erop opgeslagen

Nu moeten we al deze bouwstenen in iets bruikbaars trekken. Dit wordt gedaan door middel van een kort python-script dat ik heb geschreven (met veel hulp van eerdere NFC/Spotify/Sonos-projecten) dat vinylemulator wordt genoemd.

U kunt de broncode voor de bestanden bekijken op github:

Om dit op onze Raspberry Pi te installeren, moeten we het van github klonen met het volgende commando:

git kloon

Stap 22: Vinylemulator aanpassen

Vinylemulator aanpassen
Vinylemulator aanpassen
Vinylemulator aanpassen
Vinylemulator aanpassen

Open de Raspberry Pi-bestandsbeheerder en navigeer naar home > pi > vinylemulator

Open het bestand usersettings.py

Een van de regels in dit bestand luidt:

sonosroom="Eetkamer"

Wijzig 'Eetkamer' in de naam van de Sonos-kamer die je wilt bedienen.

Er is ook een instelling in dit bestand waarmee u het IP-adres van de sonos-http-api kunt aanpassen. Je zou dit ongewijzigd moeten kunnen laten als "localhost", wat betekent dat het de Raspberry Pi zal gebruiken waarop het draait.

Sla het bestand op en sluit het.

Stap 23: Vinylemulator testen

Vinylemulator testen
Vinylemulator testen
Vinylemulator testen
Vinylemulator testen

Ga naar je Raspberry Pi-opdrachtprompt.

Voer de volgende opdracht in:

python vinylemulator/readnfc.py

Als alles goed is, zal dit het script laden en zeggen dat de lezer klaar is. Het lampje op de lezer moet groen worden.

Plaats de NFC-tag op de lezer, die piept.

De terminal laat zien wat hij van de NFC-tag heeft gelezen en toont het HTTP-verzoekadres dat hij heeft verzonden. Je favoriete album moet worden afgespeeld via je Sonos-speakers.

Dit script blijft actief totdat u het terminalvenster sluit. U kunt op verschillende NFC-tags van het album tikken en het zal overschakelen naar dat album.

Stap 24: Vinylemulator constant laten draaien en opstarten

Net als de sonos-http-api, willen we dat vinylemulator altijd draait in plaats van alleen wanneer we het aanroepen. We kunnen pm2 gebruiken om dit opnieuw te doen.

Sluit eerst alle instanties van vinylemulator die u gebruikt door hun terminalvensters te sluiten.

Open vervolgens een nieuw terminalvenster en typ de volgende twee opdrachten:

pm2 start vinylemulator/readnfc.py

pm2 opslaan

Laten we eens kijken of dat heeft gewerkt door de Raspberry Pi opnieuw op te starten. (Je kunt sudo reboot typen of dit doen vanuit het Raspberry-menu met je muis.

Wacht tot de Pi opnieuw opstart en zie dat het werkt door op een NFC-tag op de lezer te tikken. Je zou muziek moeten krijgen.

Stap 25: Feliciteer jezelf

Alles is nu functioneel. U kunt de Raspberry Pi verplaatsen naar waar u hem wilt plaatsen. Elke keer dat u de stekker in het stopcontact steekt, wordt hij opnieuw opgestart en werkt hij zoals u hem hebt ingesteld.

Je volgende taken zijn de leuke: het allemaal mooi maken.

Stap 26: Maak het mooi - Verberg je lezer

Maak het mooi - Verberg je lezer
Maak het mooi - Verberg je lezer
Maak het mooi - Verberg je lezer
Maak het mooi - Verberg je lezer
Maak het mooi - Verberg je lezer
Maak het mooi - Verberg je lezer
Maak het mooi - Verberg je lezer
Maak het mooi - Verberg je lezer

Het eerste deel om het mooi te maken, is de vervelende witte plastic NFC-lezer ergens weg te verbergen.

Ik ben gegaan met een beslist low-tech optie om het aan de onderkant van een toonbank naast mijn Sonos Play:5 te plakken. Het hout van de toonbank is dun genoeg om de NFC door te laten, dus ik speel muziek af door met een NFC-tag op een magische en onzichtbare plek te tikken.

Aanbevolen: