Índice:

LÂMPADA SOLAR SEM FIO COM BRAÇO MAGNÉTICO FLEXÍVEL: 8 etapas (com fotos)
LÂMPADA SOLAR SEM FIO COM BRAÇO MAGNÉTICO FLEXÍVEL: 8 etapas (com fotos)

Vídeo: LÂMPADA SOLAR SEM FIO COM BRAÇO MAGNÉTICO FLEXÍVEL: 8 etapas (com fotos)

Vídeo: LÂMPADA SOLAR SEM FIO COM BRAÇO MAGNÉTICO FLEXÍVEL: 8 etapas (com fotos)
Vídeo: REVIEW: Luminária Magnética 360º 2024, Julho
Anonim
LÂMPADA SOLAR SEM FIO COM BRAÇO MAGNÉTICO FLEXÍVEL
LÂMPADA SOLAR SEM FIO COM BRAÇO MAGNÉTICO FLEXÍVEL
LÂMPADA SEM FIO SOLAR COM BRAÇO FLEXÍVEL MAGNÉTICO
LÂMPADA SEM FIO SOLAR COM BRAÇO FLEXÍVEL MAGNÉTICO

Este projeto foi feito a partir de uma lâmpada quebrada e nodeMCU. Esta lâmpada decorativa pode ser ajustada em qualquer direção e fixada em materiais magnéticos ou colocada na mesa. Pode ser controlado em dois modos da seguinte forma:

- Modo de controle sem fio, conforme link do YouTube abaixo:

- Modo de controle interativo, conforme link do YouTube abaixo:

Etapa 1: CONTA DE MATERIAIS

Lista B. O. M:

Imagem
Imagem

Para o modo interativo, eu uso o MPU6050 para obter dados do giroscópio do NodeMCU para controlar a cor da lâmpada.

Imagem dos materiais para este projeto:

Imagem
Imagem

Etapa 2: CIRCUITO

O CIRCUITO
O CIRCUITO

Este é um circuito muito simples, como o esquema de Fritzing acima, com 1 tipo de ânodo comum LED RGB, três resistores de corrente limite R100 e MPU6050.

O refletor é usado em qualquer lâmpada quebrada e conectado à base do nodeMCU por 2 parafusos ou cole-os com cola forte.

Trabalho de instalação:

Imagem
Imagem
Imagem
Imagem

Esquema abaixo:

Imagem
Imagem

Etapa 3: BASE MAGNÉTICA - BRAÇO FLEXÍVEL

BASE MAGNÉTICA - BRAÇO FLEXÍVEL
BASE MAGNÉTICA - BRAÇO FLEXÍVEL

O braço flexível pode ser reutilizado em torneiras de água flexíveis quebradas. Algo parecido:

Imagem
Imagem

Com algumas dicas, tentamos conectá-los à base do ímã permanente na parte inferior do braço flexível. No topo, fizemos um furo para conectar a nossa placa de circuito e carregador solar / bateria. Com esta base, podemos colocar a lâmpada na superfície como uma mesa, piso …; ou pode ser fixado em materiais magnéticos como pilar de aço, estrutura de aço.

Etapa 4: SOLAR - CARREGADOR DE BATERIA

SOLAR - CARREGADOR DE BATERIA
SOLAR - CARREGADOR DE BATERIA

Veio de uma lâmpada de carregamento danificada. Eu adicionei um interruptor liga / desliga e fonte de fios de energia para nodeMCU. Ele também possui uma saída de porta USB e um plugue para carregador de bateria.

Etapa 5: CONECTE TODOS JUNTOS

CONECTE TODOS JUNTOS
CONECTE TODOS JUNTOS

Conectando todas as peças: NodeMCU e refletor, células solares e de bateria, braço flexível juntos.

FINALIZAR

Imagem
Imagem

MODO DE CARREGAMENTO

Imagem
Imagem

Etapa 6: PROGRAMA DE CONTROLE INTERATIVO

A cor será alterada quando ajustamos o braço flexível ou giramos a lâmpada.

LÂMPADA INTERATIVA

#incluir
// Endereço do dispositivo escravo MPU6050
const uint8_t MPU6050SlaveAddress = 0x68;
// Selecione os pinos SDA e SCL para comunicação I2C - Pino padrão na BIBLIOTECA DE ARAME: SCL - D1 & SDA - D2 em NODEMCU
// const uint8_t SCL = D1;
// const uint8_t SDA = D2;
const int R = 14;
const int G = 12;
const int B = 13;
// MPU6050 alguns endereços de registro de configuração
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, OUTPUT);
pinMode (G, SAÍDA);
pinMode (B, OUTPUT);
//Serial.begin(9600);
Wire.begin (SDA, SCL);
MPU6050_Init ();
}
void loop () {
uint16_t Ax, Ay, Az, T, Gx, Gy, Gz;
uint16_t Vermelho, Verde, Azul;
Read_RawValue (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
// Pega valor absoluto
Ax = myAbs (AccelX);
Ay = myAbs (AccelY);
Az = myAbs (AccelZ);
// Escala no alcance
Vermelho = mapa (Ax, 0, 16384, 0, 1023);
Verde = mapa (Ay, 0, 16384, 0, 1023);
Azul = mapa (Az, 0, 16384, 0, 1023);
// Impressão serial para verificar
//Serial.print("Red: "); Serial.print (vermelho);
//Serial.print("Green: "); Serial.print (Verde);
//Serial.print("Blue: "); Serial.print (azul);
// Escreva analógico para LED
analogWrite (R, vermelho); // R
analogWrite (G, Verde); // G
analogWrite (B, Azul); // B
atraso (200);
}
void I2C_Write (uint8_t deviceAddress, uint8_t regAddress, uint8_t data) {
Wire.beginTransmission (deviceAddress);
Wire.write (regAddress);
Wire.write (dados);
Wire.endTransmission ();
}
// Lê todos os 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 ());
}
// Configure MPU6050
void MPU6050_Init () {
atraso (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); // definir +/- 250 graus / segundo escala completa
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00); // definir +/- 2g 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
float myAbs (float in) {
return (in)> 0? (in):-(in);
}

ver rawINTERACTIVE LAMP PROGRAM hospedado com ❤ pelo GitHub

Etapa 7: PROGRAMA DE CONTROLE SEM FIO E APLICAÇÃO ANDROID

PROGRAMA DE CONTROLE SEM FIO E APLICAÇÃO ANDROID
PROGRAMA DE CONTROLE SEM FIO E APLICAÇÃO ANDROID

Outra forma, podemos usar o aplicativo Android para controlar LED RGB com Android na rede WiFi. Link Android App: NODEMCU control RGB LED APP

Para o programa Arduino, você pode consultar:

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

Após fazer o upload do programa para o NodeMCU, a primeira execução nos dará o endereço IP do NodeMCU na impressão serial. No meu caso, é: 192.164.1.39 na porta 80.

Imagem
Imagem

Agora, podemos controlar a lâmpada sem fio com laptop / tablet / celular digitando o endereço acima no Internet Explorer.

Imagem
Imagem

Ou usando o aplicativo Android:

Imagem
Imagem

Etapa 8: ALGUMAS IMAGENS

Recomendado: