Mục lục:

Raspitone: Dễ sử dụng Jukebox: 7 bước
Raspitone: Dễ sử dụng Jukebox: 7 bước

Video: Raspitone: Dễ sử dụng Jukebox: 7 bước

Video: Raspitone: Dễ sử dụng Jukebox: 7 bước
Video: Готовые видеоуроки для детей 👋 #вокалонлайн #вокалдлядетей #развитиедетей #ритм #распевка 2024, Tháng mười một
Anonim
Raspitone: Jukebox dễ sử dụng
Raspitone: Jukebox dễ sử dụng

Xin chào, dự án tiếp theo của tôi, như tôi thường làm, là một dự án không hữu ích lắm:

Đây là một máy hát tự động dựa trên Raspberry 3 B +

Tôi biết, những việc như thế này có thể dễ dàng thực hiện với điện thoại thông minh và loa Bluetooth.

Nhưng đối với dự án của tôi, tôi có hai điều kiện tiên quyết khó khăn:

Tôi muốn làm một cái gì đó "cổ điển".

Và nhìn chung, với thực tế là phụ nữ của tôi hoàn toàn không còn hy vọng gì với máy tính hoặc bluetooth hoặc bất cứ thứ gì khác từ thế kỷ 21, (và thậm chí cả thế kỷ 20), tôi đã phải làm một cái gì đó rất đơn giản để sử dụng ………

Vì vậy, các thông số kỹ thuật như sau:

Một nút nhấn duy nhất để khởi động máy

Một màn hình cảm ứng (rất đơn giản) để quản lý nhạc.

Một lần chạm vào màn hình để dừng máy.

Và để có một âm thanh hay ………

Quân nhu

Đối với điều này, tôi đã sử dụng:

1 Raspberry 3 B +

1 rạp chiếu phim gia đình cũ không dùng được do đầu đọc DVD OOS (một chiếc Samsung 2.1 cũ có loa trầm và 2 loa mà tôi đã sửa đổi để vừa với hộp)

1 bo mạch HIFIBERRY DIGI + (với đầu ra quang học cho Amp công suất)

1 màn hình cảm ứng điện dung 7 (của tôi là Makeasy cho mâm xôi với đầu vào HDMI và được cấp nguồn qua USB nhưng bất kỳ màn hình cảm ứng HDMI nào cũng được)

1 nguồn 5V 5A

1 lá chắn tiếp điện

1 Arduino nano để quản lý quá trình BẬT / TẮT nguồn

1 IR được dẫn để điều khiển rạp chiếu phim gia đình (được dẫn bởi một bóng bán dẫn NPN 2N2222)

1 bộ thu IR (đối với phần học mã IR của dự án, tôi lấy từ một đĩa cứng Đa phương tiện cũ với lệnh từ xa)

3 dẫn

1 công tắc cho chế độ bảo trì

1 công tắc để làm việc trên arduino (trong quá trình tải lên, arduino được đặt lại)

một số kết nối JST và Dupont

Và cho cái hộp

Gỗ và ván ép (nhưng tôi sẽ không mô tả sâu về việc tạo ra hộp). chỉ cần nói rằng, liên quan đến boomer bên trong hộp, ván ép 10 mm và gỗ 18 mm là bắt buộc nếu bạn không muốn thấy Jukebox băng qua phòng khách trong khi chơi !!!!

Bước 1: Mô tả phần Raspberry:

Raspi phải quản lý những thứ khác nhau:

1) các lệnh đến rạp chiếu phim gia đình (thông qua điều khiển từ xa IR)

2) các tập tin nhạc

3) màn hình cảm ứng

4) Nhịp tim của Arduino (quản lý Wdt (bộ đếm thời gian cho chó xem))

Tôi bắt đầu từ bản phân phối trải nghiệm Raspbian trên thẻ SD 16 G (Vì chúng tôi sẽ chỉ đọc các tệp từ thẻ SD nên việc sử dụng ổ cứng là không cần thiết). Tôi sẽ không dành thời gian cho phần này vì trên web có đầy đủ các hướng dẫn về nó..

Hãy xem các phần khác nhau trong các bước tiếp theo….

Bước 2: Mã từ xa IR

Vì tôi không thể tìm thấy sơ đồ mạch điện của rạp chiếu phim tại nhà, tôi quyết định lái nó qua lệnh từ xa

Bước đầu tiên tôi phải hoàn thành là học cách Raspi các mã của lệnh điều khiển từ xa tại rạp chiếu phim tại nhà. Vì vậy, tôi đã sử dụng các hướng dẫn rất tốt trong Các mã nguồn từ Austin Stanton IR

Tôi đã có một số khác biệt, có thể là do phiên bản mới vì các hướng dẫn đã khá cũ, tệp tin Hard.conf không còn tồn tại (ít nhất là tôi không tìm thấy nó)

Có vẻ như bóng bán dẫn được sử dụng trong hướng dẫn là bóng bán dẫn PNP, về phần tôi, tôi đã sử dụng bóng bán dẫn 2N2222 là NPN nhưng kết quả là giống nhau. (Ngoại trừ cáp !!!!!!!!)

Việc gán mã pin được đưa ra trong /boot/config.txt:

#autorisation de lirc le 2019-07-08dtoverlay = lirc-rpi, gpio_out_pin = 22, gpio_in_pin = 23

IR LED sẽ được kết nối với chân 22 của Raspi.

Một lưu ý quan trọng: khi học các mã cho Raspi, bắt buộc phải sử dụng các từ khóa được liệt kê trong lệnh

không thể ghi - danh sách-không gian tên

Đây là tệp tôi đã tạo cho máy hát tự động của mình:

pi @ raspitone: / etc / lirc $ cat lircd.conf

# Vui lòng dành thời gian để hoàn thành tệp này như được mô tả trong # https://sourceforge.net/p/lirc-remotes/wiki/Check… # và cung cấp cho người khác bằng cách gửi đến # #

# Tệp cấu hình này đã được tạo tự động

# using lirc-0.9.4c (mặc định) vào Thứ Năm ngày 9 tháng 5 17:33:37 2019 # Dòng lệnh được sử dụng: -d / dev / lirc0 /root/lircd.conf

# Phiên bản hạt nhân (uname -r): 4.14.98-v7 + # # Tên từ xa (kể từ tệp cấu hình): jukebox

# Thương hiệu của thiết bị điều khiển từ xa, thứ bạn cầm trên tay: # Kiểu thiết bị điều khiển từ xa nr:

# Url thông tin thiết bị từ xa:

# Thiết bị từ xa có thiết bị chụp ảnh đi kèm không e. g., a

# USB dongle?:

# Đối với thiết bị USB đi kèm: id nhà cung cấp usb, id sản phẩm

# và chuỗi thiết bị (sử dụng dmesg hoặc lsusb):

# Loại thiết bị được kiểm soát

# (TV, VCR, Audio, DVD, Satellite, Cable, HTPC,…):

# (Các) thiết bị được điều khiển bởi điều khiển từ xa này:

bắt đầu từ xa

máy hát tự động tên

bit 16

cờ SPACE_ENC | CONST_LENGTH

eps 30

tiếng bíp 100

tiêu đề 4470 4496

một 542 1693

số không 542 581

ptrail 553

pre_data_bits 16

pre_data 0xC2CA

khoảng cách 107863

toggle_bit_mask 0x0

tần số 38000

bắt đầu mã

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

mã kết thúc

kết thúc điều khiển từ xa

Như bạn thấy, tôi chỉ cần 4 lệnh để điều khiển Home Cinema

Bật / tắt nguồn)

AUX => để chuyển sang kênh đầu vào quang học (vì HC luôn khởi động trên đầu đọc DVD)

Và Âm lượng +/-

Các lệnh liên quan được thực hiện thông qua các lệnh LIRC:

ví dụ: "irsend SEND_ONCE máy hát tự động KEY_VOLUMEUP"

Bước 3: Chương trình chính

Chương trình chính được viết bằng Python:

Vì tôi là người mới sử dụng Python, tôi đoán có thể thực hiện được rất nhiều cải tiến nhưng nó vẫn chạy….

Các thông số kỹ thuật:

1) quản lý màn hình đồ họa:

Đối với điều này, tôi đã sử dụng APPJAR là TKINTER nhưng văn minh cho sinh viên (trường hợp của tôi), điều này có nghĩa là dễ sử dụng hơn nhiều, có lẽ với ít khả năng hơn, nhưng nó đủ cho mục đích của tôi.

2) phát các tệp mp3:

Tôi đã sử dụng mplayer cho python.

3) tạo các số ngẫu nhiên để chơi ở chế độ trộn:

Vì tôi không muốn nghe cùng một bài hát mỗi quý, nên tôi đã xây dựng một chương trình nhỏ để kiểm tra xem số có không xuất hiện trong danh sách x số trước đó hay không (x tùy thuộc vào độ dài của danh sách phát).

Hàm randint trong python không quá "ngẫu nhiên" như tôi đã thấy.

4) gửi "nhịp tim" đến Arduino

5) quản lý trình phát tệp:

Vì Mplayer không đồng bộ, khi tệp được khởi động, không có cách nào để biết đối với Python khi nào nó hoàn thành (ít nhất là tôi đã không tìm thấy một cách đơn giản)

Để giải quyết vấn đề đó, tôi đã sử dụng các lệnh mplayer cung cấp độ dài của tệp và tiến trình trong tệp hiện tại

Đối với cả 4 và 5, tôi đã sử dụng khả năng do Appjar đưa ra để tạo một nhiệm vụ định kỳ (vì appjar là một chương trình sự kiện nên đây là một cách để tạo một sự kiện định kỳ). chức năng là:

# ******************* start taskman ********************** app.registerEvent (taskman)

p.setPollTime (1000)

Taskman cho "trình quản lý tác vụ" là một định nghĩa trong chương trình quản lý tất cả những gì không phải là sự kiện trên màn hình (kết thúc tệp đã phát, điền thanh tiến trình, gửi nhịp tim đến Nano,….)

Sau khi bắt đầu, màn hình trông như thế này:

Hình ảnh
Hình ảnh

Đây là chương trình: (có thể mở bằng Notepad ++ hoặc Geany)

Bước 4: Phần Raspberry: tự động khởi động và thêm tệp mới

Nếu bạn nhìn vào chương trình, bạn có thể thấy rằng tôi sử dụng một số tệp bash:

1) Start_jukebox:

Trên thực tế, mục đích là để bật nguồn rạp chiếu phim Gia đình và chuyển sang đầu vào D. IN (đầu vào quang học trong rạp chiếu phim Gia đình của tôi)

pi @ raspitone: / bin $ cat start_jukebox #! / bin / bash

irsend SEND_ONCE máy hát tự động KEY_POWER

ngủ 7

irsend SEND_ONCE máy hát tự động KEY_AUX

ngủ 2

2) stop_jukebox:

Cách tắt nguồn rạp chiếu phim tại nhà

pi @ raspitone: / bin $ cat stop_jukebox

#! / bin / bash

irsend SEND_ONCE máy hát tự động KEY_POWER

Hai tệp bash này được Python gọi bằng lệnh os.system

Để bắt đầu tập lệnh Python, tôi đã thực hiện một bước nhỏ

pi @ raspitone: ~ $ cat dem_jukebox.bash #! / bin / bash

cd / home / pi

python jukebox_gui.py

Để tự động khởi động ở chế độ GUI, tôi vừa sửa đổi tệp tự khởi động trong / etc / xdg / lxsession / LXDE-pi

pi @ raspitone: / etc / xdg / lxsession / LXDE-pi $ cat autostart @ lxpanel - tập tin LXDE-pi

@pcmanfm --desktop - hồ sơ LXDE-pi

@xscreensaver -no-splash

@lxterminal --command = "dem_jukebox.bash"

point-rpi

Thêm tệp mp3 mới:

Để thêm các tệp mới, tôi muốn tạo một tập lệnh Python nhỏ chuyên dụng:

new_song_file.py

Đầu tiên tôi sẽ giải thích về tổ chức tệp hệ thống:

Tất cả các tệp đều nằm trong / home / pi

các tệp mp3 được lưu trong thư mục / home / pi / Music

Mỗi nghệ sĩ có thư mục con riêng của mình để lưu trữ các tệp mp3 liên quan

pi @ raspitone: ~ / Music / Mike_oldfield $ ls -lt tổng số 760516

-rwxr ----- 1 pi pi 2254923 juin 30 2017 A_New_Beginning.mp3

-rwxr ----- 1 pi pi 2691736 juin 30 2017 Arrival.mp3

-rwxr ----- 1 pi pi 8383244 juin 30 2017 Ascension.mp3

-rwxr ----- 1 pi pi 5410816 juin 30 2017 Blue_Night.mp3

-rwxr ----- 1 pi pi 13125199 juin 30 2017 Castaway_ (Nhạc cụ).mp3

-rwxr ----- 1 pi pi 12903583 juin 30 2017 Castaway.mp3

-rwxr ----- 1 pi pi 2969869 juin 30 2017 Celt.mp3

-rwxr ----- 1 pi pi 9047745 juin 30 2017 Chariots_ (Instrumental).mp3

-rwxr ----- 1 pi pi 9403263 juin 30 2017 Chariots.mp3

Trong thư mục Documents, chúng ta có thể tìm thấy danh sách các tệp đã xây dựng để chơi.

pi @ raspitone: ~ / Tài liệu $ cat list.txtFranz_Ferdinand / Michael_live.mp3

Franz_Ferdinand / evil_and_a_heathen.mp3

Franz_Ferdinand / Walk_Away_live.mp3

Franz_Ferdinand / love_and_destroy.mp3

Franz_Ferdinand / his_fffire.mp3

Franz_Ferdinand / eleanor_put_your_boots_on.mp3

Franz_Ferdinand / thiếu_you.mp3

Franz_Ferdinand / this_fire_ (playgroup_remix).mp3

Franz_Ferdinand / Jacqueline.mp3

Chúng tôi cũng có thể tìm thấy dữ liệu danh sách phát (nhưng dữ liệu này được tạo bởi tập lệnh Python)

Tập lệnh Python nhỏ thêm các bài hát mới, được lưu trong Nhạc, trong list.txt sau khi đã định dạng các tittles ở định dạng UNIX

Đây là tập lệnh: (có thể mở bằng Notepad ++ hoặc Geany)

Bước 5: Quản lý nguồn thông qua Arduino Nano

Vì tôi muốn có một cái gì đó dễ dàng để bắt đầu, tôi quyết định thực hiện nó bằng một nano nhỏ:

Nguyên tắc:

Khi nhấn nút khởi động, tất cả các thiết bị đều được cấp nguồn, nano sẽ khởi động (1 hoặc 2 giây) và tiếp quản việc quản lý nguồn bằng cách kích hoạt một rơ le làm tắt các điểm tiếp xúc của nút nhấn.

Sau đó, Nano đợi 35 giây để nhận nhịp tim từ Raspberry (có nghĩa là quá trình bắt đầu hoàn tất và chương trình máy hát tự động chạy).

Miễn là nano nhận được nhịp tim, nó sẽ tiếp tục bật (Đồng hồ hẹn giờ cho chó)

Nếu không còn nhịp tim nữa (có nghĩa là chương trình máy hát tự động bị dừng) Nano đợi trong 20 giây (để chắc chắn rằng raspi đã dừng hoàn toàn) để nhả rơ le nguồn.

Máy hát tự động sau đó hoàn toàn bị Tắt nguồn

Tôi đã thêm một công tắc để kích hoạt đầu vào của nano để chỉ ra chế độ bảo trì (tôi sử dụng máy hát tự động để quản lý các máy chủ raspi khác của mình thông qua ssh et vnc). Sau đó, Nano sẽ vô hiệu hóa quy trình canh gác

Nhận xét:

đầu vào cho nhịp tim từ Raspi cần được kéo xuống (nhưng 3.3V từ Raspi được Nano coi là mức cao)

Nó có thể được thực hiện với NE555 nhưng tôi rất buồn và luôn có một số nano trong ngăn kéo của mình !!!!

Đây là chương trình C ngắn (có thể mở bằng Notepad ++)

Bước 6: Hệ thống cáp

Hệ thống cáp
Hệ thống cáp
Hệ thống cáp
Hệ thống cáp

Đối với màn hình:

Cáp HDMI và cáp USB được sử dụng trên Raspi để cấp nguồn và điều khiển màn hình.

Đối với bảng điều khiển phía trước:

Một cáp USB cũng được kết nối từ Raspi để có thể tải lên các tệp mới hoặc tạo bản sao lưu.

Cáp USB được kết nối từ Nano để có thể truy cập phần mềm (để sửa đổi nếu cần)

Tôi cũng cắm một dongle bàn phím không dây trên mâm xôi để có thể bảo trì mà không cần sử dụng đầu cắm USB bên ngoài

Vì Raspberry và Arduino được sử dụng, hệ thống cáp khá đơn giản.

Tất cả đều nằm trên một bảng ma trận dải.

GPIO từ mâm xôi 2 được sử dụng:

Pin22 cho đèn LED hồng ngoại

Pin 27 cho nhịp tim với Arduino

trên Arduino

Pin 2 được sử dụng làm chân ngắt nhịp tim từ Raspi.

Các chân từ 3 đến 5 được sử dụng để điều khiển đèn led (Khởi động, Wdt, Bảo dưỡng).

Chân 6 dành cho công tắc bảo trì.

Chân 7 là đầu ra cho lá chắn rơ le.

Đây là tệp fritzing:

Bước 7: Hộp

Cái hộp
Cái hộp

Tôi sẽ không mô tả nhiều về những gì tôi đã làm vì nó phụ thuộc vào bộ khuếch đại công suất và vào loa được sử dụng.

Như thông tin rạp chiếu phim gia đình nằm ở dưới cùng của hộp.

Chỉ qua loa:

1 loa trầm

2 loa trung bình, mà tôi đã sửa đổi để lắp chúng vào hộp.

Ở trên đỉnh:

Mặt trước với màn hình, đèn LED, công tắc và phích cắm USB.

Gỗ:

Đối với loa, tấm ván bên trên và dưới cùng, tôi sử dụng ván gỗ 18 mm.

Mặt trước là ván ép 10 mm với các vít 40 mm.

Để tạo thuận lợi cho việc đi dây và bảo trì (nếu cần !!!) Tôi đặt mạch điện trên một ngăn kéo phía sau pannel phía trước

Để tránh quá nóng, một lỗ lớn được thực hiện ở dưới cùng của pannel phía sau và tôi đặt một quạt 5V (8 cm) trên pannel phía sau ngay bên cạnh mạch điện.

Hình ảnh trên chỉ là để cung cấp cho một ý tưởng.

À chính nó đấy !!!!!!!!!

Cảm ơn bạn đã đọc tôi

Và hẹn gặp lại bạn trong những chuyến phiêu lưu mới lần sau

Đề xuất: