当前位置: 首页 > news >正文

Arduino 随身听

Arduino 随身听

该项目基于 ESP8266 模块,通过 Arduino IDE 编程,实现音频播放和 OLED 波形显示,结合 3D 外壳,实现便携随身听的项目设计。

介绍

Arduino 随身听,通过网络远程控制并实现WiFi音频传输和播放。

在这里插入图片描述

基于ESP8266模组,通过 Arduino IDE 上传代码,实现音频传输;

通过模拟 PWM 输出实现音频播放。

详见:Arduino 无线随身听 - 立创开源硬件平台 .

参数特点

  • ESP8266 全 I/O 管脚引出,便于外接模块和调试;
  • IIC 通信接口与OLED 屏接口,便于快速验证和信息传递;
  • 板载 DS18B20 传感器,实现环境温度实时监测;
  • 多组 5V 和 3.3V 以及 GND 电源排针引出,便于多种外设连接;
  • 四角螺丝孔固定,实现电气隔离,安全有保障;
  • 网格状铺铜,提升手感。

3D 外壳

  • 排针(I/O及电源)顶部挖槽以及圆角矩形设计,便于外接杜邦线调试;
  • 螺丝孔沉头孔设计,确保表面平整与美观;
  • OLED 接口及四角定位孔设计,使连接更加方便;
  • Type-C 供电接口精准侧边挖槽,便于供电连接;
  • RST 与 BOOT 按键侧边挖槽,便于安装按键与控制按钮;
  • DS18B20 传感器对应侧边多孔挖槽,增强设备与环境的空气对流及热交换,实现精确测温;

在这里插入图片描述

原理图

在这里插入图片描述

PCB

在这里插入图片描述

实物展示

在这里插入图片描述

硬件连接

包括 OLED 和扬声器分别与 ESP8266 模组的接线方式。

OLED

OLEDESP8266
GNDGND
VCC3V3
SCLGPIO14
SDAGPIO2

扬声器

SpeakerESP8266
Positive ( + )GPIO16 (D0)
Negative ( - )GND

测试代码

#include <Arduino.h>
#include <U8g2lib.h>// OLED配置(I2C)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 14, /* data=*/ 2, /* reset=*/ U8X8_PIN_NONE);// 音频配置
const int speakerPin = D0;  // GPIO16
const int sampleRate = 8000;
const unsigned long sampleInterval = 1000000 / sampleRate;
unsigned long lastSampleTime = 0;// 波形显示配置
#define WAVE_BUFFER_SIZE 128
int waveBuffer[WAVE_BUFFER_SIZE];
int waveIndex = 0;
bool isPlaying = true;// 音频数据(示例为1kHz正弦波,实际使用时替换为你的音频数据)
const uint16_t SOUND_LENGTH = 80;  // 10ms音频(8000Hz/80=100Hz)
const uint8_t soundData[SOUND_LENGTH] PROGMEM = {128,140,152,164,176,187,197,206,213,219,223,225,225,223,219,213,206,197,187,176,164,152,140,128,115,103,91,79,68,58,49,42,36,32,30,30,32,36,42,49,58,68,79,91,103,115,128,140,152,164,176,187,197,206,213,219,223,225,225,223,219,213,206,197,187,176,164,152,140,128,115,103,91,79,68,58,49,42,36,32
};void setup() {Serial.begin(115200);// 初始化OLEDu8g2.begin();u8g2.clearBuffer();u8g2.setFont(u8g2_font_6x10_tr);u8g2.drawStr(0, 10, "Audio Looper");u8g2.drawStr(0, 25, "PWM Sample Rate: 8kHz");u8g2.sendBuffer();// 设置PWMpinMode(speakerPin, OUTPUT);analogWriteFreq(sampleRate);  // 设置PWM频率为8kHzanalogWriteRange(255);        // 8位分辨率delay(2000);
}void loop() {static uint16_t sampleIndex = 0;unsigned long currentTime = micros();if (currentTime - lastSampleTime >= sampleInterval) {lastSampleTime = currentTime;if (isPlaying) {// 读取音频样本uint8_t sample = pgm_read_byte(&soundData[sampleIndex]);// PWM输出analogWrite(speakerPin, sample);// 存储波形数据waveBuffer[waveIndex] = sample;waveIndex = (waveIndex + 1) % WAVE_BUFFER_SIZE;// 更新显示if (waveIndex == 0) {drawWaveform();}// 循环播放sampleIndex = (sampleIndex + 1) % SOUND_LENGTH;} else {analogWrite(speakerPin, 0);  // 静音}}
}void drawWaveform() {u8g2.clearBuffer();// 绘制坐标轴u8g2.drawHLine(0, 32, 128);// 绘制波形for (int i = 0; i < WAVE_BUFFER_SIZE-1; i++) {int currentIdx = (waveIndex + i) % WAVE_BUFFER_SIZE;int nextIdx = (waveIndex + i + 1) % WAVE_BUFFER_SIZE;int y1 = map(waveBuffer[currentIdx], 0, 255, 63, 0);int y2 = map(waveBuffer[nextIdx], 0, 255, 63, 0);u8g2.drawLine(i, y1, i+1, y2);}// 显示状态信息u8g2.setFont(u8g2_font_6x10_tr);u8g2.setCursor(0, 10);u8g2.print(isPlaying ? "Playing" : "Stopped");u8g2.sendBuffer();
}

保存代码,编译并上传至开发板,复位运行。

效果展示

连接硬件,上传固件复位运行,效果如下

在这里插入图片描述

扬声器循环播放存储于 Flash 中的音频,同时 OLED 显示其波形。

总结

本文介绍了基于 ESP8266 模块,通过 Arduino IDE 编程,实现音频播放和 OLED 波形显示,结合 3D 外壳,实现便携随身听的项目设计,为相关产品的快速开发和应用提供了参考。

http://www.lryc.cn/news/570445.html

相关文章:

  • 1. 2019年《斯坦福大学CS330多任务和元学习》第1讲:简介与概述【中文字幕】
  • 《史蒂夫·乔布斯传》(Steve Jobs)官方正式中文版高清PDF
  • 华为OD-2024年E卷-英文输入法[100分] -- python
  • 班级html网页设计实例,静态网页班级网站设计.doc
  • PMP成本管理时,合同成本的计算和注意事项
  • Python实现人机五子棋
  • 计算机操作系统 第四章练习
  • Vue-Leaflet地图组件开发(四)高级功能与深度优化探索
  • 几个软件的静默安装方法(1)
  • 不定期搬运二次元福利
  • 电脑怎么进行磁盘碎片整理?
  • 汇川IS620N伺服驱动器如何通过etherCAT主站转profinet网关与西门子1200plc通讯
  • Linux之kernel(20)kdump支持
  • 美易平台:比亚迪汽车发布关于福州闽侯展厅火灾的情况说明
  • Good Start/Smilo and Minecraft
  • Java多线程系列--【JUC锁04】-公平锁(二)
  • linux 阻塞和非阻塞
  • window10 男装linux,男人帮男装购物app-男人帮手机版下载v2.3.5-Linux公社
  • 每天宜搭宜搭小知识—报表组件—日历热力图
  • Python 03
  • 程序显示烫烫烫,屯屯屯
  • python superset 中的SQL Editor 出现乱码错误怎么办
  • 使用Drwtsn32和NTSD进行崩溃进程转储
  • Nsfocus-绿盟科技笔试题目(转)
  • 【AI学习】【Ubuntu 22.04】【安装Ollama】两种方式
  • 电脑上的.ssh目录只做什么的
  • Android 开源项目分类汇总--1
  • linux命令--test
  • Oracle数据库还原DMP文件
  • JSP详细篇——Servlet(一)