山东网站建设开发维护,网上购物哪个平台能买到正品,家庭网络设计方案,h5游戏搭建Arduino 随身听
该项目基于 ESP8266 模块#xff0c;通过 Arduino IDE 编程#xff0c;实现音频播放和 OLED 波形显示#xff0c;结合 3D 外壳#xff0c;实现便携随身听的项目设计。
介绍
Arduino 随身听#xff0c;通过网络远程控制并实现WiFi音频传输和播放。 基于E…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
OLEDESP8266GNDGNDVCC3V3SCLGPIO14SDAGPIO2
扬声器
SpeakerESP8266Positive ( )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/80100Hz)
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, i1, 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 外壳实现便携随身听的项目设计为相关产品的快速开发和应用提供了参考。