Indholdsfortegnelse:

Bluetooth Smartphone-styret Smart LED-lampe: 7 trin
Bluetooth Smartphone-styret Smart LED-lampe: 7 trin

Video: Bluetooth Smartphone-styret Smart LED-lampe: 7 trin

Video: Bluetooth Smartphone-styret Smart LED-lampe: 7 trin
Video: iLintek Bluetooth smart LED light/Downlight Blub 2024, Juli
Anonim
Image
Image
Bluetooth Smartphone-styret Smart LED-lampe
Bluetooth Smartphone-styret Smart LED-lampe

Jeg drømmer altid om at styre mine belysningsapparater. Så lavede nogen en utrolig farverig LED -lampe. Jeg stødte for nylig på en LED -lampe af Joseph Casha på Youtube. Da jeg blev inspireret af det, besluttede jeg at tilføje flere funktioner, samtidig med at jeg beholder det moderne design.

Planen er at gøre lampen mere brugervenlig ved at tilføje et Bluetooth-modul og adresserbar WS2812B RGB LED-strimmel. Dette gjorde det muligt at styre farven på belysningen bare ved hjælp af en smartphone -app.

Trin 1: Saml materialerne

Saml materialerne
Saml materialerne
Saml materialerne
Saml materialerne

Værktøjer:

• Loddestation

• Varmeblæserpistol

• Boremaskine

• Rundsav

• Stiksav

• Wire Cutter tang

• Smal næsetang

Materialer:

• Gennemsigtig akrylplade

• Japansk Cypress Wood (eller du kan bruge ethvert træ, så længe det er stabilt og stærkt nok)

• Skruer

• Stang eller pind i rustfrit stål

• Ledninger (jeg bruger rød og sort ledning)

• Loddetin

Elektronikkomponenter:

• Arduino Nano

• Bluetooth-modul HC-05 (jeg besluttede at bruge dette, da det er lettere at kode end Wifi-modul ESP8266)

• WS2812B adresserbar RGB LED -strip

• LM2596 Step-down modul

• DC Barrel Power Jack

Trin 2: Opbygning af lampens struktur

Opbygning af lampens struktur
Opbygning af lampens struktur
Opbygning af lampens struktur
Opbygning af lampens struktur

I dette trin har jeg to måder at opbygge strukturen på lampe- træbearbejdningsmetoden og 3D-udskrivningsmetoden. Jeg bruger den første metode. Hvis du foretrækker at lave det ved hjælp af en 3D -printer, er du velkommen til at springe til trin 2 for den model, jeg har designet.

For den øvre del af lampen opvarmer og bøjer jeg akrylpladen i en 90 ° vinkel som vist ovenfor. Jeg tager ret lang tid at bøje den til en så perfekt vinkel og retning.

Dernæst til den nederste del af lampen. Desværre … den dag, hvor jeg arbejder på den nederste del af lampen, glemte jeg helt at tage et billede af konstruktionen! Det indså jeg da jeg var færdig med dette projekt. Men jeg vil gøre mit bedste for at give dig målingen af den nederste del af lampen.

Grundlæggende skal du bare skære fire træblokke, der måler 13x6x2cm (LxHxB). Dernæst skal du skære et trappelignende snit i kanten af træet. Billedet vil blive vist ovenfor.

Trin 3: 3D -figurerne

3D -figurerne
3D -figurerne
3D -figurerne
3D -figurerne

For alle, der har deres egen 3D -printer, er du på det rigtige trin. Dette gjorde denne lampe brugervenlig.

For at være ærlig var dette det sværeste trin, jeg gjorde. Dette er det første, jeg gjorde lige efter installationen af softwaren!

Jeg bruger Sketchup Pro til at designe lampens struktur. Desværre er jeg ikke dygtig nok til at designe dens indvendige komponent. Linket til min 3D -model er i filen herunder.

Trin 4: Komponenternes skema

Komponenternes skema
Komponenternes skema

Jeg bruger Fritzing til at konstruere komponenternes skema. Skematikken er faktisk ret let.

Trin 5: Koden

Koden
Koden

Til kodningen af denne stemningslampe brugte jeg nogle biblioteker fra Arduino IDE. Bibliotekerne vises på trin 7.

For koden skal du have selve Arduino -softwaren. Jeg giver linket til download her.

Skitsen eller koden vil også blive vist nedenfor?

Jeg leverede også filen til koden i Github.com, hvis koden herunder er for lang til at kopiere her;)

#include #include #include #ifdef _AVR_ #include #endif

SoftwareSerial BT (10, 11);

#define LED_PIN 7 #define NUM_LEDS 60 #define BRIGHTNESS 200 #define SPEED 10 #define UMIDDELIG 0 #define RAINBOW_SPEED 50 CRGB leds [NUM_LEDS];

Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

bool offOld = LAV;

bool WhiteOld = LAV; bool RedOld = LAV; bool GreenOld = LAV; bool BlueOld = LAV; bool TopazOld = LAV; bool LilacOld = LAV; bool RainbowOld = LAV; bool rgbOld = LAV; int showType = 0;

ugyldig opsætning () {

FastLED.addLeds (leds, NUM_LEDS); ////////////

BT.begyndte (9600);

BT.println ("Tilsluttet Arduino");

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show ();

}

char a;

void loop () {

for (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool Hvid = LAV; bool Blå = LAV; bool Rød = LAV; bool Grøn = LAV; bool Topaz = LAV; bool Lilac = LAV; bool Rainbow = LAV; bool rgb = LAV; bool ende; hvis (BT.tilgængelig ()) {a = (char) BT.read ();

hvis (a == 'o')

{off = HIGH; BT.println ("SLUKNING af lysdioder..");

}andet{

slukket = LAV; } // =================================================== ===============================================

hvis (a == 'w')

{Hvid = HØJ; BT.println ("TURNING LEDs WHITE");

}andet{

Hvid = LAV; } // =================================================== ===============================================

hvis (a == 'b')

{Blå = HØJ; BT.println ("SKIFT TIL BLÅ"); } ellers {Blå = LAV; }

// ===========================================================================================

hvis (a == 'r')

{Rød = HØJ; BT.println ("ÆNDRING TIL RØD"); } andet {Rød = LAV; }

// ===========================================================================================

hvis (a == 'g')

{Grøn = HØJ; BT.println ("ÆNDRING TIL GRØNN"); } ellers {Grøn = LAV; }

// ===========================================================================================

hvis (a == 't')

{Topaz = HIGH; BT.println ("ÆNDRING TIL TOPAZ"); } ellers {Topaz = LAV; }

// ===========================================================================================

hvis (a == 'l')

{Lilla = HØJ; BT.println ("ÆNDRING AF LILAC"); } andet {Lilac = LOW; }

// ===========================================================================================

hvis (a == 'a')

{Regnbue = HØJ; BT.println ("RAINBOW ANIMATION"); } andet {Rainbow = LOW; } // =================================================== ===============================================

hvis (a == 'm')

{rgb = HIGH; BT.println ("MIX COLORS"); } ellers {rgb = LAV; }} if (off == LOW && offOld == HIGH) {forsinkelse (20); hvis (off == LOW) {showType = 0; // Fra animation Type 0 startShow (showType); }}

// ===========================================================================================

hvis (White == LOW && WhiteOld == HIGH) {

forsinkelse (20); hvis (Hvid == LAV) {showType = 1; // Hvid animation Type 1 startShow (showType); }}

// =================================================== ============================================= hvis (rød == LAV && RedOld == HIGH) {forsinkelse (20); hvis (Rød == LAV) {showType = 2; // Rød animation Type 2 startShow (showType); }}

// ===========================================================================================

hvis (Green == LOW && GreenOld == HIGH) {

forsinkelse (20); hvis (Grøn == LAV) {showType = 3; // Grøn animation Type 3 startShow (showType); }} // ================================================== =================================================

hvis (Blue == LOW && BlueOld == HIGH) {

forsinkelse (20); hvis (Blå == LAV) {showType = 4; // Blå animation Type 4 startShow (showType); }}

// ===========================================================================================

hvis (Topaz == LOW && TopazOld == HIGH) {

forsinkelse (20); hvis (Topaz == LOW) {showType = 5; // Topaz -animation Type 5 startShow (showType); }}

// ===========================================================================================

hvis (Lilac == LOW && LilacOld == HIGH) {

forsinkelse (20); hvis (Lilac == LOW) {showType = 6; // Topaz -animation Type 6 startShow (showType); }} // ================================================== =================================================

hvis (Rainbow == LOW && RainbowOld == HIGH) {

forsinkelse (20);

hvis (Rainbow == LOW) {

showType = 8; // Rainbow animation Type 8 startShow (showType); }}

// ===========================================================================================

hvis (rgb == LOW && rgbOld == HIGH) {

forsinkelse (20);

hvis (rgb == LOW) {

showType = 7; // Mix animation Type 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = Hvid;

RedOld = Rød; BlueOld = Blå; GreenOld = Grøn; TopazOld = Topaz; LilacOld = Lilac; offOld = off; RainbowOld = Rainbow; rgbOld = rgb;

}

void startShow (int i) {

skift (i) {

case 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Sort/off

pause;

sag 1: strip.setBrightness (255); // Ændrer lysstyrken til MAX

colorWipe (strip. Color (255, 255, 255), Umiddelbart); // Hvid strip.setBrightness (BRIGHTNESS); // Nulstil lysstyrken til standardværdibrydning;

sag 2: colorWipe (strip. Color (255, 0, 0), SPEED); // Rød

pause;

sag 3: colorWipe (strip. Color (0, 255, 0), SPEED); // Grøn

pause;

sag 4: colorWipe (strip. Color (0, 0, 255), SPEED); // Blå

pause;

sag 5: colorWipe (strip. Color (0, 250, 255), SPEED); // Topas

pause;

sag 6: colorWipe (strip. Color (221, 130, 255), SPEED); // Lilac

pause; sag 7: colorWipe (strip. Color (255, 0, 0), SPEED); // Rød farveWipe (strip. Color (0, 255, 0), SPEED); // Grøn colorWipe (strip. Color (0, 0, 255), SPEED); // Blue theaterChase (strip. Color (0, 0, 127), SPEED); // Blue theaterChase (strip. Color (127, 0, 0), SPEED); // Red theaterChase (strip. Color (0, 127, 0), SPEED); // Grøn pause;

sag 8: rainbowCycle (25);

pause; }} void colorWipe (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i

void rainbowCycle (uint8_t wait) {

uint16_t i, j;

for (j = 0; j <256*10; j ++) {// 5 cykler af alle farver på hjulet for (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); forsinkelse (vent); }}

void theaterChase (uint32_t c, uint8_t vent) {

for (int j = 0; j <10; j ++) {// gør 10 cykler med jagt efter (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // slå hver tredje pixel til} strip.show ();

forsinkelse (vent);

for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // sluk for hver tredje pixel}}}}

uint32_t Wheel (byte WheelPos) {

WheelPos = 255 - WheelPos; hvis (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } hvis (WheelPos <170) {WheelPos -= 85; returstrimmel. Farve (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; returstrimmel. Farve (WheelPos * 3, 255 - WheelPos * 3, 0); }

Trin 6: Styring af lampen

Styring af lampen
Styring af lampen
Styring af lampen
Styring af lampen
Styring af lampen
Styring af lampen

Lampens farve kan styres ved hjælp af din smartphone.

Først skal du installere appen kaldet 'Bluetooth Terminal HC-05' fra Google Play Store eller Apple App Store.

Dette er trinene til at styre lampen via din egen smartphone:

1. Tænd for bluetooth i din smartphone.

2. Åbn appen, der er 'Bluetooth Terminal HC-05'.

3. Du skal nu se de parrede enheder på skærmen. Vælg 'HC-05'.

4. Nu kan du se en sort skærm vises i din smartphone, der angiver 'forbundet til Arduino'.

5. Her er den sjove del, hvis du skriver 'b' i tekstboksen, bliver lampen til blå farve. Her er listen over den kommando, du kan skrive til lampen:

- w for hvid

- b for blå

- g for grønt

- r for rødt

- t for topas

- l for lilla

- en til regnbue -animation

- o for off

Sjovt ikke?

6. Sidst men ikke mindst kan du også tilpasse knappen under skærmen til den ønskede tekst som vist på billedet ovenfor.

Trin 7: Nyd din humørlampe

Nyd din humørlampe !!
Nyd din humørlampe !!
Nyd din humørlampe !!
Nyd din humørlampe !!
Nyd din humørlampe !!
Nyd din humørlampe !!

Jeg håber, at du kan lide denne Instructables. Det var et meget udfordrende projekt for mig, men det lykkedes mig at afslutte det fuldstændigt som en 14 år gammel dreng. Giv mig nogle tilbagemeldinger til fremtidige forbedringer.

Tak for læsningen og glædelig jul!

Anbefalede: