İçindekiler:
Video: MANYETİK ESNEK KOLLU GÜNEŞ KABLOSUZ LAMBA: 8 Adım (Resimli)
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu proje kırık bir lamba ve nodeMCU'dan yapılmıştır. Bu dekoratif lamba herhangi bir yöne ayarlanabilir ve manyetik malzemelere takılabilir veya masaya konabilir. Aşağıdaki gibi iki modda kontrol edilebilir:
- Aşağıdaki YouTube bağlantısı gibi kablosuz kontrol modu:
- Etkileşimli kontrol modu, aşağıdaki YouTube bağlantısı gibi:
Adım 1: MALZEME FATURASI
B. O. M listesi:
Etkileşimli mod için, NodeMCU'dan lambanın rengini kontrol etmek için gyro verilerini almak için MPU6050 kullanıyorum.
Bu proje için malzeme resmi:
2. Adım: DEVRE
Bu, yukarıdaki Fritzing şeması gibi, 1 RGB Led ortak anot tipi, üç limit akım direnci R100 & MPU6050 ile çok basit bir devredir.
Reflektör, herhangi bir kırık lambadan kullanılır ve nodeMCU tabanına 2 cıvata ile bağlanır veya güçlü bir yapıştırıcı ile yapıştırılır.
Kurulum işi:
Aşağıdaki şematik:
Adım 3: MANYETİK TABAN - ESNEK KOL
Esnek kol, kırık esnek su musluklarından tekrar kullanılabilir. Bunun gibi bir şey:
Bazı ipuçları ile esnek kolun altındaki kalıcı mıknatıs tabanına bağlamaya çalışıyoruz. Üstte, devre kartımıza ve güneş enerjisi/akü şarj cihazımıza bağlamak için bir delik açtık. Bu taban ile masa, zemin gibi yüzeylere lamba koyabiliriz….; veya çelik direk, çelik yapı gibi manyetik malzemeler üzerine takılabilir.
Adım 4: GÜNEŞ – AKÜ ŞARJ CİHAZI
Hasarlı bir şarj lambasından geldi. nodeMCU'ya bir açma/kapama anahtarı ve güç kabloları kaynağı ekledim. Ayrıca bir USB bağlantı noktası çıkışı ve pil şarj cihazı için bir fişe sahiptir.
Adım 5: HEP BİRLİKTE BAĞLAYIN
Tüm parçaların bağlanması: NodeMCU ve reflektör, güneş ve pil hücreleri, esnek kol birlikte.
BİTİŞ
ŞARJ MODU
Adım 6: İNTERAKTİF KONTROL PROGRAMI
Esnek kolu ayarladığımızda veya lambayı döndürdüğümüzde renk değişecektir.
İNTERAKTİF LAMBA
#Dahil etmek |
// MPU6050 Bağımlı Cihaz Adresi |
const uint8_t MPU6050SlaveAddress = 0x68; |
// I2C iletişimi için SDA ve SCL pinlerini seçin - WIRE LIBRARY'de varsayılan pin: NODEMCU'da SCL - D1 & SDA - D2 |
// const uint8_t SCL = D1; |
// const uint8_t SDA = D2; |
sabit int R = 14; |
const int G = 12; |
const int B = 13; |
// MPU6050 birkaç konfigürasyon kayıt adresi |
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, Sıcaklık, GyroX, GyroY, GyroZ; |
geçersiz kurulum() { |
pinMode(R, ÇIKIŞ); |
pinMode(G, ÇIKIŞ); |
pinMode(B, ÇIKIŞ); |
//Seri.başlangıç(9600); |
Wire.begin(SDA, SCL); |
MPU6050_Init(); |
} |
boşluk döngüsü () { |
uint16_t Ax, Ay, Az, T, Gx, Gy, Gz; |
uint16_t Kırmızı, Yeşil, Mavi; |
Read_RawValue(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H); |
// Mutlak değer al |
Ax = myAbs(AccelX); |
Ay = myAbs(Hızlanma); |
Az = myAbs(AccelZ); |
// Aralıkta ölçeklendir |
Kırmızı = harita(Ax, 0, 16384, 0, 1023); |
Yeşil = harita(Ay, 0, 16384, 0, 1023); |
Mavi = harita(Az, 0, 16384, 0, 1023); |
// Kontrol etmek için seri baskı |
//Serial.print("Kırmızı: "); Seri.print(Kırmızı); |
//Serial.print("Yeşil: "); Serial.print(Yeşil); |
//Seri.print("Mavi: "); Seri.baskı(Mavi); |
// LED'e analog yaz |
analogWrite(R, Kırmızı); // R |
analogWrite(G, Yeşil); // G |
analogWrite(B, Mavi); // B |
gecikme(200); |
} |
void I2C_Write(uint8_t deviceAddress, uint8_t regAddress, uint8_t data){ |
Wire.beginTransmission(deviceAddress); |
Wire.write(regAddress); |
Wire.write(veri); |
Wire.endTransmission(); |
} |
// 14 kaydın tümünü oku |
geçersiz 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()); |
Sıcaklık = (((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()); |
} |
// MPU6050'yi yapılandır |
geçersiz MPU6050_Init(){ |
gecikme(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 derece/saniye tam ölçek |
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00);// set +/- 2g tam ölçek |
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); |
} |
// Mutlak değer |
yüzer myAbs(yüzer){ |
dönüş (in)>0?(in):-(in); |
} |
GitHub tarafından ❤ ile barındırılan rawİNTERAKTİF LAMBA PROGRAMINI görüntüleyin
7. Adım: KABLOSUZ KONTROL PROGRAMI VE ANDROID UYGULAMASI
Başka bir yol, WiFi Ağında Android ile RGB LED'i kontrol etmek için Android Uygulamasını kullanabiliriz. Bağlantı Android Uygulaması: NODEMCU kontrol RGB LED APP
Arduino programı için şu adrese başvurabilirsiniz:
microcontrollerkits.blogspot.com/2016/05/es…
Programı NodeMCU'ya yükledikten sonra, ilk çalıştırma bize seri yazdırmada NodeMCU'nun IP adresini verecektir. Benim durumumda, 80 numaralı bağlantı noktasında 192.164.1.39.
Artık kablosuz lambayı laptop/tablet/cep telefonu ile yukarıdaki adresi internet explorer'a girerek kontrol edebiliyoruz.
Veya Android uygulamasını kullanarak: