תוכן עניינים:

בית קריסטל: 5 שלבים
בית קריסטל: 5 שלבים

וִידֵאוֹ: בית קריסטל: 5 שלבים

וִידֵאוֹ: בית קריסטל: 5 שלבים
וִידֵאוֹ: אתגר - אל תדברו עם סירי ב-3 בלילה 2024, יולי
Anonim
Image
Image
בית קריסטל
בית קריסטל

זוגות ומשפחות שנפרדים בשל מרחק רב חשים לעיתים קרובות את הכמיהה לקשר. קריסטל האוס בנוי לזוגות ומשפחות להתחבר זה לזה באמצעות אורות. בתי קריסטל מחוברים עם אותות wifi. כאשר אתה לוחץ על הכפתור בבית קריסטל אחד, אורות בית הבדולח השני מקבלים את האות ויופעלו. זה קל וכיף להכין! אעבור צעד אחר צעד מחומרים/כלים בהם נעשה שימוש, בניית/בדיקת מעגלים באמצעות ארדואינו ובניית מבנה בית הבדולח

שלב 1: חלקים, כלים, חומרים מתכלים

  • חוזה נוצה מורכבת ESP8266 (שניים)
  • קרש לחם בגודל חצי פרמה (פרומה-פרוטו) (שניים)
  • סוללת ליתיום -3.7 1200mAh (שניים)
  • מתג לחיצה/כפתור מיני (ארבעה)
  • כפתור מיני NeoPixel (ארבעה)
  • חוט לוח
  • מלחם והלחמה
  • חשפן חוטים
  • כלי יד שלישית
  • מקל עץ מרובע
  • יריעת אקריליק
  • אבן קריסטל שקופה
  • נייר שקוף
  • דבק מגע

שלב 2: תרשים מעגל וקוד

תרשים מעגל וקוד
תרשים מעגל וקוד

// מדריכים אינטרנט של דברים קוד דוגמה בכיתה // שילוב כניסות ויציאות // שני לחצנים שולחים פקודות להזנת AIO // LED ומנוע רוטט (או כל פלט דיגיטלי) פלאה/באז על פי נתוני הזנה // // שונה על ידי בקי שטרן 2017 // מבוסס על דוגמאות מספריית Adduruit IO Arduino: // https://github.com/adafruit/Adafruit_IO_Arduino // // Adafruit משקיעה זמן ומשאבים במתן קוד קוד פתוח זה. // אנא תמכו ב- Adafruit ובחומרת קוד פתוח על ידי רכישת // מוצרים מ- Adafruit! // // נכתב על ידי טוד טריס לתעשיות אדפרוט // זכויות יוצרים (ג) תעשיות אדפרוט 2016 // מורשות תחת רישיון MIT. // // כל הטקסט שלמעלה חייב להיות כלול בכל הפצה מחדש. #לִכלוֹל

  1. #הגדר NeoPIN1 15

    // פרמטר 1 = מספר הפיקסלים ברצועה // פרמטר 2 = מספר סיכה Arduino (רובם תקפים) // פרמטר 3 = דגלי סוג פיקסל, הוסיפו יחד לפי הצורך: // NEO_KHZ800 800 KHz bitstream (רוב מוצרי NeoPixel w/WS2812 נוריות) // NEO_KHZ400 400 KHz (קלאסיות 'v1' (לא v2) פיקסלי FLORA, מנהלי התקנים WS2811) // NEO_GRB פיקסלים מחוברים ל- GRB bitstream (רוב מוצרי NeoPixel) // NEO_RGB פיקסלים מחוברים לזרם סיביות RGB (פיקסלים v1 FLORA, לא v2) // NEO_RGBW פיקסלים מחוברים לזרם סיביות RGBW (מוצרי NeoPixel RGBW) רצועת Adafruit_NeoPixel = Adafruit_NeoPixel (2, NeoPIN1, NEO_GRB + NEO_KHZ800);

    /*********************** תצורת IO של Adafruit ********************* *********

    / בקר ב- io.adafruit.com אם אתה צריך ליצור חשבון, // או אם אתה צריך את מפתח ה- IO של Adafruit. #הגדר IO_USERNAME "שם המשתמש שלך" #הגדר IO_KEY "ה- IO_KEY שלך"

    /***************************** תצורת WIFI **************** **********************/

    #הגדר WIFI_SSID "ה- wifi שלך" #הגדר WIFI_PASS "הסיסמה שלך"

    #כלול "AdafruitIO_WiFi.h" AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);

    /*********************** קוד ראשי מתחיל כאן ********************* ***********/

    #include #include #include #include

    // #הגדר LED_PIN 15 #הגדר BUTTON1_PIN 4 #הגדר BUTTON2_PIN 14 // #הגדר MOTOR_PIN 5 // סיכה זו זקוקה ליכולת PWM

    // כפתור מצב int button1current = 0; int button1last = 0; int button2current = 0; int button2last = 0;

    // הגדר את הפקודה 'דיגיטלית' AdafruitIO_Feed *פקודה = io.feed ("פקודה"); AdafruitIO_Feed *command2 = io.feed ("command2");

    הגדרת void () {strip.setBrightness (60); strip.begin (); strip.show (); // אתחל את כל הפיקסלים ל'כבוי '// הגדר סיכות לחצנים ככניסות עם pinMode נגד הנגשה פנימית (BUTTON1_PIN, INPUT_PULLUP); pinMode (BUTTON2_PIN, INPUT_PULLUP); // הגדר סיכת לד וסיכת מנוע כיציאות דיגיטליות // 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 ());

    // ודא שכל הזנות יקבלו את הערכים הנוכחיים שלהן מייד command-> get (); command2-> get (); }

    לולאת חלל () {

    // 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-> שמור (button2current);

    // אחסן מצב כפתור אחרון button1last = button1current; button2last = button2current; }

    // פונקציה זו נקראת בכל פעם שמתקבלת הודעת 'פקודה' // מ- Adafruit IO. הוא צורף ל // הזנת הפקודה בפונקציית ההתקנה () למעלה. void handleButton1 (נתוני AdafruitIO_Data *)

    int command = data-> toInt ();

    if (command == 1) {// להדליק את הפיקסל הראשון Serial.print ("התקבל מהפקודה (כפתור 1) <-"); Serial.println (פקודה); // analogWrite (MOTOR_PIN, 200); // עיכוב (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (0, strip. Color (200, 100, 0)); // צהוב strip.show (); } else {Serial.print ("התקבל מהפקודה (כפתור 1) <-"); Serial.println (פקודה); strip.setPixelColor (0, strip. Color (0, 0, 0)); // off strip.show (); }}} // פונקציה זו נקראת בכל פעם שמתקבלת הודעת 'פקודה' // מ- Adafruit IO. הוא צורף ל // הזנת הפקודה בפונקציית ההתקנה () למעלה. void handleButton2 (נתוני AdafruitIO_Data *)

    int command2 = data-> toInt ();

    if (command2 == 1) {// להדליק את הפיקסל הראשון Serial.print ("התקבל מ- command2 (כפתור 2) <-"); Serial.println (command2); // analogWrite (MOTOR_PIN, 200); // עיכוב (500); // analogWrite (MOTOR_PIN, 0); strip.setPixelColor (1, strip. Color (255, 128, 128)); // צהוב strip.show (); } else {Serial.print ("התקבל מהפקודה 2 (כפתור 2) <-"); Serial.println (command2); strip.setPixelColor (1, strip. Color (0, 0, 0)); // off strip.show (); }}

שלב 3: בניית מעגלים מאב טיפוס להלחמה

בניית מעגלים מאב טיפוס להלחמה
בניית מעגלים מאב טיפוס להלחמה
בניית מעגלים מאב טיפוס להלחמה
בניית מעגלים מאב טיפוס להלחמה

אני ממליץ לך לנסות על לוח לחם לבדוק את המעגל. מכיוון שאנו בונים שני מכשירים, נוכל לבדוק על שני קרש לחם. הלחמתי את Neopixel ואת כפתור on.off לחוט אב טיפוס מכיוון שהוא קל יותר לשימוש. בהמשך תוכל בקלות להלחם את חוטי האב -טיפוס.

אחרי שנצליח עם מעגל האב טיפוס, הגיע הזמן לבנות את המעגל האמיתי שלנו. אני משתמש בלוח הלחם Perma-proto מכיוון שהוא קטן יותר והחיבור של המעגל יהיה הרבה יותר טוב ממעגל האב טיפוס. כשזה מגיע להלחמה, זה דורש הרבה סבלנות. אל תוותרו עדיין! אתה מגיע לשם!

לאחר שתסיים את המעגל והעלית את הקוד ל- ESP8266 שלך, שני המכשירים אמורים לפעול כפי שהזכרנו בהתחלה.

שלב 4: טופס וחומר

טופס וחומר
טופס וחומר
טופס וחומר
טופס וחומר
טופס וחומר
טופס וחומר
טופס וחומר
טופס וחומר

עכשיו בואו נכין את בית הבדולח שלנו!

חותכים את מקל העץ ל -6 אינץ '. אנחנו צריכים 18 חתיכות בסך הכל. מכיוון שאני רוצה קצת וריאציה משני בית הבדולח האלה, השתמשתי ב -7 חלקים באחד וב -9 חלקים בשני. הדביקו את החלקים למבנה קופסה. חתכתי שני יריעות אקריליק בגודל 6 על 6 אינץ 'והדבקתי אותן בתחתית בתי הבדולח.

לאחר שתסיים את מבנה הבתים. בואו לקשט את הבתים! חתכתי פיסת נייר בצבע שקוף והדבקתי אותם על יריעת האקריליק. לאחר מכן השתמשתי בכמה גבישי פלסטיק שקופים והדבקתי אותם על הבסיס. מכיוון שיש לי נייר בצבע שקוף בתחתית הגבישים, הגבישים משתקפים לצבעים שונים.

שלב 5: עכשיו בואו נשתמש בבתי הקריסטל

עכשיו בואו נשתמש בבתי הקריסטל
עכשיו בואו נשתמש בבתי הקריסטל
עכשיו בואו נשתמש בבתי הקריסטל
עכשיו בואו נשתמש בבתי הקריסטל

תן לאהובך את בית הבדולח שיצרת. תגיד להם שהם חשובים! אתה תמיד יכול לשנות את המבנה החיצוני באמצעות חומרים וצבעים שונים. ספר לי איך הולך!

מוּמלָץ: