【源码+硬件说明+接线】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

相关文章

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域