Sadržaj:
- Korak 1: Prikupite materijale
- Korak 2: Izgradnja strukture svjetiljke
- Korak 3: 3D oblici
- Korak 4: Shema komponenti
- Korak 5: Kôd
- Korak 6: Upravljanje svjetiljkom
- Korak 7: Uživajte u svjetiljci raspoloženja
Video: Pametna LED lampa koja se kontrolira Bluetooth pametnim telefonom: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
Uvijek sanjam da kontroliram svoje rasvjetne uređaje. Tada je netko napravio nevjerojatnu šarenu LED lampu. Nedavno sam na Youtube -u naišao na LED svjetiljku Josepha Cashe. Nadahnuvši se time, odlučio sam dodati nekoliko funkcija zadržavajući suvremeni dizajn.
Plan je učiniti svjetiljku lakšom za korisnika dodavanjem Bluetooth modula i adresabilne WS2812B RGB LED trake. To je omogućilo kontrolu boje osvjetljenja samo pomoću aplikacije za pametni telefon.
Korak 1: Prikupite materijale
Alati:
• Stanica za lemljenje
• Pištolj grijača grijača
• Stroj za bušenje
• Kružna pila
• Slagalica
• Klešta za rezanje žice
• Klešta za uski nos
Materijali:
• Prozirna akrilna ploča
• drvo japanskog čempresa (ili možete koristiti bilo koje drvo ako je stabilno i dovoljno čvrsto)
• Vijci
• Stup ili štap od nehrđajućeg čelika
• Žice (koristim crvenu i crnu žicu)
• Limenka za lemljenje
Komponente elektronike:
• Arduino Nano
• Bluetooth modul HC-05 (odlučio sam ga koristiti jer ga je lakše kodirati nego Wifi modul ESP8266)
• WS2812B Adresibilna RGB LED traka
• LM2596 Modul za snižavanje
• DC Barrel napajanje
Korak 2: Izgradnja strukture svjetiljke
U ovom koraku imam dva načina izgradnje strukture metode obrade drveta svjetiljkom i metode 3D ispisa. Ja koristim prvu metodu. Ako vam je draže izraditi 3D pisač, slobodno prijeđite na korak 2 za model koji sam dizajnirao.
Za gornji dio svjetiljke zagrijavam i savijam akrilnu ploču pod kutom od 90 ° kao što je prikazano gore. Treba mi dosta vremena da ga savijem do tako savršenog kuta i smjera.
Zatim, za donji dio svjetiljke. Nažalost … onog dana kad radim na donjem dijelu svjetiljke, potpuno sam zaboravio slikati konstrukciju! Shvatio sam to kad sam završio ovaj projekt. Ali potrudit ću se dati vam mjerenje donjeg dijela svjetiljke.
U osnovi, samo trebate rezati četiri drvena bloka dimenzija 13x6x2cm (LxHxW). Zatim morate izrezati stubičasti rez na rubu drva. Slika će biti prikazana gore.
Korak 3: 3D oblici
Za svakoga tko ima svoj 3D pisač na pravom ste koraku. Zbog toga je ova svjetiljka postala laka za korištenje.
Da budem iskren, ovo je bio najteži korak koji sam učinio. Ovo je prvo što sam učinio odmah nakon instaliranja softvera!
Koristim Sketchup Pro za dizajn strukture lampe. Nažalost, nisam dovoljno vješt da dizajniram njegovu unutarnju komponentu. Veza na moj 3D model nalazi se u donjoj datoteci.
Korak 4: Shema komponenti
Koristim Fritzing za izradu shema komponenti. Shema je zapravo prilično jednostavna.
Korak 5: Kôd
Za kodiranje ove lampice raspoloženja koristio sam neke biblioteke iz Arduino IDE -a. Knjižnice će biti navedene dolje u koraku 7.
Za kôd morate imati sam softver Arduino. Ovdje ću dati vezu za preuzimanje.
Također, skica ili kôd bit će prikazani u nastavku?
Također sam poslao datoteku koda na Github.com u slučaju da je donji kod predug za kopiranje ovdje;)
#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 ODMAH 0 #define RAINBOW_SPEED 50 CRGB LED dioda [NUM_LEDS];
Adafruit_NeoPixel traka = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
bool offOld = NISKO;
bool BijeloStaro = NISKO; bool RedOld = NISKO; bool GreenOld = NISKO; bool BlueOld = NISKO; bool TopazStaro = NISKO; bool JorgovanStaro = NISKO; bool DugaStaro = NISKO; bool rgbStaro = NISKO; int showType = 0;
void setup () {
FastLED.addLeds (LED diode, NUM_LEDS); //////////
BT.početi (9600);
BT.println ("Povezano s Arduinom");
strip.setBrightness (BRIGHTNESS);
strip.begin ();
strip.show ();
}
char a;
void loop () {{100} {101}
za (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool Bijela = NISKA; bool Plava = NISKA; bool Crveno = NISKO; bool Zeleno = NISKO; bool Topaz = NISKO; bool jorgovan = NISKO; bool Duga = NISKA; bool rgb = NISKO; bool ende; if (BT.available ()) {a = (char) BT.read ();
ako (a == 'o')
{off = HIGH; BT.println ("ISKLJUČIVANJE LED dioda..");
}drugo{
isključeno = NISKO; } // ================================================= ============================================
ako (a == 'w')
{Bijela = VISOKA; BT.println ("TURNING LEDs WHITE");
}drugo{
Bijela = NISKA; } // ================================================= ============================================
ako (a == 'b')
{Plava = VISOKA; BT.println ("PROMJENA U PLAVO"); } else {Plavo = NISKO; }
// ===========================================================================================
ako (a == 'r')
{Crveno = VISOKO; BT.println ("PROMJENA U CRVENU"); } else {Crveno = NISKO; }
// ===========================================================================================
ako (a == 'g')
{Zelena = VISOKA; BT.println ("PROMJENA U ZELENO"); } else {Zeleno = NISKO; }
// ===========================================================================================
ako (a == 't')
{Topaz = VISOKO; BT.println ("PROMJENA NA TOPAZ"); } else {Topaz = LOW; }
// ===========================================================================================
ako (a == 'l')
{Jorgovan = VISOK; BT.println ("PROMJENA U LILAC"); } else {Lilac = LOW; }
// ===========================================================================================
ako (a == 'a')
{Duga = VISOKA; BT.println ("ANIMACIJA DUGE"); } else {Duga = LOW; } // ================================================= ============================================
ako (a == 'm')
{rgb = VISOKO; BT.println ("MIJESAJ BOJE"); } else {rgb = LOW; }} if (off == LOW && offOld == HIGH) {kašnjenje (20); if (isključeno == LOW) {showType = 0; // Isključena animacija Tip 0 startShow (showType); }}
// ===========================================================================================
if (Bijelo == LOW && WhiteOld == HIGH) {
kašnjenje (20); if (Bijelo == LOW) {showType = 1; // Bijela animacija Tip 1 startShow (showType); }}
// ================================================ =========================================== ako (Crveno == NISKO && RedOld == HIGH) {delay (20); if (Crveno == LOW) {showType = 2; // Crvena animacija Tip 2 startShow (showType); }}
// ===========================================================================================
if (Zelena == LOW && GreenOld == HIGH) {
kašnjenje (20); if (Zelena == LOW) {showType = 3; // Zelena animacija Tip 3 startShow (showType); }} // ============================================== ===============================================
if (Plava == LOW && BlueOld == HIGH) {
kašnjenje (20); if (Plavo == LOW) {showType = 4; // Plava animacija Tip 4 startShow (showType); }}
// ===========================================================================================
if (Topaz == LOW && TopazOld == HIGH) {
kašnjenje (20); if (Topaz == LOW) {showType = 5; // Topaz animacija Tip 5 startShow (showType); }}
// ===========================================================================================
if (Lila == LOW && LilacOld == HIGH) {
kašnjenje (20); if (jorgovan == LOW) {showType = 6; // Topaz animacija Tip 6 startShow (showType); }} // ============================================== ===============================================
if (Rainbow == LOW && RainbowOld == HIGH) {
kašnjenje (20);
if (Duga == LOW) {
showType = 8; // Rainbow animacija Tip 8 startShow (showType); }}
// ===========================================================================================
if (rgb == LOW && rgbOld == HIGH) {
kašnjenje (20);
if (rgb == LOW) {
showType = 7; // Mix animacija Tip 7 rgb = HIGH;
startShow (showType);
} }
BijeloStaro = Bijelo;
RedOld = Crveno; BlueOld = Plavo; GreenOld = Zeleno; TopazStaro = Topaz; LilacStaro = Jorgovan; offOld = isključeno; RainbowOld = Duga; rgbStaro = rgb;
}
void startShow (int i) {
switch (i) {
slučaj 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Crno/isključeno
pauza;
slučaj 1: strip.setBrightness (255); // Mijenja svjetlinu na MAX
colorWipe (strip. Boja (255, 255, 255), ODMAH); // Bijela traka.setBrightness (BRIGHTNESS); // Vraćanje svjetline na zadanu vrijednost;
slučaj 2: colorWipe (strip. Color (255, 0, 0), SPEED); // Crvena
pauza;
slučaj 3: colorWipe (strip. Color (0, 255, 0), SPEED); // Zeleno
pauza;
slučaj 4: colorWipe (strip. Color (0, 0, 255), SPEED); // Plava
pauza;
slučaj 5: colorWipe (strip. Color (0, 250, 255), SPEED); // Topaz
pauza;
slučaj 6: colorWipe (strip. Color (221, 130, 255), SPEED); // Jorgovan
pauza; slučaj 7: colorWipe (strip. Color (255, 0, 0), SPEED); // Crvena bojaWipe (strip. Color (0, 255, 0), SPEED); // Zelena colorWipe (strip. Color (0, 0, 255), SPEED); // Plavo kazališteChase (strip. Color (0, 0, 127), SPEED); // Plavo kazališteChase (strip. Color (127, 0, 0), SPEED); // Crveno kazališteChase (strip. Color (0, 127, 0), SPEED); // Zeleni prekid;
slučaj 8: rainbowCycle (25);
pauza; }} void colorWipe (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i
void rainbowCycle (uint8_t čekanje) {
uint16_t i, j;
za (j = 0; j <256*10; j ++) {// 5 ciklusa svih boja na kotaču za (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); odgoda (čekanje); }}
void theatreChase (uint32_t c, uint8_t čekaj) {
for (int j = 0; j <10; j ++) {// napraviti 10 ciklusa traganja za (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // uključuje svaki treći piksel} strip.show ();
odgoda (čekanje);
for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // isključi svaki treći piksel}}}}
uint32_t kotač (byte WheelPos) {
WheelPos = 255 - WheelPos; if (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; povratna traka. Boja (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; povratna traka. Boja (WheelPos * 3, 255 - WheelPos * 3, 0); }
Korak 6: Upravljanje svjetiljkom
Boja svjetiljke može se kontrolirati pomoću vašeg pametnog telefona.
Prvo morate instalirati aplikaciju pod nazivom 'Bluetooth Terminal HC-05' iz trgovine Google Play ili Apple App Store.
Ovo su koraci za upravljanje svjetiljkom putem vlastitog pametnog telefona:
1. Uključite bluetooth na svom pametnom telefonu.
2. Otvorite aplikaciju koja je "Bluetooth terminal HC-05".
3. Sada biste trebali vidjeti uparene uređaje na ekranu. Odaberite 'HC-05'.
4. Sada možete vidjeti da se na vašem pametnom telefonu pojavljuje crni zaslon koji će označavati 'povezan s Arduinom'.
5. Ovdje je zabavni dio, ako u okvir za tekst upišete 'b', lampica će se pretvoriti u plavu boju. Evo popisa naredbi koje možete upisati za žarulju:
- w za bijelo
- b za plavo
- g za zelenu
- r za crveno
- t za topaz
- l za jorgovan
- za animaciju duge
- o za isključeno
Zabavno zar ne?
6. Na kraju, ali ne i najmanje važno, također možete prilagoditi gumb ispod ekrana željenom tekstu, kao što je prikazano na gornjoj slici.
Korak 7: Uživajte u svjetiljci raspoloženja
Nadam se da vam se sviđa ovaj Instructables. Bio je to za mene vrlo izazovan projekt, ali uspio sam ga dovršiti u potpunosti kao 14-godišnji dječak. Dajte mi povratne informacije za buduća poboljšanja.
Hvala na čitanju i sretan Božić!
Preporučeni:
4CH relejna ploča koja se kontrolira pomoću gumba: 4 koraka
4CH relejna ploča koja se kontrolira pomoću gumba: Cilj mi je nadograditi svoj Anet A8 3D pisač dodavanjem kontrole napajanja putem sučelja Octoprint. Ipak, također želim moći pokrenuti " ručno " moj 3D pisač, što znači da ne koristim web sučelje, već samo pritiskanje gumba
ESP8266 RGB LED STRIP WIFI kontrola - NODEMCU Kao IR daljinski upravljač za LED traku kontroliran putem Wi -Fi - RGB LED STRIP Upravljanje pametnim telefonom: 4 koraka
ESP8266 RGB LED STRIP WIFI kontrola | NODEMCU Kao IR daljinski upravljač za LED traku kontroliran putem Wi -Fi | Upravljanje pametnim telefonom putem RGB LED STRIP -a: Zdravo dečki, u ovom ćemo vodiču naučiti kako koristiti nodemcu ili esp8266 kao IC daljinski upravljač za upravljanje RGB LED trakom, a Nodemcu će pametni telefon kontrolirati putem WiFi -ja. Dakle, u osnovi možete kontrolirati RGB LED TRAKU pomoću svog pametnog telefona
Bluetooth LED diode s pametnim telefonom (sa sinkronizacijom glazbe uživo): 7 koraka
Bluetooth LED diode s kontroliranim pametnim telefonom (sa sinkronizacijom glazbe uživo): Oduvijek sam volio graditi stvari, nakon što sam otkrio da moja nova studentska zgrada ima užasno osvjetljenje, odlučio sam je malo začiniti. *** UPOZORENJE *** Ako gradite ovaj projekt u istoj mjeri kao i moja postavka, radit ćete s pristojnom količinom ele
Pametna košarica za upravljanje pametnim telefonom: 7 koraka
Pametna košarica koja se kontrolira pametnim telefonom: Posjeta trgovačkim centrima može biti zabavna. No, povlačenje košarice dok je punite stvarima je nešto što je sasvim neugodno. Bol od guranja kroz te uske prolaze i tih oštrih zavoja! Dakle, evo (svojevrsne) ponude koju možete
Abecedna ploča koja kontrolira aplikaciju Nadahnuta čudnim stvarima: 7 koraka (sa slikama)
Abecedna ploča koju kontrolira aplikacija Nadahnuta čudnim stvarima: Sve je počelo prije nekoliko tjedana pokušavajući smisliti što mojoj devetogodišnjoj nećakinji pokloniti za Božić. Brat me napokon obavijestio da je velika obožavateljica Stranger Things. Odmah sam znao što želim dobiti od nje, nešto nešto što