跟川爸做个网络小音箱

2022-09-21 00:02:41 88点赞 39收藏 3评论

啊,川仔终于骑上了心爱的小童车。这款摇依摇童车小区里几乎一娃一台,实在不想跟风,可娃抓着别人的车不撒手啊。赶上疫情仓库疯了厂商又不发货,最后同城自提了别人的爱车。

跟川爸做个网络小音箱

川仔最喜欢按车上的按键,4个按键无论你怎么按都是4首曲子循环,很快川仔按够了,我们也听烦了。心想要是能改一改音乐就好了,在小区里溜娃的时候也不怕遇到同款了,毕竟灵魂是不一样的。故事就这么开始了。

对硬件零基础的川爸一直想尝试下,这次重要找到了动力(jiekou)搞一下。经过一番搜索,发现资料很少,所以有了这篇分享。如果你和川爸一样零基础那么可以看一下。

主要材料介绍

ESP32这块开发板,这是一颗由乐鑫研发的国产芯片,性能强劲,自带WIFI和蓝牙模块,是目前最有性价比的物联网微控制器。它相当于电脑和手机里的CPU+主板+内存+硬盘,他有30个针脚,通过控制针脚的电平来实现对其他配件的控制。

跟川爸做个网络小音箱

ESP-32开发板WROOM开发版WIFI+蓝牙模块CH9102ESP32-S烧录夹16.8元天猫精选去购买


MAX98357A功率放大器,由于ESP32只能驱动耳机无法很好的驱动扬声器所以我们需要这么一块小功放。

跟川爸做个网络小音箱

MAX98357音频放大器模块I2S3W无滤波D类放大器功放板DIY11.3元天猫精选去购买

3W小喇叭一枚,我这是小米蓝牙音箱上拆的。4Ω3W扬声器都可以,3元可购入。

跟川爸做个网络小音箱

其他材料:非自锁按键2个,母对母杜邦线5根,micro usb数据线一根。最好再准备一块5v microusb的电池。

还有个最关键的,找一个自己喜欢的盒子,为其注入个性。

跟川爸做个网络小音箱

跟川爸做个网络小音箱

百科欣和 葱伴侣 6月香甜面酱300g 六月香甜面酱 0 点评0 原创2 好价0去购买查看详情


我随手找了个葱伴侣面酱盒,所以这个作品就有了名字,“音乐酱”。无论放在厨房还是餐桌都毫无违和感,这个风格我们就叫居家朋克风吧。

硬件连接

接下来就是用杜邦线把ESP32和配件链接起来

认识下ESP32的引脚编号,图上我标识了下D25,D26,D27三颗引脚。用杜邦线分别对应链接到MAX98357A的LRC,BCLK,DOUT。这就完成了数据传输接口(I2S)的链接。

跟川爸做个网络小音箱

跟川爸做个网络小音箱

再分别将3v3和VIN链接,GND和GND链接,这就完成了供电的链接,让MAX98357A可以从ESP32获得电源,再将扬声器插入MAX98357A。完成后的硬件链接如图。

跟川爸做个网络小音箱


软件环境搭建

1. 安装arduino,我们采用arduino进行软件开发,arduino是一个面向艺术家等非职业用户的微控制器开发系统。可免费下载使用 https://www.arduino.cc/en/software

2. 在arduino里安装ESP32驱动套件,因为arduino官方并不原生支持ESP32芯片,所以我们需要手动进行配置,让arduino载入ESP32官方提供的驱动套件。

打开arduino的文件-首选项,在其他开发板管理器地址里输入以下地址,点击确定。

gh…com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

跟川爸做个网络小音箱

3. 点击arduino的工具->开发板管理器,输入ESP32,点击安装,会进行自动下载。

跟川爸做个网络小音箱

4.用microusb数据线链接电脑和ESP32,ESP32亮灯,并且电脑识别到串口,再选择ESP32-WROOM-DA Module。环境配置就完成了。

软件编写

1. 安装MP3的解码库,ESP32是支持WAV等非压缩格式的播放,因为ESP32强大的计算能力所以可以进行MP3的软件解码。

下载软件解码器。gh....com/schreibfaul1/ESP32-audioI2S/archive/refs/tags/2.0.5.zip

安装解码器到arduino,点击项目-包含库-添加.zip库

2. 编写软件,复制一下代码到你的arduino里,把wifi的名称和密码修改成你家的。

#include "Arduino.h"

#include "WiFi.h"

#include "Audio.h"

#define I2S_DOUT 27

#define I2S_BCLK 26

#define I2S_LRC 25


Audio audio;

String ssid = "你的WIFI名称";

String password = "你的WIFI密码";

void setup() {


Serial.begin(115200);

WiFi.disconnect();

WiFi.mode(WIFI_STA);

WiFi.begin(ssid.c_str(), password.c_str());

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

}

Serial.println("");

Serial.println("WiFi connected");

Serial.println("IP address: ");

Serial.println(WiFi.localIP());

Serial.println("");

audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);

audio.setVolume(12);

audio.connecttohost("0n-80s.radionetz.de:8000/0n-70s.mp3");

}

void loop()

{

audio.loop();

}


void audio_info(const char *info) {

Serial.print("info "); Serial.println(info);

}

void audio_id3data(const char *info) { //id3 metadata

Serial.print("id3data "); Serial.println(info);

}

void audio_eof_mp3(const char *info) { //end of file

Serial.print("eof_mp3 "); Serial.println(info);

}

void audio_showstation(const char *info) {

Serial.print("station "); Serial.println(info);

}

void audio_showstreaminfo(const char *info) {

Serial.print("streaminfo "); Serial.println(info);

}

void audio_showstreamtitle(const char *info) {

Serial.print("streamtitle "); Serial.println(info);

}

void audio_bitrate(const char *info) {

Serial.print("bitrate "); Serial.println(info);

}

void audio_commercial(const char *info) { //duration in sec

Serial.print("commercial "); Serial.println(info);

}

void audio_icyurl(const char *info) { //homepage

Serial.print("icyurl "); Serial.println(info);

}

void audio_lasthost(const char *info) { //stream URL played

Serial.print("lasthost "); Serial.println(info);

}

void audio_eof_speech(const char *info) {

Serial.print("eof_speech "); Serial.println(info);

}

3. 插上ESP32,点击运行。音乐响起。

4.插上充电宝,2秒钟就想起了音乐。

后续,等电池到了,再把电池和按键设置好,小作品就完成了。

那么问题来了川仔的小童车怎么办?

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
3评论

  • 精彩
  • 最新
  • 厉害。太厉害了

    校验提示文案

    提交
  • 反正都是DIY为什么不搞个C口不是更好吗

    校验提示文案

    提交
  • 装摇摇马里面 效果加倍

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
39
扫一下,分享更方便,购买更轻松