ESP32 I2S音頻總線學習筆記(六):DIY藍牙音箱教程

往期相關文章:

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、沒有被任…