Spisu treści:

Kryształowy dom: 5 kroków
Kryształowy dom: 5 kroków

Wideo: Kryształowy dom: 5 kroków

Wideo: Kryształowy dom: 5 kroków
Wideo: Karmiczne więzy i gromadzenie bagażu w pamięci komórkowej -Runanubandha 2024, Listopad
Anonim
Image
Image
Kryształowy Dom
Kryształowy Dom

Pary i rodziny, które są rozdzielone z powodu dużej odległości, często odczuwają tęsknotę za związkiem. Crystal House jest zbudowany dla par i rodzin, aby łączyć się ze sobą za pomocą świateł. Crystal Houses są połączone z sygnałami Wi-Fi. Kiedy naciśniesz przycisk na jednym Kryształowym Domu, światła drugiego Kryształowego Domu otrzymają sygnał i zostaną włączone. To proste i przyjemne w wykonaniu! Przejdę krok po kroku od użytych materiałów/narzędzi, budowy/testowania obwodu za pomocą Arduino i budowy struktury Crystal House

Krok 1: Części, narzędzia, materiały

  • Złożone Pióro Huzzah ESP8266 (dwa)
  • Perma-Proto Połowa deski do krojenia chleba (dwie)
  • Bateria litowa -3,7 1200 mAh (dwie)
  • Mini włącznik/wyłącznik przyciskowy (cztery)
  • Miniprzycisk NeoPixel (cztery)
  • Drut do krojenia chleba
  • Lutownica i lutownica
  • Ściągacz izolacji
  • Narzędzie trzeciej ręki
  • Kwadratowy kij do drewna
  • Arkusz akrylowy
  • Wyczyść kryształowy kamień
  • Przezroczysty papier
  • Super klej

Krok 2: Schemat obwodu i kod

Schemat obwodu i kod
Schemat obwodu i kod

// Przykładowy kod klasy Internetu Rzeczy Instructables// Łączenie wejść i wyjść // Dwa przyciski wysyłają polecenia do kanału AIO // Dioda LED i silnik wibracyjny (lub dowolne wyjście cyfrowe) flah/buzz zgodnie z danymi kanału // // Zmodyfikowane przez Becky Stern 2017 // na podstawie przykładów z Adafruit IO Arduino Library: // https://github.com/adafruit/Adafruit_IO_Arduino // // Adafruit inwestuje czas i zasoby dostarczając ten open source'owy kod. // Proszę wesprzyj Adafruit i sprzęt open source kupując // produkty od Adafruit! // // Autor Todd Treece dla Adafruit Industries // Copyright (c) 2016 Adafruit Industries // Licencjonowane na licencji MIT. // // Cały powyższy tekst musi być uwzględniony w każdej redystrybucji. #włączać

  1. #definiuj NeoPIN1 15

    // Parametr 1 = liczba pikseli w pasku // Parametr 2 = numer pinu Arduino (większość jest prawidłowa) // Parametr 3 = flagi typu piksela, dodaj je w razie potrzeby: // Strumień bitów NEO_KHZ800 800 KHz (większość produktów NeoPixel z WS2812 diody LED) // NEO_KHZ400 400 KHz (klasyczne piksele 'v1' (nie v2) FLORA, sterowniki WS2811) // NEO_GRB Piksele są okablowane dla strumienia bitowego GRB (większość produktów NeoPixel) // Piksele NEO_RGB są okablowane dla strumienia bitowego RGB (piksele v1 FLORA, nie v2) // NEO_RGBW Piksele są podłączone do strumienia bitowego RGBW (produkty NeoPixel RGBW) Adafruit_NeoPixel strip = Adafruit_NeoPixel(2, NeoPIN1, NEO_GRB + NEO_KHZ800);

    /************************* Konfiguracja IO Adafruit ********************** **********

    / odwiedź io.adafruit.com, jeśli potrzebujesz utworzyć konto, // lub jeśli potrzebujesz klucza IO Adafruit. #define IO_USERNAME "Twoja nazwa użytkownika" #define IO_KEY "Twój IO_KEY"

    /****************************** Konfiguracja WIFI *************** **********************/

    #define WIFI_SSID "Twoje wifi" #define WIFI_PASS "Twoje hasło"

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

    /************************* Kod główny zaczyna się tutaj ********************* **********/

    #include #include #include #include

    //#define LED_PIN 15 #define BUTTON1_PIN 4 #define BUTTON2_PIN 14 //#define MOTOR_PIN 5 // ten pin wymaga funkcji PWM

    // stan przycisku int button1current = 0; int ostatni przycisk = 0; int przycisk2prąd = 0; int przycisk2ostatni = 0;

    // skonfiguruj kanał 'cyfrowy' AdafruitIO_Feed *command = io.feed("command"); AdafruitIO_Feed *polecenie2 = io.feed("polecenie2");

    void setup() { strip.setBrightness(60); strip.początek(); strip.pokaż(); // Zainicjuj wszystkie piksele na 'off' // ustaw piny przycisków jako wejścia z wewnętrznym rezystorem podciągającym pinMode(BUTTON1_PIN, INPUT_PULLUP); pinMode(BUTTON2_PIN, INPUT_PULLUP); // ustaw pin led i pin silnika jako wyjścia cyfrowe // pinMode(MOTOR_PIN, OUTPUT); // pinMode(LED_PIN, WYJŚCIE);

    // uruchom połączenie szeregowe Serial.begin(115200);

    // połącz się z io.adafruit.com Serial.print("Łączenie z IO Adafruit"); io.connect(); // skonfiguruj obsługę wiadomości dla kanału „polecenie”. // funkcja handleMessage (zdefiniowana poniżej) // będzie wywoływana za każdym razem, // odebrana wiadomość z adafruit io. polecenie->onMessage(handleButton1); polecenie2->onMessage(handleButton2);

    // czekaj na połączenie while(io.status() < AIO_CONNECTED) { Serial.print("."); opóźnienie (500); }

    // jesteśmy połączeni Serial.println(); Serial.println(io.statusText());

    // upewnij się, że wszystkie kanały od razu otrzymują swoje aktualne wartości command->get(); polecenie2->get(); }

    pusta pętla () {

    // io.run(); jest wymagany dla wszystkich szkiców. // powinien zawsze znajdować się na górze // funkcji pętli. utrzymuje klienta połączonego z // io.adafruit.com i przetwarza wszelkie przychodzące dane. io.uruchom();

    // pobierz aktualny stan przycisku. // musimy odwrócić logikę, ponieważ używamy // INPUT_PULLUP. if(digitalRead(BUTTON1_PIN) == LOW){ button1current = 1; } if (digitalRead(BUTTON2_PIN) == LOW){ button2current = 1; } if (digitalRead(BUTTON2_PIN) == HIGH && digitalRead(BUTTON1_PIN) == HIGH){ button1current = 0; przycisk2prąd = 0; }

    // powrót, jeśli wartość nie uległa zmianie if(button1current == button1last && button2current == button2last) return;

    // zapisuje aktualny stan do kanału 'digital' na adafruit io Serial.print("wysyłanie statusu przycisku 1 -> "); Serial.println(button1current); polecenie->zapisz(przycisk1bieżący);

    // zapisuje aktualny stan do 'cyfrowego' kanału na adafruit io Serial.print("wysyłanie statusu przycisku 2 -> "); Serial.println(button2current); polecenie2->zapisz(przycisk2bieżący);

    // zapisz stan ostatniego przycisku button1last = button1current; button2last = button2current; }

    // ta funkcja jest wywoływana za każdym razem, gdy odbierany jest // komunikat "polecenia" z Adafruit IO. został dołączony do // kanału poleceń w funkcji setup() powyżej. void handleButton1(AdafruitIO_Data *dane) {

    int polecenie = dane->toInt();

    if (polecenie == 1){ //podświetl pierwszy piksel Serial.print("otrzymany z polecenia (przycisk 1) <-"); Serial.println(polecenie); // analogWrite(MOTOR_PIN, 200); // opóźnienie(500); // analogWrite(MOTOR_PIN, 0); strip.setPixelColor(0, strip. Color(200, 100, 0)); // Żółty strip.show(); } else { Serial.print("otrzymane z polecenia (przycisk 1) <-"); Serial.println(polecenie); strip.setPixelColor(0, strip. Color(0, 0, 0)); // wyłącz strip.show(); } } // ta funkcja jest wywoływana za każdym razem, gdy odbierany jest komunikat "polecenia" // z Adafruit IO. został dołączony do // kanału poleceń w funkcji setup() powyżej. void handleButton2(AdafruitIO_Data *dane) {

    int polecenie2 = dane->toInt();

    if (polecenie2 == 1){ //podświetl pierwszy piksel Serial.print("otrzymane z polecenia2 (przycisk 2) <-"); Serial.println(polecenie2); // analogWrite(MOTOR_PIN, 200); // opóźnienie(500); // analogWrite(MOTOR_PIN, 0); strip.setPixelColor(1, strip. Color(255, 128, 128)); // Żółty strip.show(); } else { Serial.print("otrzymane z polecenia2 (przycisk 2) <-"); Serial.println(polecenie2); strip.setPixelColor(1, strip. Color(0, 0, 0)); // wyłącz strip.show(); } }

Krok 3: Budowa obwodu od prototypu do lutowania

Budowa obwodu od prototypu do lutowania
Budowa obwodu od prototypu do lutowania
Budowa obwodu od prototypu do lutowania
Budowa obwodu od prototypu do lutowania

Zachęcam do wypróbowania na płytce stykowej, aby przetestować obwód. Ponieważ budujemy dwa urządzenia, mogliśmy przetestować na dwóch płytkach stykowych. Przylutowałem Neopixel i przycisk on.off do przewodu prototypowego, ponieważ jest łatwiejszy w użyciu. Później możesz łatwo odlutować przewody prototypowe.

Po tym, jak odnieśliśmy sukces z obwodem prototypowania, nadszedł czas na zbudowanie naszego prawdziwego obwodu. Używam płytki prototypowej Perma-proto, ponieważ jest ona mniejsza, a połączenie obwodu będzie znacznie lepsze niż w obwodzie prototypowym. Jeśli chodzi o lutowanie, to wymaga dużo cierpliwości. Nie poddawaj się jeszcze! Docierasz tam!

Po zakończeniu obwodu i przesłaniu kodu do ESP8266 oba urządzenia powinny działać tak, jak wspomnieliśmy na początku.

Krok 4: Forma i materiał

Forma i materiał
Forma i materiał
Forma i materiał
Forma i materiał
Forma i materiał
Forma i materiał
Forma i materiał
Forma i materiał

Teraz zróbmy nasz Kryształowy Dom!

Pokrój drewniany kij na 6 cali. Potrzebujemy w sumie 18 sztuk. Ponieważ chcę trochę urozmaicenia tych dwóch kryształowych domów, użyłem 7 sztuk w jednym i 9 sztuk w drugim. Przyklej kawałki do struktury pudełka. Przyciąłem dwa arkusze akrylowe na 6 na 6 cali i przykleiłem je do spodu Crystal Houses.

Po zakończeniu budowy domów. Udekorujmy domy! Wyciąłem kawałek przezroczystego kolorowego papieru i przykleiłem je do arkusza akrylowego. Następnie użyłem przezroczystych plastikowych kryształków i przykleiłem je do podstawy. Ponieważ na dole kryształów mam przezroczysty kolorowy papier, kryształy odbijają się w różnych kolorach.

Krok 5: Teraz skorzystajmy z kryształowych domów

Teraz skorzystajmy z kryształowych domów
Teraz skorzystajmy z kryształowych domów
Teraz skorzystajmy z kryształowych domów
Teraz skorzystajmy z kryształowych domów

Podaruj swojej ukochanej kryształowy dom, który stworzyłeś. Powiedz im, że są ważni! Zawsze możesz modyfikować strukturę zewnętrzną, używając różnych materiałów i kolorów. Daj mi znać jak idzie!

Zalecana: