İçindekiler:

Kristal Ev: 5 Adım
Kristal Ev: 5 Adım

Video: Kristal Ev: 5 Adım

Video: Kristal Ev: 5 Adım
Video: Çilek Görünümünden Kurtarıyor ?? 2024, Kasım
Anonim
Image
Image
kristal ev
kristal ev

Uzak mesafe nedeniyle ayrılan çiftler ve aileler çoğu zaman bağlantı özlemi duyar. Crystal House, çiftlerin ve ailelerin ışıklar aracılığıyla birbirleriyle bağlantı kurmaları için inşa edilmiştir. Kristal Evler wifi sinyalleri ile bağlanır. Bir Kristal Evdeki düğmeye bastığınızda, diğer Kristal Evin ışıkları sinyali alır ve açılır. Yapması kolay ve eğlenceli! Kullanılan malzemeler/araçlar, Arduino kullanarak devre kurma/test etme ve Kristal Evin yapısını inşa etme adım adım ilerliyor olacağım.

Adım 1: Parçalar, Araçlar, Sarf Malzemeleri

  • Montajlı Tüy Huzzah ESP8266 (iki)
  • Perma-Proto Yarım boy breadboard (iki)
  • Lityum Pil -3.7 1200mAh (iki)
  • Mini Açma/Kapama Düğmesi Anahtarı (dört)
  • NeoPixel Mini Düğme (dört)
  • Breadboard Tel
  • Havya ve Lehim
  • tel striptizci
  • Üçüncü El aracı
  • Kare tahta çubuk
  • Akrilik levha
  • Berrak kristal taş
  • Şeffaf kağıt
  • Süper yapıştırıcı

Adım 2: Devre Şeması ve Kodu

Devre Şeması ve Kodu
Devre Şeması ve Kodu

// Instructables Nesnelerin İnterneti Sınıfı örnek kodu// Girişleri ve Çıkışları Birleştirme // İki buton AIO beslemesine komutlar gönderir // Besleme verilerine göre LED ve titreşimli motor (veya herhangi bir dijital çıkış) flaş/buzz // // Becky tarafından değiştirilir Stern 2017 // Adafruit IO Arduino Kütüphanesinden örneklere dayanmaktadır: // https://github.com/adafruit/Adafruit_IO_Arduino // // Adafruit, bu açık kaynak kodunu sağlayarak zaman ve kaynaklara yatırım yapar. // Lütfen Adafruit'ten // ürünleri satın alarak Adafruit ve açık kaynaklı donanımları destekleyin! // // Todd Treece tarafından Adafruit Industries için yazılmıştır // Telif hakkı (c) 2016 Adafruit Industries // MIT lisansı altında lisanslanmıştır. // // Yukarıdaki tüm metinler herhangi bir yeniden dağıtıma dahil edilmelidir. #Dahil etmek

  1. #define NeoPIN1 15

    // Parametre 1 = şeritteki piksel sayısı // Parametre 2 = Arduino pin numarası (çoğu geçerlidir) // Parametre 3 = piksel tipi bayraklar, gerektiği gibi ekleyin: // NEO_KHZ800 800 KHz bit akışı (çoğu NeoPixel ürünü w/WS2812 ile) LED'ler) // NEO_KHZ400 400 KHz (klasik 'v1' (v2 değil) FLORA pikselleri, WS2811 sürücüleri) // NEO_GRB Pikselleri, GRB bit akışı (çoğu NeoPixel ürünü) için kablolanmıştır // NEO_RGB Pikseller, RGB bit akışı (v1 FLORA pikselleri, v2) değil // NEO_RGBW Pikseller RGBW bit akışı için kablolanmıştır (NeoPixel RGBW ürünleri) Adafruit_NeoPixel şeridi = Adafruit_NeoPixel(2, NeoPIN1, NEO_GRB + NEO_KHZ800);

    /**************************** Adafruit IO Konfigürasyonu ************************* *********

    / Bir hesap oluşturmanız gerekiyorsa, // veya Adafruit IO anahtarınıza ihtiyacınız varsa io.adafruit.com adresini ziyaret edin. #define IO_USERNAME "Kullanıcı adınız" #define IO_KEY "IO_KEY'niz"

    /******************************* WIFI Yapılandırması **************** *************************/

    #define WIFI_SSID "Wifi'niz" #define WIFI_PASS "Şifreniz"

    #include "AdafruitIO_WiFi.h" AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);

    /**************************** Ana Kod Buradan Başlar ********************* **********/

    #include #include #include #include

    //#define LED_PIN 15 #define BUTTON1_PIN 4 #define BUTTON2_PIN 14 //#define MOTOR_PIN 5 // bu pin PWM özelliğine ihtiyaç duyar

    // buton durumu int button1current = 0; int button1last = 0; int button2current = 0; int button2last = 0;

    // 'dijital' beslemeyi ayarla AdafruitIO_Feed *command = io.feed("command"); AdafruitIO_Feed *komut2 = io.feed("komut2");

    void setup() { strip.setBrightness(60); strip.begin(); şerit.göster(); // Tüm pikselleri 'kapalı' olarak sıfırlayın // düğme pinlerini dahili pull-up direnci ile giriş olarak ayarlayın pinMode(BUTTON1_PIN, INPUT_PULLUP); pinMode(BUTTON2_PIN, INPUT_PULLUP); // led pini ve motor pinini dijital çıkış olarak ayarlayın // pinMode(MOTOR_PIN, OUTPUT); // pinMode(LED_PIN, ÇIKIŞ);

    // seri bağlantıyı başlat Serial.begin(115200);

    // io.adafruit.com'a bağlanın Serial.print("Adafruit IO'ya Bağlanıyor"); io.connect(); // 'komut' beslemesi için bir mesaj işleyici ayarlayın. // handleMessage işlevi (aşağıda tanımlanmıştır) // adafruit io'dan bir mesaj alındığında // çağrılacak. komut->onMessage(handleButton1); command2->onMessage(handleButton2);

    // bağlantı bekleyin while(io.status() < AIO_CONNECTED) { Serial.print("."); gecikme(500); }

    // bağlıyız Serial.println(); Serial.println(io.statusText());

    // tüm beslemelerin mevcut değerlerini hemen aldığından emin olun command->get(); komut2->get(); }

    boşluk döngüsü () {

    // io.run(); tüm eskizler için gereklidir. // her zaman döngünüzün en üstünde bulunmalıdır // işlevi. istemciyi // io.adafruit.com'a bağlı tutar ve gelen verileri işler. io.run();

    // butonun mevcut durumunu al. // mantığı çevirmemiz gerekiyor çünkü // INPUT_PULLUP kullanıyoruz. if(digitalRead(BUTTON1_PIN) == DÜŞÜK){ button1current = 1; } if (digitalRead(BUTTON2_PIN) == DÜŞÜK){ button2current = 1; } if (digitalRead(BUTTON2_PIN) == YÜKSEK && digitalRead(BUTTON1_PIN) == YÜKSEK){ button1current = 0; button2current = 0; }

    // değer değişmediyse dön if(button1current == button1last && button2current == button2last) return;

    // mevcut durumu adafruit io Serial.print'teki 'dijital' beslemeye kaydedin("düğme 1 durumu gönderiliyor -> "); Serial.println(button1current); komut->kaydet(button1current);

    // mevcut durumu adafruit io Serial.print("düğme 2 durumu gönderme -> "); Serial.println(button2current); command2->save(button2current);

    // son düğme durumunu kaydet button1last = button1current; button2last = button2current; }

    // Adafruit IO'dan bir 'komut' mesajı // alındığında bu fonksiyon çağrılır. // yukarıdaki setup() işlevindeki komut beslemesine eklendi. void handleButton1(AdafruitIO_Data *veri) {

    int komutu = data->toInt();

    if (komut == 1){ //ilk pikseli aydınlat Serial.print("komuttan alındı (düğme 1) <- "); Serial.println(komut); // analogWrite(MOTOR_PIN, 200); // gecikme(500); // analogWrite(MOTOR_PIN, 0); strip.setPixelColor(0, strip. Color(200, 100, 0)); // Sarı şerit.göster(); } else { Serial.print("komuttan alındı (düğme 1) <- "); Serial.println(komut); strip.setPixelColor(0, strip. Color(0, 0, 0)); // strip.show(); } } // Adafruit IO'dan bir 'komut' mesajı // alındığında bu fonksiyon çağrılır. // yukarıdaki setup() işlevindeki komut beslemesine eklendi. void handleButton2(AdafruitIO_Data *veri) {

    int komut2 = data->toInt();

    if (komut2 == 1){ //ilk pikseli aydınlat Serial.print("komut2'den alındı (düğme 2) <- "); Serial.println(komut2); // analogWrite(MOTOR_PIN, 200); // gecikme(500); // analogWrite(MOTOR_PIN, 0); strip.setPixelColor(1, strip. Color(255, 128, 128)); // Sarı şerit.göster(); } else { Serial.print("komut2'den alındı (düğme 2) <- "); Serial.println(komut2); strip.setPixelColor(1, strip. Color(0, 0, 0)); // strip.show(); } }

Adım 3: Prototipten Lehimlemeye Devre İnşası

Prototipten Lehimlemeye Devre Yapımı
Prototipten Lehimlemeye Devre Yapımı
Prototipten Lehimlemeye Devre Yapımı
Prototipten Lehimlemeye Devre Yapımı

Devreyi test etmek için bir breadboard üzerinde denemenizi tavsiye ederim. İki cihaz oluşturduğumuz için iki breadboard üzerinde test edebiliyoruz. Neopixel ve on.off butonunu kullanımı daha kolay olduğu için bir prototip teline lehimledim. Daha sonra prototipleme kablolarını kolayca lehimleyebilirsiniz.

Prototip devresi ile başarılı olduktan sonra gerçek devremizi kurmanın zamanı geldi. Perma-proto breadboard kullanıyorum çünkü daha küçük ve devrenin bağlantısı prototipleme devresinden çok daha iyi olacak. Lehimleme söz konusu olduğunda, çok sabır gerektirir. Henüz vazgeçme! oraya gidiyorsun!

Devrenizi bitirip kodu ESP8266'nıza yükledikten sonra, iki cihaz da başta bahsettiğimiz gibi çalışmalıdır.

Adım 4: Form ve Malzeme

Form ve Malzeme
Form ve Malzeme
Form ve Malzeme
Form ve Malzeme
Form ve Malzeme
Form ve Malzeme
Form ve Malzeme
Form ve Malzeme

Şimdi Kristal Evimizi yapalım!

Tahta çubuğu 6 inç olacak şekilde kesin. Toplamda 18 parçaya ihtiyacımız var. Bu iki kristal evden biraz farklılaşmak istediğim için birinde 7 adet diğerinde 9 adet kullandım. Parçaları bir kutu yapısına yapıştırın. İki akrilik levhayı 6 x 6 inç boyutunda kesip Kristal Evlerin dibine yapıştırdım.

Evlerin yapısını bitirdikten sonra. Evleri dekore edelim! Bir parça şeffaf renkli kağıt kestim ve akrilik kağıda yapıştırdım. Daha sonra şeffaf plastik kristaller kullandım ve bunları tabana yapıştırdım. Kristallerin alt kısmında şeffaf renkli bir kağıdım olduğu için kristaller farklı renklere yansıyor.

Adım 5: Şimdi Kristal Evleri Kullanalım

Şimdi Kristal Evleri Kullanalım
Şimdi Kristal Evleri Kullanalım
Şimdi Kristal Evleri Kullanalım
Şimdi Kristal Evleri Kullanalım

Yaptığınız kristal evi sevgilinize hediye edin. Onlara önemli olduklarını söyleyin! Farklı malzemeler ve renkler kullanarak dış yapıyı her zaman değiştirebilirsiniz. Nasıl gittiğini bana bildirin!

Önerilen: