Sisukord:

Bluetooth nutitelefoniga juhitav nutikas LED-lamp: 7 sammu
Bluetooth nutitelefoniga juhitav nutikas LED-lamp: 7 sammu

Video: Bluetooth nutitelefoniga juhitav nutikas LED-lamp: 7 sammu

Video: Bluetooth nutitelefoniga juhitav nutikas LED-lamp: 7 sammu
Video: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, November
Anonim
Image
Image
Bluetooth nutitelefoniga juhitav nutikas LED-lamp
Bluetooth nutitelefoniga juhitav nutikas LED-lamp

Ma unistan alati oma valgustite juhtimisest. Siis tegi keegi uskumatult värvilise LED -lambi. Sattusin hiljuti Youtube'is kokku Joseph Casha LED -lambiga. Sellest inspireerituna otsustasin lisada mitu funktsiooni, säilitades samas kaasaegse disaini.

Plaan on muuta lamp kasutajasõbralikumaks, lisades Bluetooth-mooduli ja adresseeritava WS2812B RGB LED-riba. See võimaldas juhtida valgustuse värvi lihtsalt nutitelefoni rakenduse abil.

Samm: koguge materjalid kokku

Koguge materjalid kokku
Koguge materjalid kokku
Koguge materjalid kokku
Koguge materjalid kokku

Tööriistad:

• jootmisjaam

• Küttepuhur

• Puurmasin

• Ketassaag

• Pusle

• Traadilõikuri tangid

• Kitsa ninaga tangid

Materjalid:

• Läbipaistev akrüülplaat

• Jaapani küpressipuit (või võite kasutada mis tahes puitu, kui see on stabiilne ja piisavalt tugev)

• Kruvid

• Roostevabast terasest kepp

• Juhtmed (ma kasutan punast ja musta traati)

• Tina jootmine

Elektroonika komponendid:

• Arduino Nano

• Bluetooth-moodul HC-05 (otsustasin seda kasutada, kuna seda on lihtsam kodeerida kui Wifi-moodulit ESP8266)

• WS2812B Aadressitav RGB LED -riba

• LM2596 astmemoodul

• Alalisvoolu tünni pistik

2. samm: lambi struktuuri ehitamine

Lambi struktuuri ehitamine
Lambi struktuuri ehitamine
Lambi struktuuri ehitamine
Lambi struktuuri ehitamine

Selles etapis on mul lampide struktuuri ehitamiseks kaks võimalust- puidutöötlusmeetod ja 3D-printimismeetod. Ma kasutan esimest meetodit. Kui eelistate seda teha 3D -printeri abil, jätke minu kavandatud mudeli juurde 2. samm.

Lambi ülemise osa jaoks kuumutan ja painutan akrüülplaati 90 ° nurga all, nagu ülal näidatud. Mul läheb päris kaua aega, et seda nii täiusliku nurga ja suunaga painutada.

Järgmisena lambi alumise osa jaoks. Kahjuks… päeval, mil ma töötan lambi alumise osa kallal, unustasin ma konstruktsioonist pilti teha! Sain sellest aru, kui selle projekti lõpetasin. Aga ma annan endast parima, et pakkuda teile lambi alumise osa mõõtmist.

Põhimõtteliselt peate lihtsalt lõikama neli puitplokki, mille mõõtmed on 13x6x2cm (LxHxW). Järgmisena peate puidu serva lõikama trepitaolise lõike. Pilt kuvatakse ülal.

Samm: 3D -kujundid

3D kujundid
3D kujundid
3D kujundid
3D kujundid

Igaüks, kellel on oma 3D -printer, on õige samm. See muutis selle lambi kasutajasõbralikuks.

Ausalt öeldes oli see kõige raskem samm, mida tegin. See on esimene asi, mida ma tegin kohe pärast tarkvara installimist!

Kasutan Sketchup Pro -d lambi struktuuri kujundamiseks. Kahjuks ei ole ma piisavalt osav selle sisekomponendi kujundamiseks. Minu 3D -mudeli link on allolevas failis.

4. samm: komponentide skeem

Komponentide skeem
Komponentide skeem

Komponentide skeemide koostamiseks kasutan Fritzingit. Skeem on tegelikult üsna lihtne.

Samm: kood

Kood
Kood

Selle meeleolulambi kodeerimiseks kasutasin mõnda Arduino IDE raamatukogu. Raamatukogud loetletakse 7. sammus.

Koodi jaoks peab teil olema Arduino tarkvara ise. Pakun siia allalaadimise lingi.

Samuti kuvatakse allpool visand või kood?

Esitasin koodi jaoks ka faili saidil Github.com juhuks, kui allolev kood on siia kopeerimiseks liiga pikk;)

#kaasama #kaasama #kaasama #ifdef _AVR_ #kaasama #lõpp

SoftwareSerial BT (10, 11);

#define LED_PIN 7 #define NUM_LEDS 60 #define BRIGHTNESS 200 #define SPEED 10 #defineerige KOHE 0 #define RAINBOW_SPEED 50 CRGB LEDi [NUM_LEDS];

Adafruit_NeoPixel riba = 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;

tühine seadistus () {

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

BT.algus (9600);

BT.println ("Ühendatud Arduinoga");

strip.setBrightness (BRIGHTNESS);

riba.algus ();

strip.show ();

}

char a;

void loop () {

jaoks (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool Valge = LOW; bool Blue = LOW; bool Punane = LOW; bool Green = LOW; bool Topaas = LOW; bool Lilla = LOW; bool Vikerkaar = LOW; bool rgb = LOW; bool ende; kui (BT. saadaval ()) {a = (char) BT.read ();

kui (a == 'o')

{väljas = HIGH; BT.println ("LEDide väljalülitamine..");

} muud {

väljas = LOW; } // ================================================ ============================================

kui (a == 'w')

{Valge = KÕRGE; BT.println ("VALGED TURNING");

} muud {

Valge = LOW; } // ================================================ ============================================

kui (a == 'b')

{Sinine = KÕRGE; BT.println ("MUUTUMINE SINISEKS"); } muu {Sinine = LOW; }

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

kui (a == 'r')

{Punane = KÕRGE; BT.println ("PUNANE MUUTUMINE"); } muu {Punane = LOW; }

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

kui (a == 'g')

{Roheline = KÕRGE; BT.println ("ROHELISEKS MUUTUMINE"); } else {Roheline = MADAL; }

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

kui (a == 't')

{Topaas = KÕRGE; BT.println ("TOPAZI MUUTMINE"); } muu {Topaas = LOW; }

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

kui (a == 'l')

{Lilla = KÕRGE; BT.println ("LILACILE MUUTUMINE"); } muu {Lilla = LOW; }

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

kui (a == 'a')

{Vikerkaar = KÕRGE; BT.println ("RAINBOW ANIMATION"); } else {Vikerkaar = LOW; } // ================================================ ============================================

kui (a == 'm')

{rgb = KÕRGE; BT.println ("MIX COLORS"); } muu {rgb = LOW; }} if (väljas == LOW && offOld == HIGH) {delay (20); if (väljas == LOW) {showType = 0; // Väljas animatsioon Tüüp 0 startShow (showType); }}

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

kui (valge == MADAL && valge valge == KÕRGE) {

viivitus (20); if (valge == LOW) {showType = 1; // Valge animatsioon Tüüp 1 startShow (showType); }}

// ================================================ =========================================== kui (punane == LOW && RedOld == HIGH) {delay (20); kui (punane == LOW) {showType = 2; // Punane animatsioon Tüüp 2 startShow (showType); }}

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

if (roheline == LOW && GreenOld == HIGH) {

viivitus (20); if (roheline == LOW) {showType = 3; // Roheline animatsioon Tüüp 3 startShow (showType); }} // ============================================== ==============================================

kui (sinine == LOW && BlueOld == KÕRGE) {

viivitus (20); kui (sinine == LOW) {showType = 4; // Sinine animatsioon Tüüp 4 startShow (showType); }}

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

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

viivitus (20); kui (Topaas == LOW) {showType = 5; // Topaasi animatsioon Tüüp 5 startShow (showType); }}

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

kui (Lilla == LOW && LilacOld == HIGH) {

viivitus (20); kui (Lilla == LOW) {showType = 6; // Topaasi animatsioon Tüüp 6 startShow (showType); }} // ============================================== ==============================================

kui (vikerkaar == LOW && RainbowOld == HIGH) {

viivitus (20);

kui (vikerkaar == LOW) {

showType = 8; // Vikerkaare animatsioon Tüüp 8 startShow (showType); }}

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

kui (rgb == LOW && rgbOld == KÕRGE) {

viivitus (20);

kui (rgb == LOW) {

showType = 7; // Mix animatsioon Tüüp 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = valge;

RedOld = punane; BlueOld = Sinine; GreenOld = roheline; TopazOld = Topaas; LillacOld = Lilla; offOld = väljas; RainbowOld = Vikerkaar; rgbOld = rgb;

}

void startShow (int i) {

lüliti (i) {

juhtum 0: colorWipe (riba. Värv (0, 0, 0), SPEED); // Must/väljas

murda;

juhtum 1: riba.setBrightness (255); // Muudab heleduse väärtuseks MAX

colorWipe (riba. Värv (255, 255, 255), KOHE); // Valge riba.setBrightness (BRIGHTNESS); // Lähtesta heledus vaikeväärtustele;

juhtum 2: colorWipe (riba. Värv (255, 0, 0), SPEED); // Punane

murda;

juhtum 3: colorWipe (riba. Värv (0, 255, 0), SPEED); // Roheline

murda;

juhtum 4: colorWipe (riba. Värv (0, 0, 255), SPEED); // Sinine

murda;

juhtum 5: colorWipe (riba. Värv (0, 250, 255), SPEED); // Topaas

murda;

juhtum 6: colorWipe (riba. Värv (221, 130, 255), SPEED); // Lilla

murda; juhtum 7: colorWipe (riba. Värv (255, 0, 0), SPEED); // Punane värvWipe (riba. Värv (0, 255, 0), SPEED); // Roheline värvPühkige (riba. Värv (0, 0, 255), KIIRUS); // Sinine teaterChase (riba. Värv (0, 0, 127), SPEED); // Sinine teaterChase (riba. Värv (127, 0, 0), SPEED); // Punane teaterChase (riba. Värv (0, 127, 0), SPEED); // Roheline paus;

juhtum 8: vikerkaaretsükkel (25);

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

void rainbowCycle (uint8_t oota) {

uint16_t i, j;

for (j = 0; j <256*10; j ++) {// 5 tsükli kõiki värve rattal (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); viivitus (oota); }}

void TheaterChase (uint32_t c, uint8_t oota) {

jaoks (int j = 0; j <10; j ++) {// tee 10 jahtimistsüklit (int q = 0; q <3; q ++) {jaoks (int i = 0; i <strip.numPixels (); i = i+3) {rib.setPixelColor (i+q, c); // lülita sisse iga kolmas piksel} riba.show ();

viivitus (oota);

for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // lülita iga kolmas piksel välja}}}}

uint32_t ratas (bait WheelPos) {

WheelPos = 255 - WheelPos; if (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } kui (WheelPos <170) {WheelPos -= 85; tagastusriba. Värv (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; tagastusriba. Värv (WheelPos * 3, 255 - WheelPos * 3, 0); }

6. samm: lambi juhtimine

Lambi juhtimine
Lambi juhtimine
Lambi juhtimine
Lambi juhtimine
Lambi juhtimine
Lambi juhtimine

Lambi värvi saab juhtida nutitelefoni abil.

Esiteks peate Google Play poest või Apple App Store'ist installima rakenduse nimega Bluetooth-terminal HC-05.

Lambi juhtimiseks oma nutitelefoni kaudu toimige järgmiselt.

1. Lülitage nutitelefonis bluetooth sisse.

2. Avage rakendus „Bluetooth-terminal HC-05”.

3. Nüüd peaksite ekraanil nägema seotud seadmeid. Valige 'HC-05'.

4. Nüüd näete nutitelefonis musta ekraani, mis näitab "ühendatud Arduinoga".

5. Siin on lõbus osa, kui sisestate tekstikasti "b", muutub lamp siniseks. Siin on lampide jaoks sisestatava käsu loend:

- w valge jaoks

- b sinise jaoks

- g rohelise jaoks

- r punase jaoks

- t topaasi jaoks

- lill

- vikerkaare animatsiooni jaoks

- o väljalülitamiseks

Lõbus eks?

6. Viimaseks, kuid mitte vähem tähtsaks, saate ka ekraani all olevat nuppu kohandada vastavalt soovitud tekstile, nagu on näidatud ülaltoodud pildil.

Samm: nautige oma meeleolulampi

Nautige oma meeleolulampi !!
Nautige oma meeleolulampi !!
Nautige oma meeleolulampi !!
Nautige oma meeleolulampi !!
Nautige oma meeleolulampi !!
Nautige oma meeleolulampi !!

Loodan, et teile meeldib see juhend. See oli minu jaoks väga keeruline projekt, kuid mul õnnestus see 14-aastase poisina täielikult lõpetada. Andke mulle tagasisidet tulevaste paranduste kohta.

Täname lugemise eest ja häid jõule!

Soovitan: