
İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13


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:

8. Adım: BAZI RESİMLER
Önerilen:
İnsan Boyutlu Telepresence Robotu Tutucu Kollu: 5 Adımlı (Resimli)

Tutucu Kollu İnsan Boyutunda Telepresence Robotu: MANIFESTOA çılgın düşmanım, bir pandemi sırasında beni bir Cadılar Bayramı partisine (30+ kişi) davet etti, ben de ona katılacağımı söyledim ve odamdaki partide tahribat yaratmak için bir telepresence robotu tasarlamaya başladım. yer. Telep nedir bilmiyorsanız
Pille Çalışan Ofis. Otomatik Geçişli Doğu/Batı Güneş Panelleri ve Rüzgar Türbinli Güneş Sistemi: 11 Adım (Resimlerle)

Pille Çalışan Ofis. Doğu/Batı Otomatik Geçişli Güneş Sistemi Güneş Panelleri ve Rüzgar Türbini: Proje: 200 metrekarelik bir ofisin pille çalışması gerekiyor. Ofis ayrıca bu sistem için gerekli tüm kontrolörleri, pilleri ve bileşenleri içermelidir. Güneş ve rüzgar enerjisi pilleri şarj edecek. Sadece ufak bir sorun var
Stencil Lamba - Bir Lamba Birçok Ton: 5 Adım

Şablon Lamba - Bir Lamba Birçok Ton: Bu talimat size değiştirilebilir gölgeli basit bir lambanın nasıl yapıldığını gösterecektir (Bu bir abajurdur)
Pilsiz Güneş Işığı veya Güneş Gün Işığı Neden Olmasın?: 3 Adım

Pilsiz Güneş Işığı veya Güneş Gün Işığı… Neden Olmasın?: Hoş Geldiniz. ingilizcem için özür dilerimDaylight? Güneş? Niye ya? Gündüzleri biraz karanlık bir odam var ve kullanırken ışıkları açmam gerekiyor. Gündüz ve gece güneş ışığını kurun (1 oda): (Şili'de)-Güneş paneli 20w: 42 $-Pil: 15 $-Güneş enerjisi şarj kontr
Arduino Tabanlı Robot Kollu Uygun Fiyatlı Görme Çözümü: 19 Adım (Resimlerle)

Arduino Tabanlı Robot Kollu Uygun Fiyatlı Görme Çözümü: Yapay görme hakkında konuştuğumuzda, bize her zaman ulaşılmaz geliyor. Herkes için yapması çok kolay olan açık kaynaklı bir vizyon demosu yaptık. Bu videoda OpenMV kamera ile kırmızı küp nerede olursa olsun robot