Πίνακας περιεχομένων:

Crystal House: 5 Βήματα
Crystal House: 5 Βήματα

Βίντεο: Crystal House: 5 Βήματα

Βίντεο: Crystal House: 5 Βήματα
Βίντεο: Inside a $45,000,000 Los Angeles Modern Mega Mansion with an Outdoor SPA 2024, Νοέμβριος
Anonim
Image
Image
Κρυστάλλινο Σπίτι
Κρυστάλλινο Σπίτι

Τα ζευγάρια και οι οικογένειες που χωρίζουν λόγω μεγάλης απόστασης αισθάνονται συχνά τη λαχτάρα για σύνδεση. Το Crystal House είναι χτισμένο για ζευγάρια και οικογένειες να συνδέονται μεταξύ τους μέσω φώτων. Τα Crystal Houses συνδέονται με σήματα wifi. Όταν πατάτε το κουμπί σε ένα Crystal House, τα φώτα του άλλου Crystal House λαμβάνουν το σήμα και θα ενεργοποιηθούν. Είναι εύκολο και διασκεδαστικό να το φτιάξετε! Θα περάσω βήμα προς βήμα από υλικά/εργαλεία που χρησιμοποιούνται, κατασκευή/δοκιμή κυκλώματος χρησιμοποιώντας Arduino και κατασκευή της δομής του Crystal House

Βήμα 1: Ανταλλακτικά, Εργαλεία, Αναλώσιμα

  • Συγκεντρωμένο φτερό Huzzah ESP8266 (δύο)
  • Perma-Proto Μισό μέγεθος ψωμιού (δύο)
  • Μπαταρία λιθίου -3,7 1200mAh (δύο)
  • Mini On/Off Push-Button Switch (τέσσερα)
  • Μίνι κουμπί NeoPixel (τέσσερα)
  • Breadboard Wire
  • Συγκολλητικό σίδερο & συγκολλητικό
  • Απογυμνωτής καλωδίων
  • Εργαλείο τρίτου χεριού
  • Τετράγωνο ξύλινο ραβδί
  • Ακρυλικό φύλλο
  • Καθαρή κρυστάλλινη πέτρα
  • Διαφανές χαρτί
  • υπερκόλλα

Βήμα 2: Διάγραμμα και κωδικός κυκλώματος

Διάγραμμα και Κωδικός Κυκλώματος
Διάγραμμα και Κωδικός Κυκλώματος

// Instructables Internet of Things Class δείγμα κώδικα // Συνδυασμός εισόδων και εξόδων // Δύο πλήκτρα αποστολής εντολών στην τροφοδοσία AIO // LED και κινητήρας δόνησης (ή οποιαδήποτε ψηφιακή έξοδος) flah/buzz σύμφωνα με τα δεδομένα τροφοδοσίας // // Τροποποιήθηκε από τον Becky Stern 2017 // με βάση παραδείγματα από τη βιβλιοθήκη Adafruit IO Arduino: // https://github.com/adafruit/Adafruit_IO_Arduino // // Η Adafruit επενδύει χρόνο και πόρους παρέχοντας αυτόν τον ανοιχτό κώδικα. // Υποστηρίξτε το Adafruit και το υλικό ανοιχτού κώδικα αγοράζοντας // προϊόντα από το Adafruit! // // Γράφτηκε από τον Todd Treece για τις βιομηχανίες Adafruit // Πνευματικά δικαιώματα (γ) 2016 Adafruit Industries // Άδεια χρήσης υπό την άδεια MIT. // // Όλο το παραπάνω κείμενο πρέπει να περιλαμβάνεται σε οποιαδήποτε αναδιανομή. #περιλαμβάνω

  1. #define NeoPIN1 15

    // Παράμετρος 1 = αριθμός εικονοστοιχείων σε λωρίδα // Παράμετρος 2 = αριθμός pin Arduino (οι περισσότεροι ισχύουν) // Παράμετρος 3 = σημαίες τύπου pixel, προσθέστε μαζί όπως απαιτείται: // NEO_KHZ800 800 KHz bitstream (τα περισσότερα προϊόντα NeoPixel w/WS2812 LED) // NEO_KHZ400 400 KHz (κλασικά «v1» (όχι v2) εικονοστοιχεία FLORA, προγράμματα οδήγησης WS2811) // NEO_GRB Τα εικονοστοιχεία είναι συνδεδεμένα για GRB bitstream (τα περισσότερα προϊόντα NeoPixel) // NEO_RGB Pixels είναι ενσύρματα για RGB bitstream (v1 FLORA pixel, όχι v2) // NEO_RGBW Τα εικονοστοιχεία είναι συνδεδεμένα για RGBW bitstream (προϊόντα NeoPixel RGBW) Adafruit_NeoPixel strip = Adafruit_NeoPixel (2, NeoPIN1, NEO_GRB + NEO_KHZ800).

    /*********************** Adafruit IO Configuration ********************* *********

    / επισκεφτείτε το io.adafruit.com εάν πρέπει να δημιουργήσετε λογαριασμό, // ή εάν χρειάζεστε το κλειδί IO του Adafruit. #define IO_USERNAME "Your user name" #define IO_KEY "Your IO_KEY"

    /***************************** Διαμόρφωση WIFI **************** **********************

    #define WIFI_SSID "Your wifi" #define WIFI_PASS "Your password"

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

    /*********************** Ο κύριος κώδικας ξεκινά εδώ ******************** **********/

    #Include #include #include #include

    // #define LED_PIN 15 #define BUTTON1_PIN 4 #define BUTTON2_PIN 14 // #define MOTOR_PIN 5 // αυτός ο πείρος χρειάζεται δυνατότητα PWM

    // κατάσταση κουμπιού int button1current = 0; int button1last = 0; int button2current = 0; int button2last = 0;

    // ρυθμίστε την "ψηφιακή" ροή AdafruitIO_Feed *command = io.feed ("command"); AdafruitIO_Feed *command2 = io.feed ("command2");

    void setup () {strip.setBrightness (60); strip.begin (); strip.show (); // Αρχικοποιήστε όλα τα εικονοστοιχεία σε "απενεργοποίηση" // ορίστε τις καρφίτσες κουμπιών ως εισόδους με εσωτερική pinMode αντίσταση έλξης (BUTTON1_PIN, INPUT_PULLUP). pinMode (BUTTON2_PIN, INPUT_PULLUP); // ορίστε το pin pin και τον κινητήρα ως ψηφιακές εξόδους // pinMode (MOTOR_PIN, OUTPUT); // pinMode (LED_PIN, OUTPUT);

    // ξεκινήστε τη σειριακή σύνδεση Serial.begin (115200);

    // σύνδεση στο io.adafruit.com Serial.print ("Σύνδεση στο Adafruit IO"); io.connect (); // ρυθμίστε ένα πρόγραμμα χειρισμού μηνυμάτων για τη ροή "εντολή". // η λειτουργία handleMessage (ορίζεται παρακάτω) // θα καλείται κάθε φορά που λαμβάνεται ένα μήνυμα // από το adafruit io. command-> onMessage (handleButton1); command2-> onMessage (handleButton2);

    // περιμένετε μια σύνδεση ενώ (io.status () <AIO_CONNECTED) {Serial.print ("."); καθυστέρηση (500)? }

    // είμαστε συνδεδεμένοι Serial.println (); Serial.println (io.statusText ());

    // βεβαιωθείτε ότι όλες οι ροές λαμβάνουν αμέσως τις τρέχουσες τιμές τους εντολή-> get (); command2-> get (); }

    void loop () {

    // io.run (); απαιτείται για όλα τα σκίτσα. // θα πρέπει να υπάρχει πάντα στο επάνω μέρος της λειτουργίας βρόχου σας //. διατηρεί τον πελάτη συνδεδεμένο στο // io.adafruit.com και επεξεργάζεται τυχόν εισερχόμενα δεδομένα. io.run ();

    // πιάστε την τρέχουσα κατάσταση του κουμπιού. // πρέπει να αναποδογυρίσουμε τη λογική επειδή // χρησιμοποιούμε INPUT_PULLUP. εάν (digitalRead (BUTTON1_PIN) == LOW) {button1current = 1; } if (digitalRead (BUTTON2_PIN) == LOW) {button2current = 1; } if (digitalRead (BUTTON2_PIN) == HIGH && digitalRead (BUTTON1_PIN) == HIGH) {button1current = 0; button2current = 0; }

    // επιστροφή αν η τιμή δεν έχει αλλάξει εάν (button1current == button1last && button2current == button2last) return?

    // αποθηκεύστε την τρέχουσα κατάσταση στην "ψηφιακή" ροή του adafruit io Serial.print ("κουμπί αποστολής 1 κατάσταση ->"); Serial.println (button1current); εντολή-> αποθήκευση (button1current);

    // αποθηκεύστε την τρέχουσα κατάσταση στην "ψηφιακή" ροή του adafruit io Serial.print ("κουμπί αποστολής 2 κατάσταση ->"); Serial.println (button2current); command2-> save (button2current);

    // αποθηκεύστε την κατάσταση του τελευταίου κουμπιού button1last = button1current; button2last = button2current; }

    // αυτή η λειτουργία καλείται κάθε φορά που λαμβάνεται ένα μήνυμα "εντολής" // από το Adafruit IO. ήταν προσαρτημένο στη // ροή εντολών στην παραπάνω συνάρτηση setup (). void handleButton1 (AdafruitIO_Data *data) {

    int command = data-> toInt ();

    εάν (εντολή == 1) {// ανάβει το πρώτο pixel Serial.print ("ελήφθη από την εντολή (κουμπί 1) <-"); Serial.println (εντολή); // analogWrite (MOTOR_PIN, 200); // καθυστέρηση (500). // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (0, strip. Color (200, 100, 0)); // Κίτρινη λωρίδα. Εμφάνιση (); } else {Serial.print ("ελήφθη από την εντολή (κουμπί 1) <-"); Serial.println (εντολή); strip.setPixelColor (0, strip. Color (0, 0, 0)); // off strip.show (); }} // αυτή η λειτουργία καλείται κάθε φορά που λαμβάνεται ένα μήνυμα "εντολής" // από το Adafruit IO. ήταν προσαρτημένο στη // ροή εντολών στην παραπάνω συνάρτηση setup (). void handleButton2 (δεδομένα AdafruitIO_Data *) {

    int command2 = data-> toInt ();

    if (command2 == 1) {// φωτίστε το πρώτο pixel Serial.print ("ελήφθη από την εντολή2 (κουμπί 2) <-"); Serial.println (command2); // analogWrite (MOTOR_PIN, 200); // καθυστέρηση (500). // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (1, ταινία. Χρώμα (255, 128, 128)); // Κίτρινη λωρίδα. Εμφάνιση (); } else {Serial.print ("ελήφθη από την εντολή2 (κουμπί 2) <-"); Serial.println (command2); strip.setPixelColor (1, strip. Color (0, 0, 0)); // off strip.show (); }}

Βήμα 3: Κατασκευή κυκλώματος από πρωτότυπο σε συγκολλημένο

Κατασκευή κυκλώματος από το πρωτότυπο στο συγκολλημένο
Κατασκευή κυκλώματος από το πρωτότυπο στο συγκολλημένο
Κατασκευή κυκλώματος από το πρωτότυπο στο συγκολλημένο
Κατασκευή κυκλώματος από το πρωτότυπο στο συγκολλημένο

Θα σας ενθάρρυνα να δοκιμάσετε ένα breadboard για να δοκιμάσετε το κύκλωμα. Δεδομένου ότι χτίζουμε δύο συσκευές, θα μπορούσαμε να δοκιμάσουμε σε δύο σανίδες. Συγκόλλησα το Neopixel και το κουμπί on.off σε ένα καλώδιο πρωτοτύπων, επειδή είναι ευκολότερο στη χρήση. Αργότερα, μπορείτε εύκολα να κολλήσετε τα καλώδια πρωτοτύπων.

Αφού πετύχουμε με το κύκλωμα πρωτοτύπων, ήρθε η ώρα να φτιάξουμε το πραγματικό μας κύκλωμα. Χρησιμοποιώ το breadboard Perma-proto αφού είναι μικρότερο και η σύνδεση του κυκλώματος θα είναι πολύ καλύτερη από το πρωτότυπο κύκλωμα. Όταν πρόκειται για συγκόλληση, απαιτεί πολλή υπομονή. Μην τα παρατάς ακόμα! Φτάνεις εκεί!

Μόλις ολοκληρώσετε το κύκλωμά σας και ανεβάσετε τον κωδικό στο ESP8266, οι δύο συσκευές θα πρέπει να λειτουργούν όπως αναφέραμε στην αρχή.

Βήμα 4: Μορφή & Υλικό

Μορφή & Υλικό
Μορφή & Υλικό
Μορφή & Υλικό
Μορφή & Υλικό
Μορφή & Υλικό
Μορφή & Υλικό
Μορφή & Υλικό
Μορφή & Υλικό

Τώρα ας φτιάξουμε το Crystal House μας!

Κόψτε το ξύλο σε 6 ίντσες. Χρειαζόμαστε συνολικά 18 κομμάτια. Δεδομένου ότι θέλω κάποια παραλλαγή από αυτά τα δύο κρυστάλλινα σπίτια, χρησιμοποίησα 7 κομμάτια στο ένα και 9 κομμάτια στο άλλο. Κολλήστε τα κομμάτια σε μια δομή κουτιού. Έκοψα δύο ακρυλικά φύλλα σε 6 επί 6 ίντσες και τα κόλλησα στο κάτω μέρος των κρυστάλλινων σπιτιών.

Μόλις τελειώσετε τη δομή των σπιτιών. Ας διακοσμήσουμε τα σπίτια! Έκοψα ένα κομμάτι διαφανές χρωματιστό χαρτί και τα κόλλησα στο ακρυλικό φύλλο. Μετά από αυτό, χρησιμοποίησα μερικούς διαφανείς πλαστικούς κρυστάλλους και τους κόλλησα στη βάση. Δεδομένου ότι έχω ένα διαφανές χρωματιστό χαρτί στο κάτω μέρος των κρυστάλλων, οι κρύσταλλοι αντανακλώνται σε διαφορετικά χρώματα.

Βήμα 5: Τώρα ας χρησιμοποιήσουμε τα κρυστάλλινα σπίτια

Τώρα ας χρησιμοποιήσουμε τα κρυστάλλινα σπίτια
Τώρα ας χρησιμοποιήσουμε τα κρυστάλλινα σπίτια
Τώρα ας χρησιμοποιήσουμε τα κρυστάλλινα σπίτια
Τώρα ας χρησιμοποιήσουμε τα κρυστάλλινα σπίτια

Δώστε στον αγαπημένο σας το κρυστάλλινο σπίτι που φτιάξατε. Πείτε τους ότι είναι σημαντικοί! Μπορείτε πάντα να τροποποιήσετε την εξωτερική δομή χρησιμοποιώντας διαφορετικά υλικά και χρώματα. Να μου πεις πως πάει!

Συνιστάται: