文章目录

  • 一、所需硬件
  • 二、处理音频文件
  • 三、按键连接
  • 四、程序编写


一、所需硬件

1、 树莓派4b

树莓派和Python创建一个智能音乐播放器_单片机

2、5条杜邦线

树莓派和Python创建一个智能音乐播放器_嵌入式_02

3、 按键

树莓派和Python创建一个智能音乐播放器_嵌入式_03

4、扬声器或耳机

树莓派和Python创建一个智能音乐播放器_嵌入式_04

二、处理音频文件

我们的音乐盒需要音频文件,Raspbian内已经包含了大量音频,但是这些音频不适合在Python中使用,我们需要将音频转化为适合Python的文件格式。

1、在家目录下创建gpio-music-box/samples文件夹:

打开终端:

aspberrypi:~ $ mkdir -p gpio-music-box/samples

观察如下:

树莓派和Python创建一个智能音乐播放器_ubuntu_05


2、从树莓派内置的音频文件复制到gpio-music-box/samples文件夹中:

cp /usr/share/sonic-pi/samples/perc_impact2.flac ~/gpio-music-box/samples/.
cp /usr/share/sonic-pi/samples/sn_dolf.flac ~/gpio-music-box/samples/.
cp /usr/share/sonic-pi/samples/sn_generic.flac ~/gpio-music-box/samples/.
cp /usr/share/sonic-pi/samples/tabla_ghe7.flac ~/gpio-music-box/samples/.

文件夹里有很多音频,读者可以根据自己的喜好选择音频。

观察复制后samples文件夹:

树莓派和Python创建一个智能音乐播放器_ubuntu_06


3、转换音频格式:

要使用Python播放音频文件,需要将文件从.flac文件转换为.wav 文件,我们使用ffmpeg 软件在树莓派上进行媒体文件的格式转换。

进入samples文件夹目录下:

pi@raspberrypi:~ $ cd gpio-music-box/samples/

音频文件格式转换:

ffmpeg -i perc_impact2.flac perc_impact2.wav
ffmpeg -i sn_dolf.flac sn_dolf.wav
ffmpeg -i sn_generic.flac sn_generic.wav
ffmpeg -i tabla_ghe7.flac tabla_ghe7.wav

删除原文件:

rm perc_impact2.flac
rm sn_dolf.flac
rm sn_generic.flac
rm tabla_ghe7.flac

再次观察samples文件夹音频文件,都由.flac文件转换成了.wav 文件。

树莓派和Python创建一个智能音乐播放器_树莓派_07

三、按键连接

我使用的按键有8个,本实验只使用了4个按键,每个按键都连接到Raspberry Pi上的单独GPIO引脚。

树莓派引脚示意图:

树莓派和Python创建一个智能音乐播放器_ubuntu_08


引脚接线方法如图:

树莓派和Python创建一个智能音乐播放器_ubuntu_09

本例连接方法:

  • 公共地线——任意图示黑色引脚
  • 按键7号——23号GPIO
  • 按键6号——24号GPIO
  • 按键5号——25号GPIO
  • 按键4号——7号GPIO

如图所示:

树莓派和Python创建一个智能音乐播放器_树莓派_10

四、程序编写

使用树莓派自带mu编程

树莓派和Python创建一个智能音乐播放器_树莓派_11


编写程序:

import pygame
from gpiozero import Button

pygame.init()

'''
sound1 = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/ambi_glass_rub.wav')
sound2 = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/ambi_choir.wav')
sound3 = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/ambi_dark_woosh.wav')
sound4 = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/ambi_drone.wav')

btn_sound1 = Button(23)
btn_sound2 = Button(24)
btn_sound3 = Button(25)
btn_sound4 = Button(7)

btn_sound1.when_pressed = sound1.play
btn_sound2.when_pressed = sound2.play
btn_sound3.when_pressed = sound3.play
btn_sound4.when_pressed = sound4.play
'''
button_sounds = {Button(23):pygame.mixer.Sound('/home/pi/gpio-music-box/samples/perc_impact2.wav'),
                Button(24):pygame.mixer.Sound('/home/pi/gpio-music-box/samples/sn_dolf.wav'),
                Button(25):pygame.mixer.Sound('/home/pi/gpio-music-box/samples/sn_generic.wav'),
                Button(7):pygame.mixer.Sound('/home/pi/gpio-music-box/samples/tabla_ghe7.wav')}

for button, sound in button_sounds.items():
    button.when_pressed = sound.play

运行程序,只需要接上耳机或者扬声器,当我们按动按键时,音乐就会响起了。

接下来,就需要你实际动手试一试了,快来行动吧💪💪💪