Innehållsförteckning:
Video: SOLAR TRÅDLÖS LAMPA MED MAGNETISK FLEXIBEL ARM: 8 steg (med bilder)
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Detta projekt gjordes av en trasig lampa och nodMCU. Denna dekorativa lampa kan justeras i alla riktningar och fästas på magnetiska material eller läggas på bordet. Den kan styras i två lägen enligt följande:
- Trådlöst kontrolläge, som YouTube -länk nedan:
- Interaktivt kontrolläge, som YouTube -länk nedan:
Steg 1: RÄKNING AV MATERIAL
B. O. M lista:
För interaktivt läge använder jag MPU6050 för att få gyrodata från NodeMCU för att styra lampans färg.
Materialbild för detta projekt:
Steg 2: CIRCUIT
Detta är en mycket enkel krets, enligt Fritzing -schemat ovan, med 1 RGB Led vanlig anodtyp, tre gränsströmsmotstånd R100 & MPU6050.
Reflektorn används från alla trasiga lampor och ansluten till nodeMCU -basen med två bultar eller klistra fast dem med starkt lim.
Installationsarbete:
Schemat nedan:
Steg 3: MAGNETISK BAS - FLEXIBEL ARM
Flexibel arm kan återanvändas från trasiga flexibla vattenkranar. Något sådant:
Med några tips försöker vi ansluta dem till den permanenta magnetbasen längst ner på den flexibla armen. Ovanpå gjorde vi ett borrhål för anslutning till vårt kretskort och sol-/batteriladdare. Med denna bas kan vi sätta lampan på ytan som bord, golv …; eller det kan fästas på magnetiska material som stålpelare, stålkonstruktion.
Steg 4: SOLAR - BATTERILADDARE
Den kom från en skadad laddningslampa. Jag lade till en på/av -omkopplare och strömförsörjning till nodeMCU. Den har också ett USB -uttag och en kontakt för batteriladdare.
Steg 5: ANSLUT ALLT SAMMAN
Ansluter alla delar: NodeMCU & reflektor, solceller och battericeller, flexibel arm tillsammans.
AVSLUTA
LADDNINGSLÄGE
Steg 6: INTERAKTIVT KONTROLLPROGRAM
Färgen ändras när vi justerar den flexibla armen eller roterar lampan.
INTERAKTIV LAMPA
#omfatta |
// MPU6050 Slave Device Address |
const uint8_t MPU6050SlaveAddress = 0x68; |
// Välj SDA- och SCL -stift för I2C -kommunikation - Pin -standard i WIRE LIBRARY: SCL - D1 & SDA - D2 på NODEMCU |
// const uint8_t SCL = D1; |
// const uint8_t SDA = D2; |
const int R = 14; |
const int G = 12; |
const int B = 13; |
// MPU6050 få konfigurationsregisteradresser |
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, Temperatur, GyroX, GyroY, GyroZ; |
void setup () { |
pinMode (R, OUTPUT); |
pinMode (G, OUTPUT); |
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 Rött, grönt, blått; |
Read_RawValue (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H); |
// Ta absolut värde |
Ax = myAbs (AccelX); |
Ay = myAbs (AccelY); |
Az = myAbs (AccelZ); |
// Skala inom räckvidd |
Röd = karta (Ax, 0, 16384, 0, 1023); |
Grön = karta (Ay, 0, 16384, 0, 1023); |
Blå = karta (Az, 0, 16384, 0, 1023); |
// Seriell utskrift för att kontrollera |
//Serial.print("Red: "); Serial.print (röd); |
//Serial.print("Green: "); Serial.print (grönt); |
//Serial.print("Blue: "); Serial.print (blå); |
// Skriv analogt till LED |
analogWrite (R, röd); // R |
analogWrite (G, grön); // G |
analogWrite (B, blå); // B |
fördröjning (200); |
} |
void I2C_Write (uint8_t deviceAddress, uint8_t regAddress, uint8_t data) { |
Wire.beginTransmission (deviceAddress); |
Wire.write (regAddress); |
Wire.write (data); |
Wire.endTransmission (); |
} |
// Läs alla 14 register |
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 ()); |
Temperatur = (((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 ()); |
} |
// Konfigurera MPU6050 |
ogiltig MPU6050_Init () { |
fördröjning (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 grader/sekund full skala |
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00); // set +/- 2g full 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); |
} |
// Absolutvärde |
float myAbs (float in) { |
return (in)> 0? (in):-(in); |
} |
visa rawINTERACTIVE LAMP PROGRAM värd med ❤ av GitHub
Steg 7: TRÅDLÖS KONTROLLPROGRAM OCH ANDROID -APPLIKATION
Ett annat sätt kan vi använda Android App för att styra RGB LED med Android i WiFi -nätverk. Länk Android -app: NODEMCU -kontroll RGB LED -APP
För Arduino -programmet kan du hänvisa till:
microcontrollerkits.blogspot.com/2016/05/es…
Efter att ha laddat upp programmet till NodeMCU kommer den första körningen att ge oss NodeMCU: s IP -adress vid seriell utskrift. I mitt fall är det: 192.164.1.39 vid port 80.
Nu kan vi styra den trådlösa lampan med bärbar dator/ surfplatta/ mobiltelefon genom att ange adressen ovan i Internet Explorer.
Eller använda Android -appen: