Turinys:

„Bluetooth“išmaniuoju telefonu valdoma išmanioji LED lempa: 7 žingsniai
„Bluetooth“išmaniuoju telefonu valdoma išmanioji LED lempa: 7 žingsniai

Video: „Bluetooth“išmaniuoju telefonu valdoma išmanioji LED lempa: 7 žingsniai

Video: „Bluetooth“išmaniuoju telefonu valdoma išmanioji LED lempa: 7 žingsniai
Video: Philips HUE sistema 2024, Lapkritis
Anonim
Image
Image
„Bluetooth“išmaniuoju telefonu valdoma išmanioji LED lempa
„Bluetooth“išmaniuoju telefonu valdoma išmanioji LED lempa

Visada svajoju valdyti savo apšvietimo prietaisus. Tada kažkas padarė neįtikėtinai spalvingą LED lempą. Neseniai „Youtube“aptikau Joseph Casha LED lempą. Įkvėptas jo, nusprendžiau pridėti keletą funkcijų, išlaikydamas šiuolaikinį dizainą.

Planuojama padaryti lempą patogesnę, pridedant „Bluetooth“modulį ir adresuojamą WS2812B RGB LED juostą. Tai leido valdyti apšvietimo spalvą tiesiog naudojant išmaniojo telefono programą.

1 žingsnis: Surinkite medžiagas

Surinkite medžiagas
Surinkite medžiagas
Surinkite medžiagas
Surinkite medžiagas

Įrankiai:

• Litavimo stotis

• Šildytuvo pūstuvas

• Gręžimo mašina

• Diskinis pjūklas

• Dėlionės

• Vielos pjovimo replės

• Siauros nosies replės

Medžiagos:

• Permatoma akrilo plokštė

• Japoniška kipariso mediena (arba galite naudoti bet kokią medieną, jei ji yra stabili ir pakankamai tvirta)

• Varžtai

• Nerūdijančio plieno stulpas arba lazda

• Laidai (aš naudoju raudoną ir juodą laidą)

• Alavo litavimas

Elektronikos komponentai:

• „Arduino Nano“

• „Bluetooth“modulis HC-05 (nusprendžiau jį naudoti, nes jį lengviau koduoti nei „Wifi“modulį ESP8266)

• WS2812B Adresuojama RGB LED juostelė

• LM2596 sumažinimo modulis

• DC statinės maitinimo lizdas

2 žingsnis: Sukurkite lempos struktūrą

Lempos struktūros kūrimas
Lempos struktūros kūrimas
Lempos struktūros kūrimas
Lempos struktūros kūrimas

Šiame etape turiu du būdus, kaip sukurti lempos struktūrą- medžio apdirbimo metodą ir 3D spausdinimo metodą. Aš naudoju pirmąjį metodą. Jei norite tai padaryti naudodami 3D spausdintuvą, nedvejodami pereikite prie mano sukurto modelio 2 veiksmo.

Viršutinėje lempos dalyje aš šildau ir sulenkiu akrilo plokštę 90 ° kampu, kaip parodyta aukščiau. Man gana ilgai reikia jį sulenkti tokiu tobulu kampu ir kryptimi.

Toliau, apatinei lempos daliai. Deja … tą dieną, kai dirbu prie apatinės lempos dalies, visiškai pamiršau nufotografuoti konstrukciją! Tai supratau, kai baigiau šį projektą. Bet aš iš visų jėgų stengiuosi jums parodyti apatinę lempos dalį.

Iš esmės jums tereikia nupjauti keturis medienos blokus, kurių matmenys yra 13x6x2cm (LxHxW). Kitas, jums reikia iškirpti į laiptus panašų pjūvį medžio krašte. Nuotrauka bus parodyta aukščiau.

3 žingsnis: 3D formos

3D formos
3D formos
3D formos
3D formos

Kiekvienas, kuris turi savo 3D spausdintuvą, yra teisingas žingsnis. Tai padarė šią lempą patogią vartotojui.

Tiesą pasakius, tai buvo sunkiausias žingsnis, kurį padariau. Tai pirmas dalykas, kurį padariau iškart įdiegus programinę įrangą!

Aš naudoju „Sketchup Pro“kurdamas lempos struktūrą. Deja, nesu pakankamai sumanus suprojektuoti jo interjero komponentą. Nuoroda į mano 3D modelį yra žemiau esančiame faile.

4 žingsnis: komponentų schema

Komponentų schema
Komponentų schema

Aš naudoju „Fritzing“kurdamas komponentų schemas. Schema iš tikrųjų yra gana paprasta.

5 žingsnis: Kodas

Kodas
Kodas

Šios nuotaikos lempos kodavimui naudoju kai kurias „Arduino IDE“bibliotekas. Bibliotekos bus išvardytos 7 veiksme.

Norėdami gauti kodą, turite turėti pačią „Arduino“programinę įrangą. Pateiksiu nuorodą atsisiųsti čia.

Be to, eskizas ar kodas bus rodomi žemiau?

Aš taip pat pateikiau kodo failą „Github.com“, jei toliau pateiktas kodas yra per ilgas, kad jį būtų galima čia nukopijuoti;)

#įtraukti #įtraukti #įtraukti #ifdef _AVR_ #įtraukti #endif

„SoftwareSerial BT“(10, 11);

#define LED_PIN 7 #define NUM_LEDS 60 #define BRIGHTNESS 200 #define SPEED 10 #defineE IMEI 0 0define RAINBOW_SPEED 50 CRGB šviesos diodų [NUM_LEDS];

Adafruit_NeoPixel strip = 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 (šviesos diodai, NUM_LEDS); //////////

BT. Pradžia (9600);

BT.println („Prisijungta prie„ Arduino “);

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show ();

}

char a;

void loop () {

už (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool Balta = LOW; bool Blue = LOW; bool Red = LOW; bool Green = LOW; bool Topaz = LOW; bool Alyva = LOW; bool Vaivorykštė = LOW; bool rgb = LOW; bool ende; jei (BT.prieinama ()) {a = (char) BT.read ();

jei (a == 'o')

{išjungtas = AUKŠTAS; BT.println ("Šviesos diodų išjungimas..");

}Kitas{

išjungta = LOW; } // ================================================ ============================================

jei (a == 'w')

{Balta = HIGH; BT.

}Kitas{

Balta = LOW; } // ================================================ ============================================

jei (a == 'b')

{Mėlyna = HIGH; BT.println ("PAKEISMAS Į MĖLYNĄ"); } else {Mėlyna = LOW; }

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

jei (a == 'r')

{Raudona = HIGH; BT.println („KEITIMAS Į RAUDONĄ“); } else {Raudona = LOW; }

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

jei (a == 'g')

{Žalia = HIGH; BT.println („PAKEISIMAS Į ŽALIĄ“); } else {Žalia = LOW; }

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

jei (a == 't')

{Topazas = AUKŠTAS; BT.println („KEITIMAS Į TOPAZĄ“); } else {Topaz = LOW; }

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

jei (a == 'l')

{Alyvinė = AUKŠTA; BT.println („KEITIMASIS LILACAI“); } else {Lilac = LOW; }

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

jei (a == 'a')

{Vaivorykštė = AUKŠTAS; BT.println („RAINBOW ANIMATION“); } else {Vaivorykštė = LOW; } // ================================================ ============================================

jei (a == 'm')

{rgb = AUKŠTAS; BT.println („MIŠINĖS SPALVOS“); } else {rgb = LOW; }} if (off == LOW && offOld == HIGH) {delay (20); if (išjungta == LOW) {showType = 0; // Išjungta animacija Tipas 0 startShow (showType); }}

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

jei (balta == ŽEMA &&BaltaOld == AUKŠTA) {

vėlavimas (20); if (balta == LOW) {showType = 1; // Baltoji animacija Type 1 startShow (showType); }}

// ================================================ =========================================== jei (raudona == LOW && RedOld == HIGH) {delay (20); if (raudona == LOW) {showType = 2; // Raudona animacija 2 tipas startShow (showType); }}

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

jei (žalia == LOW && GreenOld == HIGH) {

vėlavimas (20); if (žalia == LOW) {showType = 3; // Žalia animacija Tipas 3 startShow (showType); }} // ============================================== ==============================================

jei (mėlyna == LOW && BlueOld == HIGH) {

vėlavimas (20); if (mėlyna == LOW) {showType = 4; // Mėlyna animacija 4 tipas startShow (showType); }}

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

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

vėlavimas (20); if (Topaz == LOW) {showType = 5; // Topazo animacija 5 tipas startShow (showType); }}

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

jei (alyvinė == LOW && LilacOld == HIGH) {

vėlavimas (20); jei (alyvinė == LOW) {showType = 6; // Topazo animacija 6 tipas startShow (showType); }} // ============================================== ==============================================

jei (vaivorykštė == LOW && RainbowOld == HIGH) {

vėlavimas (20);

jei (vaivorykštė == LOW) {

showType = 8; // Vaivorykštės animacija 8 tipas startShow (showType); }}

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

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

vėlavimas (20);

jei (rgb == LOW) {

showType = 7; // Maišymo animacija Tipas 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = balta;

RedOld = raudona; BlueOld = mėlyna; GreenOld = žalia; TopazOld = Topazas; LilacOld = alyvinė; offOld = išjungta; RainbowOld = Vaivorykštė; rgbOld = rgb;

}

void startShow (int i) {

jungiklis (i) {

atvejis 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Juoda/išjungta

pertrauka;

1 atvejis: strip.setBrightness (255); // Pakeičia ryškumą į MAX

colorWipe (juostelė. Spalva (255, 255, 255), IŠ karto); // Balta juostelė.setBrightness (BRIGHTNESS); // Iš naujo nustatyti ryškumą į numatytąją reikšmių pertrauką;

2 atvejis: colorWipe (juostelė. Spalva (255, 0, 0), SPEED); // Raudona

pertrauka;

3 atvejis: colorWipe (juostelė. Spalva (0, 255, 0), SPEED); // Žalias

pertrauka;

4 atvejis: colorWipe (juostelė. Spalva (0, 0, 255), SPEED); // Mėlyna

pertrauka;

5 atvejis: colorWipe (juostelė. Spalva (0, 250, 255), SPEED); // Topazas

pertrauka;

6 atvejis: colorWipe (juostelė. Spalva (221, 130, 255), SPEED); // Alyvinė

pertrauka; 7 atvejis: colorWipe (juostelė. Spalva (255, 0, 0), SPEED); // Raudona spalvaWipe (strip. Color (0, 255, 0), SPEED); // Žalia spalvaWipe (strip. Color (0, 0, 255), SPEED); // Mėlynasis teatrasChase (strip. Color (0, 0, 127), SPEED); // Mėlynasis teatrasChase (strip. Color (127, 0, 0), SPEED); // Raudonasis teatrasChase (strip. Color (0, 127, 0), SPEED); // Žalioji pertrauka;

8 atvejis: vaivorykštinis ciklas (25);

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

void rainbowCycle (uint8_t palaukti) {

uint16_t i, j;

(j = 0; j <256*10; j ++) {// 5 visų rato spalvų ciklai (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Ratas (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); atidėti (laukti); }}

void theatreChase (uint32_t c, uint8_t palaukti) {

(int j = 0; j <10; j ++) {// atlikite 10 persekiojimo ciklų (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // įjungti kas trečią pikselį} strip.show ();

atidėti (laukti);

for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // išjunkite kas trečią tašką}}}}

uint32_t ratas (baitas „WheelPos“) {

WheelPos = 255 - WheelPos; if (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; grąžinimo juostelė. Spalva (0, WheelPos * 3, 255 - WheelPos * 3); } „WheelPos“-= 170; grąžinimo juostelė. Spalva („WheelPos“* 3, 255 - „WheelPos“* 3, 0); }

6 žingsnis: lempos valdymas

Lempos valdymas
Lempos valdymas
Lempos valdymas
Lempos valdymas
Lempos valdymas
Lempos valdymas

Lempos spalvą galima valdyti naudojant išmanųjį telefoną.

Pirmiausia turite įdiegti programą „Bluetooth Terminal HC-05“iš „Google Play“parduotuvės arba „Apple App Store“.

Štai žingsniai, kaip valdyti lempą per savo išmanųjį telefoną:

1. Įjunkite „Bluetooth“išmaniajame telefone.

2. Atidarykite programą „Bluetooth Terminal HC-05“.

3. Dabar ekrane turėtumėte matyti suporuotus įrenginius. Pasirinkite „HC-05“.

4. Dabar galite pamatyti, kad jūsų išmaniajame telefone pasirodo juodas ekranas, rodantis „prijungtas prie„ Arduino ““.

5. Čia yra linksmoji dalis: jei teksto laukelyje įvesite „b“, lemputė taps mėlynos spalvos. Čia yra komandos, kurią galite įvesti lempai, sąrašas:

- w už baltą

- b - mėlyna

- g už žalią

- r už raudoną

- t topazui

- l už alyvinę

- vaivorykštės animacijai

- o išjungti

Smagu tiesa?

6. Paskutinis, bet ne mažiau svarbus dalykas - taip pat galite pritaikyti mygtuką po ekranu pagal norimą tekstą, kaip parodyta aukščiau esančiame paveikslėlyje.

7 žingsnis: mėgaukitės nuotaikos lempa

Mėgaukitės nuotaikos lempa !!
Mėgaukitės nuotaikos lempa !!
Mėgaukitės nuotaikos lempa !!
Mėgaukitės nuotaikos lempa !!
Mėgaukitės nuotaikos lempa !!
Mėgaukitės nuotaikos lempa !!

Tikiuosi, kad jums patinka šios instrukcijos. Man tai buvo labai sudėtingas projektas, bet man pavyko jį užbaigti kaip 14 metų berniukui. Pateikite man atsiliepimų apie būsimus patobulinimus.

Ačiū, kad skaitote ir linksmų Kalėdų!

Rekomenduojamas: