Tabla de contenido:

LÁMPARA SOLAR INALÁMBRICA CON BRAZO FLEXIBLE MAGNÉTICO: 8 Pasos (con Imágenes)
LÁMPARA SOLAR INALÁMBRICA CON BRAZO FLEXIBLE MAGNÉTICO: 8 Pasos (con Imágenes)

Video: LÁMPARA SOLAR INALÁMBRICA CON BRAZO FLEXIBLE MAGNÉTICO: 8 Pasos (con Imágenes)

Video: LÁMPARA SOLAR INALÁMBRICA CON BRAZO FLEXIBLE MAGNÉTICO: 8 Pasos (con Imágenes)
Video: Probe la mini linterna mas potente que existe ¿Vale la pena? Pongamoslo a prueba 2024, Noviembre
Anonim
LÁMPARA SOLAR INALÁMBRICA CON BRAZO FLEXIBLE MAGNÉTICO
LÁMPARA SOLAR INALÁMBRICA CON BRAZO FLEXIBLE MAGNÉTICO
LÁMPARA SOLAR INALÁMBRICA CON BRAZO FLEXIBLE MAGNÉTICO
LÁMPARA SOLAR INALÁMBRICA CON BRAZO FLEXIBLE MAGNÉTICO

Este proyecto se hizo a partir de una lámpara rota y un nodeMCU. Esta lámpara decorativa puede ajustarse en cualquier dirección y colocarse sobre materiales magnéticos o colocarse sobre la mesa. Se puede controlar en dos modos de la siguiente manera:

- Modo de control inalámbrico, como enlace de YouTube a continuación:

- Modo de control interactivo, como enlace de YouTube a continuación:

Paso 1: LISTA DE MATERIALES

Lista B. O. M:

Imagen
Imagen

Para el modo interactivo, uso MPU6050 para obtener datos de giroscopio de NodeMCU para controlar el color de la lámpara.

Imagen de materiales para este proyecto:

Imagen
Imagen

Paso 2: CIRCUITO

CIRCUITO
CIRCUITO

Este es un circuito muy simple, como el esquema de Fritzing anterior, con 1 tipo de ánodo común LED RGB, tres resistencias de corriente límite R100 y MPU6050.

El reflector se usa de cualquier lámpara rota y se conecta a la base de nodeMCU con 2 pernos o se pega con pegamento fuerte.

Trabajo de instalación:

Imagen
Imagen
Imagen
Imagen

Esquema a continuación:

Imagen
Imagen

Paso 3: BASE MAGNÉTICA - BRAZO FLEXIBLE

BASE MAGNÉTICA - BRAZO FLEXIBLE
BASE MAGNÉTICA - BRAZO FLEXIBLE

El brazo flexible se puede reutilizar a partir de grifos de agua flexibles rotos. Algo como eso:

Imagen
Imagen

Con algunos consejos, intentamos conectarlos a la base del imán permanente en la parte inferior del brazo flexible. En la parte superior, hicimos un taladro para conectar a nuestra placa de circuito y cargador solar / batería. Con esta base, podemos colocar la lámpara en superficies como mesas, pisos….; o se puede unir a materiales magnéticos como pilar de acero, estructura de acero.

Paso 4: SOLAR - CARGADOR DE BATERÍA

SOLAR - CARGADOR DE BATERIA
SOLAR - CARGADOR DE BATERIA

Provino de una lámpara de carga dañada. Agregué un interruptor de encendido / apagado y un suministro de cables de alimentación a nodeMCU. También tiene una salida de puerto USB y un enchufe para cargador de batería.

Paso 5: CONECTAR TODOS JUNTOS

CONECTAR TODOS JUNTOS
CONECTAR TODOS JUNTOS

Conexión de todas las piezas: NodeMCU y reflector, células solares y de batería, brazo flexible juntos.

TERMINAR

Imagen
Imagen

MODO DE CARGA

Imagen
Imagen

Paso 6: PROGRAMA DE CONTROL INTERACTIVO

El color cambiará cuando ajustemos el brazo flexible o giremos la lámpara.

LAMPARA INTERACTIVA

#incluir
// Dirección del dispositivo esclavo MPU6050
const uint8_t MPU6050SlaveAddress = 0x68;
// Seleccione los pines SDA y SCL para la comunicación I2C - Pin predeterminado en WIRE LIBRARY: SCL - D1 & SDA - D2 en NODEMCU
// const uint8_t SCL = D1;
// const uint8_t SDA = D2;
const int R = 14;
const int G = 12;
const int B = 13;
// MPU6050 pocas direcciones de registro de configuración
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, Temperature, GyroX, GyroY, GyroZ;
configuración vacía () {
pinMode (R, SALIDA);
pinMode (G, SALIDA);
pinMode (B, SALIDA);
//Serial.begin(9600);
Wire.begin (SDA, SCL);
MPU6050_Init ();
}
bucle vacío () {
uint16_t Ax, Ay, Az, T, Gx, Gy, Gz;
uint16_t Rojo, verde, azul;
Read_RawValue (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
// Toma valor absoluto
Ax = myAbs (AccelX);
Ay = myAbs (AccelY);
Az = myAbs (AccelZ);
// Escala en rango
Rojo = mapa (Ax, 0, 16384, 0, 1023);
Verde = mapa (Ay, 0, 16384, 0, 1023);
Azul = mapa (Az, 0, 16384, 0, 1023);
// Impresión en serie para comprobar
//Serial.print("Red: "); Serial.print (rojo);
//Serial.print("Green: "); Serial.print (verde);
//Serial.print("Blue: "); Serial.print (azul);
// Escribir analógico en LED
analogWrite (R, rojo); // R
analogWrite (G, verde); // G
analogWrite (B, azul); // B
retraso (200);
}
void I2C_Write (uint8_t deviceAddress, uint8_t regAddress, uint8_t datos) {
Wire.beginTransmission (deviceAddress);
Wire.write (regAddress);
Wire.write (datos);
Wire.endTransmission ();
}
// Leer los 14 registros
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 ());
GyroX = (((int16_t) Wire.read () << 8) | Wire.read ());
GyroY = (((int16_t) Wire.read () << 8) | Wire.read ());
GyroZ = (((int16_t) Wire.read () << 8) | Wire.read ());
}
// Configurar MPU6050
void MPU6050_Init () {
retraso (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); // establecer +/- 250 grados / segundo escala completa
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00); // establecer +/- 2g de escala completa
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);
}
// Valor absoluto
flotar myAbs (flotar en) {
return (in)> 0? (in):-(in);
}

ver el PROGRAMA DE LÁMPARAS RAWINTERACTIVAS alojado con ❤ por GitHub

Paso 7: PROGRAMA DE CONTROL INALÁMBRICO Y APLICACIÓN DE ANDROID

PROGRAMA DE CONTROL INALÁMBRICO Y APLICACIÓN DE ANDROID
PROGRAMA DE CONTROL INALÁMBRICO Y APLICACIÓN DE ANDROID

De otra forma, podemos usar la aplicación de Android para controlar el LED RGB con Android en la red WiFi. Aplicación de enlace para Android: aplicación LED RGB de control NODEMCU

Para el programa Arduino, puede consultar:

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

Después de cargar el programa en NodeMCU, la primera ejecución nos dará la dirección IP de NodeMCU en la impresión en serie. En mi caso, es: 192.164.1.39 en el puerto 80.

Imagen
Imagen

Ahora, podemos controlar la lámpara inalámbrica con una computadora portátil / tableta / teléfono móvil ingresando la dirección arriba en Internet Explorer.

Imagen
Imagen

O usando la aplicación de Android:

Imagen
Imagen

Paso 8: ALGUNAS FOTOS

Recomendado: