当科技在贴近人性,简单会颠覆复杂,感性超理性!16年我做过一盏智能蘑菇灯外观简洁时尚小巧赢得了大部分人的喜爱,但也因需要连接APP后才能蓝牙控制蘑菇灯,后面导致送朋友的蘑菇灯因手机兼容性问题造成无法控制~这就尴尬了。。。那么就不得不考虑重新设计一盏小巧、方便携带、容易操作的智能灯了。话不多说~先看视频!
如果视频无法播放!!!
既然说到小巧可携带,就不得不提一下它的机身尺寸了,高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_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
- // NEO_KHZ400 400 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小时!续航还是非常令人满意的,当然了,如果你使用容量更大的电池续航将大大提高。
|