本次DIY要用到最近挺火的磁流体,制作一个酷炫音箱,效果非常的nice~

一.材料准备:

瓶装磁流体,esp32开发板,12v60kg吸力电磁铁,蓝牙功放板,运算放大模块,L298N电机模块,面包板电源,0.91寸OLED显示屏,4位数码管(TM163X驱动),12V电源适配器,喇叭,10*10洞洞板,亚克力切割外壳,亚克力专用胶水,杜邦线。(还有开关,电位器)

工具要用到电烙铁,胶布,热熔胶枪。

注意是低密度磁流体,有点贵~

电磁铁吸力太大或太小都会导致效果不好,两根线不分正负接L298N控制输出接口

考虑到音质不用esp32自带的蓝牙,5v供电,两个喇叭接口要留一个输出音频信号给开发板ADC引脚(音频信号电压值太小的话开发板检测不到,可以用个信号放大模块)

L298N用来控制电磁铁,12v供电,控制输入引脚接开发板,输出接电磁铁~

用来给各模块和开发板供电,电源输入接电源适配器~

显示屏嘿嘿,用来显示音频波形啥的,增加炫酷值~

数码管可以用来显示时间,功能+1 ~

开发板esp-wroom32,便宜又好用,(ST fu*k 油~)

喇叭选了个便宜的,有点后悔,应该买个好点的~

二.电路连接:

实物图(飞线飞啊飞~):

三:外壳设计

用不起3d打印~,亚克力YYDS~(最后发现亚克力外壳+胶水的效果比打印件还要好看一点~)

以下是亚克力切割图

四:组装:

下面黑色盒子装电路板

乐高和热熔胶万能的~(磁流体两边是灯条)

背面

五:代码:

代码没啥好讲的,数码管,OLED屏幕,wifi都有方便的库可以调用。下面四行代码就是将音频模拟信号转换为PWM信号的过程,改变代码可以可实现不同磁流体效果。

!完整的代码放在文章最后~

六:才艺表演:(声音有点小,大家请调大音量欣赏~)

磁流体音箱

节日快乐~

#include <U8g2lib.h>
#include "TM1637.h"
#include <WiFi.h>
#define CLK  19 //Set the CLK pin connection to the display
#define DIO  18 //Set the DIO pin connection to the display
#define ANALOG_PIN_0   32
#define NTP1  "ntp1.aliyun.com"
#define NTP2  "ntp2.aliyun.com"
#define NTP3  "ntp3.aliyun.com"TM1637 tm1637(CLK, DIO); //set up the 4-Digit Display.
int numCounter = 0;
bool dian = false;
/***********************************************/
填写WIFI入网信息
const char* ssid     = "好耶";     // WIFI账户
const char* password = "12345678"; // WIFI密码void setClock() {struct tm timeinfo;if (!getLocalTime(&timeinfo)){//如果获取失败,就开启联网模式,获取时间Serial.println("Failed to obtain time");WiFi.disconnect(false);WiFi.mode(WIFI_STA);//开启网络  WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}configTime(8 * 3600, 0, NTP1, NTP2,NTP3);return;}tm1637.display(0,timeinfo.tm_hour/10);tm1637.display(1,timeinfo.tm_hour%10);tm1637.display(2,timeinfo.tm_min/10);tm1637.display(3,timeinfo.tm_min%10 );tm1637.point(!dian);                                WiFi.disconnect(true);
}
/********************OLED******************/
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0,U8X8_PIN_NONE);
const int WIDTH=128;
const int HEIGHT=32;
const int LENGTH=WIDTH;
int x;
int y[LENGTH];
void clearY(){           for(int i=0; i<LENGTH; i++){y[i] = -1;}
}
/***************波形图函数******************/
void drawY(){u8g2.drawPixel(0, y[0]);for(int i=1; i<LENGTH; i++){if(y[i]!=-1){//u8g.drawPixel(i, y[i]);u8g2.drawLine(i-1, y[i-1], i, y[i]);}else{break;}}
}     void setup(){Serial.begin(115200);/**************数码管初始化*************************/ tm1637.init();tm1637.point(1);//小数点开关,1为打开,0为关闭tm1637.set(BRIGHT_TYPICAL);
/********************************************************************/pinMode(ANALOG_PIN_0,INPUT_PULLUP);//模数转换引脚
/********pwm配置**************/  ledcSetup(0,5000,8);ledcAttachPin(2,0);
/***********oled***************/
u8g2.begin();
x = 0;
clearY();/*******************wifi初始化*****************/Serial.println();
// 设置ESP32工作模式为无线终端模式WiFi.mode(WIFI_STA);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}Serial.println("WiFi connected!");configTime(8 * 3600, 0, NTP1, NTP2,NTP3);setClock();
//     从网络时间服务器上获取并设置时间
//     获取成功后芯片会使用RTC时钟保持时间的更新 WiFi.disconnect(true);WiFi.mode(WIFI_OFF);//关闭网络Serial.println("WiFi disconnected!");}void loop() {/***********输出磁场信号*********************/int analog_value = 0;analog_value = analogRead(ANALOG_PIN_0);/*******波形显示******************/y[x] = map(analog_value, 0, 4095, HEIGHT-1, 0);Serial.write(y[x]);u8g2.firstPage();  do {drawY();} while( u8g2.nextPage() );//delay(5);x++;if(x >= WIDTH){x = 0;clearY();}int PWM = map(analog_value,0,4095,0,255);digitalWrite(4,LOW);digitalWrite(15,HIGH);ledcWrite(0,PWM);/*******************数码管**************/setClock();}

基于ESP32的磁流体音箱相关推荐

  1. 用启明云端基于ESP32模块的开发板来快速了解天猫精灵

    为什么要了解天猫精灵呢? 在物联网时代,单纯的"互联"已经无法满足需求,需要让万物"智联"才能发挥它的应用价值.AI语音的简单.易用特性将成为万物"智 ...

  2. 基于ESP32的智能车竞赛新版裁判系统的软件功能要求与实现

    简 介: 本文给出了第十六届智能车竞赛裁判系统最终的软件设计和功能实现.并进行了验证,是它可以满足比赛基本计时要求. 最后给出了完整的程序. 关键词: 智能车竞赛,ESP32,视觉AI §01 智能车 ...

  3. 基于ESP32智能车竞赛裁判系统第二版硬件调试-6-26

    简 介: 对于新版的比赛裁判系统进行硬件测试,验证了新版的硬件满足比赛的要求.对于感光板的不同区域灵敏度不同的问题,最后验证是由于LED的分布电容所引起的时间常数不同造成了.对于单条串联的LED修改成 ...

  4. 基于ESP32的竞赛裁判系统功能调试-硬件修改建议

    简 介: 基于前面对于基于ESP32比赛系统的第一版本的调试,给出了在硬件方面的修改意见,便于应用到未来的智能车竞赛比赛中去. 关键词: 智能车竞赛,ESP32,比赛系统 §01 基于ESP32裁判系 ...

  5. 基于ESP32的竞赛裁判系统功能调试-与微机通讯

    简 介: 通过调试测试了基于ESP32设计的智能车竞赛的比赛系统方案与比赛软件联系的功能. 关键词: 智能车竞赛,比赛系统,ESP32 §01 比赛系统与微机通讯 在 基于ESP32智能车竞赛比赛系统 ...

  6. 基于ESP32的竞赛裁判系统功能调试-激光信号调试

    简 介: 通过揣进测试了新版的基于ESP32的裁判系统对于激光信号的检测能力. 关键词: 智能车竞赛,125Hz,激光信号 §01 智能车竞赛裁判系统   对于 基于ESP32的智能车竞赛裁判系统 中 ...

  7. 基于ESP32的竞赛裁判系统功能调试-光电条检测板

    简 介: 通过实验验证量光电检测板在比赛系统中用于检测车模通过是的功能.前面给出了对于主控板以及光电板上的参数修改内容. 关键词: 比赛系统,智能车竞赛,光电检测板 §01 竞赛裁判系统   在刚刚调 ...

  8. 基于ESP32的竞赛裁判系统功能调试-计时线圈功能

    简 介: 对于智能车竞赛比赛系统中的电磁检测功能进行了调试,设置了程序运行的主要框架. 关键词: 智能车竞赛,比赛系统,计时系统,ESP32,电磁检测 §01 智能车竞赛裁判系统   中间间隔了一段时 ...

  9. 基于ESP32智能车竞赛比赛系统硬件初步调试-5-6

    简 介: 给出了对于基于ESP32设计的智能车竞赛的の比赛系统的硬件调试过程.基本上验证了硬件设计的合理与正确性.在第一部分的"修改建议"中也给出了硬件电路的修改意见. 关键词: ...

最新文章

  1. scalikejdbc 学习笔记(4)
  2. linux git 推送空文件夹
  3. idea里自动创建构造函数
  4. python字符串切割:str.split()和re.split()对比
  5. 1.6 开发集合测试集的大小
  6. Tomcat和eclipse的整合
  7. linux内核奇遇记之md源代码解读之五
  8. 图形数据库 Neo4j(2) ----Java
  9. 嵌入式开发:LCD12864无字库仿真与程序
  10. 【每天学一点新知识】getshell???webshell???
  11. 使用mbr2gpt将MBR磁盘转换为GPT磁盘
  12. 苹果支付IAP V1
  13. Unity3D场景制作基本操作
  14. linux下刻录光盘读取不了_Linux下刻录光盘
  15. 绝对经典!百句浓缩版小常识(ZT)
  16. Cat3.0.0监控本地部署+springboot接入cat例子
  17. unity ,color组件
  18. 企业微信如何请假?如何撤销申请?
  19. 项目管理基础案例分析答案
  20. 寂然解读设计模式 - 单一职责原则

热门文章

  1. 电压/电流转换电路(类似于板子上的电路)
  2. 设计与算法 | Google Photos Web UI
  3. 【张尧学与一等奖】中国科技奖励之我见
  4. 我的金工实习心得(一):预热
  5. 递归-----从前有座山,山里有座庙,庙里有个老和尚和小和尚说.....
  6. 库存管理软件测评结果大公开!秦丝、管家婆、商陆花哪家强。
  7. meego Java_meego 1.1 开发环境的搭建及问题解决方法
  8. Linux下安装.bin软件的一些问题
  9. 为什么中国人没有发明计算机,假如计算机是中国人发明的,代码是不是该用中文写了?...
  10. 佳能相机MP4视频文件变小或打不开播放不了怎么修复