Obsah:

Bluetooth Smart LED ovládaná inteligentným telefónom: 7 krokov
Bluetooth Smart LED ovládaná inteligentným telefónom: 7 krokov

Video: Bluetooth Smart LED ovládaná inteligentným telefónom: 7 krokov

Video: Bluetooth Smart LED ovládaná inteligentným telefónom: 7 krokov
Video: Tuya Smart - компактный универсальный шлюз Zigbee 3.0 - Bluetooth mesh - Wi-fi 2024, Júl
Anonim
Image
Image
Bluetooth Smart LED ovládaná inteligentným telefónom
Bluetooth Smart LED ovládaná inteligentným telefónom

Vždy snívam o ovládaní svojich svetelných zariadení. Potom niekto vyrobil neuveriteľnú farebnú LED lampu. Nedávno som na Youtube narazil na LED lampu od Josepha Cashu. Inšpirovaný tým, rozhodol som sa pridať niekoľko funkcií pri zachovaní súčasného dizajnu.

Plánuje sa, aby bola lampa užívateľsky prívetivejšia pridaním modulu Bluetooth a adresovateľného LED pásika WS2812B RGB. Vďaka tomu bolo možné ovládať farbu osvetlenia iba pomocou aplikácie pre smartfóny.

Krok 1: Zhromaždite materiály

Zhromaždite materiály
Zhromaždite materiály
Zhromaždite materiály
Zhromaždite materiály

Náradie:

• Spájkovacia stanica

• Ohrievacia dúchacia pištoľ

• Vŕtačka

• Kotúčová píla

• Skladačka

• Kliešte na rezanie drôtu

• Kliešte s úzkym nosom

Materiály:

• Priesvitná akrylová doska

• Japonské cyprusové drevo (alebo môžete použiť akékoľvek drevo, pokiaľ je dostatočne stabilné a pevné)

• Skrutky

• Tyč alebo tyč z nehrdzavejúcej ocele

• Drôty (používam červený a čierny drôt)

• Cín spájkovačka

Komponenty elektroniky:

• Arduino Nano

• Modul Bluetooth HC-05 (rozhodol som sa ho použiť, pretože je jednoduchšie kódovať ako modul Wifi ESP8266)

• Adresovateľný RGB LED pás WS2812B

• Znižovací modul LM2596

• DC konektor hlavne

Krok 2: Budovanie štruktúry žiarovky

Budovanie štruktúry lampy
Budovanie štruktúry lampy
Budovanie štruktúry lampy
Budovanie štruktúry lampy

V tomto kroku mám dva spôsoby budovania štruktúry metódy lampového spracovania dreva a metódy 3D tlače. Používam prvú metódu. Ak to radšej robíte pomocou 3D tlačiarne, pokojne preskočte na krok 2 pre model, ktorý som navrhol.

Pre hornú časť žiarovky zohrievam a ohýbam akrylovú dosku pod uhlom 90 °, ako je to znázornené vyššie. Trvá mi dosť dlho, kým to ohnem do tak dokonalého uhla a smeru.

Ďalej pre spodnú časť žiarovky. Bohužiaľ … v deň, keď pracujem na spodnej časti žiarovky, som úplne zabudol odfotiť konštrukciu! Uvedomil som si to, keď som dokončil tento projekt. Ale pokúsim sa urobiť všetko pre to, aby som vám poskytol meranie spodnej časti žiarovky.

V zásade stačí narezať štyri bloky dreva s rozmermi 13 x 6 x 2 cm (d x v x š). Ďalej musíte na okraji dreva vyrezať schodiskový rez. Obrázok bude zobrazený vyššie.

Krok 3: 3D tvary

3D tvary
3D tvary
3D tvary
3D tvary

Každý, kto má vlastnú 3D tlačiareň, ste na správnom kroku. Vďaka tomu bola táto lampa užívateľsky prívetivá.

Ak mám byť úprimný, bol to najťažší krok, ktorý som urobil. Toto je prvá vec, ktorú som urobil hneď po inštalácii softvéru!

Na návrh štruktúry žiarovky používam Sketchup Pro. Bohužiaľ nie som natoľko šikovný, aby som mohol navrhnúť jeho interiérový komponent. Odkaz na môj 3D model je v súbore nižšie.

Krok 4: Schéma komponentov

Schéma komponentov
Schéma komponentov

Na zostavenie schémy komponentov používam Fritzing. Schéma je v skutočnosti veľmi jednoduchá.

Krok 5: Kód

Kód
Kód

Na kódovanie tejto náladovej žiarovky som použil niektoré knižnice z Arduino IDE. Knižnice budú uvedené v zozname v kroku 7.

Na kód musíte mať samotný softvér Arduino. Tu poskytnem odkaz na stiahnutie.

Tiež sa nižšie zobrazí náčrt alebo kód?

Súbor s kódom som poskytol aj na Github.com v prípade, že nižšie uvedený kód je príliš dlhý na kopírovanie;)

#include #include #include #ifdef _AVR_ #include #endif

Softvér Sériový BT (10, 11);

#define LED_PIN 7 #define NUM_LEDS 60 #define BRIGHTNESS 200 #define SPEED 10 #define OKAMŽITE 0 #define RAINBOW_SPEED 50 LED diód CRGB [NUM_LEDS];

Pásik Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

bool offStarý = NÍZKY;

bool WhiteOld = NÍZKA; bool RedOld = NÍZKA; bool GreenOld = NÍZKA; bool BlueOld = NÍZKA; bool TopazOld = NÍZKY; bool LilacOld = NÍZKA; bool RainbowOld = NÍZKY; bool rgbOld = NÍZKY; int showType = 0;

neplatné nastavenie () {

FastLED.addLeds (LED diódy, NUM_LEDS); //////////

BT.begin (9600);

BT.println („Pripojené k Arduinu“);

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show ();

}

char a;

prázdna slučka () {

pre (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = NÍZKY; bool Biela = NÍZKA; bool Modrá = NÍZKA; bool Červená = NÍZKA; bool Zelená = NÍZKA; bool Topaz = NÍZKA; bool Lilac = NÍZKA; bool Dúha = NÍZKA; bool rgb = NÍZKA; bool ende; if (BT.available ()) {a = (char) BT.read ();

ak (a == 'o')

{vypnuté = VYSOKÉ; BT.println („VYPNUTIE LED diód..“);

} else {

vypnuté = NÍZKE; } // ===================================================================== =============================================================

ak (a == 'w')

{Biela = VYSOKÁ; BT.println („OTOČNÉ LED diódy BIELE“);

} else {

Biela = NÍZKA; } // ===================================================================== =============================================================

ak (a == 'b')

{Modrá = VYSOKÁ; BT.println („ZMENA NA MODRÚ“); } else {Modrá = NÍZKA; }

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

ak (a == 'r')

{Červená = VYSOKÁ; BT.println („ZMENA NA ČERVENÚ“); } else {Červená = NÍZKA; }

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

ak (a == 'g')

{Zelená = VYSOKÁ; BT.println („ZMENA NA ZELENÚ“); } else {Zelená = NÍZKA; }

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

ak (a == 't')

{Topaz = VYSOKÝ; BT.println („ZMENA NA TOPAZ“); } else {Topaz = LOW; }

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

ak (a == 'l')

{Lilac = HIGH; BT.println („ZMENA NA LILAC“); } else {Lilac = NÍZKA; }

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

ak (a == 'a')

{Rainbow = VYSOKÝ; BT.println („ANIMÁCIA DÚHA“); } else {Rainbow = LOW; } // ===================================================================== =============================================================

ak (a == 'm')

{rgb = HIGH; BT.println („MIX FARIEB“); } else {rgb = LOW; }} if (off == LOW && offOld == HIGH) {delay (20); if (off == LOW) {showType = 0; // Vypnutá animácia Typ 0 startShow (showType); }}

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

ak (biela == NÍZKA && WhiteOld == VYSOKÁ) {

oneskorenie (20); ak (biely == NÍZKY) {showType = 1; // Biela animácia Typ 1 startShow (showType); }}

// ======================================================================= ================================================ if (červená == NÍZKA && RedOld == HIGH) {oneskorenie (20); if (Red == LOW) {showType = 2; // Červená animácia Typ 2 startShow (showType); }}

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

ak (zelená == NÍZKA && GreenOld == VYSOKÁ) {

oneskorenie (20); if (Zelená == NÍZKA) {showType = 3; // Zelená animácia Typ 3 startShow (showType); }} // ==================================================================== =================================================================

ak (modrá == NÍZKA && BlueOld == VYSOKÁ) {

oneskorenie (20); if (Modrá == NÍZKA) {showType = 4; // Modrá animácia Typ 4 startShow (showType); }}

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

ak (Topaz == NÍZKA && TopazOld == VYSOKÁ) {

oneskorenie (20); if (Topaz == LOW) {showType = 5; // Animácia Topaz Typ 5 startShow (showType); }}

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

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

oneskorenie (20); if (Lilac == LOW) {showType = 6; // Animácia Topaz Typ 6 startShow (showType); }} // ===================================================================== =================================================================

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

oneskorenie (20);

if (Rainbow == LOW) {

showType = 8; // Animácia dúhy Typ 8 startShow (showType); }}

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

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

oneskorenie (20);

if (rgb == LOW) {

showType = 7; // Mix animácie Typ 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = biela;

RedOld = červená; BlueOld = Modrá; GreenOld = Zelená; TopazOld = Topaz; LilacOld = orgován; offOld = vypnuté; RainbowOld = Rainbow; rgbOld = rgb;

}

void startShow (int i) {

prepínač (i) {

prípad 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Čierna/vypnutá

prestávka;

prípad 1: strip.setBrightness (255); // Mení jas na MAX

colorWipe (pásik. Farba (255, 255, 255), IHNEĎ); // White strip.setBrightness (BRIGHTNESS); // Reset jasu na predvolenú hodnotu;

prípad 2: colorWipe (pás. Farba (255, 0, 0), RÝCHLOSŤ); // Červená

prestávka;

prípad 3: colorWipe (pásik. Farba (0, 255, 0), RÝCHLOSŤ); // Zelená

prestávka;

prípad 4: colorWipe (pásik. Farba (0, 0, 255), RÝCHLOSŤ); // Modrá

prestávka;

prípad 5: colorWipe (pás. Farba (0, 250, 255), RÝCHLOSŤ); // Topaz

prestávka;

prípad 6: colorWipe (pás. Farba (221, 130, 255), RÝCHLOSŤ); // Lilac

prestávka; prípad 7: colorWipe (pás. Farba (255, 0, 0), RÝCHLOSŤ); // Red colorWipe (strip. Color (0, 255, 0), SPEED); // Zelená farbaWipe (strip. Color (0, 0, 255), SPEED); // Blue TheaterChase (strip. Color (0, 0, 127), SPEED); // Blue TheaterChase (strip. Color (127, 0, 0), SPEED); // Červené divadloChase (strip. Color (0, 127, 0), SPEED); // Zelená prestávka;

prípad 8: rainbowCycle (25);

prestávka; }} void colorWipe (uint32_t c, uint8_t čakať) {for (uint16_t i = 0; i

void rainbowCycle (uint8_t wait) {

uint16_t i, j;

for (j = 0; j <256*10; j ++) {// 5 cyklov všetkých farieb na koliesku pre (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); oneskorenie (čakanie); }}

neplatné divadloChase (uint32_t c, uint8_t čakať) {

for (int j = 0; j <10; j ++) {// urobte 10 cyklov honenia za (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // zapnite každý tretí pixel}} strip.show ();

oneskorenie (čakanie);

pre (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // vypnite každý tretí pixel}}}}

uint32_t Wheel (byte WheelPos) {

WheelPos = 255 - WheelPos; if (WheelPos <85) {spätný pás. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; spätný pás. Farba (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; spätný pás. Farba (WheelPos * 3, 255 - WheelPos * 3, 0); }

Krok 6: Ovládanie žiarovky

Ovládanie žiarovky
Ovládanie žiarovky
Ovládanie žiarovky
Ovládanie žiarovky
Ovládanie žiarovky
Ovládanie žiarovky

Farbu žiarovky je možné ovládať pomocou smartfónu.

Najprv si musíte nainštalovať aplikáciu s názvom „Bluetooth Terminal HC-05“z Obchodu Google Play alebo Apple App Store.

Nasledujú kroky na ovládanie žiarovky pomocou vlastného smartfónu:

1. Zapnite vo svojom smartfóne bluetooth.

2. Otvorte aplikáciu „Bluetooth Terminal HC-05“.

3. Teraz by ste mali spárované zariadenia vidieť na obrazovke. Vyberte „HC-05“.

4. Teraz môžete na svojom smartfóne vidieť čiernu obrazovku, ktorá bude znamenať „pripojené k Arduinu“.

5. Toto je zábavná časť. Ak do textového poľa zadáte „b“, lampa sa zmení na modrú. Tu je zoznam príkazov, ktoré môžete pre lampu napísať:

- w pre bielu

- b pre modrú

- g pre zelenú

- r pre červenú

- t pre topaz

- l pre orgován

- a pre dúhovú animáciu

- o na vypnutie

Zábava nie?

6. V neposlednom rade môžete tiež prispôsobiť tlačidlo pod obrazovkou požadovanému textu, ako je to znázornené na obrázku vyššie.

Krok 7: Užite si lampu nálady !

Užite si lampu nálady !!
Užite si lampu nálady !!
Užite si lampu nálady !!
Užite si lampu nálady !!
Užite si lampu nálady !!
Užite si lampu nálady !!

Dúfam, že sa vám tento návod páči. Bol to pre mňa veľmi náročný projekt, ale podarilo sa mi ho úplne dokončiť ako 14-ročný chlapec. Poskytnite mi spätnú väzbu pre budúce zlepšenia.

Ďakujem za prečítanie a Veselé Vianoce!

Odporúča: