Sadržaj:
- Korak 1: Prikupite materijale
- Korak 2: Izgradnja strukture lampe
- Korak 3: 3D oblici
- Korak 4: Shema komponenti
- Korak 5: Kôd
- Korak 6: Upravljanje lampom
- Korak 7: Uživajte u lampi raspoloženja
Video: Pametna LED lampa koja se kontroliše Bluetooth pametnim telefonom: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Uvijek sanjam da kontrolišem svoje rasvjetne uređaje. Tada je neko napravio neverovatnu šarenu LED lampu. Nedavno sam naišao na LED lampu Josepha Cashe na Youtube -u. Inspiriran time, odlučio sam dodati nekoliko funkcija, zadržavajući suvremeni dizajn.
Planirano je učiniti lampu 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
• Mašina za bušenje
• Kružna pila
• Slagalica
• Klešta za sečenje ž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
• Stub ili štap od nehrđajućeg čelika
• Žice (koristim crvenu i crnu žicu)
• Lim za lemljenje
Komponente elektronike:
• Arduino Nano
• Bluetooth modul HC-05 (odlučio sam ovo upotrijebiti jer je lakše kodirati nego Wifi modul ESP8266)
• WS2812B Adresibilna RGB LED traka
• LM2596 Modul za snižavanje
• DC Barrel priključak za napajanje
Korak 2: Izgradnja strukture lampe
U ovom koraku imam dva načina izgradnje strukture metode obrade drveta lampe i metode 3D štampe. Ja koristim prvu metodu. Ako više volite da to radite pomoću 3D štampača, slobodno pređ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 lampe. Nažalost … onog dana kada radim na donjem dijelu lampe, potpuno sam zaboravio slikati konstrukciju! To sam shvatio kada sam završio ovaj projekat. Ali ću se potruditi da vam pružim mjerenje donjeg dijela lampe.
U osnovi, samo trebate izrezati č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 ko ima svoj 3D štampač na pravom ste koraku. Zbog toga je ova lampa postala laka za upotrebu.
Da budem iskren, ovo je bio najteži korak koji sam učinio. Ovo je prva stvar koju sam napravio odmah nakon instaliranja softvera!
Koristim Sketchup Pro za dizajniranje strukture lampe. Nažalost, nisam dovoljno vješt da dizajniram njegovu unutrašnju komponentu. Veza do mog 3D modela nalazi se u donjoj datoteci.
Korak 4: Shema komponenti
Koristim Fritzing za izradu shema komponenti. Shema je zapravo prilično laka.
Korak 5: Kôd
Za kodiranje ove lampice raspoloženja koristio sam neke biblioteke iz Arduino IDE -a. Biblioteke će biti navedene dolje u koraku 7.
Za kôd morate imati sam Arduino softver. Ovdje ću dati vezu za preuzimanje.
Takođe, skica ili kôd će biti prikazani ispod?
Dao sam i 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 strip = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
bool offOld = LOW;
bool WhiteOld = LOW; bool RedOld = NISKO; bool GreenOld = NISKO; bool BlueOld = NISKO; bool TopazOld = NISKO; bool LilacOld = NISKO; bool RainbowOld = LOW; bool rgbOld = NISKO; int showType = 0;
void setup () {
FastLED.addLeds (LED diode, NUM_LEDS); //////////
BT.begin (9600);
BT.println ("Povezano s Arduinom");
strip.setBrightness (BRIGHTNESS);
strip.begin ();
strip.show ();
}
char a;
void loop () {{100} {101}
for (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool Bijela = NISKA; bool Plavo = NISKO; bool Crveno = NISKO; bool zelena = NISKA; bool Topaz = NISKO; bool jorgovan = NISKA; bool Rainbow = LOW; bool rgb = LOW; bool ende; if (BT.available ()) {a = (char) BT.read ();
ako (a == 'o')
{off = HIGH; BT.println ("ISKLJUČIVANJE LED dioda..");
} else {
off = LOW; } // ================================================= ============================================
if (a == 'w')
{Bijela = VISOKA; BT.println ("TRENUTNE LED diode BIJELE");
} else {
Bijela = NISKA; } // ================================================= ============================================
ako (a == 'b')
{Plavo = HIGH; BT.println ("PROMJENA U PLAVO"); } else {Plavo = LOW; }
// ===========================================================================================
ako (a == 'r')
{Crveno = HIGH; BT.println ("PROMJENA U CRVENU"); } else {Crveno = NISKO; }
// ===========================================================================================
ako (a == 'g')
{Zelena = VISOKA; BT.println ("PROMJENA U ZELENO"); } else {Green = LOW; }
// ===========================================================================================
ako (a == 't')
{Topaz = HIGH; BT.println ("PROMJENA NA TOPAZ"); } else {Topaz = LOW; }
// ===========================================================================================
ako (a == 'l')
{Jorgovan = HIGH; BT.println ("PROMJENA U LILAC"); } else {Lilac = LOW; }
// ===========================================================================================
ako (a == 'a')
{Rainbow = HIGH; BT.println ("ANIMACIJA DUGE"); } else {Rainbow = LOW; } // ================================================= ============================================
ako (a == 'm')
{rgb = HIGH; BT.println ("MIJESNE BOJE"); } else {rgb = LOW; }} if (off == LOW && offOld == HIGH) {odgoda (20); if (isključeno == LOW) {showType = 0; // Animacija isključena 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) {kašnjenje (20); if (Crveno == LOW) {showType = 2; // Crvena animacija Tip 2 startShow (showType); }}
// ===========================================================================================
if (Zeleno == LOW && GreenOld == HIGH) {
kašnjenje (20); if (zelena == LOW) {showType = 3; // Zelena animacija Tip 3 startShow (showType); }} // ============================================== ===============================================
if (Plavo == 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 (jorgovan == 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);
} }
WhiteOld = Bijelo;
RedOld = Crveno; BlueOld = Plavo; GreenOld = Zeleno; TopazOld = Topaz; JorgovanStar = Jorgovan; offOld = isključeno; RainbowOld = Rainbow; rgbOld = rgb;
}
void startShow (int i) {
prekidač (i) {
slučaj 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Crno/isključeno
break;
slučaj 1: strip.setBrightness (255); // Mijenja svjetlinu na MAX
colorWipe (strip. Color (255, 255, 255), ODMAH); // Bijela traka.setBrightness (BRIGHTNESS); // Vraćanje svjetline na zadanu vrijednost;
slučaj 2: colorWipe (strip. Color (255, 0, 0), SPEED); // Red
break;
slučaj 3: colorWipe (strip. Color (0, 255, 0), SPEED); // Zeleno
break;
slučaj 4: colorWipe (strip. Color (0, 0, 255), SPEED); // Plava
break;
slučaj 5: colorWipe (strip. Color (0, 250, 255), SPEED); // Topaz
break;
slučaj 6: colorWipe (strip. Color (221, 130, 255), SPEED); // Lilac
break; slučaj 7: colorWipe (strip. Color (255, 0, 0), SPEED); // Crvena colorWipe (strip. Color (0, 255, 0), SPEED); // Zelena colorWipe (strip. Color (0, 0, 255), SPEED); // Plava TheaterChase (strip. Color (0, 0, 127), SPEED); // Plava TheaterChase (strip. Color (127, 0, 0), SPEED); // Red theatreChase (strip. Color (0, 127, 0), SPEED); // Zeleni prekid;
slučaj 8: rainbowCycle (25);
break; }} 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 (); kašnjenje (čekanje); }}
void theatreChase (uint32_t c, uint8_t čekaj) {
for (int j = 0; j <10; j ++) {// uraditi 10 ciklusa jurenja 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 ();
kašnjenje (čekanje);
for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // isključuje svaki treći piksel}}}}
uint32_t Wheel (bajt 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 lampom
Boja lampe 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 lampom putem vlastitog pametnog telefona:
1. Uključite bluetooth na 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 ekran koji će označavati 'povezan s Arduinom'.
5. Evo zabavnog dijela, ako u okvir za tekst unesete 'b', lampica će se pretvoriti u plavu boju. Evo liste naredbi koje možete upisati za lampu:
- w za bijelo
- b za plavo
- g za zeleno
- r za crveno
- t za topaz
- Ja za jorgovan
- za animaciju duge
- o za off
Zabavno zar ne?
6. Na kraju, ali ne i najmanje važno, također možete prilagoditi dugme ispod ekrana željenom tekstu, kao što je prikazano na gornjoj slici.
Korak 7: Uživajte u lampi raspoloženja
Nadam se da vam se sviđa ovaj Instructables. Bio je to za mene vrlo izazovan projekt, ali uspio sam ga završ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čuje se:
4CH relejna ploča koja se kontroliše pomoću dugmadi: 4 koraka
4CH relejna ploča koja se kontrolira pomoću gumba: Moj cilj je nadograditi svoj Anet A8 3D pisač dodavanjem kontrole napajanja putem sučelja Octoprint. Ipak, također želim biti u mogućnosti pokrenuti " ručno " moj 3D štampač, što znači da ne koristim web interfejs, već samo pritiskanje dugmeta
Pametna pumpa za aparat za kavu koju kontroliše Raspberry Pi & HC-SR04 ultrazvučni senzor i Cloud4RPi: 6 koraka
Pametna pumpa za aparat za kavu kojom upravlja Raspberry Pi & HC-SR04 ultrazvučni senzor i Cloud4RPi: U teoriji, svaki put kad odete na aparat za kavu na jutarnju šolju, postoji samo jedna od dvadeset šansi da ćete morati napuniti vodu cisterna. U praksi se, međutim, čini da mašina na neki način pronađe način da vam uvijek prepusti ovaj posao
ESP8266 RGB LED STRIP WIFI kontrola - NODEMCU Kao IC daljinski upravljač za LED traku koja se kontrolira putem WiFi -a - RGB LED STRIP Upravljanje pametnim telefonom: 4 koraka
ESP8266 RGB LED STRIP WIFI kontrola | NODEMCU Kao IC daljinski upravljač za LED traku koja se kontrolira putem WiFi -a | RGB LED STRIP kontrola pametnog telefona: Zdravo momci, u ovom ćemo vodiču naučiti kako koristiti nodemcu ili esp8266 kao infracrveni 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
Pametna korpa za upravljanje pametnim telefonom: 7 koraka
Pametna korpa za upravljanje pametnim telefonom: Posjeta trgovačkim centrima može biti zabavna. No, povlačenje kolica za kupovinu dok ga punite stvarima je nešto što vas nervira. Bol od guranja kroz te uske prolaze i tih oštrih zavoja! Dakle, evo (vrste) ponude koju možete
Motorizovana šasija koja kontroliše WiFi: 5 koraka (sa slikama)
Motorizovana šasija koja kontroliše WiFi: Donald Bell iz Maker Project Lab -a (https://makerprojectlab.com) istakao je u svom ažuriranju od 29. novembra 2017. (https://youtu.be/cQzQl97ntpU) da je " Lady Buggy " šasija (https://www.instructables.com/id/Lady-Buggy/) mogla bi se koristiti kao generički