Mục lục:

Sonos Spotify Vinyl Emulator: 26 bước
Sonos Spotify Vinyl Emulator: 26 bước

Video: Sonos Spotify Vinyl Emulator: 26 bước

Video: Sonos Spotify Vinyl Emulator: 26 bước
Video: nfc spotify 2024, Tháng mười một
Anonim
Image
Image
Sonos Spotify Vinyl Emulator
Sonos Spotify Vinyl Emulator

Xin lưu ý rằng đây không phải là bộ hướng dẫn mới nhất cho dự án này:

Vui lòng truy cập https://www.hackster.io/mark-hank/sonos-spotify-vinyl-emulator-3be63d để có bộ hướng dẫn và hỗ trợ mới nhất

Nghe nhạc trên đĩa vinyl thật tuyệt. Đó là vật lý và xúc giác. Bạn nghe toàn bộ album hơn là các bản nhạc ngẫu nhiên. Bạn chú ý khi nó kết thúc và có ý thức lựa chọn thứ khác. Bạn có thể xây dựng một bộ sưu tập và duyệt qua nó thay vì phải tìm kiếm chính xác những gì bạn muốn.

Nó cũng đắt và cồng kềnh, đặc biệt là khi bạn cho rằng bất kỳ khoản tiền nào bạn chi cho vinyl rất có thể là bản sao của bản nhạc mà bạn đã có quyền truy cập thông qua dịch vụ phát trực tuyến mà bạn đăng ký.

Dự án này cố gắng tái tạo các khía cạnh kỹ thuật và xây dựng bộ sưu tập của vinyl trong khi dựa vào Spotify để thực sự phân phối âm nhạc. Đặt một đối tượng vật lý trên đầu đọc NFC được kết nối với Raspberry Pi (cả hai đều có thể được ẩn đi) sẽ bắt đầu phát album được liên kết với thẻ đó.

Tôi sẽ hướng dẫn bạn tất cả các bước - từ thiết lập Raspberry Pi đến mã hóa thẻ NFC. Đây là dự án Raspberry Pi đầu tiên của tôi và là mã Python đầu tiên của tôi, vì vậy tôi đã tự học cả hai trong khi phát triển dự án này. Như vậy, những hướng dẫn này giả sử thực sự không có kiến thức trước đó và hướng dẫn bạn qua từng bước.

Tổng chi phí cho các thành phần thiết yếu để xây dựng cái này là khoảng £ 50-60.

Tôi muốn xem những gì bạn xây dựng!

Bước 1: Nguồn cung cấp cần thiết 1: Raspberry Pi

Mặt sau giao tiếp với mạng của bạn, Sonos và Spotify sẽ được chạy bởi Raspberry Pi. Thực sự bạn cần rất ít để làm được điều này.

Thiết yếu:

Raspberry Pi: Tôi đã sử dụng Raspberry Pi 3 Model B + nhưng nó cũng sẽ hoạt động với Raspberry Pi 3 Model A + (£ 23)

Bộ cấp nguồn USB: Tôi đã có một cái nằm xung quanh - có một cái chính thức có sẵn nếu bạn không có (£ 9)

Thẻ Micro SD: Tôi có một cái 32gb, rất nhiều cho ứng dụng này, trên Amazon (£ 6)

Một số thiết bị Sonos đang chạy trên mạng của bạn (Tôi đoán bạn đã có thiết bị này nếu bạn ở đây…)

Tài khoản Spotify Premium

Khuyến khích:

Một trường hợp cho Pi: có rất nhiều lựa chọn, bắt đầu từ £ 5

Một chai California Zinfandel đàng hoàng: Tôi khuyên bạn nên dùng Ridge, nhưng những loại khác thì có sẵn

Bước 2: Nguồn cung cấp cần thiết 2: Đầu đọc NFC

Nguồn cung cấp cần thiết 2: Đầu đọc NFC
Nguồn cung cấp cần thiết 2: Đầu đọc NFC
Nguồn cung cấp cần thiết 2: Đầu đọc NFC
Nguồn cung cấp cần thiết 2: Đầu đọc NFC

Các hướng dẫn này được xây dựng cho đầu đọc ACR122U NFC kết nối qua USB.

ACR122U

Tôi đã mua cái này từ Amazon với giá 38 bảng Anh (chủ yếu là vì nó có giao hàng tận nơi) nhưng có nhiều lựa chọn rẻ hơn để mua cùng một đầu đọc này.

Thật khó hiểu là ACR122U dường như được bán dưới nhiều tên thương hiệu khác nhau (tên thương hiệu của tôi đặt ra là "Yosoo") nhưng theo những gì tôi có thể nói thì chúng đều giống nhau và được chế tạo bởi American Card Systems.

Giá rẻ nhất mà tôi tìm thấy mà ACR122U được quảng cáo là £ 21 bao gồm phí vận chuyển, nhưng nó đến trực tiếp từ Trung Quốc nên bạn có thể cần đợi một chút cho điều đó.

Sự lựa chọn khác

Dự án này dựa trên một thư viện python có tên nfcpy duy trì danh sách các thiết bị được hỗ trợ tại đây:

Về lý thuyết, dự án này sẽ hoạt động với bất kỳ dự án nào trong danh sách đó với ít tích hợp.

Một lựa chọn hấp dẫn là Adafruit PN532 là một bảng có thể kết nối trực tiếp với Raspberry Pi của bạn bằng cách sử dụng cáp jumper. Tôi đã thử nó và thấy nó là một lỗi thực sự. Ví dụ, nó yêu cầu hàn.

Một lợi thế của nó là, bề ngoài, nó nhỏ hơn nhưng trên thực tế, bo mạch có kích thước tương đương với ruột của ACR122U. Nếu bạn thực sự cần không gian cho ứng dụng của mình thì bạn có thể tháo lớp nhựa ra khỏi ACR122U và chỉ cần sử dụng bảng.

Bước 3: Nguồn cung cấp cần thiết 3: Thẻ NFC

Nguồn cung cấp cần thiết 3: Thẻ NFC
Nguồn cung cấp cần thiết 3: Thẻ NFC

Đối với mỗi album bạn muốn tạo, bạn sẽ cần một thẻ NFC đáp ứng tiêu chuẩn NTAG213.

Có rất nhiều nơi để mua những thứ này.

Tôi đã mua lô hàng đầu tiên của mình từ Amazon, nơi tôi nhận được gói 10 cái với giá 9 bảng Anh (bao gồm cả giao hàng Prime)

Nguồn cung cấp tốt nhất mà tôi tìm thấy ở đây ở Vương quốc Anh là Seritag - họ có rất nhiều lựa chọn về phong cách khác nhau, lời khuyên tuyệt vời trên trang web của họ, bạn biết chính xác những gì bạn đang nhận được (không phải lúc nào cũng đúng trên Amazon). Họ không có quy mô đặt hàng tối thiểu và rất nhiều lựa chọn. Thẻ bắt đầu ở 27p cho mỗi thẻ

Bước 4: Tải hệ điều hành Raspberry Pi xuống thẻ SD

Tải xuống hệ điều hành Raspberry Pi vào thẻ SD
Tải xuống hệ điều hành Raspberry Pi vào thẻ SD
Tải xuống hệ điều hành Raspberry Pi vào thẻ SD
Tải xuống hệ điều hành Raspberry Pi vào thẻ SD

Trên PC hoặc Mac của bạn, hãy tải xuống và chạy ứng dụng trình hình ảnh Raspberry PI.

Gắn thẻ SD bạn muốn cài đặt hệ điều hành Raspberry Pi.

Nhấp vào CHỌN HĐH và chọn Rasbian mặc định.

Nhấp vào CHỌN THẺ SD và chọn thẻ SD bạn đã cắm vào.

Bấm vào VIẾT. Việc này có thể mất một lúc.

Sau khi hoàn tất, nó sẽ yêu cầu bạn tháo thẻ SD, bạn nên làm như vậy. Nhưng sau đó cắm lại vì có một số điểm quản lý nhà mà bạn cần làm trước tiên.

Bước 5: Bật SSH trên hình ảnh hệ điều hành Raspberry Pi của bạn

Bật SSH trên hình ảnh hệ điều hành Raspberry Pi của bạn
Bật SSH trên hình ảnh hệ điều hành Raspberry Pi của bạn

Sau khi hệ điều hành đã được ghi vào thẻ SD, bạn cần thực hiện một số tác vụ bổ sung.

Chúng tôi muốn truy cập Raspberry Pi mà không cần cắm bàn phím hoặc màn hình (hay còn gọi là "không đầu"), điều này chúng tôi có thể thực hiện qua mạng cục bộ bằng PC hoặc Mac qua giao thức gọi là SSH. Tuy nhiên, vì lý do bảo mật, SSH bị tắt theo mặc định. Chúng ta cần kích hoạt nó.

Chúng tôi có thể làm điều này bằng cách tạo một tệp trống có tên:

ssh

trong thẻ SD mà chúng tôi vừa tạo. Điều quan trọng là điều này không có bất kỳ loại phần mở rộng nào (ví dụ:.txt). Bản thân tệp không cần phải chứa bất kỳ nội dung nào - chỉ cần sự tồn tại của nó sẽ kích hoạt SSH khi Pi khởi động.

Bước 6: Tùy chọn: Thiết lập Wifi trên Raspberry Pi của bạn

Tùy chọn: Thiết lập Wifi trên Raspberry Pi của bạn
Tùy chọn: Thiết lập Wifi trên Raspberry Pi của bạn
Tùy chọn: Thiết lập Wifi trên Raspberry Pi của bạn
Tùy chọn: Thiết lập Wifi trên Raspberry Pi của bạn

Bạn có thể bỏ qua bước này nếu bạn định kết nối Raspberry Pi với bộ định tuyến của mình bằng ethernet. (Mặc dù bạn có thể muốn suy nghĩ kỹ về quyết định đó - để nó chạy qua wifi giúp cuộc sống dễ dàng hơn rất nhiều về mặt định vị điều này)

Tạo một tệp văn bản thuần túy có tên wpa_supplicant.conf trong thư mục gốc của thẻ SD.

Chèn văn bản dưới đây vào tệp:

country = gb

update_config = 1 ctrl_interface = / var / run / wpa_supplicant network = {scan_ssid = 1 ssid = "MyNetworkSSID" psk = "MyPassword"}

Thay đổi quốc gia nếu thích hợp (GB là Vương quốc Anh, Hoa Kỳ là Hoa Kỳ, DE là Đức, v.v.)

Thay đổi thông tin đăng nhập wifi trong đó thành thông tin chi tiết về bộ định tuyến wifi thực tế của bạn.

Lưu các tập tin.

Tháo thẻ SD một cách an toàn.

Bước 7: Tăng sức mạnh cho Raspberry Pi của bạn

Tăng sức mạnh cho Raspberry Pi của bạn
Tăng sức mạnh cho Raspberry Pi của bạn

Đặt thẻ SD bạn vừa tạo vào Raspberry Pi của bạn.

Cắm Raspberry Pi của bạn vào nguồn điện qua cáp USB. Chờ một chút để nó khởi động.

Bước 8: Tìm địa chỉ IP của Raspberry Pi của bạn

Bây giờ bạn cần tìm địa chỉ IP của Raspberry Pi để có thể kết nối với nó. Bạn có thể làm điều này theo hai cách:

  • thông qua trang thiết lập bộ định tuyến của bạn - nếu bạn có bộ định tuyến hiện đại như eero thì điều này rất dễ dàng;
  • hoặc thông qua một ứng dụng điện thoại thông minh có sẵn cho iOS và Android có tên "fing" - tải xuống, kết nối với bộ định tuyến của bạn và quét tìm thiết bị - một trong số chúng phải được gọi là "Raspberry" - đây sẽ là địa chỉ IP bạn cần.

Bước 9: Kết nối với Dòng lệnh Raspberry Pi của bạn

Kết nối với Dòng lệnh Raspberry Pi của bạn
Kết nối với Dòng lệnh Raspberry Pi của bạn

Mở Terminal trên máy mac của bạn (hoặc nếu bạn đang sử dụng Windows, hãy tải xuống và sử dụng Putty).

Nhập lệnh sau:

ssh pi @ [địa chỉ IP của Pi của bạn]

Chấp nhận bất kỳ cảnh báo bảo mật nào bạn nhận được. Bạn sẽ được nhắc nhập mật khẩu cho người dùng pi mặc định là

dâu rừng

Bước 10: Thiết lập GUI OS Raspberry Pi

Thiết lập GUI OS Raspberry Pi
Thiết lập GUI OS Raspberry Pi
Thiết lập GUI OS Raspberry Pi
Thiết lập GUI OS Raspberry Pi

Bây giờ bạn đã kết nối với Pi của mình thông qua dòng lệnh, điều này thật tuyệt nhưng bạn cũng muốn thiết lập nó để bạn có thể truy cập Giao diện người dùng đồ họa mà chúng tôi sẽ truy cập thông qua VNC (Máy tính mạng ảo). Có thể đoán trước được, chúng ta cũng cần kích hoạt điều này.

Trước hết, hãy kiểm tra xem phần mềm Pi của bạn có được cập nhật hay không bằng cách nhập hai lệnh sau (mỗi lệnh tiếp theo là enter) vào dòng lệnh:

cập nhật apt sudo

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

Tiếp theo, mở menu cài đặt Raspberry Pi bằng cách nhập:

sudo raspi-config

Điều hướng đến Tùy chọn Giao diện> VNC> Có.

Thoát khỏi ứng dụng cấu hình bằng cách nhấn phím thoát và khởi động lại Pi từ dòng lệnh bằng cách nhập:

khởi động lại sudo

Bước 11: Kết nối và thiết lập GUI Raspberry Pi của bạn

Kết nối và thiết lập GUI Raspberry Pi của bạn
Kết nối và thiết lập GUI Raspberry Pi của bạn
Kết nối và thiết lập GUI Raspberry Pi của bạn
Kết nối và thiết lập GUI Raspberry Pi của bạn

Tải xuống và mở VNC Viewer.

Nhập địa chỉ IP cho Raspberry Pi của bạn và nhấn kết nối. Nó sẽ nhắc bạn nhập tên người dùng và mật khẩu là:

Tên người dùng = pi

Mật khẩu = raspberry

Điều này sẽ khởi động bạn lên GUI.

Nó sẽ nhắc bạn xác nhận vị trí địa lý và bố cục bàn phím của bạn.

Sau đó, nó sẽ nhắc bạn thay đổi mật khẩu của mình (ý kiến hay).

Nó sẽ yêu cầu bạn thiết lập chi tiết wifi của mình, nhưng bạn có thể bỏ qua điều này vì chúng đã hoạt động. (Mặc dù nếu bạn đang chạy trên ethernet và có suy nghĩ thứ hai thì bây giờ là cơ hội của bạn… nhưng lưu ý rằng địa chỉ IP của bạn có thể thay đổi)

Sau đó, nó sẽ kiểm tra, tải xuống và cài đặt các bản cập nhật (có thể mất một lúc).

Khi bạn đã xem qua trình hướng dẫn thiết lập, tôi khuyên bạn nên thay đổi độ phân giải màn hình vì mặc định khá nhỏ. Bạn có thể thực hiện việc này bằng cách nhấp vào Raspberry ở trên cùng bên trái> Tùy chọn> Cấu hình Raspberry Pi> Hiển thị> Đặt độ phân giải

Bạn sẽ cần khởi động lại Pi một lần nữa để điều này có hiệu lực.

Bước 12: Cài đặt Node.js và NPM

Cài đặt Node.js và NPM
Cài đặt Node.js và NPM

Tiếp theo, bạn muốn tải dòng lệnh Raspberry Pi để cài đặt các phụ thuộc mà chúng ta cần.

Bạn có thể thực hiện việc này bằng cách kết nối qua VNC và nhấp vào nút gần trên cùng trông giống như một dòng lệnh; hoặc bạn có thể kết nối trực tiếp từ Mac / PC của mình bằng Terminal và Putty như chúng tôi đã làm trước đây. Nếu bạn ít quen làm việc với Raspberry Pi thì việc làm trước sẽ dễ dàng hơn.

(Mẹo: Bạn có thể sao chép văn bản từ máy Mac / PC của mình và dán vào Raspberry Pi qua VNC bằng cách nhấn CONTROL-V, nhưng nếu bạn đang cố gắng dán vào Terminal thì bạn cần nhấn CONTROL-SHIFT-V)

Công việc đầu tiên là kiểm tra lại phần mềm của bạn đã cập nhật chưa bằng cách gõ hai lệnh sau. Họ có thể mất một lúc để tải xuống và cài đặt.

sudo apt-get cập nhật

sudo apt-get nâng cấp

Tiếp theo, bạn muốn tải xuống và cài đặt node.js và NPM (đừng quá lo lắng về chúng là gì, chúng hữu ích và cần thiết cho các tác vụ tiếp theo của chúng tôi) bằng cách nhập như sau:

sudo apt-get install nodejs npm

Nó sẽ hỏi bạn một vài lần xem bạn có hài lòng khi chiếm dung lượng ổ đĩa với những thứ này không - bạn nên nhấn Y

Bước 13: Cài đặt SONOS HTTP API

Cơ sở của back end cho dự án của chúng tôi là gói node-sonos-http-api do jishi tạo ra. Bạn có thể đọc tất cả về nó ở đây:

Chúng tôi sẽ tải xuống tệp này từ github bằng lệnh sau được nhập vào dòng lệnh:

git clone

và chúng tôi sẽ cài đặt nó bằng các lệnh sau

cd node-sonos-http-api

npm cài đặt - sản xuất

Sau đó, chúng tôi có thể chạy nó bằng lệnh sau:

npm bắt đầu

Sau khi hoàn tất, chúng ta nên kiểm tra xem nó có đang hoạt động hay không.

Trước hết, hãy mở trình duyệt internet trên Raspberry Pi của chúng tôi và điều hướng đến https:// localhost: 5005 /. Một giao diện đẹp sẽ mở ra với biểu tượng Sonos và một số tài liệu về cách hoạt động của API.

Tiếp theo, hãy kiểm tra xem điều này có đang hoạt động từ mạng rộng hơn hay không bằng cách sử dụng trình duyệt trên PC hoặc Mac khác trên cùng một mạng và điều hướng đến https:// [theIPaddressofyourPi]: 5005 / và xem liệu chúng ta có nhận được kết quả tương tự hay không. Chúng ta nên.

Bây giờ chúng tôi thực sự sẽ làm cho hệ thống làm một cái gì đó. Sử dụng trình duyệt và điều hướng đến:

192.168.4.102:5005/ Phòng ăn / playpause

Bạn nên thay thế địa chỉ IP ở trên bằng địa chỉ của Raspberry Pi và "Phòng ăn" bằng một trong các tên của vùng Sonos của bạn. Nó sẽ phát hoặc tạm dừng (tùy thuộc vào việc nhạc đã được phát hay chưa) âm nhạc trong phòng đó. Rõ ràng cần có thứ gì đó trong hàng đợi Sonos để nó hoạt động.

Về sau, tôi sẽ sử dụng địa chỉ IP và Phòng ăn ở trên làm ví dụ trong suốt hướng dẫn này. Rõ ràng bạn nên thay thế chúng bằng địa chỉ IP và tên vùng của mình vào mỗi dịp.

Bước 14: Làm cho API Sonos HTTP chạy liên tục

Làm cho API Sonos HTTP chạy liên tục
Làm cho API Sonos HTTP chạy liên tục

Thật tuyệt khi chúng tôi có API Sonos HTTP đang chạy, nhưng nếu nó bị lỗi thì sao? Hoặc bạn bị mất nguồn hoặc cần khởi động lại Raspberry Pi của mình?

Bạn có thể thấy hiệu ứng bằng cách đóng cửa sổ đầu cuối và thử lại những gì chúng tôi vừa thử. Nó sẽ không hoạt động vì API HTTP đã dừng cùng với cửa sổ đầu cuối.

Chúng tôi thực sự muốn điều này chạy liên tục và làm như vậy từ khi khởi động. Chúng tôi làm điều này với một thứ hay ho có tên là PM2.

Trong một cửa sổ đầu cuối mới, hãy cài đặt và chạy nó như sau:

sudo npm install -g pm2

trạng thái pm2

Bây giờ, hãy làm cho nó chạy API Sonos HTTP của chúng tôi:

cd node-sonos-http-api

pm2 start npm - start pm2 startup systemd

Lệnh cuối cùng này tạo ra một cái gì đó giống như sau:

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

Sao chép những gì Pi của bạn tạo ra (không phải văn bản chính xác ở trên - của bạn có thể khác) và nhập nó vào dòng lệnh. Điều này hướng dẫn hệ thống chạy PM2 khi khởi động mọi lúc.

Cuối cùng, nhập:

pm2 tiết kiệm

giúp tiết kiệm mọi thứ.

Bây giờ hãy kiểm tra xem điều này đã hoạt động hay chưa bằng cách khởi động lại Raspberry Pi của bạn bằng lệnh

khởi động lại sudo

Hy vọng rằng khi Pi khởi động lại, nó cũng sẽ khởi động PM2 và lần lượt là API Sonos HTTP. Bạn có thể kiểm tra điều này bằng cách sử dụng trình duyệt trên cùng một mạng đến địa chỉ mà chúng tôi đã sử dụng trước đây và xem biểu tượng Sonos và hướng dẫn:

192.168.4.102:5005/

là những gì dành cho tôi, nhưng của bạn sẽ phụ thuộc vào địa chỉ IP.

Bước 15: Chơi một số Spotify

Hãy kiểm tra xem dịch vụ có thể truy cập Spotify hay không.

Mở trình duyệt và điều hướng đến địa chỉ sau (rõ ràng là thay thế bằng địa chỉ IP và tên phòng của bạn):

192.168.4.102:5005/Dining Room / spotify / now / spotify / spotify: album: 2dfTV7CktUEBkZCHiB7VQB

Bạn sẽ nghe John Grant. Thưởng thức.

Bước 16: Tìm URI Spotify

Tìm URI trên Spotify
Tìm URI trên Spotify

Kỳ lạ, tôi biết, nhưng không phải ai cũng thích John Grant. Có thể bạn muốn nghe thứ gì đó khác?

Bạn có thể nhận các liên kết Spotify từ máy tính để bàn, web hoặc ứng dụng di động nhưng Máy tính để bàn là dễ dàng nhất vì nó cung cấp URI ở định dạng chính xác mà bạn muốn, vì vậy hãy bắt đầu với điều đó.

Trong ứng dụng Spotify dành cho máy tính để bàn, hãy điều hướng đến album bạn muốn nghe (có thể là Lemonade của Beyonce?)

Nhấp vào ba dấu chấm nhỏ bên cạnh nút trái tim.

Đi xuống menu để Chia sẻ và chọn Sao chép URI Spotify

Điều này sẽ sao chép một cái gì đó như

Spotify: album: 7dK54iZuOxXFarGhXwEXfF

vào khay nhớ tạm của bạn, đó là Spotify URI cho album Lemondade của Beyonce.

Kích hoạt lại trình duyệt của bạn và điều hướng đến địa chỉ sau (rõ ràng là thay thế địa chỉ IP và phòng và dán vào URI bạn vừa sao chép):

192.168.4.102:5005/Dining Room / spotify / now / [Spotify URI mà bạn muốn phát]

Bạn sẽ nghe thấy sự lựa chọn của bạn chơi.

Nếu bạn thích sử dụng ứng dụng web thì nó sẽ cung cấp cho bạn một liên kết web (giống như bên dưới):

open.spotify.com/album/7dK54iZuOxXFarGhXwEXfF

bạn cần chuyển đổi định dạng này sang định dạng mã spotify: album: ở trên để nó hoạt động.

Bước 17: Lưu ý về URI Spotify

Spotify URI và cách chúng giao diện với node-sonos-http-api rất trực quan, phần lớn.

Bạn có thể liên kết trực tiếp đến album, bản nhạc và danh sách phát.

URI anbom trông giống như sau:

Spotify: album: 6agCM9GJcebduMddgFmgsO

URI bản nhạc trông giống như sau:

Spotify: track: 4fNDKbaeEjk2P4GrRE1UbW

Danh sách phát hoạt động hơi khác một chút. Khi bạn sao chép URI từ Spotify, nó sẽ trông giống như sau:

spotify: danh sách phát: 5huIma0YU4iusLcT2reVEU

Tuy nhiên, để nó thực sự hoạt động trên API, bạn cần thêm spotify: user: vào đầu phần trên. Điều này áp dụng ngay cả với danh sách phát công khai và, vâng, điều đó có nghĩa là bạn đang nói spotify hai lần.

Nói một cách rất rõ ràng, người dùng không cần phải là một tên người dùng cụ thể, chỉ cần người dùng văn bản. Vì vậy, URI chính xác cho danh sách phát ở trên để danh sách phát hoạt động sẽ là:

spotify: user: spotify: playlist: 5huIma0YU4iusLcT2reVEU

Bước 18: Thiết lập Raspberry Pi để gửi yêu cầu

Thiết lập Raspberry Pi để gửi yêu cầu HTTP
Thiết lập Raspberry Pi để gửi yêu cầu HTTP

Thay vì nhập các yêu cầu HTTP theo cách thủ công vào trình duyệt web, chúng tôi muốn tự động hóa nó để Raspberry Pi tự thực hiện điều đó khi được trình bày với một số kích thích nhất định (đầu đọc NFC đang được kích hoạt).

Chúng tôi sẽ sử dụng một thư viện được gọi là các yêu cầu để cho phép Raspberry Pi của chúng tôi thực hiện việc này. Hãy kiểm tra xem nó đã được cài đặt chưa.

Mở thiết bị đầu cuối trên Pi của bạn và nhập như sau:

sudo pip cài đặt yêu cầu

Có khả năng là nó quay lại và nói rằng nó đã được cài đặt rồi, trong trường hợp này thì thật tuyệt. Nếu không, nó sẽ cài đặt nó.

Bước 19: Tạo (các) thẻ NFCC bằng dữ liệu Spotify

Tạo (các) thẻ NFCC bằng dữ liệu Spotify
Tạo (các) thẻ NFCC bằng dữ liệu Spotify
Tạo (các) thẻ NFCC bằng dữ liệu Spotify
Tạo (các) thẻ NFCC bằng dữ liệu Spotify
Tạo (các) thẻ NFCC bằng dữ liệu Spotify
Tạo (các) thẻ NFCC bằng dữ liệu Spotify
Tạo (các) thẻ NFCC bằng dữ liệu Spotify
Tạo (các) thẻ NFCC bằng dữ liệu Spotify

Bây giờ chúng tôi muốn ghi URI album Spotify vào thẻ NFC. Mỗi thẻ trong số này là những gì bạn sẽ sử dụng để yêu cầu Raspberry Pi phát một album cụ thể.

Bạn có thể ghi vào thẻ NFC bằng điện thoại Android, nhưng tôi thấy dễ dàng nhất để làm như vậy thông qua mac hoặc PC vì sau đó bạn có thể dễ dàng nhất để tải Spotify URI từ ứng dụng Spotify dành cho máy tính để bàn.

Cắm đầu đọc USB NFC vào PC hoặc Mac của bạn. Tôi đang sử dụng ACR122U của American Card Systems.

Tải Công cụ NFC xuống PC hoặc Mac của bạn. Cài đặt và mở nó lên.

Đôi khi nó có thể hơi chậm để kết nối với người đọc và có thể nói rằng nó không thể tìm thấy người đọc nào cả. Chuyển đến tab Khác trong công cụ NFC và nhấp thường xuyên vào nút Đầu đọc NFC được kết nối. Bạn có thể phải rút phích cắm và cắm lại đầu đọc một vài lần trước khi nó tìm thấy nó.

Cuối cùng, nó sẽ cung cấp cho bạn tùy chọn để chọn người đọc của bạn từ một danh sách và nói rằng nó đã được kết nối. Chuyển đến tab Thông tin sẽ không hiển thị gì ngoại trừ "Đang chờ thẻ NFC".

Lấy một thẻ NFC trống. Đặt nó trên đầu đọc và để nó ở đó. Công cụ NFC sẽ hiển thị thông tin về thẻ.

Chuyển đến tab Viết và nhấp vào Thêm bản ghi> Văn bản. (Hãy cẩn thận không chọn URL hoặc URI - Tôi biết điều đó rất hấp dẫn vì bạn đang sao chép URI, nhưng bạn muốn văn bản)

Lấy URI từ Spotify bằng phương pháp chúng tôi đã sử dụng trước đây. Nếu bạn muốn có một ví dụ dễ hiểu thì sau đây là album John Grant của chúng tôi trước đó.

Spotify: album: 2dfTV7CktUEBkZCHiB7VQB

Bấm OK và sau đó bấm Viết (đừng quên bước cuối cùng này - nó không thực sự viết nó cho đến khi bạn bấm vào đây). Nó sẽ cho bạn biết nó đã được viết thẻ thành công.

Tháo thẻ khỏi trình đọc

Bước 20: Thiết lập đầu đọc NFC trên Raspberry Pi

Thiết lập đầu đọc NFC trên Raspberry Pi
Thiết lập đầu đọc NFC trên Raspberry Pi

Cắm đầu đọc NFC của bạn vào một trong các cổng USB trên Raspberry Pi của bạn.

Chúng tôi sẽ sử dụng thư viện Python nfcpy để giao tiếp với trình đọc NFC. Cài đặt nó bằng cách nhập nội dung sau trên dòng lệnh Pi của bạn:

pip cài đặt -U nfcpy

Sau đó, chúng tôi có thể kiểm tra xem liệu thư viện này có thể nhìn thấy trình đọc NFC của chúng tôi hay không bằng cách nhập như sau:

python -m nfc

Nếu nó đã hoạt động thì bạn sẽ thấy như sau:

Đây là phiên bản 1.0.3 của nfcpy chạy bằng Python 2.7.16 trên Linux-4.19.97-v7 + -armv7l-with-debian-10.3

Tôi hiện đang tìm kiếm thiết bị không tiếp xúc trong hệ thống của bạn ** tìm thấy ACS ACR122U PN532v1.6 tại usb: 001: 011 Tôi không thử thiết bị nối tiếp vì bạn chưa cho tôi biết - hãy thêm tùy chọn '--search-tty' để tôi tìm - nhưng hãy cẩn thận rằng điều này có thể phá vỡ các nhà phát triển nối tiếp khác

Tuy nhiên, có nhiều khả năng bạn nhận được thông báo lỗi nói rằng trình đọc đã được tìm thấy nhưng người dùng của bạn (pi) không có quyền truy cập vào nó. Nếu bạn nhận được thông báo lỗi này thì nó cũng sẽ giải thích cách khắc phục sự cố, đó là bằng cách nhập hai lệnh trông giống như sau:

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

Sao chép và thực hiện cả hai lệnh mà nó cung cấp cho bạn (không chính xác những gì ở trên, vì lệnh của bạn có thể khác), sau đó rút phích cắm và cắm lại đầu đọc NFC của bạn khỏi cổng USB.

Hãy thử lại lệnh kiểm tra:

python -m nfc

Lần này nó sẽ nói rằng nó đã tìm thấy nó mà không có thông báo lỗi.

Bước 21: Cài đặt Tập lệnh Python của Vinylemulator

Bây giờ chúng tôi có tất cả các khối xây dựng tại chỗ:

  • Raspberry Pi của chúng tôi có thể nghe đầu vào NFC
  • Raspberry Pi của chúng tôi có thể yêu cầu Sonos phát danh sách phát Spotify khi được cung cấp URI Spotify
  • Chúng tôi có thẻ NFC với Spotify URI được lưu trữ trên đó

Bây giờ chúng ta cần kéo tất cả các khối xây dựng này thành một thứ gì đó hữu ích. Điều này được thực hiện thông qua một tập lệnh python ngắn mà tôi đã viết (với rất nhiều sự trợ giúp từ các dự án NFC / Spotify / Sonos trước đây) được gọi là vinylemulator.

Bạn có thể xem mã nguồn của các tệp tại github:

Để cài đặt điều này vào Raspberry Pi của chúng tôi, chúng tôi cần sao chép nó từ github bằng lệnh sau:

git clone

Bước 22: Tùy chỉnh Vinylemulator

Tùy chỉnh Vinylemulator
Tùy chỉnh Vinylemulator
Tùy chỉnh Vinylemulator
Tùy chỉnh Vinylemulator

Mở trình quản lý tệp Raspberry Pi và điều hướng đến trang chủ> pi> vinylemulator

Mở tệp usersettings.py

Một trong các dòng trong tệp này sẽ đọc:

sonosroom = "Phòng ăn"

Thay đổi "Phòng ăn" thành bất kỳ tên phòng Sonos nào bạn muốn kiểm soát.

Cũng có một cài đặt trong tệp này cho phép bạn tùy chỉnh địa chỉ IP của sonos-http-api. Bạn có thể giữ nguyên điều này là "localhost", điều đó có nghĩa là nó sẽ sử dụng Raspberry Pi mà nó đang chạy.

Lưu file và đóng nó lại.

Bước 23: Kiểm tra Vinylemulator

Kiểm tra Vinylemulator
Kiểm tra Vinylemulator
Kiểm tra Vinylemulator
Kiểm tra Vinylemulator

Đi tới dấu nhắc lệnh Raspberry Pi của bạn.

Nhập lệnh sau:

python vinylemulator / readnfc.py

Nếu tất cả đều ổn, điều này sẽ tải script lên và nói rằng người đọc đã sẵn sàng. Đèn trên đầu đọc sẽ chuyển sang màu xanh lục.

Đặt thẻ NFC vào đầu đọc, nó sẽ phát ra tiếng bíp.

Thiết bị đầu cuối sẽ hiển thị những gì nó đã đọc từ thẻ NFC và hiển thị địa chỉ yêu cầu HTTP mà nó đã gửi. Album bạn chọn sẽ phát từ loa Sonos của bạn.

Tập lệnh này sẽ tiếp tục chạy cho đến khi bạn đóng cửa sổ đầu cuối. Bạn có thể nhấn vào các thẻ NFC album khác nhau và nó sẽ chuyển sang album đó.

Bước 24: Nhận Vinylemulator để chạy liên tục và khi khởi động

Cũng giống như sonos-http-api, chúng tôi muốn vinylemulator chạy mọi lúc thay vì chỉ khi chúng tôi gọi nó. Chúng ta có thể sử dụng pm2 để làm điều này một lần nữa.

Trước tiên, hãy đóng bất kỳ phiên bản vinylemulator nào bạn đang chạy bằng cách đóng cửa sổ đầu cuối của chúng.

Sau đó, mở một cửa sổ đầu cuối mới và nhập hai lệnh sau:

pm2 start vinylemulator / readnfc.py

pm2 tiết kiệm

Hãy kiểm tra xem điều đó đã hoạt động chưa bằng cách khởi động lại Raspberry Pi. (Bạn có thể gõ sudo reboot hoặc làm như vậy từ menu Raspberry bằng chuột.

Chờ Pi khởi động lại và xem nó hoạt động bằng cách chạm vào thẻ NFC trên đầu đọc. Bạn sẽ nhận được âm nhạc.

Bước 25: Tự chúc mừng

Mọi thứ hiện đã hoạt động bình thường. Bạn có thể di chuyển Raspberry Pi đến bất cứ nơi nào bạn định đặt nó. Nó sẽ khởi động lại và hoạt động theo cách bạn đã thiết lập bất cứ khi nào bạn cắm nó vào.

Nhiệm vụ tiếp theo của bạn là những nhiệm vụ thú vị: làm cho tất cả trở nên đẹp đẽ.

Bước 26: Làm cho nó đẹp - Ẩn trình đọc của bạn

Làm cho nó đẹp - Ẩn trình đọc của bạn
Làm cho nó đẹp - Ẩn trình đọc của bạn
Làm cho nó đẹp - Ẩn trình đọc của bạn
Làm cho nó đẹp - Ẩn trình đọc của bạn
Làm cho nó đẹp - Ẩn trình đọc của bạn
Làm cho nó đẹp - Ẩn trình đọc của bạn
Làm cho nó đẹp - Ẩn trình đọc của bạn
Làm cho nó đẹp - Ẩn trình đọc của bạn

Phần đầu tiên của việc làm cho nó đẹp là giấu đầu đọc NFC bằng nhựa màu trắng khó chịu đi đâu đó.

Tôi đã sử dụng một tùy chọn công nghệ cực kỳ thấp là dán nó vào mặt dưới của bộ đếm bên cạnh Sonos Play: 5 của tôi. Gỗ của quầy đủ mỏng để NFC có thể đi qua, vì vậy tôi phát nhạc bằng cách chạm vào thẻ NFC vào một điểm huyền diệu và vô hình.

Đề xuất: