İçindekiler:

Bluetooth Akıllı Telefon Kontrollü Akıllı LED Lamba: 7 Adım
Bluetooth Akıllı Telefon Kontrollü Akıllı LED Lamba: 7 Adım

Video: Bluetooth Akıllı Telefon Kontrollü Akıllı LED Lamba: 7 Adım

Video: Bluetooth Akıllı Telefon Kontrollü Akıllı LED Lamba: 7 Adım
Video: A101 Elitled Hoparlörlü RGB Led Ampul | İnceleme | Ses Kalitesi | Işık Şiddeti 2024, Temmuz
Anonim
Image
Image
Bluetooth Akıllı Telefon Kontrollü Akıllı LED Lamba
Bluetooth Akıllı Telefon Kontrollü Akıllı LED Lamba

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

Malzemeleri Toplayın
Malzemeleri Toplayın
Malzemeleri Toplayın
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

Lambanın Yapısını İnşa Etmek
Lambanın Yapısını İnşa Etmek
Lambanın Yapısını İnşa Etmek
Lambanın Yapısını İnşa Etmek

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

3D Şekiller
3D Şekiller
3D Şekiller
3D Ş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 Şeması
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

kod
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

Lambayı Kontrol Etme
Lambayı Kontrol Etme
Lambayı Kontrol Etme
Lambayı Kontrol Etme
Lambayı Kontrol Etme
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!

Mood Lambanızın Keyfini Çıkarın!!
Mood Lambanızın Keyfini Çıkarın!!
Mood Lambanızın Keyfini Çıkarın!!
Mood Lambanızın Keyfini Çıkarın!!
Mood Lambanızın Keyfini Çıkarın!!
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: