物联网  >   传感器  >  正文

自制一个带3D磁传感器的RGB无限镜子

  这是一个带有RGB LED灯带的无限镜子,这个灯带能使用连接到Arduino MKR1000的英飞凌3D磁传感器旋钮改变其颜色。

  

 

  ▌ 本项目需要的东西

  

硬件名称

 

英飞凌3D磁传感器2Go

x1

Arduino MKR1000

x1

达林顿大功率晶体管

x3

RGB LED灯带

x1

跳线(通用)

x1

软件应用程序和在线服务

 

Arduino IDE

 

手动工具和装配工具

 

 烙铁(通用)

 

  ▌ 介绍

  当我第一次看到无限镜子的效果时,我就对它印象深刻。

  我想建立我自己的版本。因此,我决定使用英飞凌的3D磁传感器套件和旋钮通过一条RGB LED灯条来控制的无限镜子上的颜色。

  在进行实际制作之前,请务必查看最终成品的演示视频:

  

 

  注意:无限效果不是那么明显。由于相机的原因,我还需要试验摆放镜子的位置,使其显得更加明显。

  这些是制作它所需的部件(仅电子部分):

  

 

  ▌细节

  我对这个项目的灵感来自于techydiy的无限镜子(这里)。看一下它吧,以便明白无限镜子的理念。

  由于3D磁传感器2Go套件没有足够的PWM引脚,我使用了Arduino MKR1000板来扩展它,因此我可以轻松地向无限镜子添加任何其他东西。

  除此之外,颜色变化算法通过将RGB值(从0到255)转换为HSV(色调饱和度值)来工作,其中将色调值从0改变为360将改变LED的颜色。

  注意:我没有编写从HSV转换到RGB的代码。在网上搜索后,我从这个网站(这里)找到了代码。因此,我使用了修改后适配了3D Magnetic 2Go套件的算法。

  这是我转换的代码片段:

  void setLedColorHSV(int h, double s, double v) {

  //this is the algorithm to convert from RGB to HSV

  double r=0;

  double g=0;

  double b=0;

  double hf=h/60.0;

  int i=(int)floor(h/60.0);

  double f = h/60.0 - i;

  double pv = v * (1 - s);

  double qv = v * (1 - s*f);

  double tv = v * (1 - s * (1 - f));

  switch (i)

  {

  case 0: //rojo dominante

  r = v;

  g = tv;

  b = pv;

  break;

  case 1: //verde

  r = qv;

  g = v;

  b = pv;

  break;

  case 2:

  r = pv;

  g = v;

  b = tv;

  break;

  case 3: //azul

  r = pv;

  g = qv;

  b = v;

  break;

  case 4:

  r = tv;

  g = pv;

  b = v;

  break;

  case 5: //rojo

  r = v;

  g = pv;

  b = qv;

  break;

  }

  //set each component to a integer value between 0 and 255

  int red=constrain((int)255*r,0,255);

  int green=constrain((int)255*g,0,255);

  int blue=constrain((int)255*b,0,255);

  setLedColor(red,green,blue);

  }

  以下是整个项目如何运作的概要:

  3D Magnetic 2Go通过其硬件串口发送旋钮的当前位置(范围从0到360度)。

  MKR1000连接到3D Magnetic 2Go的UART引脚,它会解析之前发送的角度。

  这个角度在上面的代码片段中用于代替色调(正如我之前所说的那样,范围从0到360)。

  此功能根据该角度生成三个值(红色,绿色和蓝色),范围从0到255。

  用analogWrite函数将这些值写入到连接到MKR1000的RGB LED灯条(当然使用像TIP120这样的晶体管!)。只需旋转旋钮,就可以将光变换为色环上最亮的颜色,从而得到一个漂亮的效果。

  

 

  话虽如此,让我们继续讨论这个项目本身。

  ▌配置3D Magnetic 2Go套件

  这是连接到套件的旋钮:

  

 

  这是套件的引脚:

  

 

  注意:我将使用Arduino IDE对套件进行编程(版本1.1.2)。

  假设您了解了基础知识,比如如何上传代码以及已经设置好套件并从Arduino IDE获得程序模板,这一步将非常简单。

  只需下载XMC1100的附加代码即可。

  选择正确的板子和COM端口,并将“串行输出选择”设置为“PC”。完成后,上传代码并打开串行监视器。 你应该看到一个从0到360这样的数字,通过旋钮来改变:

  

 

  如果和上图一样,则意味着一切正常,再次上传相同的代码,但这一次,将“串行输出选择”设置为“在板上”,并确保正确地上传。

  

 

  现在你不会在串行监视器中看到任何输出,这是完全正常的,只需继续下一步。

  ▌配置MKR1000

  这是MKR1000:

  

 

  这是MKR1000的引脚,供您参考:

  

 

  下载Arduino MKR1000附上的代码,然后将其简单地上传到Arduino MKR1000。这很容易,不是吗?

  ▌连接一切和测试

  现在,只需将一块板的Tx引脚连接到另一块板的Rx引脚,将一块板的Rx引脚连接到另一块板的Tx,然后将MKR1000的3.3v电源连接到XMC2Go的3.3v引脚(如果你想的话!),并确保地线也连接。

  注意:我已将3.3v从MKR1000连接到XMC2Go; 这将直接从MKR1000启动XMC2Go。引自XMC2Go引脚图:

  如果电路板通过3.3v引脚供电,则不建议通过USB供电,反之亦然

  这是它们应该看起来的样子:

  

 

  注意:我会建议您首先搭起所有电子部件,当它运行得完美时,然后继续搭建无限镜子。

  如果要测试MKR1000和3D磁传感器套件之间的连接是否正常,请将MKR1000连接到计算机的USB端口,以9600波特打开串行监视器。你应该看到这样:

  

 

  正在发生的事情是3D磁传感器套件正在发送旋钮的角度(从0到360度),MKR1000分析该角度并将其转换为RGB颜色编码(每个从0到255),循环处理所有颜色。旋转旋钮,查看值的变化。

  现在是时候将晶体管连接到MKR1000了。根据此连接图:

  

 

  注意:我使用的是共阳极型RGB LED灯条,Adafruit上的这篇文章对它的设置很有帮助。

  我将晶体管连接在一个单独的小面包板上:

  

 

  连接完所有东西之后:

  

 

  插入LED灯条的12伏电源,以及MKR1000的电源(我假设您已经从MKR1000上的3.3v为XMC2Go供电),LED灯条应该如下那样点亮:

  

 

  旋转旋钮,看到颜色变化:

  

 

  一个用旋钮LED灯条变色的视频,循环显示所有颜色:

  

 

  ▌制作无限镜子

  现在您已经完成了电子部分并且能够改变RGB LED灯条的颜色,我们继续制作无限镜子本身。

  我不会更详细地介绍这个,因为我不是专家; 这是我第一次做这样的事情,但最终的结果还不是那么糟糕。 我再次在YouTube上看到了这个视频,它确实帮助我搭建了它。

  这些是我如何搭建它的一些图片,只是为了让你明白个大概。

  我已经有了这个木制框架,我在制作PCB时用它作为边框,它作为无限镜子时看起来更好用。

  

 

  框架也有这个透明玻璃,可以删除:

  

 

  但要使无限镜子错觉起作用,需要对玻璃进行着色。要做到这一点,首先需要清洁玻璃:

  

 

  我用这个车窗色调(我从一家汽车店买到的)用肥皂水和一张用于压出气泡的卡片。

  

 

  并将线焊接到带子上并通过镜子中的一个孔将它们取出,以使后镜(稍后将安装)与框架平放。

  

 

  将LED灯条安装到框架上后(后面没有镜子)测试LED灯条。

  

 

  现在换另一个完全反光的镜子,它放在镜架的后面,但因为我现在还没有这个,我只是将镜架(配有RGB LED条带)放在梳妆台镜子前面测试。 最后使用3D磁传感器旋钮更改无限镜子的颜色。

  

 

  ▌最后的总结

  所以现在您可以使用旋钮柄和Arduino MKR1000更改RGB LED灯条的颜色。您可以轻松更改XMC2Go中的代码以更改另一种RGB LED的颜色,但是当按下开关时,您还可以添加更多效果。您甚至可以使用相同的旋钮来调暗或照亮另一个LED,只需更改代码即可。

  我找不到一个有多色LED的RGB LED灯条; 我找到的那个有红色,绿色和蓝色LED。使用带有多色LED的RGB灯条会产生更明显的颜色变化,因此如果您找到它们,它们看起来会更好看。

  任何人都可以想出另一种用处,而不是无限镜子,你可以在任何你能想到的东西中使用它。 它可以为您的汽车后备箱,自行车或踏板车照明,或为您的桌子照明,如:

  

 

 

 

上一篇:用TS408快速更换2017年别克昂科威胎压传感器

下一篇:无线传感器特性