【源码+硬件说明+接线】Arduino-ESP32 http访问播放网络mp3音乐并获取获取远程服务器文件并存SD卡

本文主要是介绍【源码+硬件说明+接线】Arduino-ESP32 http访问播放网络mp3音乐并获取获取远程服务器文件并存SD卡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

最近跟浩楠哥接了一个外包,不得不说人总得逼自己一把就可以学到很多东西,这次收获不小,就把一部分困扰我一段时间的部分放出来给大家看看,避免大家踩我相同的坑

1. 硬件准备

1.1 Esp32Wroom

主控使用esp32Wroom,我具备蓝牙,wifi,低功耗蓝牙功能,配合Arduino库作为开发上手非常简单,只需了解部分知识即可上手。

1.2 MAX98357音频放大器模块

注意:除此之外,还需购买一个喇叭来进行发声

1.3 Micro SD卡SPI接口插座

用于存储文件并且进行读写。

1.4 集合照片

1.5 硬件接线图

MAX98357 

GND --- GND

VIN   --- 3v3

LRC  --- D27

BCLK--- D26

DIN   --- D25

SDCardSPI连接

3v3     --- 3v3

cs       --- D5
SCK   --- D18

MOSI --- D23

MISO --- D19

 喇叭

正 --- +

负 --- -

2.测试开发

连接好各引脚后,需要对各个功能进行测试,你也不想线全接了不知道到底是哪里报错吧~

2.1 测试SD卡并尝试写入文件,查看文件,再删除文件

#include <SPI.h>
#include <SD.h>
#include <FS.h>
#include <FSImpl.h>
#include <vfs_api.h>
#define SCK  18
#define MISO  19
#define MOSI  23
#define CS  5SPIClass spi = SPIClass(VSPI);/******容量转换*******/ 
String formatBytes(size_t bytes) {if (bytes < 1024) {return String(bytes) + "B";} else if (bytes < (1024 * 1024)) {return String(bytes / 1024.0) + "KB";} else if (bytes < (1024 * 1024 * 1024)) {return String(bytes / 1024.0 / 1024.0) + "MB";} else {return String(bytes / 1024.0 / 1024.0 / 1024.0) + "GB";}
}/******查看SD卡文件列表*******/  
void listDir(fs::FS &fs, const char * dirname, uint8_t levels){Serial.printf("Listing directory: %s\n", dirname);File root = fs.open(dirname);if(!root){Serial.println("Failed to open directory");return;}if(!root.isDirectory()){Serial.println("Not a directory");return;}File file = root.openNextFile();while(file){if(file.isDirectory()){Serial.print("  DIR : ");Serial.println(file.name());if(levels){listDir(fs, file.name(), levels -1);}} else {Serial.print("  FILE: ");Serial.print(file.name());Serial.print("  SIZE: ");Serial.println(file.size());}file = root.openNextFile();}
}
/******SD卡创建文件夹*******/  
void createDir(fs::FS &fs, const char * path){Serial.printf("Creating Dir: %s\n", path);if(fs.mkdir(path)){Serial.println("Dir created");} else {Serial.println("mkdir failed");}
}/******删除SD卡中的文件夹*******/ 
void removeDir(fs::FS &fs, const char * path){Serial.printf("Removing Dir: %s\n", path);if(fs.rmdir(path)){Serial.println("Dir removed");} else {Serial.println("rmdir failed");}
}/******读取SD卡中的文件*******/ 
void readFile(fs::FS &fs, const char * path){Serial.printf("Reading file: %s\n", path);File file = fs.open(path);if(!file){Serial.println("Failed to open file for reading");return;}Serial.print("Read from file: ");while(file.available()){Serial.write(file.read());}file.close();
}/******向SD卡中的文件写数据*******/ 
void writeFile(fs::FS &fs, const char * path, const char * message){Serial.printf("Writing file: %s\n", path);File file = fs.ope

这篇关于【源码+硬件说明+接线】Arduino-ESP32 http访问播放网络mp3音乐并获取获取远程服务器文件并存SD卡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082902

相关文章

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

Before和BeforeClass的区别及说明

《Before和BeforeClass的区别及说明》:本文主要介绍Before和BeforeClass的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Before和BeforeClass的区别一个简单的例子当运行这个测试类时总结Before和Befor

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译