Talaan ng mga Nilalaman:
Video: SOLAR WIRELESS LAMP WITH WITH MAGNETIC FLEXIBLE ARM: 8 Hakbang (na may Mga Larawan)
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Ang proyektong ito ay ginawa mula sa isang sirang lampara at nodeMCU. Ang pandekorasyon na lampara na ito ay maaaring iakma sa anumang mga direksyon at nakakabit sa mga magnetikong materyales o ilagay sa mesa. Maaari itong makontrol sa dalawang mga mode tulad ng sumusunod:
- Wireless control mode, tulad ng link sa YouTube sa ibaba:
- Interactive control mode, tulad ng link sa YouTube sa ibaba:
Hakbang 1: BILL OF MATERIALS
Listahan ng B. O. M:
Para sa interactive mode, gumagamit ako ng MPU6050 upang makakuha ng data ng gyro mula sa NodeMCU upang makontrol ang kulay ng ilawan.
Larawan ng materyal para sa proyektong ito:
Hakbang 2: CIRCUIT
Ito ay napaka-simpleng circuit, tulad ng Fritzing eskematiko sa itaas, na may 1 RGB Led karaniwang uri ng anode, tatlong limitasyon kasalukuyang resistors R100 & MPU6050.
Ang reflector ay ginagamit mula sa anumang sirang lampara at konektado sa base ng nodeMCU ng 2 bolts o idikit ang mga ito gamit ang malakas na pandikit.
Trabaho sa pag-install:
Skema sa ibaba:
Hakbang 3: MAGNETIC BASE - FLEXIBLE ARM
Ang nababaluktot na braso ay maaaring magamit muli mula sa sirang nababaluktot na mga gripo ng tubig. Isang bagay na tulad nito:
Sa ilang mga tip, sinubukan naming ikonekta ang mga ito sa permanenteng base ng magnet sa ilalim ng kakayahang umangkop na braso. Sa tuktok, gumawa kami ng isang butas ng drill para sa pagkonekta sa aming circuit board at solar / baterya na charger. Sa batayang ito, maaari naming ilagay ang lampara sa ibabaw tulad ng mesa, sahig…. o maaari itong ikabit sa mga magnetikong materyales tulad ng steel pou, bakal na istraktura.
Hakbang 4: SOLAR - BATTERY CHARGER
Galing ito sa isang nasira na lampara ng singilin. Nagdagdag ako ng isang on / off switch at power wires supply sa nodeMCU. Mayroon din itong isang USB port outlet at isang plug para sa charger ng baterya.
Hakbang 5: Ikonekta ang LAHAT NG MAGKASAMA
Kumokonekta sa lahat ng mga bahagi: NodeMCU at reflector, solar at baterya na mga cell, nababaluktot na braso nang magkasama.
TAPOS
CHARGING MODE
Hakbang 6: PROGRAMA NG INTERACTIVE CONTROL
Ang kulay ay mababago kapag inaayos namin ang kakayahang umangkop braso o paikutin ang lampara.
INTERACTIVE LAMP
# isama |
// MPU6050 Slave Device Address |
const uint8_t MPU6050SlaveAddress = 0x68; |
// Piliin ang mga pin ng SDA at SCL para sa komunikasyon ng I2C - Pin default sa WIRE LIBRARY: SCL - D1 & SDA - D2 sa NODEMCU |
// const uint8_t SCL = D1; |
// const uint8_t SDA = D2; |
const int R = 14; |
const int G = 12; |
const int B = 13; |
// MPU6050 ilang mga rehistro sa rehistro ng pagsasaayos |
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; |
walang bisa ang pag-setup () { |
pinMode (R, OUTPUT); |
pinMode (G, OUTPUT); |
pinMode (B, OUTPUT); |
//Serial.begin(9600); |
Wire.begin (SDA, SCL); |
MPU6050_Init (); |
} |
void loop () { |
uint16_t Axe, Ay, Az, T, Gx, Gy, Gz; |
uint16_t Pula, berde, Asul; |
Read_RawValue (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H); |
// Kumuha ng ganap na halaga |
Ax = myAbs (AccelX); |
Ay = myAbs (AccelY); |
Az = myAbs (AccelZ); |
// Scale in range |
Pula = mapa (Ax, 0, 16384, 0, 1023); |
Green = mapa (Ay, 0, 16384, 0, 1023); |
Blue = mapa (Az, 0, 16384, 0, 1023); |
// Serial print upang suriin |
//Serial.print("Red: "); Serial.print (Pula); |
//Serial.print("Green: "); Serial.print (Green); |
//Serial.print("Blue: "); Serial.print (Blue); |
// Sumulat ng analog sa LED |
analogWrite (R, Red); // R |
analogWrite (G, Green); // G |
analogWrite (B, Blue); // B |
pagkaantala (200); |
} |
walang bisa ang I2C_Write (uint8_t deviceAddress, uint8_t regAddress, uint8_t data) { |
Wire.beginTransmission (aparatoAddress); |
Wire.write (regAddress); |
Wire.write (data); |
Wire.endTransmission (); |
} |
// Basahin ang lahat ng 14 na rehistro |
walang bisa ang Read_RawValue (uint8_t deviceAddress, uint8_t regAddress) { |
Wire.beginTransmission (aparatoAddress); |
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 ()); |
} |
// I-configure ang MPU6050 |
walang bisa MPU6050_Init () { |
pagkaantala (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 degree / pangalawang buong sukat |
I2C_Write (MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00); // set +/- 2g buong sukat |
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); |
} |
// Ganap na Halaga |
float myAbs (float in) { |
bumalik (sa)> 0? (sa):-(in); |
} |
tingnan ang RawINTERACTIVE LAMP PROGRAM na naka-host sa ❤ ng GitHub
Hakbang 7: WIRELESS CONTROL PROGRAM AT ANDROID APPLICATION
Ang isa pang paraan, maaari naming gamitin ang Android App upang makontrol ang RGB LED sa Android sa WiFi Network. I-link ang Android App: kontrol ng NODEMCU RGB LED APP
Para sa programa ng Arduino, maaari kang mag-refer sa:
microcontrollerkits.blogspot.com/2016/05/es…
Matapos ang pag-upload ng programa sa NodeMCU, ang unang pagtakbo ay magbibigay sa amin ng IP address ng NodeMCU sa serial print. Sa aking kaso, ito ay: 192.164.1.39 sa port 80.
Ngayon, makokontrol natin ang wireless lamp gamit ang laptop / tablet / mobile phone sa pamamagitan ng paglalagay ng address sa itaas sa internet explorer.
O gumagamit ng Android app: