怎样将树莓派变成无线便携式蓝牙音频系统

电子说

1.3w人已加入

描述

步骤1:为基本操作系统准备SD

继续,然后将SD卡插入读卡器。对于此设置,我们将使用Raspbian Wheezy,它是撰写本文时针对PI的最新的基于Debian的操作系统。您应该可以在这里找到最新版本:

http://www.raspberrypi.org/downloads

下载并解压缩图像文件并记下位置。如果您使用的是Mac,则将图像刻录到SD卡上应该很简单。但是,如果您是Windows用户,请继续使用此实用程序将IMG文件“刻录”到SD卡。

http://sourceforge.net/projects/win32diskimager/

请确保选择正确的文件和正确的驱动器号,然后按WRITE按钮,否则您可能会发生一些讨厌的事情。 :(

步骤2:通过监视器/键盘或网络SSH登录到PI

您的PI必须是此时,无论是通过LAN还是WiFi连接到Internet,我都不会介绍如何将您的PI连接到WiFi或从SSH登录; Google是您的朋友!

否则,请使用键盘和显示器并以旧的方式设置PI!

注意:确保从此处插入蓝牙加密狗。

注意:默认登录名是 pi ,密码是 raspberry 。

第3步:安装必备软件包

好吧,现在我们都已登录,已连接到Internet,并准备开始安装所有软件包,以便可以在您的PI上使用蓝牙。

sudo apt-get upgrade

sudo apt-get install bluez pulseaudio-module-bluetooth python-gobject python-gobject-2 bluez-tools

步骤4:修改一些配置文件以启用蓝牙环境

首先,让我们继续将用户pi添加到Pulse音频组中,以便我们用户可以通过它播放音频。

sudo usermod –a –G lp pi

现在,让我们继续并在我们的蓝牙配置中启用A2DP。运行以下命令:

sudo nano/etc/bluetooth/audio.conf

这将打开带有该配置文件的文本编辑器。在[常规]下添加以下文本:

Enable = Source,Sink,Media,Socket

按CTRL + O和ENTER保存,然后按CTRL + X退出nano。接下来,让我们修改Pulse守护程序配置文件以更改其重采样方法。

sudo nano/etc/pulse/daemon.conf

查找以下行: resample-method = speex-float-3

如果该行没有;在它前面,请放一个;那里看起来像:

; resample-method = speex-float-3

,然后在其下添加以下行。

resample-method =平凡

在继续之前,让我们继续并重新命名我们的蓝牙设备(奇怪的是您不希望名称为 raspberry-pi0 ),并将蓝牙类设备从“计算机”重新定义为“便携式音频设备”。您应该修改两个位置。

sudo nano/etc/bluetooth/main.conf

更改Name参数。我选择在BeatsByDre上播放。

名称= BeatsByDan

更改设备的Class参数。

Class 0x20041C

接下来,您必须修改配置您的特定设备。目录基于您的蓝牙设备的MAC地址,因此在键入时单击TAB即可找到您的目录。

sudo nano/var/lib/bluetooth//config

再次编辑name指令。

name BeatsByDan

设备类。..

class0x20041C

继续保存并退出。

步骤5:设置当蓝牙设备连接时执行的脚本

现在我们已经设置了蓝牙环境,让我们继续开始为我们自动执行蓝牙连接并将其路由到音频的过程。首先让我们在udev中设置一条规则,该规则指出只要连接设备,脚本就会执行。运行以下命令以打开udev规则列表。

sudo nano/etc/udev/rules.d/99-input.rules

这里应该只有一行看起来像:

SUBSYSTEM ==“ input”,GROUP =“ input”,MODE =“ 0660”

在其下方,让我们继续添加以下行:

KERNEL ==“ input [0-9] *”,RUN + =“/usr/lib/udev/bluetooth”

保存并退出。

现在,让我们实际保存上述规则的脚本文件正在引用。首先检查是否存在udev/目录。做sudo ls –la/usr/lib/udev 。如果不存在,请像下面这样创建它: sudo mkdir/usr/lib/udev

sudo nano/usr/lib/udev/bluetooth

将以下脚本复制并粘贴(或在运气不佳时将其键入)到您的终端中。

注意:我并不是一个人写这个脚本。我在研究过程中发现了它(为什么不重新发明轮子),并对其进行了修改,使其以我需要的方式工作,从而尽可能地友好,蓝牙。

#!/bin/bash

#change,如果您不使用默认的模拟音频输出。

#THIS不适用于我的PI,所以我在下面添加了一个混音器命令

AUDIOSINK =“ alsa_output.platform-bcm2835_AUD0.0.analog -stereo“

echo”正在执行蓝牙脚本。.. | $ ACTION |“ 》》/var/log/bluetooth_dev

ACTION = $(expr“ $ ACTION”:“ ([a-zA-Z] + )。*”)

if [“ $ ACTION” =“添加“]

然后

##在将现有BT设备连接到音频之前关闭BT发现模式 hciconfig hci0 noscan

#将音频输出设置为模拟

#评论此行如果您想通过HDMI输出音频

axer cset numid = 3 1

#将音量级别设置为100%

axer set master 100% pacmd set-sink-volume 0在$ {find/sys/devices/virtual/input/-name input *)中找到dev的65537

如果[-f“ $ dev/name”]

then

mac = $(cat“ $ dev/name” | sed‘s/:/_/g’)

bluez_dev = bluez_source。$ mac

sleep 1

CONFIRM =`sudo -u pi pactl列表简短| grep $ bluez_dev`

如果[! -z“ $ CONFIRM”]

然后

echo“将bluez_source设置为:$ bluez_dev” 》》/var/log/bluetooth_dev

echo pactl load-module module-loopback source = $ bluez_dev sink = $ AUDIOSINK rate = 44100 Adjust_time = 0 》》/var/log/bluetooth_dev

sudo -u pi pactl load-module module-loopback source = $ bluez_dev sink = $ AUDIOSINK rate = 44100 Adjust_time = 0 》》/var/log/bluetooth_dev

fi

fi

完成后

fi

如果[“ $ ACTION” =“ remove”]

然后

#如果设备断开连接,则打开蓝牙发现

sudo hciconfig hci0 piscan

fi

保存并退出!现在,让我们修改文件的权限以使其可执行。

sudo chmod 774/usr/lib/udev/bluetooth

太好了!您的Raspberry PI现在可以通过A2DP播放蓝牙音频!喔!现在让我们更进一步,当PI自动登录到命令行时,打开发现模式并立即自动接受连接。

步骤6:自动化蓝牙发现和自动接受连接

为实现此目的,我们需要创建一个初始化脚本,该脚本将在启动PI时执行。开始吧!

sudo nano/etc/init.d/bluetooth-agent

继续,然后将此脚本复制到文本编辑器中。再次,我最初找到了该脚本,然后对其进行了改进以满足自己的需求!

### BEGIN INIT INFO

#提供:bluetooth-agent

#必选开始:$ remote_fs $ syslog bluetooth pulseaudio

#必选-停止:$ remote_fs $ syslog

#默认-开始:2 3 4 5

#Default-Stop:0 1 6

#简短描述:使Bluetooth可以发现并连接到0000

#说明:在启动时启动Bluetooth-Agent。

### END INIT INFO

#!/bin/sh

#/etc/init.d/bluetooth-agent

USER = root

HOME =/root

export USER HOME 案例“ $ 1”在

开始)

echo“设置可发现的蓝牙”

sudo hciconfig hci0 piscan

start-stop-daemon -S -x/usr/bin/bluetooth-agent -c pi -b-0000 “ echo”蓝牙-agent startet pw:0000“

;;

stop)

echo”停止蓝牙代理“

start-stop-daemon -K -x/usr/bin/bluetooth-agent

;;

*)

echo“用法:/etc/init.d/bluetooth-agent {start | stop}”

退出1

;; esac

退出0

保存并退出nano。此脚本基本上只是用于发现蓝牙的标准启动/停止脚本。

继续并授予脚本执行权限,然后将其添加到启动时启动的程序列表中-up。

sudo chmod 755/etc/init.d/bluetooth-agent

sudo update-rc.d蓝牙代理默认值

第7步:设置命令行以自动登录

一切都差不多了。出于某种原因,除非您登录控制台,否则Pulse音频将无法使流保持直播!瘸!我们想要一个无头自动设置,对吗?好吧,让我们调整环境,以便在引导时进行无密码登录!

现在就编辑inittab。

sudo nano/etc/inittab

查找以下行:

1:2345:respawn:/sbin/getty 115200 tty1

并注释掉它,就像这样:

#1:2345:respawn:/sbin/getty 115200 tty1

现在在其下面添加此行:

1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2》&1

保存并退出nano。最后,重启Raspbery Pi!

sudo reboot

步骤8:结论

如果您正确执行了所有操作,则现在应该有了一个很棒的A2DP蓝牙接收器,可以从模拟声音插孔播放音频。您现在可以轻松地无线添加电池, GIANT 扬声器和 PARTY ! :)

创建便携式音频系统

我将不涉及将Pi便携式化的实际过程。我假设,如果您足够聪明,可以找到本教程的方法,那么您也足够聪明,可以创建一个机箱,获取电池并弄清楚您的扬声器尺寸需求。 =]

我在开发软件组件时亲自使用了上图中的设备作为测试。我正在为我的系统安装一个尺寸相当大的后置汽车扬声器,一个放大器和一个大电池组。我还在建立一个自定义的外壳来容纳所有内容。我将只为该系统购买一个Pi,然后拧入外壳的内部。

对于外壳本身,我尚未决定是用木头还是塑料甚至是3D打印选择。如果有人想出任何有价值的东西,请在下面的评论部分中发布图片。谢谢!我欢迎对本指南提出任何建议或改进。请给我发送电子邮件danielg@danielgillespie.net。

关于,

Daniel Gillespie

注意:您应该拔下其他USB设备,以便仅使用蓝牙适配器(除非您这样做)。有一个有源的USB集线器)。如果您通过蓝牙看到Raspberry Pi,但无法成功配对,则可能是原因。您的适配器可能有足够的功能来工作,但没有足够的功能。

注意:iOS设备似乎从一开始就可以很好地连接到接收器,但是我见过一些Android设备设备有一点麻烦。如果您使用的是Android智能手机,但连接后没有通过接收器播放音频,请尝试取消配对并再次配对。

最后的提示:一次只能连接一个设备,然后断开连接,然后再尝试连接另一台设备。应该完美地工作。 :]

如果您找到本指南,请让我知道!另外,请查看我的iPhone应用程序CalcMate:

https://itunes.apple.com/us/app/calcmate/id538650487?mt=8

故障排除

在如果蓝牙设备可能无法正确连接,则可以使用以下命令实时查看何时从Pulse音频系统添加/删除蓝牙设备:

tail -f/var/log/bluetooth_dev

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分