Obsah:

Bluetooth Smart LED ovládaná smartphonem: 7 kroků
Bluetooth Smart LED ovládaná smartphonem: 7 kroků

Video: Bluetooth Smart LED ovládaná smartphonem: 7 kroků

Video: Bluetooth Smart LED ovládaná smartphonem: 7 kroků
Video: LED pásek ovládaný mobilem přes WiFi 2024, Červenec
Anonim
Image
Image
Bluetooth Smart LED ovládaná chytrým telefonem
Bluetooth Smart LED ovládaná chytrým telefonem

Vždy sním o ovládání svých osvětlovacích zařízení. Pak někdo vyrobil neuvěřitelně barevnou LED lampu. Nedávno jsem na Youtube narazil na LED lampu od Josepha Cashy. Inspiroval jsem se tím a rozhodl jsem se přidat několik funkcí při zachování současného designu.

Plánuje se, aby byla lampa uživatelsky přívětivější přidáním modulu Bluetooth a adresovatelného LED pásku WS2812B RGB. Díky tomu bylo možné ovládat barvu osvětlení pouze pomocí aplikace pro chytré telefony.

Krok 1: Shromážděte materiály

Shromážděte materiály
Shromážděte materiály
Shromážděte materiály
Shromážděte materiály

Nástroje:

• Pájecí stanice

• Ohřívací foukací pistole

• Vrtačka

• Kotoučová pila

• Skládačka

• Kleště na řezání drátu

• Kleště s úzkým nosem

Materiály:

• Průsvitná akrylová deska

• Japonské cypřišové dřevo (nebo můžete použít jakékoli dřevo, pokud je dostatečně stabilní a pevné)

• Šrouby

• Nerezová tyč nebo tyč

• Dráty (používám červený a černý vodič)

• Pájecí cín

Elektronické komponenty:

• Arduino Nano

• Modul Bluetooth HC-05 (rozhodl jsem se ho použít, protože je jednodušší kódovat než modul Wifi ESP8266)

• Adresovatelný RGB LED pás WS2812B

• Snižovací modul LM2596

• DC barelový napájecí konektor

Krok 2: Budování struktury lampy

Budování struktury lampy
Budování struktury lampy
Budování struktury lampy
Budování struktury lampy

V tomto kroku mám dva způsoby, jak budovat strukturu lampové metody zpracování dřeva a metody 3D tisku. Používám první metodu. Pokud dáváte přednost použití 3D tiskárny, přejděte na krok 2 u modelu, který jsem navrhl.

Pro horní část lampy zahřívám a ohýbám akrylovou desku pod úhlem 90 °, jak je uvedeno výše. Trvá mi docela dlouho, než to ohnu do tak dokonalého úhlu a směru.

Dále pro spodní část lampy. Bohužel … v den, kdy pracuji na spodní části lampy, jsem úplně zapomněl vyfotit konstrukci! Uvědomil jsem si to, když jsem dokončil tento projekt. Ale pokusím se ze všech sil poskytnout vám měření spodní části lampy.

V zásadě stačí vyřezat čtyři bloky dřeva o rozměrech 13 x 6 x 2 cm (D x V x Š). Dále musíte na okraji dřeva řezat schodiště. Obrázek bude zobrazen výše.

Krok 3: 3D tvary

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

Pro každého, kdo má vlastní 3D tiskárnu, jste ve správném kroku. Díky tomu byla tato lampa uživatelsky přívětivá.

Abych byl upřímný, byl to nejtěžší krok, který jsem udělal. Toto je první věc, kterou jsem udělal hned po instalaci softwaru!

Pro návrh struktury lampy používám Sketchup Pro. Bohužel nejsem natolik šikovný, abych navrhl jeho vnitřní součást. Odkaz na můj 3D model je v souboru níže.

Krok 4: Schéma součástí

Schéma součástí
Schéma součástí

Ke konstrukci schémat komponent používám Fritzing. Schéma je ve skutečnosti docela snadné.

Krok 5: Kód

Kód
Kód

Pro kódování této náladové lampy jsem použil některé knihovny z Arduino IDE. Knihovny budou uvedeny v kroku 7.

Pro kód potřebujete vlastní software Arduino. Zde poskytnu odkaz ke stažení.

Také se níže zobrazí skica nebo kód?

Také jsem poskytl soubor pro kód na Github.com pro případ, že níže uvedený kód je příliš dlouhý na to, aby se dal zkopírovat sem;)

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

SoftwareSériový BT (10, 11);

#define LED_PIN 7 #definovat NUM_LEDS 60 #define BRIGHTNESS 200 #define SPEED 10 #define OKAMŽITĚ 0 #define RAINBOW_SPEED 50 CRGB LED [NUM_LEDS];

Proužek Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

bool offOld = LOW;

bool WhiteOld = NÍZKÝ; bool RedOld = LOW; bool GreenOld = NÍZKÝ; bool BlueOld = LOW; bool TopazOld = NÍZKÉ; bool LilacOld = NÍZKÝ; bool RainbowOld = NÍZKÉ; bool rgbOld = NÍZKÝ; int showType = 0;

neplatné nastavení () {

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

BT.begin (9600);

BT.println („Připojeno k Arduinu“);

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show ();

}

char a;

prázdná smyčka () {

pro (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool White = LOW; bool Modrá = NÍZKÁ; bool Červená = NÍZKÁ; bool Zelená = NÍZKÁ; bool Topaz = NÍZKÝ; bool šeřík = NÍZKÝ; bool Duha = NÍZKÁ; bool rgb = LOW; bool ende; if (BT.available ()) {a = (char) BT.read ();

if (a == 'o')

{vypnuto = VYSOKÉ; BT.println („VYPNUTÍ LED diod..“);

}jiný{

vypnuto = NÍZKÉ; } // =================================================================== ===================================================

if (a == 'w')

{Bílá = VYSOKÁ; BT.println („OTOČENÍ LED BÍLÉ“);

}jiný{

Bílá = NÍZKÁ; } // =================================================================== ===================================================

pokud (a == 'b')

{Modrá = VYSOKÁ; BT.println („ZMĚNA NA MODROU“); } else {Modrá = NÍZKÁ; }

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

if (a == 'r')

{Červená = VYSOKÁ; BT.println („ZMĚNA NA ČERVENOU“); } else {Red = LOW; }

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

if (a == 'g')

{Zelená = VYSOKÁ; BT.println („ZMĚNA NA ZELENOU“); } else {Zelená = NÍZKÁ; }

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

pokud (a == 't')

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

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

pokud (a == 'l')

{Šeřík = VYSOKÝ; BT.println („ZMĚNA NA LILAC“); } else {Lilac = LOW; }

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

if (a == 'a')

{Duha = VYSOKÁ; BT.println („ANIMACE DUHA“); } else {Rainbow = LOW; } // =================================================================== ===================================================

if (a == 'm')

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

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

if (White == LOW && WhiteOld == HIGH) {

zpoždění (20); if (White == LOW) {showType = 1; // Bílá animace Typ 1 startShow (showType); }}

// ===================================================================== ====================================================================== RedOld == HIGH) {zpoždění (20); if (Red == LOW) {showType = 2; // Červená animace Typ 2 startShow (showType); }}

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

if (Zelená == NÍZKÁ && GreenOld == VYSOKÁ) {

zpoždění (20); if (Zelená == NÍZKÁ) {showType = 3; // Zelená animace Typ 3 startShow (showType); }} // =================================================== ===================================================

if (Blue == LOW && BlueOld == HIGH) {

zpoždění (20); if (Blue == LOW) {showType = 4; // Modrá animace Typ 4 startShow (showType); }}

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

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

zpoždění (20); if (Topaz == LOW) {showType = 5; // Animace Topaz Typ 5 startShow (showType); }}

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

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

zpoždění (20); if (Lilac == LOW) {showType = 6; // Animace Topaz Typ 6 startShow (showType); }} // =================================================== ===================================================

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

zpoždění (20);

if (Rainbow == LOW) {

showType = 8; // Duhová animace Typ 8 startShow (showType); }}

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

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

zpoždění (20);

if (rgb == LOW) {

showType = 7; // Mix animace Typ 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = White;

RedOld = červená; BlueOld = Modrá; GreenOld = Zelená; TopazOld = Topaz; LilacOld = šeřík; offOld = vypnuto; RainbowOld = Duha; rgbOld = rgb;

}

void startShow (int i) {

přepínač (i) {

případ 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Černá/vypnuto

přestávka;

případ 1: strip.setBrightness (255); // Změní jas na MAX

colorWipe (strip. Color (255, 255, 255), IHNED); // White strip.setBrightness (BRIGHTNESS); // Reset Brightness to Default value break;

případ 2: colorWipe (strip. Color (255, 0, 0), SPEED); // Červené

přestávka;

případ 3: colorWipe (strip. Color (0, 255, 0), SPEED); // Zelená

přestávka;

případ 4: colorWipe (strip. Color (0, 0, 255), SPEED); // Modrá

přestávka;

případ 5: colorWipe (strip. Color (0, 250, 255), SPEED); // Topaz

přestávka;

případ 6: colorWipe (strip. Color (221, 130, 255), SPEED); // Šeřík

přestávka; případ 7: colorWipe (strip. Color (255, 0, 0), SPEED); // Red colorWipe (strip. Color (0, 255, 0), SPEED); // Green colorWipe (strip. Color (0, 0, 255), SPEED); // Blue TheaterChase (strip. Color (0, 0, 127), SPEED); // Blue TheaterChase (strip. Color (127, 0, 0), SPEED); // Red TheaterChase (strip. Color (0, 127, 0), SPEED); // Zelená přestávka;

případ 8: rainbowCycle (25);

přestávka; }} void colorWipe (uint32_t c, uint8_t čekat) {for (uint16_t i = 0; i

void rainbowCycle (uint8_t čekat) {

uint16_t i, j;

for (j = 0; j <256*10; j ++) {// 5 cyklů všech barev na kolečku pro (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); zpoždění (čekání); }}

neplatné divadloChase (uint32_t c, uint8_t počkejte) {

for (int j = 0; j <10; j ++) {// do 10 cyklů honění za (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // zapnutí každého třetího pixelu} strip.show ();

zpoždění (čekání);

pro (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // vypněte každý třetí pixel}}}}

uint32_t Wheel (byte WheelPos) {

WheelPos = 255 - WheelPos; if (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; zpětný proužek. Barva (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; zpětný proužek. Barva (WheelPos * 3, 255 - WheelPos * 3, 0); }

Krok 6: Ovládání lampy

Ovládání lampy
Ovládání lampy
Ovládání lampy
Ovládání lampy
Ovládání lampy
Ovládání lampy

Barvu lampy lze ovládat pomocí smartphonu.

Nejprve si musíte nainstalovat aplikaci s názvem 'Bluetooth Terminal HC-05' z Google Play Store nebo Apple App Store.

Toto je postup, jak ovládat lampu pomocí vlastního smartphonu:

1. Zapněte ve smartphonu bluetooth.

2. Otevřete aplikaci „Bluetooth Terminal HC-05“.

3. Nyní byste měli spárovaná zařízení vidět na obrazovce. Vyberte 'HC-05'.

4. Nyní můžete ve svém smartphonu vidět černou obrazovku, která bude indikovat „připojeno k Arduinu“.

5. Tady je ta zábavná část, pokud do textového pole napíšete 'b', kontrolka se změní na modrou barvu. Zde je seznam příkazů, které můžete pro lampu zadat:

- w pro bílou

- b pro modrou

- g pro zelenou

- r pro červenou

- t pro topaz

- l pro šeřík

- pro duhovou animaci

- o pro vypnuto

Zábava ne?

6. V neposlední řadě můžete také přizpůsobit tlačítko pod obrazovkou požadovanému textu, jak je znázorněno na obrázku výše.

Krok 7: Užijte si lampu nálady

Užijte si svoji náladu!
Užijte si svoji náladu!
Užijte si svoji náladu!
Užijte si svoji náladu!
Užijte si svoji náladu!
Užijte si svoji náladu!

Doufám, že se vám tento Instructables líbí. Byl to pro mě velmi náročný projekt, ale podařilo se mi ho úplně dokončit jako 14letý chlapec. Dejte mi nějakou zpětnou vazbu pro budoucí vylepšení.

Děkujeme za přečtení a veselé Vánoce!

Doporučuje: