Innholdsfortegnelse:

Bluetooth Smartphone-kontrollert Smart LED-lampe: 7 trinn
Bluetooth Smartphone-kontrollert Smart LED-lampe: 7 trinn

Video: Bluetooth Smartphone-kontrollert Smart LED-lampe: 7 trinn

Video: Bluetooth Smartphone-kontrollert Smart LED-lampe: 7 trinn
Video: ТЕПЕРЬ НЕ ПРОПАДУ 10-ть самоделок ВЫРУЧАТ ГДЕ УГОДНО! 2024, Juli
Anonim
Image
Image
Bluetooth Smartphone-kontrollert Smart LED-lampe
Bluetooth Smartphone-kontrollert Smart LED-lampe

Jeg drømmer alltid om å kontrollere belysningsapparatet mitt. Så laget noen en utrolig fargerik LED -lampe. Jeg kom nylig over en LED -lampe av Joseph Casha på Youtube. Da jeg ble inspirert av det, bestemte jeg meg for å legge til flere funksjoner samtidig som jeg beholder det moderne designet.

Planen er å gjøre lampen mer brukervennlig ved å legge til en Bluetooth-modul og adresserbar WS2812B RGB LED-stripe. Dette gjorde det mulig å kontrollere fargen på belysningen bare ved å bruke en smarttelefon -app.

Trinn 1: Samle materialene

Samle materialene
Samle materialene
Samle materialene
Samle materialene

Verktøy:

• Loddestasjon

• Varmeviftepistol

• Drill Machine

• Sirkelsag

• Stikksag

• Wire Cutter tang

• Tang med smal nese

Materialer:

• Gjennomsiktig akrylplate

• Japansk Cypress Wood (eller du kan bruke hvilket som helst tre så lenge det er stabilt og sterkt nok)

• Skruer

• Stang eller pinne i rustfritt stål

• Ledninger (jeg bruker rød og svart ledning)

• Loddetinn

Elektronikk komponenter:

• Arduino Nano

• Bluetooth-modul HC-05 (jeg bestemte meg for å bruke dette, da det er lettere å kode enn Wifi-modul ESP8266)

• WS2812B adresserbar RGB LED -stripe

• LM2596 nedtrappingsmodul

• DC Barrel Power Jack

Trinn 2: Bygg lampens struktur

Bygge strukturen til lampen
Bygge strukturen til lampen
Bygge strukturen til lampen
Bygge strukturen til lampen

I dette trinnet har jeg to måter å bygge strukturen på lampen- trebearbeidingsmetoden og 3D-utskriftsmetoden. Jeg bruker den første metoden. Hvis du foretrekker å lage den med en 3D -skriver, kan du hoppe til trinn 2 for modellen jeg designet.

For den øvre delen av lampen varmer og bøyer jeg akrylplaten til en 90 ° vinkel som vist ovenfor. Jeg tar ganske lang tid å bøye den til en så perfekt vinkel og retning.

Deretter for den nedre delen av lampen. Dessverre … den dagen jeg jobber med den nedre delen av lampen, glemte jeg helt å ta et bilde av konstruksjonen! Det innså jeg da jeg var ferdig med dette prosjektet. Men jeg skal gjøre mitt beste for å gi deg målingen av lampens nedre del.

I utgangspunktet trenger du bare å kutte fire treblokker som måler 13x6x2cm (LxHxW). Deretter må du kutte et trappelignende snitt i kanten av treet. Bildet vil bli vist ovenfor.

Trinn 3: 3D -formene

3D -formene
3D -formene
3D -formene
3D -formene

For alle som har sin egen 3D -skriver, er du på rett trinn. Dette gjorde denne lampen brukervennlig.

For å være ærlig var dette det vanskeligste trinnet jeg gjorde. Dette er det første jeg gjorde rett etter at jeg installerte programvaren!

Jeg bruker Sketchup Pro til å designe lampens struktur. Dessverre er jeg ikke dyktig nok til å designe interiørkomponenten. Lenken til min 3D -modell er i filen nedenfor.

Trinn 4: Komponentskjemaet

Komponentskjemaet
Komponentskjemaet

Jeg bruker Fritzing til å konstruere skjemaene til komponentene. Skjematikken er faktisk ganske enkel.

Trinn 5: Koden

Koden
Koden

For koding av denne stemningslampen brukte jeg noen biblioteker fra Arduino IDE. Bibliotekene blir listet ned på trinn 7.

For koden må du ha selve Arduino -programvaren. Jeg gir lenken for å laste ned her.

Skissen eller koden vil også bli vist nedenfor?

Jeg ga også filen for koden i Github.com i tilfelle koden nedenfor er for lang til å 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 IMMEDIATELY 0 #define RAINBOW_SPEED 50 CRGB leds [NUM_LEDS];

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

bool offOld = LOW;

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 oppsett () {

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

BT.begynner (9600);

BT.println ("Koblet til Arduino");

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show ();

}

røye a;

void loop () {

for (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool Hvit = LAV; bool Blå = LAV; bool Rød = LAV; bool Grønn = LAV; bool Topaz = LAV; bool Lilla = LAV; bool Rainbow = LOW; bool rgb = LOW; bool ende; if (BT.available ()) {a = (char) BT.read ();

hvis (a == 'o')

{av = HØY; BT.println ("SLÅ AV LEDER..");

}ellers{

av = LAV; } // ================================================== ===============================================

hvis (a == 'w')

{Hvit = HØY; BT.println ("TURNING LEDs WHITE");

}ellers{

Hvit = LAV; } // ================================================== ===============================================

hvis (a == 'b')

{Blå = HØY; BT.println ("ENDRE TIL BLÅ"); } annet {Blå = LAV; }

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

hvis (a == 'r')

{Rød = HØY; BT.println ("CHANGING TO RED"); } annet {Rød = LAV; }

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

hvis (a == 'g')

{Grønn = HØY; BT.println ("ENDRE TIL GRØNN"); } annet {Grønt = LAVT; }

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

hvis (a == 't')

{Topas = HØY; BT.println ("ENDRE TIL TOPAZ"); } annet {Topaz = LOW; }

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

hvis (a == 'l')

{Lilla = HØY; BT.println ("CHANGING TO LILAC"); } annet {Lilac = LOW; }

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

hvis (a == 'a')

{Rainbow = HIGH; BT.println ("RAINBOW ANIMATION"); } annet {Rainbow = LOW; } // ================================================== ===============================================

hvis (a == 'm')

{rgb = HØY; BT.println ("MIX COLORS"); } annet {rgb = LOW; }} if (off == LOW && offOld == HIGH) {forsinkelse (20); hvis (av == LAV) {showType = 0; // Av animasjon Type 0 startShow (showType); }}

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

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

forsinkelse (20); hvis (Hvit == LAV) {showType = 1; // Hvit animasjon Type 1 startShow (showType); }}

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

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

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

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

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

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

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

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

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

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

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

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

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

forsinkelse (20);

hvis (Rainbow == LOW) {

showType = 8; // Rainbow -animasjon Type 8 startShow (showType); }}

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

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

forsinkelse (20);

hvis (rgb == LOW) {

showType = 7; // Bland animasjon Type 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = White;

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

}

void startShow (int i) {

bytte (i) {

sak 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Svart/av

gå i stykker;

sak 1: strip.setBrightness (255); // Endrer lysstyrken til MAX

colorWipe (strip. Color (255, 255, 255), UMIDDELIG); // White strip.setBrightness (BRIGHTNESS); // Tilbakestill lysstyrken til standardverdien;

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

gå i stykker;

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

gå i stykker;

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

gå i stykker;

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

gå i stykker;

sak 6: colorWipe (strip. Color (221, 130, 255), SPEED); // Lilla

gå i stykker; sak 7: colorWipe (strip. Color (255, 0, 0), SPEED); // Rød colorWipe (strip. Color (0, 255, 0), SPEED); // Grønn 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ønn pause;

sak 8: rainbowCycle (25);

gå i stykker; }} 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 sykluser med alle farger 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 wait) {

for (int j = 0; j <10; j ++) {// gjør 10 sykluser med jakt etter (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // slå på hver tredje piksel} strip.show ();

forsinkelse (vent);

for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // slå av hver tredje piksel}}}}

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; returlist. Farge (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; returlist. Farge (WheelPos * 3, 255 - WheelPos * 3, 0); }

Trinn 6: Kontrollere lampen

Kontroll av lampen
Kontroll av lampen
Kontroll av lampen
Kontroll av lampen
Kontroll av lampen
Kontroll av lampen

Fargen på lampen kan kontrolleres ved hjelp av smarttelefonen.

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

Dette er trinnene for å kontrollere lampen via din egen smarttelefon:

1. Slå på bluetooth i smarttelefonen.

2. Åpne appen som er 'Bluetooth Terminal HC-05'.

3. Du bør nå se de sammenkoblede enhetene på skjermen. Velg 'HC-05'.

4. Nå kan du se at en svart skjerm vises i smarttelefonen din som vil indikere "koblet til Arduino".

5. Her er den morsomme delen. Hvis du skriver 'b' i tekstboksen, blir lampen til blå farge. Her er listen over kommandoen du kan skrive for lampen:

- w for hvit

- b for blått

- g for grønt

- r for rødt

- t for topas

- l for syrin

- en for regnbue -animasjon

- o for av

Moro ikke sant?

6. Sist, men ikke minst, kan du også tilpasse knappen under skjermen til ønsket tekst som vist på bildet ovenfor.

Trinn 7: Nyt stemningen din

Nyt stemningen din!
Nyt stemningen din!
Nyt stemningen din!
Nyt stemningen din!
Nyt stemningen din!
Nyt stemningen din!

Jeg håper du liker denne Instructables. Det var et veldig utfordrende prosjekt for meg, men jeg klarte å fullføre det fullstendig som en 14 år gammel gutt. Gi meg noen tilbakemeldinger for fremtidige forbedringer.

Takk for at du leser og god jul!

Anbefalt: