Spisu treści:

BEZPRZEWODOWA LAMPA SOLARNA Z MAGNETYCZNYM ELASTYCZNYM RAMIĘ: 8 kroków (ze zdjęciami)
BEZPRZEWODOWA LAMPA SOLARNA Z MAGNETYCZNYM ELASTYCZNYM RAMIĘ: 8 kroków (ze zdjęciami)

Wideo: BEZPRZEWODOWA LAMPA SOLARNA Z MAGNETYCZNYM ELASTYCZNYM RAMIĘ: 8 kroków (ze zdjęciami)

Wideo: BEZPRZEWODOWA LAMPA SOLARNA Z MAGNETYCZNYM ELASTYCZNYM RAMIĘ: 8 kroków (ze zdjęciami)
Wideo: 📱 AKCESORIA DO SMARTFONA z AliExpress 2024, Lipiec
Anonim
BEZPRZEWODOWA BEZPRZEWODOWA LAMPA Z MAGNETYCZNYM ELASTYCZNYM RAMIONEM
BEZPRZEWODOWA BEZPRZEWODOWA LAMPA Z MAGNETYCZNYM ELASTYCZNYM RAMIONEM
BEZPRZEWODOWA BEZPRZEWODOWA LAMPA Z MAGNETYCZNYM ELASTYCZNYM RAMIONEM
BEZPRZEWODOWA BEZPRZEWODOWA LAMPA Z MAGNETYCZNYM ELASTYCZNYM RAMIONEM

Ten projekt został wykonany z rozbitej lampy i nodeMCU. Tę dekoracyjną lampę można regulować w dowolnym kierunku i przymocować na materiałach magnetycznych lub postawić na stole. Można nim sterować w dwóch następujących trybach:

- Tryb sterowania bezprzewodowego, jak link do YouTube poniżej:

- Interaktywny tryb sterowania, jak link YouTube poniżej:

Krok 1: ZESTAWIENIE MATERIAŁÓW

Lista BOM:

Obraz
Obraz

W trybie interaktywnym używam MPU6050, aby uzyskać dane żyroskopowe z NodeMCU w celu kontrolowania koloru lampy.

Zdjęcie materiałów do tego projektu:

Obraz
Obraz

Krok 2: OBWÓD

OKRĄŻENIE
OKRĄŻENIE

Jest to bardzo prosty układ, jak na schemacie Fritzinga powyżej, ze wspólną anodą 1 RGB Led, trzema rezystorami ograniczającymi prąd R100 i MPU6050.

Odbłyśnik jest używany z wszelkich zepsutych lamp i podłączony do bazy nodeMCU za pomocą 2 śrub lub przyklej je mocnym klejem.

Roboty instalacyjne:

Obraz
Obraz
Obraz
Obraz

Schemat poniżej:

Obraz
Obraz

Krok 3: PODSTAWA MAGNETYCZNA - ELASTYCZNE RAMIĘ

PODSTAWA MAGNETYCZNA - ELASTYCZNE RAMIĘ
PODSTAWA MAGNETYCZNA - ELASTYCZNE RAMIĘ

Elastyczne ramię można ponownie wykorzystać z uszkodzonych elastycznych kranów. Coś w tym stylu:

Obraz
Obraz

Z kilkoma wskazówkami próbujemy połączyć je z podstawą magnesu trwałego na dole elastycznego ramienia. Na górze wykonaliśmy otwór do podłączenia do naszej płytki drukowanej i ładowarki słonecznej/akumulatorowej. Dzięki tej podstawie możemy umieścić lampę na powierzchni, takiej jak stół, podłoga….; lub może być przymocowany do materiałów magnetycznych, takich jak stalowy słupek, stalowa konstrukcja.

Krok 4: SOLAR – ŁADOWARKA AKUMULATORA

SOLAR – ŁADOWARKA AKUMULATORA
SOLAR – ŁADOWARKA AKUMULATORA

Pochodził z uszkodzonej lampy ładującej. Dodałem włącznik/wyłącznik i zasilanie przewodów zasilających do nodeMCU. Posiada również jedno gniazdo portu USB i jedną wtyczkę do ładowarki baterii.

Krok 5: POŁĄCZ WSZYSTKO RAZEM

POŁĄCZ WSZYSTKO RAZEM
POŁĄCZ WSZYSTKO RAZEM

Łączenie wszystkich części: NodeMCU i reflektor, ogniwa słoneczne i akumulatorowe, elastyczne ramię razem.

KONIEC

Obraz
Obraz

TRYB ŁADOWANIA

Obraz
Obraz

Krok 6: INTERAKTYWNY PROGRAM STEROWANIA

Kolor zmieni się, gdy dopasujemy elastyczne ramię lub obrócimy lampę.

INTERAKTYWNA LAMPA

#włączać
// Adres urządzenia podrzędnego MPU6050
const uint8_t MPU6050SlaveAddress = 0x68;
// Wybierz piny SDA i SCL do komunikacji I2C - Domyślny pin w WIRE LIBRARY: SCL - D1 & SDA - D2 na NODEMCU
// const uint8_t SCL = D1;
// const uint8_t SDA = D2;
const int R = 14;
const int G = 12;
const int B = 13;
// MPU6050 kilka adresów rejestru konfiguracji
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;
pusta konfiguracja () {
pinMode(R, WYJŚCIE);
pinMode(G, WYJŚCIE);
pinMode(B, WYJŚCIE);
//Serial.begin(9600);
Wire.początek(SDA, SCL);
MPU6050_Init();
}
pusta pętla () {
uint16_t Ax, Ay, Az, T, Gx, Gy, Gz;
uint16_t Czerwony, Zielony, Niebieski;
Read_RawValue (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H);
// Weź wartość bezwzględną
Topór = mój Abs(AccelX);
Ay = mój Abs(Przyspieszenie);
Az = mój Abs(PrzyspieszenieZ);
// Skaluj w zakresie
Czerwony = mapa(Ax, 0, 16384, 0, 1023);
Zielony = mapa(Ay, 0, 16384, 0, 1023);
Niebieski = mapa(Az, 0, 16384, 0, 1023);
// Wydruk seryjny do sprawdzenia
//Serial.print("Czerwony:"); Serial.print(czerwony);
//Serial.print("Zielony: "); Serial.print (zielony);
//Serial.print("Niebieski: "); Serial.print (niebieski);
// Napisz analog do LED
analogZapis(R, czerwony); // R
analogZapis(G, zielony); // G
analogowyZapis(B, Niebieski); // B
opóźnienie(200);
}
void I2C_Write(uint8_t deviceAddress, uint8_t regAddress, uint8_t data){
Wire.beginTransmission(adres urządzenia);
Wire.write(regAddress);
Drut.zapis(dane);
Wire.endTransmission();
}
// Odczytaj wszystkie 14 rejestrów
void Read_RawValue(uint8_t deviceAddress, uint8_t regAddress){
Wire.beginTransmission(adres urządzenia);
Wire.write(regAddress);
Wire.endTransmission();
Wire.requestFrom(adres urządzenia, (uint8_t)14);
AccelX = (((int16_t)Przewód.odczyt()<<8) | Przew.odczyt());
AccelY = (((int16_t)Przewód.odczyt()<<8) | Przew.odczyt());
AccelZ = (((int16_t)Przewód.odczyt()<<8) | Przew.odczyt());
Temperatura = (((int16_t)Przewód.odczyt()<<8) | Przew.odczyt());
GyroX = (((int16_t)Przewód.odczyt()<<8) | Przew..odczyt());
Żyroskop = (((int16_t)Przewód.odczyt()<<8) | Przew..odczyt());
Żyroskop = (((int16_t)Przewód.odczyt()<<8) | Przew..odczyt());
}
// Konfiguracja MPU6050
nieważne MPU6050_Init(){
opóźnienie(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);//ustaw +/-250 stopni/sekundę pełnej skali
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00);// ustaw +/- 2g pełna skala
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);
}
// Całkowita wartość
float myAbs(float in){
zwróć (w)>0?(w):-(w);
}

zobacz rawPROGRAM LAMP INTERAKTYWNYCH hostowany przez ❤ by GitHub

Krok 7: BEZPRZEWODOWY PROGRAM STEROWANIA I APLIKACJA NA ANDROID

BEZPRZEWODOWY PROGRAM STEROWANIA I APLIKACJA NA ANDROID
BEZPRZEWODOWY PROGRAM STEROWANIA I APLIKACJA NA ANDROID

Innym sposobem możemy wykorzystać aplikację na Androida do sterowania LED RGB za pomocą Androida w sieci WiFi. Połącz aplikację na Androida: sterowanie NODEMCU aplikacja LED RGB

W przypadku programu Arduino możesz odwołać się do:

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

Po wgraniu programu do NodeMCU, pierwsze uruchomienie da nam adres IP NodeMCU na wydruku szeregowym. W moim przypadku jest to: 192.164.1.39 na porcie 80.

Obraz
Obraz

Teraz możemy sterować lampą bezprzewodową za pomocą laptopa/tabletu/telefonu komórkowego wpisując powyższy adres do przeglądarki internetowej.

Obraz
Obraz

Lub za pomocą aplikacji na Androida:

Obraz
Obraz

Krok 8: NIEKTÓRE ZDJĘCIA

Zalecana: