Sadržaj:

Pametna LED lampa koja se kontrolira Bluetooth pametnim telefonom: 7 koraka
Pametna LED lampa koja se kontrolira Bluetooth pametnim telefonom: 7 koraka

Video: Pametna LED lampa koja se kontrolira Bluetooth pametnim telefonom: 7 koraka

Video: Pametna LED lampa koja se kontrolira Bluetooth pametnim telefonom: 7 koraka
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Studeni
Anonim
Image
Image
Pametna LED svjetiljka koja kontrolira Bluetooth pametnim telefonom
Pametna LED svjetiljka koja kontrolira Bluetooth pametnim telefonom

Uvijek sanjam da kontroliram svoje rasvjetne uređaje. Tada je netko napravio nevjerojatnu šarenu LED lampu. Nedavno sam na Youtube -u naišao na LED svjetiljku Josepha Cashe. Nadahnuvši se time, odlučio sam dodati nekoliko funkcija zadržavajući suvremeni dizajn.

Plan je učiniti svjetiljku lakšom za korisnika dodavanjem Bluetooth modula i adresabilne WS2812B RGB LED trake. To je omogućilo kontrolu boje osvjetljenja samo pomoću aplikacije za pametni telefon.

Korak 1: Prikupite materijale

Prikupite materijale
Prikupite materijale
Prikupite materijale
Prikupite materijale

Alati:

• Stanica za lemljenje

• Pištolj grijača grijača

• Stroj za bušenje

• Kružna pila

• Slagalica

• Klešta za rezanje žice

• Klešta za uski nos

Materijali:

• Prozirna akrilna ploča

• drvo japanskog čempresa (ili možete koristiti bilo koje drvo ako je stabilno i dovoljno čvrsto)

• Vijci

• Stup ili štap od nehrđajućeg čelika

• Žice (koristim crvenu i crnu žicu)

• Limenka za lemljenje

Komponente elektronike:

• Arduino Nano

• Bluetooth modul HC-05 (odlučio sam ga koristiti jer ga je lakše kodirati nego Wifi modul ESP8266)

• WS2812B Adresibilna RGB LED traka

• LM2596 Modul za snižavanje

• DC Barrel napajanje

Korak 2: Izgradnja strukture svjetiljke

Izgradnja strukture svjetiljke
Izgradnja strukture svjetiljke
Izgradnja strukture svjetiljke
Izgradnja strukture svjetiljke

U ovom koraku imam dva načina izgradnje strukture metode obrade drveta svjetiljkom i metode 3D ispisa. Ja koristim prvu metodu. Ako vam je draže izraditi 3D pisač, slobodno prijeđite na korak 2 za model koji sam dizajnirao.

Za gornji dio svjetiljke zagrijavam i savijam akrilnu ploču pod kutom od 90 ° kao što je prikazano gore. Treba mi dosta vremena da ga savijem do tako savršenog kuta i smjera.

Zatim, za donji dio svjetiljke. Nažalost … onog dana kad radim na donjem dijelu svjetiljke, potpuno sam zaboravio slikati konstrukciju! Shvatio sam to kad sam završio ovaj projekt. Ali potrudit ću se dati vam mjerenje donjeg dijela svjetiljke.

U osnovi, samo trebate rezati četiri drvena bloka dimenzija 13x6x2cm (LxHxW). Zatim morate izrezati stubičasti rez na rubu drva. Slika će biti prikazana gore.

Korak 3: 3D oblici

3D oblici
3D oblici
3D oblici
3D oblici

Za svakoga tko ima svoj 3D pisač na pravom ste koraku. Zbog toga je ova svjetiljka postala laka za korištenje.

Da budem iskren, ovo je bio najteži korak koji sam učinio. Ovo je prvo što sam učinio odmah nakon instaliranja softvera!

Koristim Sketchup Pro za dizajn strukture lampe. Nažalost, nisam dovoljno vješt da dizajniram njegovu unutarnju komponentu. Veza na moj 3D model nalazi se u donjoj datoteci.

Korak 4: Shema komponenti

Shema komponenti
Shema komponenti

Koristim Fritzing za izradu shema komponenti. Shema je zapravo prilično jednostavna.

Korak 5: Kôd

Kod
Kod

Za kodiranje ove lampice raspoloženja koristio sam neke biblioteke iz Arduino IDE -a. Knjižnice će biti navedene dolje u koraku 7.

Za kôd morate imati sam softver Arduino. Ovdje ću dati vezu za preuzimanje.

Također, skica ili kôd bit će prikazani u nastavku?

Također sam poslao datoteku koda na Github.com u slučaju da je donji kod predug za kopiranje ovdje;)

#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 ODMAH 0 #define RAINBOW_SPEED 50 CRGB LED dioda [NUM_LEDS];

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

bool offOld = NISKO;

bool BijeloStaro = NISKO; bool RedOld = NISKO; bool GreenOld = NISKO; bool BlueOld = NISKO; bool TopazStaro = NISKO; bool JorgovanStaro = NISKO; bool DugaStaro = NISKO; bool rgbStaro = NISKO; int showType = 0;

void setup () {

FastLED.addLeds (LED diode, NUM_LEDS); //////////

BT.početi (9600);

BT.println ("Povezano s Arduinom");

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show ();

}

char a;

void loop () {{100} {101}

za (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool Bijela = NISKA; bool Plava = NISKA; bool Crveno = NISKO; bool Zeleno = NISKO; bool Topaz = NISKO; bool jorgovan = NISKO; bool Duga = NISKA; bool rgb = NISKO; bool ende; if (BT.available ()) {a = (char) BT.read ();

ako (a == 'o')

{off = HIGH; BT.println ("ISKLJUČIVANJE LED dioda..");

}drugo{

isključeno = NISKO; } // ================================================= ============================================

ako (a == 'w')

{Bijela = VISOKA; BT.println ("TURNING LEDs WHITE");

}drugo{

Bijela = NISKA; } // ================================================= ============================================

ako (a == 'b')

{Plava = VISOKA; BT.println ("PROMJENA U PLAVO"); } else {Plavo = NISKO; }

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

ako (a == 'r')

{Crveno = VISOKO; BT.println ("PROMJENA U CRVENU"); } else {Crveno = NISKO; }

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

ako (a == 'g')

{Zelena = VISOKA; BT.println ("PROMJENA U ZELENO"); } else {Zeleno = NISKO; }

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

ako (a == 't')

{Topaz = VISOKO; BT.println ("PROMJENA NA TOPAZ"); } else {Topaz = LOW; }

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

ako (a == 'l')

{Jorgovan = VISOK; BT.println ("PROMJENA U LILAC"); } else {Lilac = LOW; }

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

ako (a == 'a')

{Duga = VISOKA; BT.println ("ANIMACIJA DUGE"); } else {Duga = LOW; } // ================================================= ============================================

ako (a == 'm')

{rgb = VISOKO; BT.println ("MIJESAJ BOJE"); } else {rgb = LOW; }} if (off == LOW && offOld == HIGH) {kašnjenje (20); if (isključeno == LOW) {showType = 0; // Isključena animacija Tip 0 startShow (showType); }}

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

if (Bijelo == LOW && WhiteOld == HIGH) {

kašnjenje (20); if (Bijelo == LOW) {showType = 1; // Bijela animacija Tip 1 startShow (showType); }}

// ================================================ =========================================== ako (Crveno == NISKO && RedOld == HIGH) {delay (20); if (Crveno == LOW) {showType = 2; // Crvena animacija Tip 2 startShow (showType); }}

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

if (Zelena == LOW && GreenOld == HIGH) {

kašnjenje (20); if (Zelena == LOW) {showType = 3; // Zelena animacija Tip 3 startShow (showType); }} // ============================================== ===============================================

if (Plava == LOW && BlueOld == HIGH) {

kašnjenje (20); if (Plavo == LOW) {showType = 4; // Plava animacija Tip 4 startShow (showType); }}

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

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

kašnjenje (20); if (Topaz == LOW) {showType = 5; // Topaz animacija Tip 5 startShow (showType); }}

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

if (Lila == LOW && LilacOld == HIGH) {

kašnjenje (20); if (jorgovan == LOW) {showType = 6; // Topaz animacija Tip 6 startShow (showType); }} // ============================================== ===============================================

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

kašnjenje (20);

if (Duga == LOW) {

showType = 8; // Rainbow animacija Tip 8 startShow (showType); }}

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

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

kašnjenje (20);

if (rgb == LOW) {

showType = 7; // Mix animacija Tip 7 rgb = HIGH;

startShow (showType);

} }

BijeloStaro = Bijelo;

RedOld = Crveno; BlueOld = Plavo; GreenOld = Zeleno; TopazStaro = Topaz; LilacStaro = Jorgovan; offOld = isključeno; RainbowOld = Duga; rgbStaro = rgb;

}

void startShow (int i) {

switch (i) {

slučaj 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Crno/isključeno

pauza;

slučaj 1: strip.setBrightness (255); // Mijenja svjetlinu na MAX

colorWipe (strip. Boja (255, 255, 255), ODMAH); // Bijela traka.setBrightness (BRIGHTNESS); // Vraćanje svjetline na zadanu vrijednost;

slučaj 2: colorWipe (strip. Color (255, 0, 0), SPEED); // Crvena

pauza;

slučaj 3: colorWipe (strip. Color (0, 255, 0), SPEED); // Zeleno

pauza;

slučaj 4: colorWipe (strip. Color (0, 0, 255), SPEED); // Plava

pauza;

slučaj 5: colorWipe (strip. Color (0, 250, 255), SPEED); // Topaz

pauza;

slučaj 6: colorWipe (strip. Color (221, 130, 255), SPEED); // Jorgovan

pauza; slučaj 7: colorWipe (strip. Color (255, 0, 0), SPEED); // Crvena bojaWipe (strip. Color (0, 255, 0), SPEED); // Zelena colorWipe (strip. Color (0, 0, 255), SPEED); // Plavo kazališteChase (strip. Color (0, 0, 127), SPEED); // Plavo kazališteChase (strip. Color (127, 0, 0), SPEED); // Crveno kazališteChase (strip. Color (0, 127, 0), SPEED); // Zeleni prekid;

slučaj 8: rainbowCycle (25);

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

void rainbowCycle (uint8_t čekanje) {

uint16_t i, j;

za (j = 0; j <256*10; j ++) {// 5 ciklusa svih boja na kotaču za (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); odgoda (čekanje); }}

void theatreChase (uint32_t c, uint8_t čekaj) {

for (int j = 0; j <10; j ++) {// napraviti 10 ciklusa traganja za (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // uključuje svaki treći piksel} strip.show ();

odgoda (čekanje);

for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // isključi svaki treći piksel}}}}

uint32_t kotač (byte WheelPos) {

WheelPos = 255 - WheelPos; if (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; povratna traka. Boja (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; povratna traka. Boja (WheelPos * 3, 255 - WheelPos * 3, 0); }

Korak 6: Upravljanje svjetiljkom

Upravljanje svjetiljkom
Upravljanje svjetiljkom
Upravljanje svjetiljkom
Upravljanje svjetiljkom
Upravljanje svjetiljkom
Upravljanje svjetiljkom

Boja svjetiljke može se kontrolirati pomoću vašeg pametnog telefona.

Prvo morate instalirati aplikaciju pod nazivom 'Bluetooth Terminal HC-05' iz trgovine Google Play ili Apple App Store.

Ovo su koraci za upravljanje svjetiljkom putem vlastitog pametnog telefona:

1. Uključite bluetooth na svom pametnom telefonu.

2. Otvorite aplikaciju koja je "Bluetooth terminal HC-05".

3. Sada biste trebali vidjeti uparene uređaje na ekranu. Odaberite 'HC-05'.

4. Sada možete vidjeti da se na vašem pametnom telefonu pojavljuje crni zaslon koji će označavati 'povezan s Arduinom'.

5. Ovdje je zabavni dio, ako u okvir za tekst upišete 'b', lampica će se pretvoriti u plavu boju. Evo popisa naredbi koje možete upisati za žarulju:

- w za bijelo

- b za plavo

- g za zelenu

- r za crveno

- t za topaz

- l za jorgovan

- za animaciju duge

- o za isključeno

Zabavno zar ne?

6. Na kraju, ali ne i najmanje važno, također možete prilagoditi gumb ispod ekrana željenom tekstu, kao što je prikazano na gornjoj slici.

Korak 7: Uživajte u svjetiljci raspoloženja

Uživajte u lampi raspoloženja !!
Uživajte u lampi raspoloženja !!
Uživajte u lampi raspoloženja !!
Uživajte u lampi raspoloženja !!
Uživajte u lampi raspoloženja !!
Uživajte u lampi raspoloženja !!

Nadam se da vam se sviđa ovaj Instructables. Bio je to za mene vrlo izazovan projekt, ali uspio sam ga dovršiti u potpunosti kao 14-godišnji dječak. Dajte mi povratne informacije za buduća poboljšanja.

Hvala na čitanju i sretan Božić!

Preporučeni: