Indholdsfortegnelse:

Crystal House: 5 trin
Crystal House: 5 trin

Video: Crystal House: 5 trin

Video: Crystal House: 5 trin
Video: Minecraft NOOB vs PRO: HOW NOOB BUILD THIS RAREST EMERALD CRYSTAL HOUSE? Challenge 100% trolling 2024, November
Anonim
Image
Image
Krystalhus
Krystalhus

Par og familier, der er adskilt på grund af lang afstand, føler ofte længslen efter forbindelse. Crystal House er bygget til par og familier til at forbinde med hinanden gennem lys. Crystal Houses er forbundet med wifi -signaler. Når du trykker på knappen på det ene krystalhus, modtager det andet krystalhuss lys signalet og tændes. Det er let og sjovt at lave! Jeg vil gå trin for trin igennem fra anvendte materialer/værktøjer, bygge-/testkredsløb ved hjælp af Arduino og bygge strukturen i Crystal House

Trin 1: Dele, værktøjer, forbrugsvarer

  • Samlet fjer Huzzah ESP8266 (to)
  • Perma-Proto brødbræt i halv størrelse (to)
  • Litiumbatteri -3,7 1200mAh (to)
  • Mini tænd/sluk-knapkontakt (fire)
  • NeoPixel mini -knap (fire)
  • Breadboard Wire
  • Loddejern & lodning
  • Wire stripper
  • Tredje hånds værktøj
  • Firkantet træpind
  • Akrylplade
  • Klar krystalsten
  • Gennemsigtigt papir
  • super lim

Trin 2: Kredsløbsdiagram og kode

Kredsløbsdiagram og kode
Kredsløbsdiagram og kode

// Instructables Internet of Things Klasseeksempelkode // Kombination af input og output // To trykknapper sender kommandoer til AIO -feed // LED og vibrerende motor (eller en hvilken som helst digital udgang) flah/buzz i henhold til feeddata // // Ændret af Becky Stern 2017 // baseret på eksempler fra Adafruit IO Arduino Library: // https://github.com/adafruit/Adafruit_IO_Arduino // // Adafruit investerer tid og ressourcer ved at levere denne open source -kode. // Support venligst Adafruit og open source hardware ved at købe // produkter fra Adafruit! // // Skrevet af Todd Treece for Adafruit Industries // Copyright (c) 2016 Adafruit Industries // Licenseret under MIT -licensen. // // Al tekst ovenfor skal medtages i enhver omfordeling. #omfatte

  1. #define NeoPIN1 15

    // Parameter 1 = antal pixel i strimmel // Parameter 2 = Arduino pin -nummer (de fleste er gyldige) // Parameter 3 = pixeltypeflag, tilføj efter behov: // NEO_KHZ800 800 KHz bitstream (de fleste NeoPixel -produkter m/WS2812 LED'er) // NEO_KHZ400 400 KHz (klassiske 'v1' (ikke v2) FLORA -pixels, WS2811 -drivere) // NEO_GRB Pixels er tilsluttet GRB -bitstrøm (de fleste NeoPixel -produkter) // NEO_RGB -pixels er forbundet til RGB -bitstrøm (v1 FLORA -pixels, ikke v2) // NEO_RGBW Pixels er forbundet til RGBW bitstream (NeoPixel RGBW -produkter) Adafruit_NeoPixel strip = Adafruit_NeoPixel (2, NeoPIN1, NEO_GRB + NEO_KHZ800);

    /************************ Adafruit IO -konfiguration ********************** *********

    / besøg io.adafruit.com, hvis du har brug for at oprette en konto, // eller hvis du har brug for din Adafruit IO -nøgle. #define IO_USERNAME "Dit brugernavn" #define IO_KEY "Dit IO_KEY"

    /****************************** WIFI -konfiguration **************** ***********************/

    #define WIFI_SSID "Din wifi" #define WIFI_PASS "Din adgangskode"

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

    /************************ Hovedkoden starter her ********************** ***********/

    #include #include #include #include

    // #definere LED_PIN 15 #define BUTTON1_PIN 4 #define BUTTON2_PIN 14 // #definere MOTOR_PIN 5 // denne pin har brug for PWM -funktion

    // button state int button1current = 0; int button1last = 0; int button2current = 0; int button2last = 0;

    // konfigurer det 'digitale' feed AdafruitIO_Feed *kommando = io.feed ("kommando"); AdafruitIO_Feed *command2 = io.feed ("command2");

    void setup () {strip.setBrightness (60); strip.begin (); strip.show (); // Initialiser alle pixels til 'off' // indstil knapstifter som input med intern pull-up-modstand pinMode (BUTTON1_PIN, INPUT_PULLUP); pinMode (BUTTON2_PIN, INPUT_PULLUP); // indstil led pin og motor pin som digitale udgange // pinMode (MOTOR_PIN, OUTPUT); // pinMode (LED_PIN, OUTPUT);

    // start den serielle forbindelse Serial.begin (115200);

    // oprette forbindelse til io.adafruit.com Serial.print ("Opretter forbindelse til Adafruit IO"); io.connect (); // konfigurer en meddelelsesbehandler til 'kommandofeed'et. // handleMessage -funktionen (defineret nedenfor) // vil blive kaldt, når en besked // modtages fra adafruit io. kommando-> onMessage (handleButton1); command2-> onMessage (handleButton2);

    // vent på en forbindelse, mens (io.status () <AIO_CONNECTED) {Serial.print ("."); forsinkelse (500); }

    // vi er forbundet Serial.println (); Serial.println (io.statusText ());

    // sørg for at alle feeds får deres aktuelle værdier med det samme kommando-> get (); command2-> get (); }

    void loop () {

    // io.run (); er påkrævet for alle skitser. // den skal altid være til stede øverst i din loop // -funktion. det holder klienten forbundet til // io.adafruit.com og behandler eventuelle indgående data. io.run ();

    // tag den aktuelle tilstand af knappen. // vi er nødt til at vende logikken, fordi vi // bruger INPUT_PULLUP. hvis (digitalRead (BUTTON1_PIN) == LOW) {button1current = 1; } hvis (digitalRead (BUTTON2_PIN) == LOW) {button2current = 1; } hvis (digitalRead (BUTTON2_PIN) == HIGH && digitalRead (BUTTON1_PIN) == HIGH) {button1current = 0; button2current = 0; }

    // return, hvis værdien ikke er ændret, hvis (button1current == button1last && button2current == button2last) return;

    // gem den aktuelle tilstand i det 'digitale' feed på adafruit io Serial.print ("sender knap 1 status ->"); Serial.println (button1current); kommando-> gem (knap1strøm);

    // gem den aktuelle tilstand i det 'digitale' feed på adafruit io Serial.print ("sender knap 2 status ->"); Serial.println (button2current); command2-> gem (button2current);

    // gem den sidste knap tilstand button1last = button1current; button2last = button2current; }

    // denne funktion kaldes, når der modtages en 'kommandomelding' // fra Adafruit IO. den var knyttet til // kommandofeedet i opsætningsfunktionen () ovenfor. void handleButton1 (AdafruitIO_Data *data) {

    int kommando = data-> toInt ();

    hvis (kommando == 1) {// lyser op første pixel Serial.print ("modtaget fra kommando (knap 1) <-"); Serial.println (kommando); // analogWrite (MOTOR_PIN, 200); // forsinkelse (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (0, strip. Color (200, 100, 0)); // Gul strip.show (); } else {Serial.print ("modtaget fra kommando (knap 1) <-"); Serial.println (kommando); strip.setPixelColor (0, strip. Color (0, 0, 0)); // off strip.show (); }}} // denne funktion kaldes, hver gang der modtages en kommandobesked // fra Adafruit IO. den var knyttet til // kommandofeedet i opsætningsfunktionen () ovenfor. void handleButton2 (AdafruitIO_Data *data) {

    int command2 = data-> toInt ();

    hvis (command2 == 1) {// lyser den første pixel Serial.print ("modtaget fra kommando2 (knap 2) <-"); Serial.println (kommando2); // analogWrite (MOTOR_PIN, 200); // forsinkelse (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (1, strip. Color (255, 128, 128)); // Gul strip.show (); } else {Serial.print ("modtaget fra kommando2 (knap 2) <-"); Serial.println (kommando2); strip.setPixelColor (1, strip. Color (0, 0, 0)); // off strip.show (); }}

Trin 3: Kredsløbskonstruktion fra prototype til loddet

Kredsløbskonstruktion fra prototype til loddet
Kredsløbskonstruktion fra prototype til loddet
Kredsløbskonstruktion fra prototype til loddet
Kredsløbskonstruktion fra prototype til loddet

Jeg vil opfordre dig til at prøve et brødbræt for at teste kredsløbet. Da vi bygger to enheder, kunne vi teste på to brødbrætter. Jeg lodde Neopixel og tænd / sluk -knappen til en prototypetråd, da den er lettere at bruge. Senere kan du let lodde prototypetrådene af.

Når det lykkes os med prototypekredsløbet, er det tid til at bygge vores rigtige kredsløb. Jeg bruger Perma-proto breadboard, da det er mindre, og forbindelsen til kredsløbet vil være meget bedre end prototypekredsløbet. Når det kommer til lodning, kræver det meget tålmodighed. Giv ikke op endnu! Du kommer derhen!

Når du er færdig med dit kredsløb og uploadet koden til din ESP8266, skal de to enheder fungere som vi nævnte i begyndelsen.

Trin 4: Form og materiale

Form og materiale
Form og materiale
Form og materiale
Form og materiale
Form og materiale
Form og materiale
Form og materiale
Form og materiale

Lad os nu lave vores krystalhus!

Skær træpinden i 6 tommer. Vi har brug for 18 stykker i alt. Da jeg vil have lidt variation fra disse to krystalhus, brugte jeg 7 stykker i det ene og 9 stykker i det andet. Lim stykkerne ind i en kassestruktur. Jeg skar to akrylark til 6 x 6 tommer og limede dem ind i bunden af krystalhusene.

Når du er færdig med husenes struktur. Lad os dekorere husene! Jeg skar et stykke gennemsigtigt farvet papir og limede dem på akrylarket. Derefter brugte jeg nogle klare plastkrystaller og limede dem på bunden. Da jeg har et gennemsigtigt farvet papir i bunden af krystallerne, reflekteres krystallerne til forskellige farver.

Trin 5: Lad os nu bruge krystalhusene

Lad os nu bruge krystalhusene
Lad os nu bruge krystalhusene
Lad os nu bruge krystalhusene
Lad os nu bruge krystalhusene

Giv din elskede det krystalhus, du har lavet. Fortæl dem, at de er vigtige! Du kan altid ændre den udvendige struktur ved hjælp af forskellige materialer og farver. Lad mig vide, hvordan det går!

Anbefalede: