Sommario:
- Passaggio 1: raccogliere i materiali
- Passaggio 2: costruzione della struttura della lampada
- Passaggio 3: le forme 3D
- Passaggio 4: lo schema dei componenti
- Passaggio 5: il codice
- Passaggio 6: controllo della lampada
- Passaggio 7: goditi la tua lampada d'atmosfera
Video: Lampada LED intelligente controllata da smartphone Bluetooth: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Sogno sempre di controllare i miei apparecchi di illuminazione. Poi qualcuno ha realizzato un'incredibile lampada a LED colorata. Di recente mi sono imbattuto in una lampada a LED di Joseph Casha su Youtube. Prendendo spunto da esso, ho deciso di aggiungere diverse funzioni mantenendo il design contemporaneo.
Il piano è rendere la lampada più user-friendly aggiungendo un modulo Bluetooth e una striscia LED RGB indirizzabile WS2812B. Ciò ha permesso di controllare il colore dell'illuminazione semplicemente utilizzando un'app per smartphone.
Passaggio 1: raccogliere i materiali
Utensili:
• Stazione di saldatura
• Pistola di soffiaggio del riscaldatore
• Trapano
• Sega circolare
• Puzzle
• Pinze tagliafili
• Pinze a becchi stretti
Materiali:
• Lavagna acrilica traslucida
• Legno di cipresso giapponese (oppure puoi usare qualsiasi legno purché sia stabile e abbastanza forte)
• Viti
• Palo o bastone in acciaio inossidabile
• Fili (io uso il filo rosso e nero)
• Stagno di saldatura
Componenti elettronici:
• Arduino Nano
• Modulo Bluetooth HC-05 (ho deciso di usarlo perché è più facile da codificare rispetto al modulo Wifi ESP8266)
• Striscia LED RGB indirizzabile WS2812B
• Modulo step-down LM2596
• Jack di alimentazione a barilotto CC
Passaggio 2: costruzione della struttura della lampada
In questo passaggio, ho due modi per costruire la struttura del metodo di lavorazione del legno a lampada e del metodo di stampa 3D. Io uso il primo metodo. Se preferisci realizzarlo utilizzando una stampante 3D, sentiti libero di passare al passaggio 2 per il modello che ho progettato.
Per la parte superiore della lampada, riscaldo e piego la tavola acrilica a un angolo di 90° come mostrato sopra. Ci vuole molto tempo per piegarlo ad un angolo e una direzione così perfetti.
Successivamente, per la parte inferiore della lampada. Purtroppo… il giorno in cui sto lavorando alla parte inferiore della lampada, mi sono completamente dimenticata di fare una foto della costruzione! Me ne sono accorto quando ho finito questo progetto. Ma farò del mio meglio per fornirti la misura della parte inferiore della lampada.
Fondamentalmente, devi solo tagliare quattro blocchi di legno che misurano 13x6x2 cm (LxAxP). Successivamente, è necessario eseguire un taglio simile a una scala sul bordo del legno. L'immagine verrà mostrata sopra.
Passaggio 3: le forme 3D
Per chiunque abbia la propria stampante 3D, sei nel passo giusto. Ciò ha reso questa lampada facile da usare.
Ad essere onesti, questo è stato il passo più difficile che ho fatto. Questa è la prima cosa che ho fatto subito dopo aver installato il software!
Uso Sketchup Pro per progettare la struttura della lampada. Sfortunatamente, non sono abbastanza abile per progettare la sua componente interna. Il link al mio modello 3D è nel file sottostante.
Passaggio 4: lo schema dei componenti
Uso Fritzing per costruire gli schemi dei componenti. Lo schema è in realtà abbastanza facile.
Passaggio 5: il codice
Per la codifica di questa lampada d'atmosfera, ho utilizzato alcune librerie dell'IDE di Arduino. Le librerie verranno elencate in basso al passaggio 7.
Per il codice, è necessario disporre del software Arduino stesso. Fornirò il link per il download qui.
Inoltre, lo schizzo o il codice verrà mostrato di seguito?
Ho anche fornito il file per il codice in Github.com nel caso in cui il codice sottostante fosse troppo lungo per essere copiato qui;)
#include #include #include #ifdef _AVR_ #include #endif
SoftwareSeriale BT(10, 11);
#define LED_PIN 7 #define NUM_LEDS 60 #define BRIGHTNESS 200 #define SPEED 10 #define IMMEDIATAMENTE 0 #define RAINBOW_SPEED 50 CRGB leds[NUM_LEDS];
Striscia Adafruit_NeoPixel = 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 = BASSO; bool rgbOld = BASSO; int showType = 0;
void setup() {
FastLED.addLeds(leds, NUM_LEDS); //////////
BT.begin(9600);
BT.println("Connesso ad Arduino");
strip.setBrightness(LUMINOSITÀ);
strip.begin();
strip.show();
}
carattere a;
ciclo vuoto() {
for (int i = 0; i <= 59; i++) { leds = CRGB(255, 255, 255); FastLED.show(); } bool off = BASSO; bool Bianco = BASSO; bool Blu = BASSO; bool Rosso = BASSO; bool Verde = BASSO; bool Topazio = BASSO; bool Lilla = BASSO; bool Arcobaleno = BASSO; bool rgb = BASSO; fine bollo; if (BT.disponibile()) { a= (char)BT.read();
if(a=='o')
{ spento = ALTO; BT.println("SPEGNIMENTO LED..");
}altro{
spento = BASSO; } // ============================================== ============================================
if(a=='w')
{ Bianco = ALTO; BT.println("I LED DIVENTANO BIANCHI");
}altro{
Bianco = BASSO; } // ============================================== ============================================
if(a=='b')
{ Blu = ALTO; BT.println("CAMBIA IN BLU"); }else{ Blu = BASSO; }
// ===========================================================================================
if(a=='r')
{ Rosso = ALTO; BT.println("CAMBIA IN ROSSO"); }else{ Rosso = BASSO; }
// ===========================================================================================
if(a=='g')
{ Verde = ALTO; BT.println("CAMBIA IN VERDE"); }else{ Verde = BASSO; }
// ===========================================================================================
if(a=='t')
{ Topazio = ALTO; BT.println("CAMBIA IN TOPAZIO"); }else{ Topazio = BASSO; }
// ===========================================================================================
if(a=='l')
{ Lilla = ALTO; BT.println("CAMBIA IN LILLA"); }else{ Lilla = BASSO; }
// ===========================================================================================
if(a=='a')
{ Arcobaleno = ALTO; BT.println("ANIMAZIONE ARCOBALENO"); }else{ Arcobaleno = BASSO; } // ============================================== ============================================
if(a=='m')
{rgb = ALTO; BT.println("MIX COLORI"); }altrimenti{ rgb = BASSO; } } if (off == BASSO && offOld == ALTO) { ritardo(20); if (off == BASSO) { showType = 0; // Off tipo di animazione 0 startShow(showType); } }
// ===========================================================================================
if (Bianco == BASSO && Bianco Vecchio == ALTO) {
ritardo(20); if (Bianco == BASSO) { showType = 1; // Animazione bianca Tipo 1 startShow(showType); } }
// =============================================== =========================================== if (Rosso == BASSO && RedOld == HIGH) { ritardo (20); if (Rosso == BASSO) { showType = 2; // Animazione rossa Tipo 2 startShow(showType); } }
// ===========================================================================================
if (Verde == BASSO && VerdeVecchio == ALTO) {
ritardo(20); if (Verde == BASSO) { showType = 3; // Animazione verde Tipo 3 startShow(showType); } } // ============================================= =============================================
if (Blu == BASSO && Blu Vecchio == ALTO) {
ritardo(20); if (Blu == BASSO) { showType = 4; // Animazione blu Tipo 4 startShow(showType); } }
// ===========================================================================================
if (Topazio == BASSO && Topazio Vecchio == ALTO) {
ritardo(20); if (Topazio == BASSO) { showType = 5; // Animazione Topaz Tipo 5 startShow(showType); } }
// ===========================================================================================
if (Lilla == BASSO && LillaOld == ALTO) {
ritardo(20); if (Lilla == BASSO) { showType = 6; // Animazione Topaz Tipo 6 startShow(showType); } } // ============================================= =============================================
if (Arcobaleno == BASSO && Arcobaleno Vecchio == ALTO) {
ritardo(20);
if (Arcobaleno == BASSO) {
showType = 8; // Animazione arcobaleno Tipo 8 startShow(showType); } }
// ===========================================================================================
if (rgb == BASSO && rgbOld == ALTO) {
ritardo(20);
if (rgb == BASSO) {
showType = 7; // Mix tipo di animazione 7 rgb = HIGH;
startShow(showType);
} }
BiancoVecchio = Bianco;
RossoVecchio = Rosso; BluVecchio = Blu; VerdeVecchio = Verde; TopazOld = Topazio; LilacOld = Lilla; spentoVecchio = spento; RainbowOld = Arcobaleno; rgbOld = rgb;
}
void startShow(int i) {
interruttore(i){
caso 0: colorWipe(strip. Color(0, 0, 0), SPEED); // Nero/spento
rottura;
caso 1: strip.setBrightness(255); // Cambia la luminosità in MAX
colorWipe(strip. Color(255, 255, 255), IMMEDIATAMENTE); // Striscia bianca.setBrightness(BRIGHTNESS); // Reimposta la luminosità al valore predefinito break;
caso 2: colorWipe(strip. Color(255, 0, 0), SPEED); // Rosso
rottura;
caso 3: colorWipe(strip. Color(0, 255, 0), SPEED); // Verde
rottura;
caso 4: colorWipe(strip. Color(0, 0, 255), SPEED); // Blu
rottura;
caso 5: colorWipe(strip. Color(0, 250, 255), SPEED); // Topazio
rottura;
caso 6: colorWipe(strip. Color(221, 130, 255), SPEED); // Lilla
rottura; caso 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); // Pausa verde;
caso 8: rainbowCycle(25);
rottura; } } void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i
void rainbowCycle(uint8_t wait) {
uint16_t io, j;
for(j=0; j<256*10; j++) { // 5 cicli di tutti i colori sulla ruota for(i=0; i< strip.numPixels(); i++) { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255)); } strip.show(); ritardo (attesa); } }
void theaterChase(uint32_t c, uint8_t wait) {
for (int j=0; j<10; j++) { //esegui 10 cicli di inseguimento per (int q=0; q < 3; q++) { for (int i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, c); //attiva ogni terzo pixel } strip.show();
ritardo (attesa);
for (int i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, 0); //spegne ogni terzo pixel } } } }
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos; if(WheelPos < 85) { return strip. Color(255 - WheelPos * 3, 0, WheelPos * 3); } if(PosRuota < 170) { PosRuota -= 85; striscia di ritorno. Color(0, WheelPos * 3, 255 - WheelPos * 3); } PosizioneRuota -= 170; striscia di ritorno. Color(WheelPos * 3, 255 - WheelPos * 3, 0); }
Passaggio 6: controllo della lampada
Il colore della lampada può essere controllato utilizzando il tuo smartphone.
Innanzitutto, devi installare l'app chiamata "Bluetooth Terminal HC-05" da Google Play Store o Apple App Store.
Questi sono i passaggi per controllare la lampada tramite il proprio smartphone:
1. Attiva il bluetooth nel tuo smartphone.
2. Aprire l'app "Bluetooth Terminal HC-05".
3. Ora dovresti vedere i dispositivi associati sullo schermo. Scegli 'HC-05'.
4. Ora puoi vedere apparire una schermata nera nel tuo smartphone che indicherà 'connesso ad Arduino'.
5. Ecco la parte divertente, se digiti 'b' nella casella di testo, la lampada diventerà di colore blu. Ecco l'elenco dei comandi che puoi digitare per la lampada:
- w per bianco
-b per blu
- g per il verde
- r per rosso
- t per topazio
- l per lilla
- un'animazione per l'arcobaleno
- o per spento
Divertente vero?
6. Ultimo ma non meno importante, puoi anche personalizzare il pulsante sotto lo schermo con il testo desiderato, come mostrato nell'immagine sopra.
Passaggio 7: goditi la tua lampada d'atmosfera
Spero che questo Instructables ti piaccia. È stato un progetto molto impegnativo per me ma sono riuscito a portarlo a termine completamente quando ero un ragazzo di 14 anni. Dammi qualche feedback per futuri miglioramenti.
Grazie per la lettura e Buon Natale!
Consigliato:
Come creare una pentola intelligente con NodeMCU controllata dall'app: 8 passaggi
Come realizzare uno Smart Pot con NodeMCU controllato da app: In questa guida costruiremo uno Smart Pot controllato da un ESP32 e un'applicazione per smartphone (iOS e Android). Useremo NodeMCU (ESP32) per la connettività e la libreria Blynk per il cloud IoT e l'Applicazione su smartphone. Finalmente abbiamo
La lampada della mummia - Lampada intelligente controllata da WiFi: 5 passaggi (con immagini)
The Mummy Lamp - Lampada intelligente controllata da WiFi: Circa 230 mila anni fa l'essere umano ha imparato a controllare il fuoco, questo porta a un grande cambiamento nel suo stile di vita poiché ha iniziato a lavorare di notte anche usando la luce del fuoco. Possiamo dire che questo è l'inizio dell'illuminazione per interni. Adesso io
Lampada RGB controllata tramite Bluetooth: 5 passaggi (con immagini)
Lampada RGB controllata tramite Bluetooth: in questo tutorial modulo il duty cycle del PWM per produrre colori diversi dal tuo LED, utilizzando uno smartphone
Lampada intelligente facile da $ 5 con interfaccia web per smartphone: 4 passaggi
Lampada intelligente facile da $ 5 con interfaccia Web per smartphone: Ciao! Mi chiamo Raffaele. Questo è il mio primo Instructable! Il motivo principale per cui ho creato questa lampada è aiutare la vita delle persone con mobilità ridotta. Un giorno non avremo più interruttori sui muri o prese difficili da raggiungere, ma piuttosto i nostri smartphone da controllare
Lampada LED verde (controllata con un LED lampeggiante): 9 passaggi
Lampada LED verde (controllata con un LED lampeggiante): alcuni anni fa ho letto un articolo sull'illuminazione nei paesi in via di sviluppo, in cui si diceva che 1,6 miliardi di persone non hanno accesso all'elettricità e una fonte di illuminazione affidabile è un GRANDE problema per loro. Una società canadese produce e distribuisce luci