往期相关文章:

ESP32 I2S音频总线学习笔记(一):初识I2S通信与配置基础

ESP32 I2S音频总线学习笔记(二):I2S读取INMP441音频数据

ESP32 I2S音频总线学习笔记(三):I2S音频输出

ESP32 I2S音频总线学习笔记(四):INMP441采集音频并实时播放

ESP32 I2S音频总线学习笔记(五):将inmp441采集到的音频发送至网络

简介

使用ESP32的蓝牙A2DP协议和前面我们介绍的I2S协议,两者配合我们可以自制一个蓝牙音箱。代码也非常简单,本篇我们不作深入了解,主要以实现功能为主。主要实现原理是ESP32支持蓝牙 A2DP 协议的 API,可以从手机等设备接收音频数据,并通过回调函数将数据输出。输出的数据是从 SBC 格式解码后的 PCM 音频流,我们将接收到的音频数据再通过I2S输出就可以在喇叭上听到从蓝牙传输过来的音频了。

使用到的主要器件包括:
在这里插入图片描述

接线

首先先接好ESP32和I2S模块线,可以使用面包板,也可以直接用普通的洞洞板去焊接,这里我选择后者。

ESP32和PCM5102A:

ESP32PCM5102A
-VCC
3.3V3.3V
GNDGND
GNDFLT、DMP、SCL (这里SCL悬空可能会有干扰,所以接地)
D32BCK
D33DIN
D25LCK
GNDFMT
3.3VXMT

接线图:
在这里插入图片描述
然后将功放板连接到I2S模块的音频输出端,这里只用一个声道,左声道。

功放板、PCM5102A模块和喇叭的接线:

功放板PCM5102A喇叭
LL-
GG-
lout+-喇叭 +
lout--喇叭-

接线图:

在这里插入图片描述
接好上述线后,接下来接的就都是电源线了。我们需要将锂电池通过保护板升压后输出的电压给这些模块进行供电,其中包括5V,和3.3V电源,3.3V只用在PCM5102A模块上,其它两个模块都是5V供电。

电源接线:

电池保护板ESP32功放板PCM5102A
BAT+BAT---
BAT-GND---
-OUTVINpower +-
-GNDGNDpower --
--3V3-3.3V
--GND-GND

接线图:
在这里插入图片描述

模块布局这个看大家自己喜欢,不过建议把功放板放到侧边位置方便后续调节音量操作。

OK,接好线后我们开始上传代码;

#include "AudioTools.h"
#include "BluetoothA2DPSink.h"I2SStream i2s;
BluetoothA2DPSink a2dp_sink(i2s);void setup() {auto cfg = i2s.defaultConfig();cfg.pin_bck = 32;cfg.pin_ws = 25;cfg.pin_data = 33;i2s.begin(cfg);a2dp_sink.start("MyMusic");
}void loop() {
}

然后用手机连接名为MyMusic的蓝牙,连接上后就可以播放音乐了。单击锂电池保护板上的按钮可以开启“音箱”,双击关机。如果没有PCM5102A模块的话,也可以用下面的代码,使用ESP32的内部DAC输出I2S音频:

#include "AudioTools.h"
#include "BluetoothA2DPSink.h"AnalogAudioStream out;
BluetoothA2DPSink a2dp_sink(out);void setup() {a2dp_sink.start("MyMusic3");
}void loop() {
}

但是不建议这样接,因为使用内部DAC输出的话音质其实不是很好,但也能听个“响”,所以这里就不过多介绍,接线的话就是直接将ESP32的GPIO25或者GPIO26引脚连接功放板的输入即可,如果还是不清楚接线,可以参考之前这篇文章
ESP32 I2S音频总线学习笔记(三):I2S音频输出 里面 “使用片上DAC进行I2S音频输出” 的相关内容。

到这一步,我们已经实现了“蓝牙音箱”中的“蓝牙音”, 是不是还差个“箱”,环顾我周围的东西,之前打PCB板的JLC盒子赫然出现眼前,🆗就他了,用它做的“音箱”还自带高级感(bushi)。为了方便控制和使用,我们需要外接电源按键和充电转接板,这样就可以方便控制开关机和进行充电。另外添加的两个器件:
在这里插入图片描述

使用无锁开关控制电源

现在遇到的问题是:怎么外接一个按钮去控制“蓝牙音箱”的电源通断 ,用带锁的还是不带锁的,使用不带锁的话也很简单,直接在保护板上的自带按键,外接不带锁的按钮即可,上面的接线也一样照常接,缺点是给“音箱”断电,需要快速双击按钮才行。

接线:
在这里插入图片描述

实物如下图,我用的线比较短,所以连接处缠上绝缘胶带避免短路

在这里插入图片描述

使用自锁开关控制电源

使用这钟方法注意需要更换模块或芯片,或者一开始就选择好带ck版本的保护板。

保护板上用的IP5306芯片不是ck版本,无法使用自锁按钮通过外部按键触发后来控制输出,即使在输出接自锁按钮,还要在板子上再按下按钮才有输出,不能只通过一个自锁开关去控制输出。

解决方法就是换成ck版本的保护板,由于这个板子是我之前就做好的了,就不想更换保护板模块了,所以我选择了将原先保护板上的芯片换成ck版本的,这里如果大家想用自锁开关去控制电源的话,一开始就要选择好常开版本的保护板,可以更换其它带常开的保护板。比如这款:
在这里插入图片描述

如果选用上面这款,电源接线 按下图接:

在这里插入图片描述

如果选用这款(需自行更换ck版本芯片):
在这里插入图片描述

电源接线 :

在这里插入图片描述
充电转接板接线:
在这里插入图片描述

制作“音箱”

  1. 使用圆规在纸盒上画出⚪,用来放喇叭,注意圆圈直径要略小于喇叭直径。
    在这里插入图片描述

  2. 使用美工刀先切出大概轮廓
    在这里插入图片描述

  3. 切到一定程度就可以挖空
    在这里插入图片描述

  4. 用同样方法,挖空电源按钮、充电转接板、音量旋钮位置。注意这里要挖两层,因为我们要合上盒子。
    在这里插入图片描述

5.这里侧面挖空一下可以方便观看“电量”,没电的时候可进行充电。
在这里插入图片描述

组装音箱

音箱制作好后我们就可以把板子装进去盒子,这里注意因为喇叭要从上往下装,所以板子要穿过孔去安装(从下往上装喇叭的话就装不了了,因为我们画的是圆形的尺寸)。这里如果板子穿不过去那个洞也可以把板子先放下面,然后再把喇叭往下装(喇叭线先不焊接),然后焊接喇叭线。这里固定的话大家可以使用热熔胶进行固定。当前你的喇叭也可以固定,不过固定后如果有什么问题要修复的话可能会比较麻烦。这里我之前焊接功放板的时候摆放的位置不对,导致调节音量的电位器旋钮比较短了,这里大家注意把功放板往外放一点,这样调节音量的时候就比较方便。

组装完成实物:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意事项

  1. 因为功放板输出功率是3W,而喇叭是5W,所以实际上只能输出3W的功率。如果你手上有3W的就接3W的喇叭。
  2. 如果需要使用自锁开关控制电源,保护板芯片需是CK版本的。
  3. 使用自锁开关,ck版本的保护板芯片,会一直输出5V,就算电源开关断开也会,可能会导致有微小的静态电流消耗,但对电池影响不大。
  4. 800mAh的电池实测充满电可以用一到两个小时左右,需要用更久一些可以自行更换大容量的其它电池。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918745.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918745.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918745.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot博客实战笔记02

一、评论功能: 注意要先登录之后才能进行评论,所有把评论加入到登录拦截器当中 Overridepublic void addInterceptors(InterceptorRegistry registry) {//拦截test接口,后续实际遇到需要拦截的接口时,在配置为真正的拦截接口regis…

ThinkPHP+Mysql 灵活用工小程序-技术深度解析与实践指南

一、模块设计分包商:税地注册公司,用于在当地申请有利的税收政策,是实际报税公司。 代理商:代理商可以邀请客户使用本平台,平台会给予代理商一定的服务费差价作为佣金。 客户:使用本平台进行工资发放的…

开源数据发现平台:Amundsen 第1部分:基础入门与本地环境设置

Amundsen 是一个数据发现和元数据引擎,旨在提高数据分析师、数据科学家和工程师与数据交互时的生产力。目前,它通过索引数据资源(表格、仪表板、数据流等)并基于使用模式(例如,查询频率高的表格会优先于查询…

Linux编程--进程

1、基本概念:进程:是程序动态执行的过程,包括创建、调度、消亡程序:存放在外存中一段数据的集合虚拟地址:进程使用的逻辑地址,有操作系统管理,不直接对应物理内存物理地址:实际内存的…

【开源工具】基于硬件指纹的“一机一码”软件授权系统全实现(附完整源码)

🚨 紧急预警!你的软件正在被白嫖?这套Python软件加密授权方案让破解者当场崩溃 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,热情源自每一个灵感闪现的夜晚。愿以开源之火,点亮前行之路。 🐋 希望大家多多支持…

机器学习算法篇(八)-------svm支持向量机

目录 ​​1. SVM 的核心原理(必须掌握)​​ ​​2. Python 中的实践重点​​ ​​(1) Scikit-learn 的 SVM 实现​​ ​​(2) 数据预处理​​ ​​(3) 模型评估与调优​​ ​​3. 学习侧重点优先级​​ ​​4. 经典案例实践方向​​ ​​5. 学习…

发票查验接口接收参数说明-PHP语言集成-财务管理

发票验真服务接口可实时联网核验发票真伪,查验一致时返回全票面信息。其支持核验增值税发票管理系统开具发票的真伪,且能进行发票批量查验,当日开具的发票当日即可查验。同时,结合发票识别接口可实现自动识别发票信息核验&#xf…

Uniapp物联网平台登录与温湿度监测系统

下面是一个完整的Uniapp物联网平台实现,包含登录功能和温湿度监测系统。这个解决方案采用现代化UI设计,模拟了物联网平台的核心功能。文章末尾提供源码下载。 系统功能说明 这个Uniapp物联网平台登录与温湿度监测系统包含以下核心功能: 1.…

【企业架构】TOGAF概念之四(终结)

导读:学习TOGAF(The Open Group Architecture Framework,开放组架构框架)相关概念的意义和价值,体现在它为企业架构(Enterprise Architecture, EA)实践提供了标准化方法论、跨领域协同框架、战略…

centos 怎么部署 vscode 网页版

安装编译工具 下载适用于 linux 版本的 rpm 格式文件 下載 Visual Studio Tools - 免費安裝 Windows、Mac、Linux 拷贝路径,下载文件 wget https://vscode.download.prss.microsoft.com/dbazure/download/stable/e3550cfac4b63ca4eafca7b601f0d2885817fd1f/code…

sql的关键字 limit 和offset

核心概念LIMIT (限制): 指定查询最多返回多少行记录。OFFSET (偏移): 指定在开始返回记录之前要跳过多少行记录。它定义了结果集的起始点。核心前提: 必须 使用 ORDER BY 子句来确保分页结果的顺序稳定和可预测。示例: 假设 employees 表有 100 条记录&a…

git config的配置全局或局部仓库的参数: local, global, system

git config的范围参数: local, global, system1. --local: 作用于当前仓库2. --global: 作用于当前用户的全局范围的 Git 仓库3. --system: 作用于系统范围内的 Git 仓库4. 注意事项参考链接1. --local: 作用于当前仓库 --local: 这个参数的作用范围是当前仓库。其配置的参数保…

应用系统连达梦数据库报“服务器模式不匹配”的根源与修复方案

近期遇到很多个应用系统连接达梦数据库报“服务器模式不匹配”的问题,省流直接说文章结论通常两种场景 初次连接达梦数据库时报服务器模式不匹配,可能是配置文件中LOGIN_MODE参数配置与数据库状态不一致导致连接失败应用系统正常运行负载大或者偶发报服务…

git:分支

分支命名可以使用斜杠(/)构建分层命名方案不能以减号(-)开头,分层的命名不能以点(.)开头不能使用连接两个点(.)不能包括空格或其他空白字符以及~ ^ : ? * [列出分支名称 git branch 列出本地版本库的分支git branch -r 列出远程跟踪分支git branch -a …

T05_卷积神经网络

全连接网络存的弊端 以MINST数字识别为例,创建一个4层全连接网络层,输入为28x28,中间三个隐藏层的节点数都是 256,输出节点数是10。通过summary()函数打印出模型每一层的参数量,计算总的参数量超过34万个网络参数&…

区块链在可信空间智能合约中的应用

区块链在可信数据空间的智能合约应用,通过去中心化信任机制、自动化执行、可验证计算等特性,正在重塑数据存储、共享、交易和治理的模式。以下是其核心应用方向、关键技术及落地案例的深度解析: 一、核心应用方向 1. 数据确权与授权管理 应用场景 个人数据主权:用户通过智…

pycharm配置python解释器教程

一个解释器对应一个环境,无论是conda环境或是Python环境。python环境的解释器的路径形如"D:\Python3.12\python.exe",conda环境的解释器的路径形如"D:\anaconda3\envs\opencv\python.exe"。 如何在Pycharm中设置解释器 打开pycharm&…

C#教程之NPOI读写excel文件XLS,XLSX格式

NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件。仅需处理 XLS/XLSX 格式的文本和数字读写,最少需要加载 2 个核心 DLL:NPOI.dll包含所有格式的通用接口(IWorkbook、ISheet、IRow、ICell …

Perforce P4 Git 连接器

Perforce P4 Git连接器将Git代码库与数字资产集中存储于Perforce P4(前身为Helix Core),为所有数字资产(源码二进制文件)构建单一事实来源。 突破代码库与文件限制 当艺术家、开发者及工程师组成的大型团队仅使用Git时…

day10_寻找用户推荐人

一、题目给出一张customer表,里面有id(客户id)——主键,name(客户姓名),referee_id(推荐人客户id)三个字段二、题目要求1、找出被id不是2的用户推荐的客户姓名2、没有被任…