在esp32开发板上实现的web_radio,基于wm8978 codec芯片
在esp32开发板上实现的web_radio,基于wm8978 codec芯片
- 前言
- 下载编译
- 硬件连接
- 烧写测试
- TODO
前言
本文介绍了如何在esp32板子上实现自己的web_radio,用的是wm8978 codec芯片。详细代码参考github工程,这里其实是fork了另一位大牛的工程,在原来的工程中,其实已经可以工作。不过,用的是芯片自带的DAC转换而已,效果不是很好。这里考虑了使用外接IIS codec芯片:wm8978,这是淘宝链接:WM8978音频解码模块扬声器驱动I2S模块STM32F103软解MP3开发板,是IIC接口的,使用很方便。但是注意,这个芯片是需要提供MCLK的!网上查了一下,发现ESP32的GPIO 0正好可以输出该时钟信号。闲话少说,let’s begin!
下载编译
其实README里面已经很详细,关于如何下载esp-idf
以及下载配置工具链我就不多说了。
git clone https://github.com/cloverclose3/ESP32_MP3_Decoder.git
cd ESP32_MP3_Decoder
make menuconfig # 配置 Web Radio / Bluetooth Speaker ---># [*] WM8978 codec support ----# Wifi Configuration ---># (你的wifi ssid) WiFi SSID# (你的wifi psk) WiFi Password
git submodule init
git submodule update
make
硬件连接
在这个工程里面,用到了很多的GPIO口,有的板子,比如我的,有些gpio口已经接了其他的外设,比如led灯,喇叭,继电器等等。还有些gpio口是系统预留的,我们无法使用。还有些gpio只有输入功能等等这些限制。这里罗列了一下esp32可用的gpio,摘录自esp32手册:
The ESP32 chip features 40 physical GPIO pads. Some GPIO pads cannot be used or do not have the corresponding pin on the chip package (refer to the ESP32 Datasheet).
- GPIO6-11 are usually used for SPI flash.
- GPIO20, GPIO24, and GPIO28-31 are not available as pins.
- GPIO34-39 can only be set as input mode and do not have software pullup or pulldown functions.
而这个工程里面已经用到的gpio口有:
- control: 原来用的是GPIO 0,因为我需要用GPIO 0来产生codec需要的MCLK,所以,被我改成了使用GPIO 12。
- lcd: 使用到了GPIO 5 16 17 18 19 21
鉴于上面的分配,我选择连接codec的gpio如下:
- IIC: SDA <-----> GPIO14
- IIC: SCL <-----> GPIO15
- IIS: BCLK (板子上标SCLK) <-----> GPIO26
- IIS: LR CLK <-----> GPIO25
- IIS: DATA CLK (板子上标DIN) <-----> GPIO22
- IIS: MCLK <-----> GPIO0
这里的GPIO 0输出的是12M的频率:256*44kHz=11.264MHz,这里的44k是一般的mp3的采样率,再根据芯片手册上 MCLK = 256fs,所以,12M的输出可以满足需求。
最后,再次重申一点,上面的连接只是在我的板子上的情况,哪些口可以用需要根据你板子的实际外设情况来看。有些GPIO口被占用了你需要换其他的口!
最终的连接图如下:
烧写测试
注意,在烧写的时候,需要把GPIO 0接地,烧完了,然后再接到MCLK上。上电,接上耳机,嗯,效果相当不错哦。。
TODO
我在原来工程的基础上,注释掉了LCD的task,发现如果不去掉,会影响网络的连接!这个问题有时间慢慢查吧,这里暂时也用不着液晶的显示屏,注释掉也没有影响。
在esp32开发板上实现的web_radio,基于wm8978 codec芯片相关推荐
- 【问题解决】ESP32开发板上的CP210xUSB转串口坏了怎么办
微信关注公众号 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天居然遇到了主板上的USB转串口芯片坏了的情况!这运气真是.. 还好问题解决了 ...
- 物联网开发笔记(32)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(2)
一.目的 上一节我们测试了远程控制的环境是好的,这一节在我们的240x240的oled屏幕上显示二维码,然后用手机扫二维码,远程控制LED灯的状态. 二.环境 ESP32 + 240x240的oled ...
- 超便利!教你用ESP32开发板DIY掌上网页服务器!
本文作者:默.默是铁熊的创客好友,经常与铁熊分享创意项目. 前段时间有个老师对我说:每到开学季,学校就要印刷学生的录取名单并进行张贴,为此学校每年都要耗费大量的人力物力.学校里面教学活动很多,传统的通 ...
- esp32摄像显示时间_TinyPICO-比拇指还小的ESP32开发板- 国外创客众筹发现第二期
国外创客开发板创新日新月异 我们想尝鲜体验却十分苦难 一片板卡从海外跋山涉水到我们手中 遇到各种各样的问题 海外组团开始啦!~ 本次我们从国外开发板众筹网站crowdsupply 挑选一款体积较小/功 ...
- 启明云端带你一起撸ESP32开发板,玩转语音、彩屏
AI语音赋予ESP32开发板灵魂,彩屏赋予了视觉色彩,有了这两样,人机交互就真正可以落地到应用. 以小家电为例,目前大多小家电看起来是带有屏幕,但显示内容非常的单一和千篇一律.这些产品没有特别的亮点和 ...
- ESP32开发板开源啦 ESP32-IOT-KIT全开源物联网开发板
鸽了已久的 ESP32开发板计划 终于赶在年前与大家见面了,本来上个月就能一睹芳容的,无奈年末好多事儿堆在一起,又碰巧手机出了问题,以前的照片全部丢失.为不影响开源效果,这期间一直在完善资料,Gith ...
- nodemcu引脚_一、ESP32开发板NodeMCU-32S简介
目录 NodeMCU-32S 引脚功能 板上资源 总结功能特点 NodeMCU-32S NodeMCU-32S是基于 ESP32-32S 模组设计的一款较为经典的ESP32开发板,个人认为较为适合初学 ...
- 物联网开发笔记(31)- 使用Micropython开发ESP32开发板之手机扫二维码远程控制开关灯(1)
一.目的 我们分3节讲述远程控制.这一节在我们的240x240的oled屏幕上显示二维码,然后用手机扫二维码,从开发板的TCP服务器上返回字符串. 二.环境 ESP32 + 240x240的oled彩 ...
- 物联网开发笔记(25)- 使用Micropython开发ESP32开发板之控制LCD1602显示屏
这一节我们讲解了如何控制LCD1602显示屏,显示两行字. 一.目的 使用MicroPython开发ESP32开发板控制LCD1602显示屏 二.环境 ESP32 + LCD1602显示屏 + Tho ...
- 物联网开发笔记(58)- 使用Micropython开发ESP32开发板之控制2.90寸电子墨水屏模块黑白套件
一.目的 这一节我们学习如何使用我们的ESP32开发板来控制2.90寸电子墨水屏模块(黑白套件). 二.环境 ESP32 + 2.90寸 电子墨水屏模块 + Thonny IDE + 几根杜邦线 接线 ...
最新文章
- IT菜鸟,希望大家赐教
- #ifdef __cplusplus extern “C” { #endif的作用!
- 设置DIV半透明CSS代码:
- Exchange误删除邮箱用户后恢复账户问题
- LeetCode 124. Binary Tree Maximum Path Sum
- Kubernetes 网络部分
- html5音频插件js,jquery音乐播放器插件jsRapAudio
- javascript监听输入框_js与jquery实时监听输入框值的oninput与onpropertychange方法
- python爬图mzitu_换个框架爬妹子图mzitu解决直接访问的403
- vue-app开发入门
- 局域网***原理与防御(网络执法官类)
- 宽带噪声干扰 matlab,噪声干扰信号及Matlab仿真.doc
- 课后作业3:软件分析与用户体验分析
- Java编程思想第十章内部类的10.7至10.8小节的笔记和练习题
- 如果你在it院校学习累了,你能干什么?
- 基于强化学习的自我完善聊天机器人
- 计算机哪个行业前景好?
- js中foreach有三种写法,你知道吗
- 《程序员养成记》第1集 做程序员需要天赋吗?
- 计算机桌面右下角网络连接的图标不见了,电脑右下角本地连接图标不见了 这种找回方法既简单有轻松...
热门文章
- 支教日记软件测试,烟酒行销售实习日志(74页)-原创力文档
- pyodbc 操作SQL Server数据库
- 老婆生成器 yyds
- wps页眉偶数页不同怎么设置_WPS文字应技巧—如何使奇数和偶数页的页眉页脚不同...
- 内存超频时序怎么调_超频技术之内存“时序”重要参数设置解说
- Javo 基础 流的分类
- HTML5 学习准备
- 【文献心得】关于内核在不同芯片平台移植的相关整理
- 企业发文的红头文件_实例分享:怎样制作双发文单位红头文件,文件二字与发文单位并排...
- 积分商城功能表设计结构以及积分功能模块