Cuprins:

LAMPĂ SOLARĂ FĂRĂ FĂRĂ CU BRAȚ MAGNETIC FLEXIBIL: 8 pași (cu imagini)
LAMPĂ SOLARĂ FĂRĂ FĂRĂ CU BRAȚ MAGNETIC FLEXIBIL: 8 pași (cu imagini)

Video: LAMPĂ SOLARĂ FĂRĂ FĂRĂ CU BRAȚ MAGNETIC FLEXIBIL: 8 pași (cu imagini)

Video: LAMPĂ SOLARĂ FĂRĂ FĂRĂ CU BRAȚ MAGNETIC FLEXIBIL: 8 pași (cu imagini)
Video: 20 товаров для автомобиля с Алиэкспресс, автотовары №25 2024, Iulie
Anonim
LAMPĂ SOLARĂ FĂRĂ FĂRĂ CU BRAȚ MAGNETIC FLEXIBIL
LAMPĂ SOLARĂ FĂRĂ FĂRĂ CU BRAȚ MAGNETIC FLEXIBIL
LAMPĂ SOLARĂ FĂRĂ FĂRĂ CU BRAȚ MAGNETIC FLEXIBIL
LAMPĂ SOLARĂ FĂRĂ FĂRĂ CU BRAȚ MAGNETIC FLEXIBIL

Acest proiect a fost realizat dintr-o lampă spartă & nodeMCU. Această lampă decorativă poate fi reglată în orice direcție și atașată pe materiale magnetice sau pusă pe masă. Poate fi controlat în două moduri după cum urmează:

- Mod de control wireless, ca link YouTube mai jos:

- Mod de control interactiv, ca link YouTube mai jos:

Pasul 1: FACTURA DE MATERIALE

Lista B. O. M:

Imagine
Imagine

Pentru modul interactiv, folosesc MPU6050 pentru a obține date giroscopice de la NodeMCU pentru a controla culoarea lămpii.

Imaginea materialelor pentru acest proiect:

Imagine
Imagine

Pasul 2: CIRCUIT

CIRCUIT
CIRCUIT

Acesta este un circuit foarte simplu, după cum arată schema Fritzing de mai sus, cu un tip de anod comun cu LED RGB, trei rezistențe de curent limită R100 și MPU6050.

Reflectorul este utilizat de la orice lămpi sparte și conectat la baza nodului MCU prin 2 șuruburi sau lipiți-le cu adeziv puternic.

Lucrări de instalare:

Imagine
Imagine
Imagine
Imagine

Schema de mai jos:

Imagine
Imagine

Pasul 3: BAZĂ MAGNETICĂ - BRAT FLEXIBIL

BAZĂ MAGNETICĂ - BRAT FLEXIBIL
BAZĂ MAGNETICĂ - BRAT FLEXIBIL

Brațul flexibil poate fi reutilizat din robinete de apă flexibile rupte. Ceva de genul:

Imagine
Imagine

Cu câteva sfaturi, încercăm să le conectăm la baza magnetului permanent din partea inferioară a brațului flexibil. Deasupra, am făcut o gaură pentru conectarea la placa noastră de circuit și la încărcătorul solar / baterie. Cu această bază, putem pune lampa pe suprafață, cum ar fi masa, podelele …; sau poate fi atașat pe materiale magnetice precum stâlp de oțel, structură din oțel.

Pasul 4: SOLAR - ÎNCĂRCĂTOR DE BATERIE

SOLAR - ÎNCĂRCĂTOR DE BATERIE
SOLAR - ÎNCĂRCĂTOR DE BATERIE

A venit de la o lampă de încărcare deteriorată. Am adăugat un comutator de pornire / oprire și alimentare cu fire de alimentare la nodeMCU. De asemenea, are o priză de port USB și o priză pentru încărcătorul de baterie.

Pasul 5: CONECTAȚI TOȚI ÎMPREUNĂ

CONECTAȚI TOȚI ÎMPREUNĂ
CONECTAȚI TOȚI ÎMPREUNĂ

Conectarea tuturor pieselor: NodeMCU și reflector, celule solare și baterii, braț flexibil împreună.

FINALIZAREA

Imagine
Imagine

MOD DE ÎNCĂRCARE

Imagine
Imagine

Pasul 6: PROGRAM DE CONTROL INTERACTIV

Culoarea se va schimba atunci când reglăm brațul flexibil sau rotim lampa.

LAMPĂ INTERACTIVĂ

#include
// Adresa dispozitivului sclav MPU6050
const uint8_t MPU6050SlaveAddress = 0x68;
// Selectați pinii SDA și SCL pentru comunicația I2C - Pin implicit în BIBLIOTECĂ WIRE: SCL - D1 și SDA - D2 pe NODEMCU
// const uint8_t SCL = D1;
// const uint8_t SDA = D2;
const int R = 14;
const int G = 12;
const int B = 13;
// MPU6050 câteva adrese de registru de configurare
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;
configurare nulă () {
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
//Serial.begin(9600);
Wire.begin (SDA, SCL);
MPU6050_Init ();
}
bucla nulă () {
uint16_t Ax, Ay, Az, T, Gx, Gy, Gz;
uint16_t Roșu, verde, albastru;
Read_RawValue (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
// Ia valoare absolută
Ax = myAbs (AccelX);
Ay = myAbs (AccelY);
Az = myAbs (AccelZ);
// Scară în interval
Roșu = hartă (Ax, 0, 16384, 0, 1023);
Verde = hartă (Ay, 0, 16384, 0, 1023);
Albastru = hartă (Az, 0, 16384, 0, 1023);
// Tipărire în serie pentru verificare
//Serial.print("Red: "); Serial.print (roșu);
//Serial.print("Green: "); Serial.print (verde);
//Serial.print("Blue: "); Serial.print (Albastru);
// Scrie analog pe LED
analogWrite (R, Roșu); // R
analogWrite (G, Verde); // G
analogWrite (B, Albastru); // B
întârziere (200);
}
void I2C_Write (uint8_t DeviceAddress, uint8_t regAddress, uint8_t data) {
Wire.beginTransmission (deviceAddress);
Wire.write (regAddress);
Wire.write (date);
Wire.endTransmission ();
}
// Citiți toate cele 14 registre
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 ());
}
// Configurați MPU6050
void MPU6050_Init () {
întârziere (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); // set +/- 250 grade / second full scale
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00); // set +/- 2g full scale
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);
}
// Valoare absolută
float myAbs (float in) {
return (in)> 0? (in):-(in);
}

vizualizați PROGRAMUL LAMPĂ INTERACTIVĂ găzduit cu ❤ de GitHub

Pasul 7: PROGRAM DE CONTROL WIRELESS ȘI APLICAȚIE ANDROID

PROGRAM DE CONTROL WIRELESS ȘI APLICAȚIE ANDROID
PROGRAM DE CONTROL WIRELESS ȘI APLICAȚIE ANDROID

O altă modalitate, putem folosi aplicația Android pentru a controla LED-ul RGB cu Android în rețeaua WiFi. Link Android App: NODEMCU control RGB LED APP

Pentru programul Arduino, puteți face referire la:

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

După încărcarea programului pe NodeMCU, prima rundă ne va oferi adresa IP a NodeMCU pe tipărire în serie. În cazul meu, este: 192.164.1.39 la portul 80.

Imagine
Imagine

Acum, putem controla lampa wireless cu laptop / tabletă / telefon mobil introducând adresa de mai sus în Internet Explorer.

Imagine
Imagine

Sau folosind aplicația Android:

Imagine
Imagine

Pasul 8: UNELE IMAGINI

Recomandat: