Mục lục:
- Bước 1: Thiết bị
- Bước 2: Thiết lập Raspberry Pi
- Bước 3: Thiết lập mã mẫu
- Bước 4: Tạo chứng chỉ SSL tự ký
- Bước 5: Kết nối phần cứng
- Bước 6: Mã phía máy chủ
- Bước 7: Mã trang web
- Bước 8: Cuối cùng
Video: Disco-pi: 8 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Tài liệu hướng dẫn này cho biết cách sử dụng Raspberry Pi để điều khiển dải đèn LED màu, dựa trên nhạc được phát từ trình duyệt web.
Nó chỉ ra cách tạo một trang web cơ bản bằng Node.js qua HTTPS và sử dụng socket.io qua WSS (Secure Websocket).
Trang web có một trang duy nhất có bố cục rất cơ bản. Trang web điền vào một danh sách thả xuống với các tệp nhạc nằm trong thư mục công cộng / âm thanh trên máy chủ. Chọn một tùy chọn trong danh sách sẽ phát tệp nhạc trong trang web bằng phần tử âm thanh HTML 5. Trong khi phát tệp nhạc, trang web sử dụng giao diện AudioContext để phân tích nhạc, sau đó được gửi đến máy chủ qua kết nối websocket an toàn.
Máy chủ chạy trên Raspberry Pi sử dụng thư viện Node RPI WS281x Native (gói thư viện WS281X của Jeremy Garff) để thay đổi màu sắc của đèn LED trên dải LED WS2811, dựa trên dữ liệu được gửi qua websocket.
Mã ví dụ có thể được tìm thấy ở đây: disco-pi
Bước 1: Thiết bị
- Raspberry Pi - Tôi đã sử dụng Raspberry Pi 2B mà tôi đã đặt xung quanh, nhưng bạn có thể nhận được Bộ khởi động Raspberry Pi 3 với giá khoảng 100 CAD
- WS2811 LED Strip - Tôi đang chơi với ALITOVE 16,4ft 150 Pixels WS2811. Điều này đi kèm với một bộ điều khiển và một bộ nguồn với giá khoảng 45-50 CAD
- Đầu nối Jack thùng - Tôi đã mua một cái từ cửa hàng điện tử gần nhà, một cái như thế này. Chỉ cần đảm bảo nếu phù hợp với nguồn điện của bạn
- Đầu nối Jumper / Dây - Tôi đã có một số cáp kết nối Nữ đến Nam và một số dây 22 Gauge Solid hook up nằm xung quanh
Bước 2: Thiết lập Raspberry Pi
Hệ điều hành
Tôi thường sử dụng bản dựng Raspbian mới nhất. Tải xuống hình ảnh và ghi nó vào thẻ SD. Nếu bạn đang sử dụng máy tính Windows, bạn có thể sử dụng Win32 Disk Imager để ghi hình ảnh vào thẻ SD.
Node.js
Cài đặt phiên bản mới nhất của Node.js. Tại thời điểm viết bài, tôi đang sử dụng 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Cài đặt git
sudo apt-get install git
Bước 3: Thiết lập mã mẫu
Sao chép mã ví dụ
1. Thiết lập một thư mục cơ sở để cài đặt vào
cd / opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Sao chép kho lưu trữ git ví dụ
git clone https://github.com/haydockjp/disco-pi.git"
hoặc
git clone [email protected]: haydockjp / disco-pi.git
3. Cài đặt các phụ thuộc
cd disco-pi
cài đặt npm
Quá trình này có thể mất 2-3 phút
Bước 4: Tạo chứng chỉ SSL tự ký
1. Tạo tệp khóa riêng tư
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Tạo CSR (Yêu cầu ký chứng chỉ)
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
Tại thời điểm này, bạn sẽ được nhắc cung cấp một số thông tin cho yêu cầu chứng chỉ. Vì đây là chứng chỉ tự ký nên bạn điền thông tin chi tiết chính xác đến mức nào. Đây là một ví dụ
Tên quốc gia (mã 2 chữ cái) [AU]: CA
Tên tiểu bang hoặc tỉnh (tên đầy đủ) [Một số tiểu bang]: Tên địa phương British Columbia (ví dụ: thành phố) : Tên tổ chức Vancouver (ví dụ: công ty) [Internet Widgits Pty Ltd]: Tên đơn vị tổ chức Disco Pi (ví dụ: phần) : Tên thông dụng (ví dụ: máy chủ FQDN hoặc tên BẠN) : disco-pi Địa chỉ email : [email protected] Mật khẩu thử thách : Tên công ty tùy chọn :
Trong ví dụ này, chỉ cần nhấn quay lại để trống mật khẩu thử thách
3. Tạo chứng chỉ
openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Để tăng cường bảo mật, chúng tôi cũng sẽ tạo tệp Diffie Hellman Parameters
openssl dhparam -out dh_2048.pem 2048
Quá trình này có thể mất 15-20 phút
Bước 5: Kết nối phần cứng
Cấp nguồn cho dải đèn LED
Dải đèn LED được cung cấp năng lượng bởi 12 volt. Raspberry Pi chỉ có khả năng xuất ra 3,3v hoặc 5v và không có khả năng xuất ở bất kỳ đâu gần các ampe cần thiết để điều khiển nhiều đèn LED như vậy.
Điều quan trọng là không kết nối nguồn điện 12 volt với Raspberry Pi.
Dải của tôi cũng có dây nguồn bổ sung được kết nối với dải ở hai đầu. Tôi đề nghị bạn nên băng những thứ này lại để chúng không tiếp xúc với bất kỳ thiết bị nào khác của bạn.
Thực hiện các bước tiếp theo tự chịu rủi ro. Tôi không chịu trách nhiệm về bất cứ điều gì có thể xảy ra sai sót.
Dải đèn LED
Dải đèn LED của tôi có ba dây:
ĐỎ - +12 Volts
ĐEN - Mặt đất
XANH - Dữ liệu
LƯU Ý: có một Din và một Dout - Dữ liệu vào và Dữ liệu ra. Đảm bảo rằng bạn đang làm việc với phần cuối của dải đèn LED có chữ Din.
Đảm bảo rằng Jack thùng không được kết nối với nguồn điện
1. Kết nối dây Màu đỏ từ dải đèn LED với + bên của Giắc cắm thùng.
Tôi đã sử dụng một dây trắng 22 gauge hook up.
Đặt dây vào khe + trong giắc cắm thùng và vặn cố định.
Đẩy đầu dây còn lại vào ổ cắm trên đèn LED. Đảm bảo bạn đang kết nối với dây màu đỏ.
2. Kết nối dây Đen từ dải đèn LED với - bên hông của Giắc cắm thùng.
Tôi đã sử dụng một dây móc 22 gauge màu đen.
Đặt dây vào khe - trong giắc cắm thùng. Tại thời điểm này, cũng đặt đầu đực của một trong các cáp kết nối (dây màu nâu trong ảnh) vào cùng một lỗ và vặn cả hai vào đúng vị trí.
Đẩy đầu còn lại của dây đen vào ổ cắm trên đèn LED.
Đảm bảo bạn đang kết nối với dây đen.
3. Kết nối dây màu xanh lá cây từ dải đèn LED
Đi một trong các cáp kết nối cái với đầu đực. Trong ảnh của tôi, đây là dây màu xanh lá cây.
Đặt đầu đực vào ổ cắm LED với dây màu xanh lá cây.
Đây là cáp dữ liệu.
Raspberry Pi
1. Lấy cáp kết nối màu xanh lá cây và kết nối nó với Raspberry Pi GPIO.
Bạn cần kết nối nó với PCM_CLK (Pin 12 / GPIO 18)
2. Lấy cáp kết nối màu đen và kết nối nó với Raspberry Pi GPIO.
Bạn cần kết nối nó với một trong những cơ sở. Tôi khuyên bạn nên sử dụng pin 14, nhưng bạn cũng có thể sử dụng pin 6, 9, 20, 25, 30, 34 hoặc 39.
LƯU Ý: để nguồn điện LED hoạt động và Raspberry Pi phải có điểm chung. Cũng lưu ý rằng bạn không được kết nối 12 Volt + (dây Đỏ) với Raspberry Pi.
Nguồn LED
Bạn sẽ không thể kết nối nguồn điện 12 volt của mình với giắc cắm thùng
Tất cả các đèn LED trên dải đèn LED của bạn bây giờ sẽ sáng TRẮNG
Bước 6: Mã phía máy chủ
Chạy mã phía máy chủ
cd /opt/com.jonhaydock/disco-pi
sudo npm bắt đầu
Thao tác này sẽ khởi động máy chủ web và bắt đầu lắng nghe các yêu cầu HTTPS và WSS.
Cổng mặc định là 443, nhưng bạn có thể ghi đè điều này bằng cách đặt một biến môi trường trước khi bắt đầu mã. Ví dụ
xuất DISCO_PI_PORT = 1443
Dải đèn LED của tôi có 150 đèn LED. Chúng được kiểm soát trong các nhóm ba người. Điều này có nghĩa là tôi không thể điều khiển từng đèn LED riêng lẻ và tôi cần gửi đủ thông tin để điều khiển 50.
Nếu đèn LED của bạn có nhiều hơn hoặc ít hơn, bạn có thể ghi đè số lượng đèn LED mà bạn đang kiểm soát bằng cách chuyển một tham số vào phần khởi động. Ví dụ: nếu bạn chỉ có thể điều khiển 10 đèn LED
sudo npm bắt đầu 10
Mã máy chủ chính có thể được tìm thấy trong tệp app.js. Tệp này khởi động máy chủ web HTTPS và cũng thêm vào socket.io để lắng nghe các yêu cầu websocket trên cùng một cổng.
Để truy cập trang web, bạn nên mở trình duyệt web trên máy tính chính của mình (tôi chỉ thử nghiệm điều này trong Chrome) và sử dụng địa chỉ IP của Raspberry Pi, ví dụ:
10.0.1.2/
Bạn có thể tìm ra địa chỉ IP của mình từ dòng lệnh Raspberry Pi.
ifconfig
Máy chủ web sẽ phục vụ bất kỳ nội dung nào trong thư mục chung. Nó mặc định hiển thị trang index.html.
Nó có một điểm cuối API - / api / audio. Điểm cuối này tìm kiếm bất kỳ tệp nào trong thư mục công khai / âm thanh và trả về danh sách. Ví dụ
["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "This Is What You Came For (feat. Rihanna).mp3"]
Để thêm nhạc dưới dạng tùy chọn, hãy sao chép tệp vào thư mục này. Cá nhân tôi sử dụng Filezilla qua ssh. Thư mục mà bạn muốn thêm tệp vào là /opt/com.jonhaydock/disco-pi/public/audio
Bước 7: Mã trang web
Khi bạn truy cập vào trang web, bạn sẽ thấy một cái gì đó như thế này.
Nếu bạn nhìn thấy cảnh báo bảo mật, điều này là do chúng tôi đang sử dụng chứng chỉ SSL tự ký. Bạn có thể bỏ qua nó hoặc thêm nó như một ngoại lệ.
Khi chọn tên tệp, nguồn cho phần tử âm thanh HTML 5. sẽ được đặt thành tệp đó. Khi đã sẵn sàng, nhạc sẽ bắt đầu phát. Sau khi bài hát kết thúc, âm nhạc sẽ dừng lại.
Nếu bạn chọn tùy chọn Không có, nhạc sẽ ngừng phát.
Trong khi phát tệp nhạc, trang web sử dụng giao diện AudioContext để phân tích nhạc, sau đó được gửi đến máy chủ qua kết nối websocket an toàn.
Thông báo là loại socket.io trên máy chủ đã được thiết lập để lắng nghe "ws2811". Nó chứa một mảng gồm 50 phần tử, có giá trị từ 0 đến 255.
"ws2811", {"0": 251, "1": 252, "2": 241, "3": 217, "4": 193, "5": 164, "6": 148, "7": 139, "8": 110, "9": 96, "10": 81, "11": 67, "12": 72, "13": 66, "14": 60, "15": 60, "16": 63, "17": 54, "18": 37, "19": 30, "20": 31, "21": 26, "22": 13, "23": 3, " 24 ": 10," 25 ": 7," 26 ": 6," 27 ": 0," 28 ": 0," 29 ": 0," 30 ": 1," 31 ": 8," 32 ": 12, "33": 3, "34": 2, "35": 2, "36": 0, "37": 0, "38": 0, "39": 0, "40": 0, "41": 0, "42": 0, "43": 0, "44": 0, "45": 0, "46": 0, "47": 0, "48": 0, " 49 ": 0}
Máy chủ sử dụng thư viện Node RPI WS281x Native (gói thư viện WS281X của Jeremy Garff) để thay đổi màu sắc của đèn LED trên dải LED WS2811, dựa trên dữ liệu được gửi qua websocket.
Bước 8: Cuối cùng
Bạn sẽ thấy các đèn LED trên dải chuyển màu theo nhạc, dựa trên phân tích Fast Fourier Transform được thực hiện trên trang web.
Tôi hy vọng rằng bạn thích điều này. Hãy cho tôi biết bạn làm gì với nó!
LƯU Ý: Nếu bạn có bất kỳ vấn đề nào
Vì thư viện này và audioboth Raspberry Pi trên bo mạch sử dụng PWM nên chúng không thể được sử dụng cùng nhau.
Bạn có thể cần đưa vào danh sách đen mô-đun hạt nhân âm thanh Broadcom bằng cách tạo tệp /etc/modprobe.d/snd-blacklist.conf với
danh sách đen snd_bcm2835
Nếu thiết bị âm thanh vẫn đang tải sau khi đưa vào danh sách đen, bạn cũng có thể cần phải nhận xét thiết bị đó trong tệp / etc / modules. Trên các hệ thống không đầu, bạn cũng có thể cần buộc âm thanh qua hdmi
Chỉnh sửa config.txt và thêm:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Cần phải khởi động lại để thay đổi này có hiệu lực
Đề xuất:
Máy ảnh hồng ngoại hình ảnh nhiệt tự làm: 3 bước (có hình ảnh)
Máy ảnh hồng ngoại hình ảnh nhiệt tự làm: Xin chào! Tôi luôn tìm kiếm các Dự án mới cho các bài học vật lý của mình. Hai năm trước, tôi đã xem một báo cáo về cảm biến nhiệt MLX90614 từ Melexis. Loại tốt nhất chỉ với 5 ° FOV (trường nhìn) sẽ phù hợp với máy ảnh nhiệt tự chế
Tự làm cảm biến hình ảnh và máy ảnh kỹ thuật số: 14 bước (có hình ảnh)
Tự làm cảm biến hình ảnh và máy ảnh kỹ thuật số: Có rất nhiều hướng dẫn trực tuyến về cách xây dựng máy ảnh phim của riêng bạn, nhưng tôi không nghĩ rằng có bất kỳ hướng dẫn nào về việc xây dựng cảm biến hình ảnh của riêng bạn! Cảm biến hình ảnh có sẵn từ rất nhiều công ty trực tuyến và việc sử dụng chúng sẽ giúp thiết kế
Hình ảnh - Máy ảnh Raspberry Pi in 3D.: 14 bước (có Hình ảnh)
Hình ảnh - Máy ảnh Raspberry Pi 3D được in: Cách đây trở lại vào đầu năm 2014, tôi đã xuất bản một máy ảnh có thể hướng dẫn được gọi là SnapPiCam. Máy ảnh được thiết kế để đáp ứng với Adafruit PiTFT mới được phát hành. Đã hơn một năm trôi qua và với bước đột phá gần đây của tôi vào in 3D, tôi nghĩ rằng n
MÁY ẢNH UNICORN - Raspberry Pi Zero W NoIR Cấu hình máy ảnh 8MP: 7 bước (có hình ảnh)
UNICORN CAMERA - Raspberry Pi Zero W NoIR Camera 8MP Build: Pi Zero W NoIR Camera 8MP BuildThis hướng dẫn được tạo ra để giúp bất kỳ ai muốn có Camera hồng ngoại hoặc Camera di động thực sự tuyệt vời hoặc Camera Raspberry Pi di động hoặc chỉ muốn giải trí, heheh . Đây là cấu hình và giá cả phải chăng nhất
Ánh sáng video thân mật / Ánh sáng chụp ảnh cầm tay: 7 bước (với hình ảnh)
Ánh sáng video thân mật / Ánh sáng chụp ảnh cầm tay: Tôi biết bạn đang nghĩ gì. Bằng cách " thân mật, " Ý tôi là chiếu sáng cận cảnh trong các tình huống ánh sáng khó - không nhất thiết dành cho " các tình huống thân mật. &Quot; (Tuy nhiên, nó cũng có thể được sử dụng cho việc đó …) Là một nhà quay phim thành phố New York - hoặc