Bluetooth Okostelefonnal vezérelt intelligens LED-lámpa: 7 lépés
Bluetooth Okostelefonnal vezérelt intelligens LED-lámpa: 7 lépés
Anonim
Image
Image
Bluetooth Okostelefonnal vezérelt Smart LED lámpa
Bluetooth Okostelefonnal vezérelt Smart LED lámpa

Mindig arról álmodozom, hogy irányítsam a világítóberendezéseimet. Aztán valaki hihetetlenül színes LED -es lámpát készített. Nemrég találkoztam Joseph Casha LED -es lámpájával a Youtube -on. Az ihletettség hatására úgy döntöttem, hogy több funkciót adok hozzá, miközben megtartom a modern dizájnt.

A terv az, hogy a lámpát felhasználóbarátabbá tegye Bluetooth modul és címezhető WS2812B RGB LED szalag hozzáadásával. Ez lehetővé tette a világítás színének szabályozását csak egy okostelefonos alkalmazás segítségével.

Lépés: Gyűjtse össze az anyagokat

Gyűjtse össze az anyagokat
Gyűjtse össze az anyagokat
Gyűjtse össze az anyagokat
Gyűjtse össze az anyagokat

Eszközök:

• Forrasztóállomás

• Fűtőfúvó pisztoly

• Fúrógép

• Körfűrész

• Lombfűrész

• Drótvágó fogó

• Keskeny orrú fogó

Anyagok:

• Áttetsző akril lap

• Japán ciprusfa (vagy bármilyen fát használhat, amíg stabil és elég erős)

• Csavarok

• Rozsdamentes acél rúd vagy bot

• Vezetékek (piros és fekete vezetéket használok)

• Ón forrasztása

Elektronikai alkatrészek:

• Arduino Nano

• Bluetooth-modul HC-05 (úgy döntöttem, hogy ezt használom, mivel könnyebb kódolni, mint az ESP8266 Wifi-modult)

• WS2812B címezhető RGB LED szalag

• LM2596 Lépcső modul

• DC Barrel Power Jack

2. lépés: A lámpa szerkezetének felépítése

A lámpa szerkezetének felépítése
A lámpa szerkezetének felépítése
A lámpa szerkezetének felépítése
A lámpa szerkezetének felépítése

Ebben a lépésben két módom van a lámpa szerkezetének felépítésére- fafeldolgozási módszer és 3D nyomtatási módszer. Én az első módszert használom. Ha inkább 3D nyomtatóval szeretné elkészíteni, nyugodtan ugorjon a 2. lépésre az általam tervezett modellhez.

A lámpa felső részéhez az akril lapot a fentiek szerint 90 ° -os szögben melegítem és hajlítom. Elég sok időmbe telik, hogy ilyen tökéletes szögbe és irányba hajlítsam.

Ezután a lámpa alsó részéhez. Sajnos… azon a napon, amikor a lámpa alsó részén dolgozom, teljesen elfelejtettem lefotózni a konstrukciót! Rájöttem, hogy amikor befejeztem ezt a projektet. De megpróbálok minden tőlem telhetőt megadni Önnek a lámpa alsó részének mérését.

Alapvetően csak négy fadarabot kell kivágni, amelyek mérete 13x6x2cm (LxHxW). Ezután lépcsőszerű vágást kell vágnia a fa szélén. A kép fent látható lesz.

3. lépés: A 3D formák

A 3D alakzatok
A 3D alakzatok
A 3D alakzatok
A 3D alakzatok

Bárki, akinek saját 3D nyomtatója van, a megfelelő lépésben van. Ez felhasználóbaráttá tette ezt a lámpát.

Hogy őszinte legyek, ez volt a legnehezebb lépés, amit megtettem. Ez volt az első dolog, amit közvetlenül a szoftver telepítése után csináltam!

A Sketchup Pro segítségével tervezem a lámpa szerkezetét. Sajnos nem vagyok elég ügyes ahhoz, hogy megtervezzem a belső részét. A 3D -s modellre mutató link az alábbi fájlban található.

4. lépés: Az alkatrészek vázlata

Az alkatrészek vázlata
Az alkatrészek vázlata

A komponensek vázlatának elkészítéséhez a Fritzing -t használom. A vázlat valójában nagyon egyszerű.

5. lépés: A kód

A kód
A kód

Ennek a hangulatlámpának a kódolásához az Arduino IDE néhány könyvtárát használtam. A könyvtárak listáját a 7. lépés tartalmazza.

A kódhoz magának az Arduino szoftvernek kell rendelkeznie. Itt adom meg a letölthető linket.

Továbbá a vázlat vagy a kód jelenik meg az alábbiakban?

A kódot tartalmazó fájlt a Github.com webhelyen is megadtam, ha az alábbi kód túl hosszú ahhoz, hogy ide másolja;)

#befoglalás #befoglalás #befoglalás #ifdef _AVR_ #befoglalás #véglet

SoftwareSerial BT (10, 11);

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

Adafruit_NeoPixel csík = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

bool offOld = LOW;

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

void setup () {

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

BT.begin (9600);

BT.println ("Csatlakozott Arduino -hoz");

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 Fehér = LOW; bool Blue = LOW; bool Red = LOW; bool Zöld = LOW; bool Topaz = LOW; bool Lila = LOW; bool Szivárvány = LOW; bool rgb = LOW; bool ende; ha (BT.hasznos ()) {a = (char) BT.read ();

ha (a == 'o')

{off = HIGH; BT.println ("LED -ek KIKAPCSOLÁSA..");

}más{

ki = LOW; } // ================================================ ==============================================

ha (a == 'w')

{Fehér = MAGAS; BT.println ("FEHÉR TURNING LED");

}más{

Fehér = LOW; } // ================================================ ==============================================

ha (a == 'b')

{Kék = MAGAS; BT.println ("KÉKRE VÁLTOZÓ"); } else {Kék = LOW; }

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

ha (a == 'r')

{Piros = MAGAS; BT.println ("VÁLTOZÁS PIROSRA"); } else {Piros = LOW; }

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

ha (a == 'g')

{Zöld = MAGAS; BT.println ("ZÖLDRE VÁLTOZÓ"); } else {Zöld = LOW; }

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

ha (a == 't')

{Topáz = MAGAS; BT.println ("TOPAZ VÁLTOZTATÁS"); } else {Topaz = LOW; }

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

ha (a == 'l')

{Lila = MAGAS; BT.println ("VÁLTOZÁS LILACRA"); } else {Lila = LOW; }

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

ha (a == 'a')

{Szivárvány = HIGH; BT.println ("RAINBOW ANIMATION"); } else {Szivárvány = LOW; } // ================================================ ==============================================

ha (a == 'm')

{rgb = MAGAS; BT.println ("MIX COLORS"); } else {rgb = LOW; }} if (off == LOW && offOld == HIGH) {delay (20); if (ki == LOW) {showType = 0; // Ki animáció Típus 0 startShow (showType); }}

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

ha (Fehér == ALACSONY && FehérRégi == MAGAS) {

késleltetés (20); ha (fehér == LOW) {showType = 1; // Fehér animáció Type 1 startShow (showType); }}

// ================================================ ============================================ ha (Piros == LOW && RedOld == HIGH) {delay (20); ha (piros == LOW) {showType = 2; // Piros animáció 2. típus startShow (showType); }}

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

ha (zöld == LOW && GreenOld == HIGH) {

késleltetés (20); if (zöld == LOW) {showType = 3; // Zöld animáció Type 3 startShow (showType); }} // ============================================== ==============================================

ha (kék == LOW && BlueOld == HIGH) {

késleltetés (20); ha (kék == LOW) {showType = 4; // Kék animáció Type 4 startShow (showType); }}

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

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

késleltetés (20); ha (Topaz == LOW) {showType = 5; // Topaz animation Type 5 startShow (showType); }}

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

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

késleltetés (20); ha (Lila == LOW) {showType = 6; // Topáz animáció Type 6 startShow (showType); }} // ============================================== ==============================================

ha (Szivárvány == LOW && RainbowOld == HIGH) {

késleltetés (20);

ha (Szivárvány == LOW) {

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

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

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

késleltetés (20);

ha (rgb == LOW) {

showType = 7; // Mix animáció Típus 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = Fehér;

RedOld = Piros; BlueOld = Kék; GreenOld = Zöld; TopazOld = Topáz; LilaOld = Lilac; offOld = ki; RainbowOld = Szivárvány; rgbOld = rgb;

}

void startShow (int i) {

kapcsoló (i) {

0. eset: colorWipe (strip. Color (0, 0, 0), SPEED); // Fekete/kikapcsolt

szünet;

1. eset: strip.setBrightness (255); // A fényerőt MAX értékre változtatja

colorWipe (csík. Szín (255, 255, 255), AZONNAL); // Fehér csík.setBrightness (BRIGHTNESS); // Állítsa vissza a fényerőt az alapértelmezett értékre;

2. eset: colorWipe (strip. Color (255, 0, 0), SPEED); // Piros

szünet;

3. eset: colorWipe (strip. Color (0, 255, 0), SPEED); // Zöld

szünet;

4. eset: colorWipe (strip. Color (0, 0, 255), SPEED); // Kék

szünet;

5. eset: colorWipe (csík. Szín (0, 250, 255), SPEED); Topáz

szünet;

6. eset: colorWipe (csík. Szín (221, 130, 255), SPEED); Lila

szünet; 7. eset: colorWipe (strip. Color (255, 0, 0), SPEED); // Red colorWipe (strip. Color (0, 255, 0), SPEED); // Zöld színWipe (strip. Color (0, 0, 255), SPEED); // Kék színházChase (strip. Color (0, 0, 127), SPEED); // Kék színházChase (strip. Color (127, 0, 0), SPEED); // Vörös színházChase (strip. Color (0, 127, 0), SPEED); // Zöld szünet;

8. eset: szivárványCiklus (25);

szünet; }} 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 ciklus minden színben a keréken (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); késleltetés (várakozás); }}

void TheaterChase (uint32_t c, uint8_t wait) {

for (int j = 0; j <10; j ++) {// végezzen 10 üldözési ciklust (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // minden harmadik pixel bekapcsolása} strip.show ();

késleltetés (várakozás);

for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // minden harmadik képpont kikapcsolása}}}}

uint32_t Kerék (byte WheelPos) {

WheelPos = 255 - WheelPos; if (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; visszatérő csík. Szín (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; visszatérő csík. Szín (WheelPos * 3, 255 - WheelPos * 3, 0); }

6. lépés: A lámpa vezérlése

A lámpa vezérlése
A lámpa vezérlése
A lámpa vezérlése
A lámpa vezérlése
A lámpa vezérlése
A lámpa vezérlése

A lámpa színét az okostelefon segítségével szabályozhatja.

Először telepítenie kell a „Bluetooth Terminal HC-05” nevű alkalmazást a Google Play Áruházból vagy az Apple App Store-ból.

A következő lépésekkel szabályozhatja a lámpát saját okostelefonján keresztül:

1. Kapcsolja be a Bluetooth -ot az okostelefonján.

2. Nyissa meg az alkalmazást, amely a „Bluetooth Terminal HC-05”.

3. Most látnia kell a párosított eszközöket a képernyőn. Válassza a „HC-05” lehetőséget.

4. Most egy fekete képernyő jelenik meg az okostelefonon, amely azt jelzi, hogy "csatlakozik az Arduino -hoz".

5. Itt a szórakoztató rész, ha beírja a „b” betűt a szövegmezőbe, a lámpa kék színűvé válik. Itt található a lámpához begépelhető parancsok listája:

- w fehérnek

- b a kék

- g a zöld

- r pirosra

- t a topázhoz

- l lila

- a szivárványos animációhoz

- o ki

Szórakozás ugye?

6. Végül, de nem utolsósorban, a képernyő alatti gombot is testreszabhatja a kívánt szöveghez, a fenti képen látható módon.

7. lépés: Élvezze a hangulatlámpát

Élvezze a hangulatlámpát !!
Élvezze a hangulatlámpát !!
Élvezze a hangulatlámpát !!
Élvezze a hangulatlámpát !!
Élvezze a hangulatlámpát !!
Élvezze a hangulatlámpát !!

Remélem tetszik ez az Instructables. Nagyon kihívást jelentő projekt volt számomra, de 14 éves fiúként sikerült teljesen befejeznem. Adjon néhány visszajelzést a jövőbeli fejlesztésekhez.

Köszönöm, hogy elolvastad és Boldog Karácsonyt!

Ajánlott: