Sommario:

LAMPADA SOLARE WIRELESS CON BRACCIO MAGNETICO FLESSIBILE: 8 Passi (con Immagini)
LAMPADA SOLARE WIRELESS CON BRACCIO MAGNETICO FLESSIBILE: 8 Passi (con Immagini)

Video: LAMPADA SOLARE WIRELESS CON BRACCIO MAGNETICO FLESSIBILE: 8 Passi (con Immagini)

Video: LAMPADA SOLARE WIRELESS CON BRACCIO MAGNETICO FLESSIBILE: 8 Passi (con Immagini)
Video: Ingoiare il latte del trallalero fa bene? #shorts 2024, Dicembre
Anonim
LAMPADA SOLARE WIRELESS CON BRACCIO FLESSIBILE MAGNETICO
LAMPADA SOLARE WIRELESS CON BRACCIO FLESSIBILE MAGNETICO
LAMPADA SOLARE WIRELESS CON BRACCIO FLESSIBILE MAGNETICO
LAMPADA SOLARE WIRELESS CON BRACCIO FLESSIBILE MAGNETICO

Questo progetto è stato realizzato da una lampada rotta e nodeMCU. Questa lampada decorativa può essere regolata in qualsiasi direzione e fissata su materiali magnetici o posizionata sul tavolo. Può essere controllato in due modalità come segue:

- Modalità di controllo wireless, come link YouTube di seguito:

- Modalità di controllo interattivo, come link YouTube di seguito:

Fase 1: DISTINTA DEI MATERIALI

Elenco B. O. M:

Immagine
Immagine

Per la modalità interattiva, utilizzo MPU6050 per ottenere i dati del giroscopio da NodeMCU per controllare il colore della lampada.

Immagine dei materiali per questo progetto:

Immagine
Immagine

Fase 2: CIRCUITO

CIRCUITO
CIRCUITO

Questo è un circuito molto semplice, come lo schema di Fritzing sopra, con 1 LED RGB di tipo ad anodo comune, tre resistori di corrente limite R100 e MPU6050.

Il riflettore viene utilizzato da qualsiasi lampada rotta e collegato alla base nodeMCU tramite 2 bulloni o incollato con una colla forte.

Lavori di installazione:

Immagine
Immagine
Immagine
Immagine

Schema di seguito:

Immagine
Immagine

Step 3: BASE MAGNETICA - BRACCIO FLESSIBILE

BASE MAGNETICA - BRACCIO FLESSIBILE
BASE MAGNETICA - BRACCIO FLESSIBILE

Il braccio flessibile può essere riutilizzato da rubinetti dell'acqua flessibili rotti. Qualcosa del genere:

Immagine
Immagine

Con alcuni suggerimenti, proviamo a collegarli alla base del magnete permanente nella parte inferiore del braccio flessibile. Sulla parte superiore, abbiamo praticato un foro per il collegamento al nostro circuito stampato e al caricabatterie solare/batteria. Con questa base, possiamo posizionare la lampada su superfici come tavoli, pavimenti…; oppure può essere fissato su materiali magnetici come pilastro in acciaio, struttura in acciaio.

Fase 4: SOLARE – CARICABATTERIE

SOLARE – CARICABATTERIE
SOLARE – CARICABATTERIE

Proviene da una lampada di ricarica danneggiata. Ho aggiunto un interruttore on/off e l'alimentazione dei cavi a nodeMCU. Ha anche una presa per porta USB e una presa per caricabatterie.

Passaggio 5: CONNETTI TUTTI INSIEME

CONNETTI TUTTI INSIEME
CONNETTI TUTTI INSIEME

Collegamento di tutte le parti: NodeMCU e riflettore, celle solari e batteria, braccio flessibile insieme.

FINIRE

Immagine
Immagine

MODALITÀ DI RICARICA

Immagine
Immagine

Fase 6: PROGRAMMA DI CONTROLLO INTERATTIVO

Il colore cambierà quando regoliamo il braccio flessibile o ruotiamo la lampada.

LAMPADA INTERATTIVA

#includere
// Indirizzo dispositivo slave MPU6050
const uint8_t MPU6050SlaveAddress = 0x68;
// Seleziona i pin SDA e SCL per la comunicazione I2C - Pin predefinito in WIRE LIBRARY: SCL - D1 e SDA - D2 su NODEMCU
// const uint8_t SCL = D1;
// const uint8_t SDA = D2;
const int R = 14;
const int G = 12;
const int B = 13;
// MPU6050 pochi indirizzi del registro di configurazione
const uint8_t MPU6050_REGISTER_SMPLRT_DIV = 0x19;
const uint8_t MPU6050_REGISTER_USER_CTRL = 0x6A;
const uint8_t MPU6050_REGISTER_PWR_MGMT_1 = 0x6B;
const uint8_t MPU6050_REGISTER_PWR_MGMT_2 = 0x6C;
const uint8_t MPU6050_REGISTER_CONFIG = 0x1A;
const uint8_t MPU6050_REGISTER_GYRO_CONFIG = 0x1B;
const uint8_t MPU6050_REGISTER_ACCEL_CONFIG = 0x1C;
const uint8_t MPU6050_REGISTER_FIFO_EN = 0x23;
const uint8_t MPU6050_REGISTER_INT_ENABLE = 0x38;
const uint8_t MPU6050_REGISTER_ACCEL_XOUT_H = 0x3B;
const uint8_t MPU6050_REGISTER_SIGNAL_PATH_RESET = 0x68;
int16_t AccelX, AccelY, AccelZ, Temperatura, GyroX, GyroY, GyroZ;
void setup() {
pinMode(R, USCITA);
pinMode(G, USCITA);
pinMode(B, USCITA);
//Serial.begin(9600);
Wire.begin(SDA, SCL);
MPU6050_Init();
}
ciclo vuoto() {
uint16_t Ax, Ay, Az, T, Gx, Gy, Gz;
uint16_t Rosso, Verde, Blu;
Read_RawValue(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
// Prendi un valore assoluto
Ax = myAbs(AccelX);
Ay = myAbs(AccelY);
Az = myAbs(AccelZ);
// Scala nell'intervallo
Rosso = map(Ax, 0, 16384, 0, 1023);
Verde = mappa(Ay, 0, 16384, 0, 1023);
Blu = mappa(Az, 0, 16384, 0, 1023);
// Stampa seriale da controllare
//Serial.print("Rosso: "); Serial.print(Rosso);
//Serial.print("Verde: "); Serial.print(Verde);
//Serial.print("Blu: "); Serial.print(Blu);
// Scrivi analogico su LED
analogWrite(R, Rosso); // R
analogWrite(G, Verde); // G
analogWrite(B, Blu); // B
ritardo(200);
}
void I2C_Write(uint8_t deviceAddress, uint8_t regAddress, uint8_t data){
Wire.beginTransmission(deviceAddress);
Wire.write(regAddress);
Wire.write(dati);
Wire.endTransmission();
}
// Leggi tutti i 14 registri
void Read_RawValue(uint8_t deviceAddress, uint8_t regAddress){
Wire.beginTransmission(deviceAddress);
Wire.write(regAddress);
Wire.endTransmission();
Wire.requestFrom(deviceAddress, (uint8_t)14);
AccelX = (((int16_t)Wire.read()<<8) | Wire.read());
AccelY = (((int16_t)Wire.read()<<8) | Wire.read());
AccelZ = (((int16_t)Wire.read()<<8) | Wire.read());
Temperatura = (((int16_t)Wire.read()<<8) | Wire.read());
GiroX = (((int16_t)Wire.read()<<8) | Wire.read());
GiroY = (((int16_t)Wire.read()<<8) | Wire.read());
GiroZ = (((int16_t)Wire.read()<<8) | Wire.read());
}
// Configura MPU6050
void MPU6050_Init(){
ritardo(150);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_SMPLRT_DIV, 0x07);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_1, 0x01);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_2, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_CONFIG, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_GYRO_CONFIG, 0x00);//imposta +/-250 gradi/secondo fondo scala
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00);// imposta +/- 2g fondo scala
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_FIFO_EN, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_INT_ENABLE, 0x01);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_SIGNAL_PATH_RESET, 0x00);
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_USER_CTRL, 0x00);
}
// Valore assoluto
galleggia myAbs(fluttua dentro){
return (in)>0?(in):-(in);
}

visualizza rawINTERACTIVE LAMP PROGRAM ospitato con ❤ da GitHub

Passaggio 7: PROGRAMMA DI CONTROLLO WIRELESS E APPLICAZIONE ANDROID

PROGRAMMA DI CONTROLLO WIRELESS E APPLICAZIONE ANDROID
PROGRAMMA DI CONTROLLO WIRELESS E APPLICAZIONE ANDROID

In un altro modo, possiamo utilizzare l'app Android per controllare i LED RGB con Android nella rete WiFi. Collega l'app Android: APP LED RGB di controllo NODEMCU

Per il programma Arduino, puoi fare riferimento a:

microcontrollerkits.blogspot.com/2016/05/es…

Dopo aver caricato il programma su NodeMCU, la prima esecuzione ci darà l'indirizzo IP del NodeMCU sulla stampa seriale. Nel mio caso, è: 192.164.1.39 alla porta 80.

Immagine
Immagine

Ora possiamo controllare la lampada wireless con laptop/tablet/cellulare inserendo l'indirizzo sopra in Internet Explorer.

Immagine
Immagine

Oppure utilizzando l'app Android:

Immagine
Immagine

Fase 8: ALCUNE IMMAGINI

Consigliato: