İçindekiler:
- Adım 1: Malzemeleri Toplayın
- Adım 2: Lambanın Yapısını Oluşturma
- Adım 3: 3B Şekiller
- Adım 4: Bileşenlerin Şeması
- Adım 5: Kod
- Adım 6: Lambayı Kontrol Etme
- 7. Adım: Mood Lambanızın Keyfini Çıkarın!
Video: Bluetooth Akıllı Telefon Kontrollü Akıllı LED Lamba: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Her zaman aydınlatma aletlerimi kontrol etmeyi hayal ederim. Sonra biri inanılmaz renkli bir LED lamba yaptı. Geçenlerde Youtube'da Joseph Casha'nın bir LED Lambasına rastladım. Ondan ilham alarak çağdaş tasarımı korurken birkaç fonksiyon eklemeye karar verdim.
Plan, bir Bluetooth Modülü ve adreslenebilir WS2812B RGB LED şeridi ekleyerek lambanın daha kullanıcı dostu olmasını sağlamaktır. Bu, yalnızca bir akıllı telefon uygulaması kullanarak aydınlatmanın rengini kontrol etmeyi mümkün kıldı.
Adım 1: Malzemeleri Toplayın
Aletler:
• Lehimleme istasyonu
• Isıtıcı Üfleyici Tabancası
• Matkap Makinesi
• Dairesel testere
• Yapboz
• Tel Kesici Pense
• Dar Burunlu Pense
Malzemeler:
• Yarı Saydam Akrilik Levha
• Japon Selvi Ağacı (ya da yeterince sağlam ve sağlam olduğu sürece herhangi bir ahşabı kullanabilirsiniz)
• Vidalar
• Paslanmaz Çelik Direk veya Çubuk
• Kablolar (Kırmızı ve siyah kablo kullanıyorum)
• Lehim Kalay
Elektronik Bileşenler:
• Arduino Nano
• Bluetooth Modülü HC-05 (Kodlaması Wifi Modülü ESP8266'dan daha kolay olduğu için bunu kullanmaya karar verdim)
• WS2812B Adreslenebilir RGB LED Şerit
• LM2596 Düşürücü Modül
• DC Varil Güç Jakı
Adım 2: Lambanın Yapısını Oluşturma
Bu adımda, lamba-ahşap işleme yöntemi ve 3D baskı yönteminin yapısını oluşturmanın iki yolu var. Ben ilk yöntemi kullanıyorum. 3D yazıcı kullanarak yapmayı tercih ederseniz, tasarladığım model için 2. adıma geçmekten çekinmeyin.
Lambanın üst kısmı için, akrilik levhayı yukarıda gösterildiği gibi 90°'lik bir açıyla ısıtıp büküyorum. Onu bu kadar mükemmel bir açı ve yöne bükmek oldukça uzun zamanımı alıyor.
Ardından, lambanın alt kısmı için. Ne yazık ki… Lambanın alt kısmında çalıştığım gün, yapının fotoğrafını çekmeyi tamamen unuttum! Bu projeyi bitirdiğimde anladım. Ama size lambanın alt kısmının ölçüsünü vermek için elimden geleni yapacağım.
Temel olarak, 13x6x2cm (UxYxG) ölçülerinde dört tahta blok kesmeniz yeterlidir. Ardından, ahşabın kenarında merdiven benzeri bir kesim yapmanız gerekir. Resim yukarıda gösterilecektir.
Adım 3: 3B Şekiller
Kendi 3D yazıcısına sahip olan herkes için doğru adımdasınız. Bu, bu lambayı kullanıcı dostu yaptı.
Dürüst olmak gerekirse, bu attığım en zor adımdı. Yazılımı kurduktan hemen sonra yaptığım ilk şey bu!
Lambanın yapısını tasarlamak için Sketchup Pro kullanıyorum. Ne yazık ki, iç aksamını tasarlayacak kadar becerikli değilim. 3D modelimin bağlantısı aşağıdaki dosyada.
Adım 4: Bileşenlerin Şeması
Bileşenlerin şemalarını oluşturmak için Fritzing kullanıyorum. Şematik aslında oldukça kolaydır.
Adım 5: Kod
Bu ruh hali lambasının kodlanması için Arduino IDE'den bazı kütüphaneler kullandım. Kütüphaneler 7. adımda listelenecektir.
Kod için Arduino yazılımının kendisine sahip olmanız gerekir. İndirmek için link vereceğim.
Ayrıca, taslak veya kod aşağıda gösterilecek mi?
Aşağıdaki kodun buraya kopyalanamayacak kadar uzun olması durumunda kodun dosyasını Github.com'da da sağladım;)
#include #include #include #ifdef _AVR_ #include #endif
YazılımSeri BT(10, 11);
#define LED_PIN 7 #define NUM_LEDS 60 #define PARLAKLIK 200 #define SPEED 10 #define HEMEN 0 #define RAINBOW_SPEED 50 CRGB led[NUM_LEDS];
Adafruit_NeoPixel şeridi = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
bool offOld = DÜŞÜK;
bool WhiteOld = DÜŞÜK; bool RedOld = DÜŞÜK; bool GreenOld = DÜŞÜK; bool MaviEski = DÜŞÜK; bool TopazEski = DÜŞÜK; bool LeylakEski = DÜŞÜK; bool RainbowOld = DÜŞÜK; bool rgbOld = DÜŞÜK; int showType = 0;
geçersiz kurulum() {
FastLED.addLed'ler(led'ler, NUM_LEDS); //////////
BT.başla(9600);
BT.println("Arduino'ya Bağlı");
strip.setBrightness(PARLAKLIK);
strip.begin();
şerit.göster();
}
karakter bir;
boşluk döngüsü () {
for (int i = 0; i <= 59; i++) { ledler = CRGB(255, 255, 255); FastLED.show(); } bool off = DÜŞÜK; bool Beyaz = DÜŞÜK; bool Mavi = DÜŞÜK; bool Kırmızı = DÜŞÜK; bool Yeşil = DÜŞÜK; bool Topaz = DÜŞÜK; bool Leylak = DÜŞÜK; bool Gökkuşağı = DÜŞÜK; bool rgb = DÜŞÜK; bool ende; if (BT.available()) { a= (char)BT.read();
if(a=='o')
{ kapalı = YÜKSEK; BT.println("LED'leri KAPATIYOR..");
}Başka{
kapalı = DÜŞÜK; } // ============================================= ============================================
if(a=='w')
{ Beyaz = YÜKSEK; BT.println("LED'LERİ BEYAZ DÖNDÜRMEK");
}Başka{
Beyaz = DÜŞÜK; } // ============================================= ============================================
if(a=='b')
{ Mavi = YÜKSEK; BT.println("MAVİYE DEĞİŞTİRME"); }else{ Mavi = DÜŞÜK; }
// ===========================================================================================
if(a=='r')
{ Kırmızı = YÜKSEK; BT.println("KIRMIZIYA DEĞİŞTİRİLİYOR"); }else{ Kırmızı = DÜŞÜK; }
// ===========================================================================================
if(a=='g')
{ Yeşil = YÜKSEK; BT.println("YEŞİLLE DEĞİŞİM"); }else{ Yeşil = DÜŞÜK; }
// ===========================================================================================
if(a=='t')
{ Topaz = YÜKSEK; BT.println("TOPAZ'A DEĞİŞİM"); }else{ Topaz = DÜŞÜK; }
// ===========================================================================================
if(a=='l')
{ Leylak = YÜKSEK; BT.println("LİLACA DEĞİŞİM"); }else{ Leylak = DÜŞÜK; }
// ===========================================================================================
if(a=='a')
{ Gökkuşağı = YÜKSEK; BT.println("Gökkuşağı ANİMASYONU"); }else{ Gökkuşağı = DÜŞÜK; } // ============================================= ============================================
if(a=='m')
{ rgb = YÜKSEK; BT.println("KARMA RENKLER"); }else{ rgb = DÜŞÜK; } } if (kapalı == DÜŞÜK && kapalıEski == YÜKSEK) { gecikme(20); if (kapalı == DÜŞÜK) { showType = 0; // Animasyon Kapalı Tip 0 startShow(showType); } }
// ===========================================================================================
if (Beyaz == DÜŞÜK && BeyazEski == YÜKSEK) {
gecikme(20); if (Beyaz == DÜŞÜK) { showType = 1; // Beyaz animasyon Tip 1 startShow(showType); } }
// ============================================== ========================================= if (Kırmızı == DÜŞÜK && RedOld == YÜKSEK) { gecikme(20); if (Kırmızı == DÜŞÜK) { showType = 2; // Kırmızı animasyon Tip 2 startShow(showType); } }
// ===========================================================================================
if (Yeşil == DÜŞÜK && YeşilEski == YÜKSEK) {
gecikme(20); if (Yeşil == DÜŞÜK) { showType = 3; // Yeşil animasyon Tip 3 startShow(showType); } } // ============================================ =============================================
if (Mavi == DÜŞÜK && BlueOld == YÜKSEK) {
gecikme(20); if (Mavi == DÜŞÜK) { showType = 4; // Mavi animasyon Tip 4 startShow(showType); } }
// ===========================================================================================
if (Topaz == DÜŞÜK && TopazEski == YÜKSEK) {
gecikme(20); if (Topaz == DÜŞÜK) { showType = 5; // Topaz animasyonu Tip 5 startShow(showType); } }
// ===========================================================================================
if (Leylak == DÜŞÜK && LeylakOld == YÜKSEK) {
gecikme(20); if (Leylak == DÜŞÜK) { showType = 6; // Topaz animasyonu Tip 6 startShow(showType); } } // ============================================ =============================================
if (Gökkuşağı == DÜŞÜK && RainbowOld == YÜKSEK) {
gecikme(20);
if (Gökkuşağı == DÜŞÜK) {
showType = 8; // Gökkuşağı animasyonu Type 8 startShow(showType); } }
// ===========================================================================================
if (rgb == DÜŞÜK && rgbOld == YÜKSEK) {
gecikme(20);
if (rgb == DÜŞÜK) {
showType = 7; // Karıştırma animasyonu Tip 7 rgb = HIGH;
startShow(showType);
} }
BeyazEski = Beyaz;
KırmızıEski = Kırmızı; MaviEski = Mavi; YeşilEski = Yeşil; TopazEski = Topaz; LeylakEski = Leylak; kapalıEski = kapalı; RainbowOld = Gökkuşağı; rgbEski = rgb;
}
void startShow(int i) {
geçiş(i){
durum 0: colorWipe(şerit. Color(0, 0, 0), SPEED); // Siyah kapalı
kırmak;
durum 1: strip.setBrightness(255); // Parlaklığı MAX olarak değiştirir
colorWipe(şerit. Color(255, 255, 255), HEMEN); // Beyaz şerit.setBrightness(PARLAKLIK); // Parlaklığı Varsayılan değer kesmesine sıfırlayın;
durum 2: colorWipe(şerit. Renk(255, 0, 0), SPEED); // Kırmızı
kırmak;
durum 3: colorWipe(strip. Color(0, 255, 0), SPEED); // Yeşil
kırmak;
durum 4: colorWipe(strip. Color(0, 0, 255), SPEED); // Mavi
kırmak;
durum 5: colorWipe(şerit. Renk(0, 250, 255), SPEED); // Topaz
kırmak;
durum 6: colorWipe(şerit. Renk(221, 130, 255), SPEED); // leylak
kırmak; durum 7: colorWipe(şerit. Renk(255, 0, 0), SPEED); // Red colorWipe(strip. Color(0, 255, 0), SPEED); // Green colorWipe(strip. Color(0, 0, 255), SPEED); // Blue theatreChase(strip. Color(0, 0, 127), SPEED); // Blue theatreChase(strip. Color(127, 0, 0), SPEED); // Red theatreChase(strip. Color(0, 127, 0), SPEED); // Yeşil mola;
durum 8: gökkuşağı Döngüsü(25);
kırmak; } } geçersiz colorWipe(uint32_t c, uint8_t bekle) { for(uint16_t i=0; i
void RainbowCycle(uint8_t bekleyin) {
uint16_t ben, j;
for(j=0; j<256*10; j++) { // çarktaki tüm renklerin 5 döngüsü for(i=0; i< strip.numPixels(); i++) { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255); } şerit.göster(); gecikme(bekle); } }
void TheaterChase(uint32_t c, uint8_t bekleyin) {
for (int j=0; j<10; j++) { //10 döngü takip for (int q=0; q < 3; q++) { for (int i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, c); //her üçüncü pikseli } strip.show();
gecikme(bekle);
for (int i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, 0); // her üçüncü pikseli kapat } } } }
uint32_t Tekerlek(byte WheelPos) {
WheelPos = 255 - WheelPos; if(WheelPos < 85) { dönüş şeridi. Color(255 - WheelPos * 3, 0, WheelPos * 3); } if(WheelPos < 170) { WheelPos -= 85; dönüş şeridi. Renk(0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; dönüş şeridi. Renk(WheelPos * 3, 255 - WheelPos * 3, 0); }
Adım 6: Lambayı Kontrol Etme
Lambanın rengi akıllı telefonunuzu kullanarak kontrol edilebilir.
Öncelikle Google Play Store veya Apple App Store'dan 'Bluetooth Terminal HC-05' adlı uygulamayı yüklemeniz gerekiyor.
Lambayı kendi akıllı telefonunuz aracılığıyla kontrol etme adımları şunlardır:
1. Akıllı telefonunuzda bluetooth'u açın.
2. 'Bluetooth Terminal HC-05' olan uygulamayı açın.
3. Artık eşleştirilmiş cihazları ekranda görmelisiniz. 'HC-05'i seçin.
4. Artık akıllı telefonunuzda 'Arduino'ya bağlı' olduğunu gösteren siyah bir ekran görebilirsiniz.
5. İşin eğlenceli kısmı burada, metin kutusuna 'b' yazarsanız lamba mavi renge dönecektir. Lamba için yazabileceğiniz komutun listesi:
- beyaz için w
- mavi için b
- yeşil için g
- r için kırmızı
- topaz için t
- l leylak için
- gökkuşağı animasyonu için
- o kapalı için
Eğlenceli değil mi?
6. Son olarak, yukarıdaki resimde gösterildiği gibi ekranın altındaki düğmeyi istediğiniz metne göre özelleştirebilirsiniz.
7. Adım: Mood Lambanızın Keyfini Çıkarın!
Umarım bu Eğitilebilir Öğeleri beğenirsiniz. Benim için çok zorlu bir projeydi ama 14 yaşında bir çocuk olarak tamamen bitirmeyi başardım. Gelecekteki iyileştirmeler için bana biraz geri bildirimde bulunun.
Okuduğunuz için teşekkürler ve Mutlu Noeller!
Önerilen:
ESP8266 RGB LED ŞERİT WIFI Kontrolü - NODEMCU Wifi Üzerinden Kontrollü Led Şerit için IR Uzaktan Kumanda Olarak - RGB LED STRIP Akıllı Telefon Kontrolü: 4 Adım
ESP8266 RGB LED ŞERİT WIFI Kontrolü | NODEMCU Wifi Üzerinden Kontrollü Led Şerit için IR Uzaktan Kumanda Olarak | RGB LED STRIP Akıllı Telefon Kontrolü: Merhaba arkadaşlar, bu eğitimde nodemcu veya esp8266'yı bir RGB LED şeridini kontrol etmek için IR uzaktan kumanda olarak nasıl kullanacağımızı öğreneceğiz ve Nodemcu wifi üzerinden akıllı telefon ile kontrol edilecek. Yani temel olarak RGB LED STRIP'i akıllı telefonunuzla kontrol edebilirsiniz
Mumya Lambası - WiFi Kontrollü Akıllı Lamba: 5 Adımda (Resimli)
Mumya Lambası - WiFi Kontrollü Akıllı Lamba: Yaklaşık 230 bin yıl önce insanoğlunun yangını kontrol etmeyi öğrenmesi, ateşin ışığını da kullanarak gece çalışmaya başlamasıyla yaşam tarzında büyük bir değişikliğe yol açmıştır. Bunun İç Aydınlatmanın başlangıcı olduğunu söyleyebiliriz. Simdi ben
Akıllı Telefon Kontrollü Bluetooth LED'leri (Canlı Müzik Senkronizasyonu ile): 7 Adım
Akıllı Telefon Kontrollü Bluetooth LED'ler (Canlı Müzik Senkronizasyonu ile): Bir şeyler inşa etmeyi her zaman sevmişimdir, yeni üniversite yurdumun korkunç bir aydınlatmaya sahip olduğunu öğrendikten sonra, biraz renklendirmeye karar verdim.***UYARI*** İnşa ederseniz bu proje benim kurulumumla aynı ölçekte, makul miktarda ele
Akıllı Telefon Kontrollü Akıllı Alışveriş Sepeti: 7 Adım
Akıllı Telefon Kontrollü Akıllı Alışveriş Sepeti: Alışveriş merkezlerini ziyaret etmek eğlenceli olabilir. Ancak Alışveriş Sepetini bir şeylerle doldururken sürüklemek, düpedüz can sıkıcı bir şey. O dar koridorlardan itip o keskin dönüşleri yapmanın acısı! İşte size (bir tür) teklif
Akıllı Telefon Web Arayüzü ile Kolay 5 Dolarlık Akıllı Lamba: 4 Adım
Akıllı Telefon Web Arayüzü ile 5$'lık Kolay Akıllı Lamba: Merhaba! Benim adım Raphael. Bu benim ilk Eğitilebilirliğim! Bu lambayı yaratmamdaki temel amacım, mobilite açısından dezavantajlı insanların yaşamlarına yardımcı olmaktır. Bir gün, duvarlarda düğmeler veya ulaşılması zor prizler değil, kontrol edilecek akıllı telefonlarımız olacak