做一盏小巧的调色智能灯!
当科技在贴近人性,简单会颠覆复杂,感性超理性!16年我做过一盏智能蘑菇灯外观简洁时尚小巧赢得了大部分人的喜爱,但也因需要连接APP后才能蓝牙控制蘑菇灯,后面导致送朋友的蘑菇灯因手机兼容性问题造成无法控制~这就尴尬了。。。那么就不得不考虑重新设计一盏小巧、方便携带、容易操作的智能灯了。话不多说~先看视频!https://www.bilibili.com/video/av10907793/
如果视频无法播放!!!
既然说到小巧可携带,就不得不提一下它的机身尺寸了,高47mm长宽均为40mm。机身为PLA材料3D打印,依然配置无线充电功能,使用3.7v800mAh的锂电池提供电源,控制采用DFRobot的DFR0282Beetle控制器,该控制器体积只有硬币大小非常适合做这样小巧美观的作品。操作是通过一个10K的齿轮电阻控制灯的颜色,当齿轮电位器旋转到不同的阻值时Beetle控制器控制WS2812LED发出不同颜色的灯光。
材料准备
你需要准备一把电烙铁、焊锡、高温胶带、热熔胶、剥线钳、一台3D打印机等工具,以及下图所列出的电子元器件材料。
电路主接线图
智能灯电路部分,可参照我画好的电路图。
制作过程
第一步:进行3D建模,并打印出智能灯的外壳和无线充电发射底座。
第二步:焊接智能灯硬件电路部分。
首先在无线充电接受线圈输出端正极焊接一个整流二极管,将齿轮电位器引脚焊接上导线。
将无线充电接受线圈、电池、开关、Beetle控制器、齿轮电位器、WS2812按照电路连接图依次焊接起来。
上传以下控制程序到Beetle控制器。
#include <Adafruit_NeoPixel.h>
#define ledPIN 10//led接D10
#define potPIN 1 //电位器接A1
int val = 0; // 读取存储传感器的值
uint8_t r, g, b;
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(13, ledPIN, NEO_GRB + NEO_KHZ800);
void setup() {
//r=255;
//g=0;
//b=0;
pinMode(ledPIN, OUTPUT);// declare the ledPin as an OUTPUT
strip.begin();
strip.setBrightness(255); //adjust brightness here
strip.show(); // Initialize all pixels to 'off'
}
void loop() {
//rainbowRGB(10);
val = analogRead(potPIN); // read the value from the sensor
/** if (val<1) {
colorWipe(strip.Color(255, 0, 0), 20); // Red
} else{
if (val>1023) {
colorWipe(strip.Color(0, 255, 0), 50); // Green
}
else {colorWipe(strip.Color(0, 0, 255), 10); // Blue}
}
}**/
colorVal(val,10);
/*if (val<50) {
colorWipe(strip.Color(255, 0, 0), 10); // Red
}
else {
colorWipe(strip.Color(0, 0, 255), 10); // Blue
}*/
}
void colorVal(int v, uint8_t wait) {
uint8_t r=0, g=0, b=0;
if ((v>=0) && (v<256))
{r=255;g=v;b=0;}
if ((v>256) && (v<512))
{r=512-v;g=255;b=0;}
if ((v>512) && (v<768))
{r=0;g=255;b=v-512;}
if ((v>768) && (v<=1024))
{r=0;g=1024-v;b=255;}
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, r, g, b);
strip.show();
delay(wait);
}
}
// Fill the dots one after the other with a color
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 rainbowRGB(uint8_t wait) {
uint16_t i;
for(i=0; i<strip.numPixels(); i++) {
nextRGB();
strip.setPixelColor(i, r, g, b);
}
strip.show();
delay(wait);
}
void nextRGB() {
if ( r == 255 && g < 255 && b == 0 ){ g++; }
if ( g == 255 && r > 0 && b == 0 ) { r--; }
if ( g == 255 && b < 255 && r == 0 ){ b++; }
if ( b == 255 && g > 0 && r == 0 ) { g--; }
if ( b == 255 && r < 255 && g == 0 ){ r++; }
if ( r == 255 && b > 0 && g == 0 ) { b--; }
}
第三步:组装。
依次将无线充电接受线圈、齿轮电位器、锂电池、Beetle控制板、WS2812LED装入智能灯底座内,并用热熔胶固定,最后扣上正方体灯罩。
第四步:制作无线充电发射底座。
将无线充电发射线圈直流输入导线焊接在充电保护的前端,不经过限流芯片。(注意!不要焊接在保护限流板后端,否则会影响发射线圈正常工作。)再将一个220欧电阻与LED串联再并联焊接在电源输入端用作电源输入指示灯。
将焊接好的充电电路安装在无线充电发射底座内,并用热熔胶固定,最后扣上底座盖。
好了~做到这一步基本上就算完工了!!还有不清楚的地方可参考视频教程内的制作过程。这款智能灯相对来说制作还是比较简单的,充一次电经过我测试,能连续发光6小时!续航还是非常令人满意的,当然了,如果你使用容量更大的电池续航将大大提高。
怎么下载附件呀? 附件无法下载哦:( 本帖最后由 源代码 于 2017-5-29 09:28 编辑
好奇吖斌 发表于 2017-5-29 00:05
擦,沙发,板凳你都坐了,我坐地板好了!
果然被你说到了~视频不能播放是因为我的复制的是会员去广告的链接,第三方平台不让播,现在是带广告的链接,能播了。。。 多彩又小巧玲珑的智能灯,好漂亮~( •̀ ω •́ )y~ {:5_189:}:victory: 紫霜安雪 发表于 2017-5-28 22:17
擦,沙发,板凳你都坐了,我坐地板好了! 厉害了 hnyzcj 发表于 2017-5-29 09:20
厉害了
我好久没有更新了{:5_196:} 紫霜安雪 发表于 2017-5-28 22:14
多彩又小巧玲珑的智能灯,好漂亮~( •̀ ω •́ )y~
比蘑菇灯更方便操作,蘑菇灯还需要链接APP{:5_161:} {:5_190:}效果很赞~~~ 喜欢~ nicho 发表于 2017-5-29 14:50
效果很赞~~~ 喜欢~
我打算做你那的体感耳朵玩玩~特别喜欢哈哈{:5_192:} 效果好棒!!又一佳作 棒棒的 Ace 发表于 2017-6-1 11:01
棒棒的
谢谢Ace夸奖:lol luna 发表于 2017-5-31 13:35
效果好棒!!又一佳作
我发现我做了好多灯~~{:5_161:} 紫霜安雪 发表于 2017-5-28 22:17
{:5_183:}{:5_186:} 小巧可爱 来来来,点赞围观喽~正品即将推出~哈哈哈哈~先透露一下下 怎么下载附件呀? 怎么提高阅读权限? 想带学生模仿做一下这个项目,楼主能指导一下吗?下载不了贵贴的附件哦:)