Բովանդակություն:

Bluetooth Սմարթֆոնի միջոցով կառավարվող Smart LED լամպ ՝ 7 քայլ
Bluetooth Սմարթֆոնի միջոցով կառավարվող Smart LED լամպ ՝ 7 քայլ

Video: Bluetooth Սմարթֆոնի միջոցով կառավարվող Smart LED լամպ ՝ 7 քայլ

Video: Bluetooth Սմարթֆոնի միջոցով կառավարվող Smart LED լամպ ՝ 7 քայլ
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Հուլիսի
Anonim
Image
Image
Bluetooth Սմարթֆոնի միջոցով կառավարվող Smart LED լամպ
Bluetooth Սմարթֆոնի միջոցով կառավարվող Smart LED լամպ

Ես միշտ երազում եմ վերահսկել իմ լուսավորման սարքերը: Հետո ինչ -որ մեկը անհավանական գունագեղ LED լամպ պատրաստեց: Վերջերս Youtube- ում հանդիպեցի Lոզեֆ Կաշայի LED լամպին: Ոգեշնչվելով դրանից ՝ որոշեցի ավելացնել մի քանի գործառույթ ՝ պահպանելով ժամանակակից դիզայնը:

Theրագիրը նախատեսում է լամպը դարձնել ավելի հարմարավետ `ավելացնելով Bluetooth մոդուլ և հասցեագրվող WS2812B RGB LED ժապավեն: Սա հնարավորություն տվեց վերահսկել լուսավորության գույնը միայն սմարթֆոնների հավելվածի միջոցով:

Քայլ 1: Հավաքեք նյութերը

Հավաքեք նյութերը
Հավաքեք նյութերը
Հավաքեք նյութերը
Հավաքեք նյութերը

Գործիքներ:

• oldոդման կայան

• aterեռուցիչ փչող ատրճանակ

• Հորատման մեքենա

• Շրջանաձև սղոց

• ոլորահատ սղոց

• Մետաղալար տափակաբերան աքցան

• Նեղ քթի տափակաբերան աքցան

Նյութեր:

• Թափանցիկ ակրիլային տախտակ

• Japaneseապոնական Cypress Wood (կամ կարող եք օգտագործել ցանկացած փայտ, քանի դեռ այն բավականին կայուն և ամուր է)

• պտուտակներ

• Չժանգոտվող պողպատից բևեռ կամ ձողիկ

• Լարեր (ես օգտագործում եմ կարմիր և սև մետաղալարեր)

• oldոդման անագ

Էլեկտրոնիկայի բաղադրիչներ.

• Արդուինո Նանո

• Bluetooth մոդուլ HC-05 (ես որոշեցի օգտագործել այն, քանի որ այն ավելի հեշտ է ծածկագրել, քան Wifi մոդուլը ESP8266)

• WS2812B հասցեավորվող RGB LED ժապավեն

• LM2596 Հետընթաց մոդուլ

• DC Barrel Power Jack

Քայլ 2. Լամպի կառուցվածքի կառուցում

Լամպի կառուցվածքի կառուցում
Լամպի կառուցվածքի կառուցում
Լամպի կառուցվածքի կառուցում
Լամպի կառուցվածքի կառուցում

Այս քայլում ես ունեմ լամպի կառուցվածքը կառուցելու երկու եղանակ ՝ փայտամշակման և 3D տպագրության մեթոդ: Ես օգտագործում եմ առաջին մեթոդը: Եթե նախընտրում եք դա անել 3D տպիչի օգտագործմամբ, ազատ զգացեք անցնել 2 -րդ քայլին իմ նախագծած մոդելի համար:

Լամպի վերին հատվածի համար ես տաքացնում և թեքում եմ ակրիլային տախտակը 90 ° անկյան տակ, ինչպես ցույց է տրված վերևում: Ես բավականին երկար ժամանակ եմ պահանջում այն թեքելու համար կատարյալ անկյան և ուղղության վրա:

Հաջորդը, լամպի ստորին մասի համար: Unfortunatelyավոք… այն օրը, երբ ես աշխատում եմ լամպի ներքևի մասում, ես ամբողջովին մոռացա նկարել շինարարությունը: Ես դա հասկացա, երբ ավարտեցի այս նախագիծը: Բայց ես ամեն կերպ կփորձեմ ձեզ տրամադրել լամպի ստորին հատվածի չափումը:

Հիմնականում պարզապես անհրաժեշտ է կտրել չորս բլոկ ՝ 13x6x2 սմ չափսերով (LxHxW): Հաջորդը, դուք պետք է կտրեք աստիճանի նման կտրվածքը փայտի եզրին: Նկարը կցուցադրվի վերևում:

Քայլ 3: 3D ձևեր

3D ձևեր
3D ձևեր
3D ձևեր
3D ձևեր

Նրանց համար, ովքեր ունեն իրենց սեփական 3D տպիչը, դուք ճիշտ քայլի մեջ եք: Սա դարձրեց այս լամպը օգտագործողի համար հարմար:

Անկեղծ ասած, սա իմ կատարած ամենադժվար քայլն էր: Սա առաջին բանն է, որ ես արեցի ծրագրաշարը տեղադրելուց անմիջապես հետո:

Լամպի կառուցվածքը նախագծելու համար ես օգտագործում եմ Sketchup Pro- ն: Unfortunatelyավոք, ես այնքան հմուտ չեմ, որ կարողանամ նախագծել դրա ներքին բաղադրիչը: Իմ 3D մոդելի հղումը ստորև բերված ֆայլում է:

Քայլ 4: Բաղադրիչների սխեման

Բաղադրիչների սխեմատիկ
Բաղադրիչների սխեմատիկ

Ես օգտագործում եմ Fritzing- ը ՝ բաղադրիչների սխեմաները կառուցելու համար: Սխեման իրականում բավականին հեշտ է:

Քայլ 5: Կոդ

Օրենսգիրքը
Օրենսգիրքը

Այս տրամադրության լամպի կոդավորման համար ես որոշ գրադարաններ օգտագործեցի Arduino IDE- ից: Գրադարանները թվարկված կլինեն 7 -րդ քայլում:

Կոդի համար անհրաժեշտ է ունենալ Arduino ծրագրակազմը: Ներբեռնելու հղումը կտրամադրեմ այստեղ:

Բացի այդ, ուրվագիծը կամ ծածկագիրը կցուցադրվի՞ ստորև:

Ես նաև տրամադրեցի Github.com- ի ծածկագրի ֆայլը, եթե ստորև նշված կոդը այստեղ պատճենելու համար չափազանց երկար լինի;)

#ներառել #ներառել #ներառել #ifdef _AVR_ #ներառել #ավարտել

SoftwareSerial BT (10, 11);

#սահմանել LED_PIN 7 #սահմանել NUM_LEDS 60 #սահմանել ՊԱՀՈՍՏՈ #ԹՅՈ 200Ն 200 #սահմանել SPEED 10 #սահմանել ԱՆԳԱՄ 0 #սահմանել RAINBOW_SPEED 50 CRGB լուսարձակներ [NUM_LEDS];

Adafruit_NeoPixel շերտ = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

bool offOld = LOW;

bool WhiteOld = OWԱOWՐ; bool RedOld = OWԱOWՐ; bool GreenOld = OWԱOWՐ; bool BlueOld = OWԱOWՐ; bool TopazOld = OWԱOWՐ; bool LilacOld = OWԱOWՐ; bool RainbowOld = OWԱOWՐ; bool rgbOld = OWԱOWՐ; int showType = 0;

void setup () {

FastLED.addLeds (լուսարձակներ, NUM_LEDS); ///////////

BT. Սկիզբ (9600);

BT.println («Միացված է Արդուինոյին»);

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show ();

}

char a;

դատարկ շրջան () {

համար (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool White = LOW; bool Blue = LOW; bool Red = LOW; bool Green = LOW; bool Topaz = OWԱOWՐ; bool Lilac = LOW; bool Rainbow = LOW; bool rgb = OWԱOWՐ; bool ende; if (BT.available ()) {a = (char) BT.read ();

եթե (a == 'o')

{անջատված = Բարձր; BT.println («LED- ների անջատում..»);

} ուրիշ {

անջատված = OWԱOWՐ; } // =============================================== =============================================

եթե (a == 'w')

{Սպիտակ = Բարձր; BT.println («LED- ները սպիտակ են շրջում»);

} ուրիշ {

Սպիտակ = OWԱOWՐ; } // =============================================== =============================================

եթե (a == 'b')

{Կապույտ = Բարձր; BT.println («ՓՈՓՈԽՈԹՅՈՆ Կապույտին»); } else {Կապույտ = OWԱOWՐ; }

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

եթե (a == 'r')

{Կարմիր = Բարձր; BT.println («ՓՈԽՈՄ ԿԱՐՄԻՐԻՆ»); } else {Կարմիր = OWԱOWՐ; }

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

եթե (a == 'g')

{Կանաչ = Բարձր; BT.println («ՓՈՓՈԽՈԹՅՈՆ Կանաչին»); } else {Կանաչ = OWԱOWՐ; }

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

եթե (a == 't')

{Տոպազ = ԲԱՐՁՐ; BT.println («ՓՈՓՈԽՈՄ ԵՆ ԹՈՓԱZ»); } else {Topaz = LOW; }

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

եթե (a == 'l')

{Յասաման = ԲԱՐՁՐ; BT.println («ՓՈՓՈԽՈԹՅՈՆ ԼԻԼԱԿԻՆ»); } else {Lilac = LOW; }

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

եթե (a == 'a')

{Rիածան = ԲԱՐՁՐ; BT.println («RAիածանի անիմացիա»); } else {Rainbow = LOW; } // =============================================== =============================================

եթե (a == 'մ')

{rgb = ԲԱՐՁՐ; BT.println ("MIX COLORS"); } else {rgb = LOW; }} if (անջատված == LOW && offOld == HIGH) {ուշացում (20); եթե (անջատված == OWԱOWՐ) {showType = 0; // Անջատված անիմացիա Type 0 startShow (showType); }}

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

եթե (Սպիտակ == LOW && WhiteOld == Բարձր) {

ուշացում (20); եթե (Սպիտակ == OWԱOWՐ) {showType = 1; // Սպիտակ անիմացիա Type 1 startShow (showType); }}

// ================================================ =========================================== եթե (Կարմիր == OWածր && RedOld == HIGH) {ուշացում (20); եթե (Կարմիր == OWԱOWՐ) {showType = 2; // Կարմիր անիմացիա Type 2 startShow (showType); }}

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

եթե (Կանաչ == LOW && GreenOld == ԲԱՐՁՐ) {

ուշացում (20); եթե (Կանաչ == OWԱOWՐ) {showType = 3; // Կանաչ անիմացիա Type 3 startShow (showType); }} // ============================================== =============================================

եթե (Կապույտ == OWԱOWՐ && BlueOld == ԲԱՐՁՐ) {

ուշացում (20); եթե (Կապույտ == OWԱOWՐ) {showType = 4; // Կապույտ անիմացիա Type 4 startShow (showType); }}

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

եթե (Topaz == LOW && TopazOld == HIGH) {

ուշացում (20); եթե (Topaz == LOW) {showType = 5; // Topaz անիմացիա Type 5 startShow (showType); }}

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

եթե (Lilac == LOW && LilacOld == HIGH) {

ուշացում (20); if (Lilac == LOW) {showType = 6; // Topaz անիմացիա Type 6 startShow (showType); }} // ============================================== =============================================

եթե (Rainbow == LOW && RainbowOld == HIGH) {

ուշացում (20);

եթե (Rainbow == LOW) {

showType = 8; // Rainbow անիմացիա Type 8 startShow (showType); }}

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

եթե (rgb == LOW && rgbOld == HIGH) {

ուշացում (20);

եթե (rgb == LԱOWՐ) {

showType = 7; // Շարժապատկերների խառնուրդ Տեսակ 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = Սպիտակ;

RedOld = Կարմիր; BlueOld = Կապույտ; GreenOld = Կանաչ; TopazOld = Տոպազ; LilacOld = յասաման; offOld = անջատված; RainbowOld = ainիածան; rgbOld = rgb;

}

void startShow (int i) {

անջատիչ (i) {

գործ 0: colorWipe (շերտ. Գույն (0, 0, 0), SPEED); // Սև/անջատված

ընդմիջում;

գործ 1: strip.setBrightness (255); // Պայծառությունը փոխում է MAX- ի

գույնը սրբել (շերտ. Գույն (255, 255, 255), ԱՆՀՈՄ); // White strip.setBrightness (BRIGHTNESS); // Վերականգնել Brightness- ը Default արժեքի ընդմիջում;

գործ 2: colorWipe (շերտ. Գույն (255, 0, 0), SPEED); // Կարմիր

ընդմիջում;

գործ 3: colorWipe (շերտ. Գույն (0, 255, 0), SPEED); // Կանաչ

ընդմիջում;

գործ 4: colorWipe (շերտ. Գույն (0, 0, 255), SPEED); // Կապույտ

ընդմիջում;

գործ 5: colorWipe (շերտ. Գույն (0, 250, 255), SPEED); // Տոպազ

ընդմիջում;

գործ 6: colorWipe (շերտ. Գույն (221, 130, 255), SPEED); // յասաման

ընդմիջում; գործ 7: colorWipe (շերտ. Գույն (255, 0, 0), SPEED); // Red colorWipe (շերտ. Գույն (0, 255, 0), SPEED); // Green colorWipe (շերտ. Գույն (0, 0, 255), SPEED); // Blue theaterChase (շերտ. Գույն (0, 0, 127), SPEED); // Blue theaterChase (շերտ. Գույն (127, 0, 0), SPEED); // Red theaterChase (շերտ. Գույն (0, 127, 0), SPEED); // Կանաչ ընդմիջում;

գործ 8: rainbowCycle (25);

ընդմիջում; }} void colorWipe (uint32_t c, uint8_t սպասել) {for (uint16_t i = 0; i

void rainbowCycle (uint8_t սպասել) {

uint16_t i, j;

for (j = 0; j <256*10; j ++) {// անիվի բոլոր գույների 5 ցիկլ (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, անիվ (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); ուշացում (սպասել); }}

void theaterChase (uint32_t գ, uint8_t սպասել) {

for (int j = 0; j <10; j ++) {// անել 10 ցիկլ հետապնդման համար (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, գ); // միացնել յուրաքանչյուր երրորդ պիքսել} strip.show ();

ուշացում (սպասել);

համար (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // անջատել յուրաքանչյուր երրորդ պիքսել}}}}

uint32_t Անիվ (բայթ WheelPos) {

WheelPos = 255 - WheelPos; if (WheelPos <85) {վերադարձի շերտ. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; վերադարձի շերտ. Գույն (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; վերադարձի շերտ. Գույն (WheelPos * 3, 255 - WheelPos * 3, 0); }

Քայլ 6: Լամպի կառավարում

Լամպի կառավարում
Լամպի կառավարում
Լամպի կառավարում
Լամպի կառավարում
Լամպի կառավարում
Լամպի կառավարում

Լամպի գույնը կարելի է վերահսկել ձեր սմարթֆոնի միջոցով:

Նախ, դուք պետք է տեղադրեք «Bluetooth տերմինալ HC-05» անունը կրող ծրագիրը Google Play Store- ից կամ Apple App Store- ից:

Ահա ձեր սեփական սմարթֆոնի միջոցով լամպը կառավարելու քայլերը.

1. Միացրեք Bluetooth- ը ձեր սմարթֆոնում:

2. Բացեք ծրագիրը, որը «Bluetooth տերմինալ HC-05» է:

3. Այժմ դուք պետք է էկրանին տեսնեք զուգավորված սարքերը: Ընտրեք «HC-05»:

4. Այժմ դուք կարող եք տեսնել, որ սմարթֆոնում հայտնվում է սև էկրան, որը ցույց կտա 'միացված է Arduino- ին':

5. Ահա զվարճալի մասը, եթե տեքստում մուտքագրեք «b», լամպը կդառնա կապույտ: Ահա այն հրամանի ցանկը, որը կարող եք մուտքագրել լամպի համար.

- w սպիտակի համար

- բ կապույտի համար

- կանաչ կանաչի համար

- r կարմիրի համար

- տ տոպազի համար

- լ յասամանի համար

- ծիածանի անիմացիայի համար

- o անջատելու համար

Funամանց, ճիշտ է:

6. Վերջին, բայց ոչ ամենակարևորը, նաև կարող եք էկրանի ներքևի կոճակը հարմարեցնել ձեր ցանկալի տեքստին, ինչպես ցույց է տրված վերևում նկարում:

Քայլ 7: Վայելեք ձեր տրամադրության լամպը:

Վայելեք ձեր տրամադրության լամպը !!
Վայելեք ձեր տրամադրության լամպը !!
Վայելեք ձեր տրամադրության լամպը !!
Վայելեք ձեր տրամադրության լամպը !!
Վայելեք ձեր տրամադրության լամպը !!
Վայելեք ձեր տրամադրության լամպը !!

Հուսով եմ, որ ձեզ դուր կգան այս հրահանգները: Ինձ համար դա շատ դժվար նախագիծ էր, բայց ես կարողացա այն ամբողջությամբ ավարտել որպես 14 տարեկան տղա: Տվեք ինձ հետադարձ կապ ապագա բարելավումների համար:

Շնորհակալություն ընթերցման համար և շնորհավոր Սուրբ Christmasնունդ:

Խորհուրդ ենք տալիս: