Kazalo:

Pametna LED svetilka, ki jo upravlja pametni telefon Bluetooth: 7 korakov
Pametna LED svetilka, ki jo upravlja pametni telefon Bluetooth: 7 korakov

Video: Pametna LED svetilka, ki jo upravlja pametni telefon Bluetooth: 7 korakov

Video: Pametna LED svetilka, ki jo upravlja pametni telefon Bluetooth: 7 korakov
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Image
Image
Pametna LED svetilka, ki jo upravlja pametni telefon Bluetooth
Pametna LED svetilka, ki jo upravlja pametni telefon Bluetooth

Vedno sanjam o nadzoru svojih svetlobnih naprav. Potem je nekdo naredil neverjetno pisano LED svetilko. Pred kratkim sem na Youtubu naletel na LED svetilko Josepha Cashe. Po navdihu sem se odločil dodati več funkcij, hkrati pa ohraniti sodoben dizajn.

V načrtu je, da bo svetilka prijaznejša do uporabnika z dodajanjem modula Bluetooth in naslovljivega WS2812B RGB LED traku. To je omogočilo nadzor barve osvetlitve samo z uporabo aplikacije za pametni telefon.

1. korak: Zberite materiale

Zberite materiale
Zberite materiale
Zberite materiale
Zberite materiale

Orodja:

• Spajkalna postaja

• Pištola za gretje

• Vrtalni stroj

• Krožna žaga

• sestavljanka

• Klešče za rezanje žice

• Klešče z ozkim nosom

Materiali:

• Prosojna akrilna plošča

• japonski les cipres (ali pa lahko uporabite kateri koli les, če je stabilen in dovolj močan)

• Vijaki

• Palica ali palica iz nerjavečega jekla

• Žice (uporabljam rdečo in črno žico)

• Spajkalnik

Komponente elektronike:

• Arduino Nano

• Modul Bluetooth HC-05 (odločil sem se, da ga bom uporabil, ker ga je lažje kodirati kot modul Wifi ESP8266)

• WS2812B naslovljiv RGB LED trak

• LM2596 Nadomestni modul

• DC Barrel Power Jack

2. korak: Izdelava strukture svetilke

Gradnja strukture svetilke
Gradnja strukture svetilke
Gradnja strukture svetilke
Gradnja strukture svetilke

V tem koraku imam dva načina za izgradnjo strukture metode obdelave lesa svetilke in metode 3D-tiskanja. Uporabljam prvo metodo. Če vam je ljubše to narediti s 3D tiskalnikom, lahko preskočite na 2. korak za model, ki sem ga oblikoval.

Za zgornji del svetilke segrejem in upognem akrilno ploščo pod kotom 90 °, kot je prikazano zgoraj. Potrebujem precej časa, da ga upognem do tako popolnega kota in smeri.

Nato za spodnji del svetilke. Na žalost … na dan, ko delam na spodnjem delu svetilke, sem popolnoma pozabil poslikati konstrukcijo! To sem spoznal, ko sem končal ta projekt. Se bom pa po svojih najboljših močeh potrudil, da vam posredujem merjenje spodnjega dela svetilke.

V bistvu morate le rezati štiri bloke lesa, ki merijo 13x6x2cm (DxHxW). Nato morate na robu lesa odrezati stopničast rez. Slika bo prikazana zgoraj.

3. korak: 3D oblike

3D oblike
3D oblike
3D oblike
3D oblike

Za vsakogar, ki ima svoj 3D tiskalnik, ste na pravem koraku. Zaradi tega je bila svetilka prijazna do uporabnika.

Če sem iskren, je bil to najtežji korak, ki sem ga naredil. To je prva stvar, ki sem jo naredil takoj po namestitvi programske opreme!

Sketchup Pro uporabljam za oblikovanje strukture svetilke. Na žalost nisem dovolj spreten, da bi oblikoval notranjo opremo. Povezava do mojega 3D modela je v spodnji datoteki.

4. korak: Shema komponent

Shema sestavnih delov
Shema sestavnih delov

Za izdelavo shem komponent uporabljam Fritzing. Shema je pravzaprav precej enostavna.

5. korak: Koda

Kodeks
Kodeks

Za kodiranje te svetilke razpoloženja sem uporabil nekaj knjižnic iz Arduino IDE. Knjižnice bodo navedene na 7. koraku.

Za kodo morate imeti samo programsko opremo Arduino. Tukaj bom dal povezavo za prenos.

Tudi skica ali koda bo prikazana spodaj?

Datoteko za kodo sem posredoval tudi na spletnem mestu Github.com, če je spodnja koda predolga za kopiranje;)

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

SoftwareSerial BT (10, 11);

#define LED_PIN 7 #define NUM_LEDS 60 #define BRIGHTNESS 200 #define SPEED 10 #define IME HITNO 0 #define RAINBOW_SPEED 50 CRGB LED [NUM_LEDS];

Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

bool offOld = NIZKO;

bool WhiteOld = NIZKA; bool RedOld = NIZKA; bool GreenOld = NIZKA; bool BlueOld = NIZKA; bool TopazStaro = NIZKO; bool LilacOld = NIZKA; bool RainbowOld = NIZKA; bool rgbOld = NIZKA; int showType = 0;

void setup () {

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

BT.začetek (9600);

BT.println ("Povezano z Arduinom");

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show ();

}

char a;

void loop () {

for (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool Bela = NIZKA; bool Modra = NIZKA; bool Rdeča = NIZKA; bool zelena = NIZKA; bool Topaz = NIZKA; bool Lila = NIZKA; bool Mavrica = NIZKA; bool rgb = NIZKA; bool ende; če je (BT.available ()) {a = (char) BT.read ();

če (a == 'o')

{off = HIGH; BT.println ("IZKLOP LED -diod..");

} drugo {

izklopljeno = NIZKO; } // =============================================== ============================================

če (a == 'w')

{Bela = VISOKA; BT.println ("VKLOPNE LED diode BELE");

} drugo {

Bela = NIZKA; } // =============================================== ============================================

če (a == 'b')

{Modra = VISOKA; BT.println ("SPREMEMBA V MODRO"); } else {Blue = LOW; }

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

če (a == 'r')

{Rdeča = VISOKA; BT.println ("SPREMEMBA V RDEČO"); } else {Rdeča = NIZKA; }

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

če (a == 'g')

{Zelena = VISOKA; BT.println ("SPREMEMBA V ZELENO"); } else {Zelena = NIZKA; }

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

če (a == 't')

{Topaz = VISOKO; BT.println ("SPREMEMBA NA TOPAZ"); } else {Topaz = NIZKA; }

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

če (a == 'l')

{Lila = VISOKA; BT.println ("SPREMEMBA V LILAC"); } else {Lilac = LOW; }

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

če (a == 'a')

{Mavrica = VISOKA; BT.println ("RAINBOW ANIMATION"); } else {Mavrica = NIZKA; } // =============================================== ============================================

če (a == 'm')

{rgb = VISOKO; BT.println ("MEŠAJ BARVE"); } else {rgb = NIZKA; }} if (off == LOW && offOld == HIGH) {zakasnitev (20); if (off == LOW) {showType = 0; // Izklop animacije Vrsta 0 startShow (showType); }}

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

if (Belo == NIZKO && Belo Staro == VISOKO) {

zamuda (20); if (Bela == NIZKA) {showType = 1; // Bela animacija Tip 1 startShow (showType); }}

// ================================================ =========================================== if (Rdeča == NIZKA && RedOld == HIGH) {zakasnitev (20); if (Rdeča == NIZKA) {showType = 2; // Rdeča animacija Tip 2 startShow (showType); }}

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

if (Zelena == NIZKA && ZelenaStara == VISOKA) {

zamuda (20); if (Zelena == NIZKA) {showType = 3; // Zelena animacija Tip 3 startShow (showType); }} // ============================================== ==============================================

if (Modra == NIZKA && BlueOld == VISOKA) {

zamuda (20); if (Modra == NIZKA) {showType = 4; // Modra animacija Tip 4 startShow (showType); }}

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

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

zamuda (20); if (Topaz == LOW) {showType = 5; // animacija Topaz Type 5 startShow (showType); }}

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

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

zamuda (20); if (Lila == LOW) {showType = 6; // animacija Topaz Tip 6 startShow (showType); }} // ============================================== ================================================

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

zamuda (20);

if (Mavrica == LOW) {

showType = 8; // Mavrična animacija Tip 8 startShow (showType); }}

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

if (rgb == NIZKA && rgbOld == VISOKA) {

zamuda (20);

če (rgb == NIZKA) {

showType = 7; // Mešana animacija Tip 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = Bela;

RedOld = Rdeča; BlueOld = Modra; GreenOld = Zelena; TopazOld = Topaz; LilaStar = Lila; offOld = izklopljeno; RainbowOld = Mavrica; rgbOld = rgb;

}

void startShow (int i) {

switch (i) {

primer 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Črna/izklopljena

zlom;

primer 1: strip.setBrightness (255); // Spremeni svetlost na MAX

colorWipe (strip. Color (255, 255, 255), TAKOJ); // Beli trak.setBrightness (BRIGHTNESS); // Ponastavi svetlost na privzeto vrednost;

primer 2: colorWipe (strip. Color (255, 0, 0), SPEED); // Rdeča

zlom;

primer 3: colorWipe (strip. Color (0, 255, 0), SPEED); // Zelena

zlom;

primer 4: colorWipe (strip. Color (0, 0, 255), SPEED); // Modra

zlom;

primer 5: colorWipe (strip. Color (0, 250, 255), SPEED); // Topaz

zlom;

primer 6: colorWipe (strip. Color (221, 130, 255), SPEED); // Lila

zlom; primer 7: colorWipe (strip. Color (255, 0, 0), SPEED); // Rdeča colorWipe (strip. Color (0, 255, 0), SPEED); // zelena colorWipe (strip. Color (0, 0, 255), SPEED); // Blue theatreChase (strip. Color (0, 0, 127), SPEED); // Blue theatreChase (strip. Color (127, 0, 0), SPEED); // Rdeče gledališčeChase (strip. Color (0, 127, 0), SPEED); // Zeleni prelom;

primer 8: rainbowCycle (25);

zlom; }} void colorWipe (uint32_t c, uint8_t čakanje) {for (uint16_t i = 0; i

void rainbowCycle (uint8_t čakanje) {

uint16_t i, j;

za (j = 0; j <256*10; j ++) {// 5 ciklov vseh barv na kolesu za (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); zamuda (čakanje); }}

void theatreChase (uint32_t c, uint8_t čakaj) {

for (int j = 0; j <10; j ++) {// naredimo 10 ciklov lova za (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // vklopi vsak tretji pik} strip.show ();

zamuda (čakanje);

for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // izklopi vsak tretji slikovni pik}}}}

uint32_t kolo (bajt WheelPos) {

WheelPos = 255 - WheelPos; if (WheelPos <85) {povratni trak. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; povratni trak. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; povratni trak. Barva (WheelPos * 3, 255 - WheelPos * 3, 0); }

Korak 6: Upravljanje svetilke

Upravljanje svetilke
Upravljanje svetilke
Upravljanje svetilke
Upravljanje svetilke
Upravljanje svetilke
Upravljanje svetilke

Barvo svetilke lahko nadzirate s pametnim telefonom.

Najprej morate namestiti aplikacijo z imenom Bluetooth Terminal HC-05 iz trgovine Google Play ali Apple App Store.

To so koraki za upravljanje svetilke prek lastnega pametnega telefona:

1. V pametnem telefonu vklopite bluetooth.

2. Odprite aplikacijo "Bluetooth Terminal HC-05".

3. Zdaj bi morali na zaslonu videti seznanjene naprave. Izberite 'HC-05'.

4. Zdaj lahko vidite, da se v pametnem telefonu prikaže črn zaslon, ki označuje "povezan z Arduinom".

5. Tu je zabaven del: če v polje za besedilo vnesete 'b', se bo svetilka obarvala modro. Tu je seznam ukazov, ki jih lahko vnesete za svetilko:

- w za belo

- b za modro

- g za zeleno

- r za rdečo

- t za topaz

- l za lila

- a za mavrično animacijo

- o za izklop

Zabavno kajne?

6. Nenazadnje lahko gumb pod zaslonom prilagodite želenemu besedilu, kot je prikazano na zgornji sliki.

7. korak: Uživajte v svetilki razpoloženja !

Uživajte v svetilki razpoloženja !!
Uživajte v svetilki razpoloženja !!
Uživajte v svetilki razpoloženja !!
Uživajte v svetilki razpoloženja !!
Uživajte v svetilki razpoloženja !!
Uživajte v svetilki razpoloženja !!

Upam, da vam je ta Instructables všeč. To je bil zame zelo zahteven projekt, vendar mi ga je uspelo dokončati kot 14-letnemu dečku. Dajte mi povratne informacije za prihodnje izboljšave.

Hvala za branje in vesel božič!

Priporočena: