Tartalomjegyzék:
- Lépés: Gyűjtse össze az anyagokat
- 2. lépés: A lámpa szerkezetének felépítése
- 3. lépés: A 3D formák
- 4. lépés: Az alkatrészek vázlata
- 5. lépés: A kód
- 6. lépés: A lámpa vezérlése
- 7. lépés: Élvezze a hangulatlámpát
Videó: Bluetooth Okostelefonnal vezérelt intelligens LED-lámpa: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
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
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
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
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
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
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 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
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:
Hogyan készítsünk okostelefonnal vezérelt autót: 5 lépés
Hogyan készítsünk okostelefonnal vezérelt autót: Mindenki szeret játszani az okostelefonnal működtetett távoli autóval. Ez a videó arról szól, hogyan kell elkészíteni
Okostelefonnal vezérelt végtelen óra: 5 lépés (képekkel)
Okostelefonnal vezérelt végtelen óra: Az Infinity Mirrors és Infinity Clocks számos projektjét láttam az Instructables -en, ezért úgy döntöttem, hogy elkészítem az enyémet. Lehet, hogy nem sokban különbözik a többitől … de én magam csináltam, így van! Ha még nem ismerné: Mi a végtelen
Okostelefonnal vezérelt neopixelek (LED csík) Blynk alkalmazással WiFi felett: 6 lépés
Okostelefonnal vezérelt neopixelek (LED-csík) Blynk alkalmazással WiFi-n keresztül: Ezt a projektet azután hoztam létre, hogy egy baráti házban okostelefonnal vezérelt neopixelek inspiráltak, de a boltban vásárolták. Arra gondoltam, hogy "milyen nehéz lehet saját kezűleg elkészíteni, sokkal olcsóbb is lesz!" "Így van. Megjegyzés: Feltételezem, hogy te
Okostelefonnal vezérelt Bluetooth LED -ek (élőzenei szinkronizálással): 7 lépés
Okostelefonnal vezérelt Bluetooth LED -ek (Live Music Sync): Mindig is szerettem építeni, miután rájöttem, hogy az új egyetemi kollégiumom szörnyű világítással rendelkezik, úgy döntöttem, hogy egy kicsit megfűszerezem. *** FIGYELEM *** Ha építesz ezt a projektet ugyanabban a méretben, mint az én beállításomat, tisztességes mennyiségű elemmel fog dolgozni
Okostelefonnal vezérelt intelligens bevásárlókosár: 7 lépés
Okostelefonnal vezérelt intelligens bevásárlókosár: A bevásárlóközpontok látogatása szórakoztató lehet. De a bevásárlókosár húzása, miközben tele van cuccokkal, kifejezetten bosszantó. Fájdalom, amikor átnyomom a szűk folyosókon, éles kanyarokat teszek! Szóval, itt van egy (fajta) ajánlat, amit