聚丰项目 > 磁悬浮交互式蓝牙音响

磁悬浮交互式蓝牙音响

在无线供电模块申请的过途中,随着无线充电技术的了解,其能够摆脱电线的特质让我脑中自然联想到了自己正感兴趣的磁悬浮技术, 两者都体现了摆脱束缚的自由感。在此基础上,考虑到两者的结合,为其设计了音响的应用场景。(本项目采用的是IDT 15W无线充电开发套件) 字数限制,建议先观看演示视频了解项目

kireeee kireeee

分享
25 喜欢这个项目
团队介绍

kireeee kireeee

团队成员

王军 学生

分享
项目简介
在无线供电模块申请的过途中,随着无线充电技术的了解,其能够摆脱电线的特质让我脑中自然联想到了自己正感兴趣的磁悬浮技术, 两者都体现了摆脱束缚的自由感。在此基础上,考虑到两者的结合,为其设计了音响的应用场景。(本项目采用的是IDT 15W无线充电开发套件) 字数限制,建议先观看演示视频了解项目
硬件说明


在无线供电模块申请的过途中,随着无线充电技术的了解,其能够摆脱电线的特质让我脑中自然联想到了自己正感兴趣的磁悬浮技术,    

  两者都体现了摆脱束缚的自由感。在此基础上,考虑到两者的结合,为其设计了音响的应用场景,原因如下:

  第一点,现在音响使用的场合中社交因素占很多比重,对于追求新潮的年轻一代酷炫的悬浮效果自然吸引眼球,磁悬浮的特点又体现了很强的科技感,对未来产品的定位以及发展都提供了很好的基础。

  第二点,结合蓝牙模块的使用,使得该作品最大程度上体现了摆脱线缆的特点,契合我想表达的主题。

蓝牙音箱在我们的生活中并不少见,但该作品的创新除了实现了磁悬浮更在于完成了浮子的无线充电和通过动作浮子完成与音响的交互。



功能设计


vong00001.jpg



器件选择

vong00002.jpg


vong00004.jpg

1.1 支撑结构部分:

 

1.1.1:3D打印的外壳

 

vong00005.jpg

1.2 控制部分:

 

1.2.1:Adruino

主要负责灯带的驱动、adc的接受转换、浮子动作的判断、蓝牙播放歌曲的切换和暂停播放。

1.2.2:蓝牙模块

  负责歌曲的接收和播放

 

1.3 功放扬声部分:

 

1.3.1:PAM功放板

  负责将自信号源的微弱电信号进行放大以驱动扬声器发出声音。

1.3.2:5w扬声器

把电信号转变为声信号。

 

1.4 灯光部分:

 

1.4.1: RGB灯带

通过串口可以自由进行RGB发光,完成动态效果。

 

1.5 传感器及各补充原件:

 

1.5.1霍尔传感器

负责获得浮子的位置,将浮子的磁场转化为电压值送给控制部分。

1.5.2电压比较器

设定好阈值以实现按压后将分流出的霍尔传感器的电压二分为高低电平已完成对单片机中断的产生

1.5.3滤波电容

  由独石电容、瓷片电容组成负责过滤信号中的干扰,防止特别是蓝牙模块对功放的干扰。

1.5.4 稳压二极管

  防止下级电路对霍尔传感器造成影响

 

1.6电源以及无线充电部分:

 

1.6.1 IDT 15WQi合规型发送器原型套件 (P9242-R-EVK) & 收器原型套件(P9025AC-R-EVK)

 

 

1.6.2 电源适配器(12v2A)


vong00006.jpg

幻灯片14.JPG幻灯片15.JPG幻灯片16.JPG





软件说明

图片.png

#include <Adafruit_NeoPixel.h>

#define PIN 6

#define NUMPIXELS      16

#define Max    885 //浮子自然位置adc

Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);//初始化RGB库文件

int delayval = 500; //设置延迟时间

 

int pinInterrupt = 3; //为升级使用中断预留

 

int Aver1;//adc采样 平均

int Aver2;

int Aver3;

int Aver4;

int Aver5;

int Aver6;

int Aver7;

 

void setup() {

Serial.begin(115200);

   printf_begin();

   pinMode(A0,INPUT);

   pinMode(A5,OUTPUT);

   strip.begin();

   strip.show();

  

}

 

void loop() {

  rainbow(6);

 //colorWipe(strip.Color(0, 255, 0), 1);

 attachInterrupt( digitalPinToInterrupt(pinInterrupt), onChange, CHANGE); //电平变化进入中断

  digitalWrite(A5,HIGH);

 

 Aver1=analogRead(A0);

 delay(5);

 Aver2=analogRead(A0);

  delay(5);

 Aver3=analogRead(A0); delay(5);

 Aver4=analogRead(A0); delay(5);

 Aver5=analogRead(A0); delay(5);

 Aver6=analogRead(A0); delay(5);

 Aver7=analogRead(A0); delay(5);

 int k= ( Aver1+ Aver2+ Aver3+ Aver4+ Aver5+ Aver6+ Aver7)/7;

    

     printf("%d\r\n",k);

 int m=1;

     if(k<=Max)

     {

      digitalWrite(A5,LOW); delay(200);digitalWrite(A5,HIGH);

      colorWipe(strip.Color(255, 0, 0), 20);

      printf("Q");//输出电压值以及触发条件 调试时使用

      colorWipe(strip.Color(0, 255, 0), 1);

      while(m)

      {

        colorWipe(strip.Color(0, 255, 0), 1);

    

      //等待中断

     

     

      } 

    

}

 

 

// 0以下是rgb一级串口重定向调试实现必要函数0000000000000000000000000000

 

 int serial_putc( char c, struct __file * )

{

  Serial.write( c );

  return c;

}

void printf_begin(void)

{

  fdevopen( &serial_putc, 0 );

}

void colorWipe(uint32_t c, uint8_t wait) {

  for(uint16_t i=0; i<strip.numPixels(); i++) {

    strip.setPixelColor(i, c);

    strip.show();

    delay(wait);

  }

}

 

void rainbow(uint8_t wait) {//彩虹RGB变化

  uint16_t i, j;

 

  for(j=0; j<256; j++) {

    for(i=0; i<strip.numPixels(); i++) {

      strip.setPixelColor(i, Wheel((i+j) & 255));

    }

    strip.show();

    delay(wait);

  }

}

 

void rainbowCycle(uint8_t wait) {//转轮式彩虹RGB变化

  uint16_t i, j;

 

  for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel

    for(i=0; i< strip.numPixels(); i++) {

      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));

    }

    strip.show();

delay(wait);

  }

}

 

void theaterChase(uint32_t c, uint8_t wait) {

  for (int j=0; j<10; j++) {  //do 10 cycles of chasing

    for (int q=0; q < 3; q++) {

      for (uint16_t i=0; i < strip.numPixels(); i=i+3) {

        strip.setPixelColor(i+q, c);    //turn every third pixel on

      }

      strip.show();

 

      delay(wait);

 

      for (uint16_t i=0; i < strip.numPixels(); i=i+3) {

        strip.setPixelColor(i+q, 0);        //turn every third pixel off

      }

    }

  }

}

 

 

void theaterChaseRainbow(uint8_t wait) {

  for (int j=0; j < 256; j++) {     // cycle all 256 colors in the wheel

    for (int q=0; q < 3; q++) {

      for (uint16_t i=0; i < strip.numPixels(); i=i+3) {

        strip.setPixelColor(i+q, Wheel( (i+j) % 255));    //turn every third pixel on

      }

strip.show();

 

      delay(wait);

 

      for (uint16_t i=0; i < strip.numPixels(); i=i+3) {

        strip.setPixelColor(i+q, 0);        //turn every third pixel off

      }

    }

  }

}

uint32_t Wheel(byte WheelPos) {

  WheelPos = 255 - WheelPos;

  if(WheelPos < 85) {

    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);

  }

  if(WheelPos < 170) {

    WheelPos -= 85;

    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);

  }

  WheelPos -= 170;

  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);

}


评论区(5 )
  • kingdomhua: 这个磁悬浮音箱在哪买的?表示很喜欢

    回复

    • kireeee: hhh,等再完善完善就某宝上架

      回复

  • 757920300: 您好,我有磁悬浮项目,想和您合作,请加qq757920300,谢谢

    回复

  • 禾木创客: 您好,我是做3D打印的,我对您的项目很感兴趣,想深入了解,我的QQ是1351294355,希望一起交流讨论,谢谢!

    回复

  • Dgh丶: 你好,请问蓝牙模块用的是什么呢?

    回复