תוכן עניינים:
וִידֵאוֹ: גוון קסם: 4 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
קוסמים ברוכים הבאים!
לפני מספר חודשים יצרתי קופסת קסמים קטנה עם שרביט עבור בני בן השלוש. כשהוא נוגע בקופסה עם השרביט, אור צבעוני משתנה יתחיל לפלוט מהקופסה. כשהוא רואה צבע שהוא אוהב במיוחד, הוא יכול לכוון את השרביט לעבר מנורת השולחן (עם נורת פיליפס גוון בפנים), להטיל כישוף והצבע מהקופסה יקפוץ באורח פלא אל המנורה! למנורה ואור מהקופסה פתאום יש אותו צבע …
לאחר מספר שניות הצבע מתפוגג ומנורת השולחן חוזרת למצבה לפני הכישוף. עד שנלחם כישוף חדש …
שלב 1: מה שאתה צריך כדי ליצור פרויקט זה
כדי ליצור פרויקט זה, תזדקק לחומרים הבאים:
- נורת צבע אחת (או יותר) של Philips Hue וגשר גוון
- 1 מיקרו-בקר מבוסס esp8266 מבוסס Wemos D1 מיני או דומה
- חיישן מגע 1 (Arduino) (למשל TTP223R)
- כפתור רגע אחד (ארדואינו)
- קבל 10uF
- 1 RGB LED (סוג אנודה נפוץ)
- 5 נגדים (10, 22 ו -47 אוהם, 2x 10K אוהם)
- 2 PCBs קטנים של אב טיפוס (2x3 אינץ 'או כ 5x7 ס"מ אמורים להיות גדולים מספיק)
- כמה חוטים (מגשר)
- מגהץ
- שרביט קסמים (ניתן לרכוש אותו כמוכן בחנות צעצועים, או להכין אותו בעצמך)
- קופסה קטנה מקרטון או מעץ (יכולה להיות קופסה קיימת, אבל אפשר גם לבנות קופסה מאפס כמובן)
- קצת קלטת
- קצת דבק ו/או אגוזים וברגים להרכבת הלוחות הקדמיים בקופסה.
- אופציונלי: נייר עטיפה לקופסה
שים לב: קצת ניסיון בקריאת דיאגרמות מעגלים מועיל כשעוברים את זה להוראה. התרשים שלי אינו מורכב מדי: אם תוכל להבדיל בין קבל לנגד, סביר להניח שיהיה בסדר.
קצת ניסיון בתכנות Arduino באמצעות Arduino IDE הוא גם מועיל. ניסיון די בסיסי אמור להספיק, שכן אני אספק את הקוד המלא שתוכל להעתיק/להדביק. עם זאת, יהיה עליך להתאים כמה דברים כדי לגרום לזה לעבוד בהגדרה הספציפית שלך (למשל הגדרות הרשת שלך וכמה פרטים מתצורת הגוון שלך). אם זה נשמע קצת מפחיד, אל תדאג, אני אעזור לך לאחזר את כל המידע הדרוש לך.
שלב 2: הקופסה והשרביט
הצעדים הראשונים בדרך כלל הם הקשים ביותר, אך לא במדריך זה! בתור התחלה קלה, אתה יכול פשוט לקנות שרביט קסמים מחנות צעצועים ובשביל הקופסה אתה יכול פשוט להשתמש מחדש בקופסה קטנה קיימת שכבר שכבת. רק וודא שהקופסה לא עשויה מתכת, מכיוון שזה יחסום את אותות ה- wifi ואנו זקוקים לאלה הקסומים;-).
כאשר אתה מייעד מחדש קופסה קיימת, הדבר היחיד שאתה צריך לעשות הוא ליצור שני חורים בחלק העליון של התיבה: חור אחד קטן (גודל 5 מ"מ = 0.2 אינץ ') עבור ה- RGB וחור גדול יותר (בסביבות 12- 14 מ"מ או כ 0.5 אינץ ') לחיישן המגע.
המיקום המדויק של החורים אינו קריטי, רק מקם אותם בהתאם לתחושת האסתטיקה שלך אך זכור מספר דברים:
- שמור על מרחק בין שני החורים כדי לוודא שהרכיבים שיורכבו מתחת לחורים (LED RGB וחיישן המגע) רשאים לתפוס מספיק מקום להתקנה ולחיווט.
- החור הגדול ביותר הוא לחיישן המגע. חיישן זה יותקן ממש מתחת לחור, באופן שניתן יהיה לגעת בו (ואפילו ללחוץ קלות) על ידי השרביט. אז וודאו שהשרביט שאתם קונים לא יהיה עבה מדי!
אופציונלי אתה יכול להשתמש (ריסוס) בצבע או בנייר עטיפה ולכסות פלסטיק כדי להפוך את הקופסה שלך למעט יפה יותר ולהגן עליה מפני נשפך של מזון וידיים מלוכלכות.
אם הצעד הראשון הזה קצת לא שאפתני מדי לטעמך, אנא קדימה וצור קופסה ושרביט לגמרי מאפס! ישנן מספר הורדות שיכולות לעזור לך ליצור שרביט יפה
לא משנה באיזו דרך תבחר, הגיע הזמן לחקור את החלק הפנימי של הקופסה.
שלב 3: החומרה שבפנים
השתמש במגהץ לחיבור הרכיבים האלקטרוניים בהתאם לתרשים המעגלים לעיל. יש לשים לב לכמה דברים:
- החוטים בין ה- Wemos D1 Mini לבין ה- RGB LED צריכים להיות ארוכים מספיק כדי שניתן יהיה להתקין את ה- RGB בחור שעשית במכסה הקופסה.
- אותם סעיפים לגבי החוטים המחוברים למתג הרגעי ולחיישן המגע שכן אלה צריכים להיות נגישים דרך החור השני במכסה.
- יש להדביק את כפתור המתג הרגעי לחלק התחתון (הצד הלא רגיש) של חיישן המגע, באופן שתוכל להחזיר את הכפתור למתג הרגעי כאשר חיישן המגע מודבק למעלה (ראו תמונה). חיישן המגע מותקן על גבי המתג הרגעי כדי לזהות לחיצות על כפתורים שבוצעו באצבע, ובמקרה זה תתעלם מלחיצת הכפתור. רק כאשר לוחץ על הכפתור על ידי שרביט הקסם (שאמור להיות לא מוליך, כך שפלסטיק ועץ בסדר), מחזור הקסם יתחיל.
- הרכיב את הכפתור הרגעי עם חיישן מגע מלמעלה לא עמוק מדי מתחת לחור במכסה, מכיוון שצריך להגיע אליו באמצעות שרביט הקסמים כדי להניע את הקסם.
- הקפד לשים לב לקוטביות הקבל בעת הלחמתו. אם אתה הופך את ההובלות החיוביות והשליליות, סביר שהקבל יפליט עשן קסם ויכניס את המעגל שלך לשינה נצחית.
- הדביקו, הדביקו או הברגו את מחזיק הסוללות ואת הלוח המודפס במקומם. זה לא חייב להיות מסודר, מכיוון שזה לא נראה באופק. זה צריך רק להיות הוכחת ירידה.
הלאה לתוכנה!
שלב 4: התוכנה
וודא שיש לך את עורך התוכנות העדכני ביותר (בחינם) של Arduino, אותו ניתן להוריד בכתובת https://www.arduino.cc/en/Main/Software. כדי להוסיף תמיכה ב- Wemos D1 mini ולוחות אחרים המבוססים על ESP8266, בצע את הצעדים הבאים:
- לאחר ההתקנה, הפעל את תוכנת Arduino ופתח את חלון העדפות.
- הזן https://arduino.esp8266.com/stable/package_esp8266com_index.json בשדה "כתובות אתרים נוספות של מנהל לוח". אתה יכול להוסיף מספר כתובות אתרים ולהפריד אותן באמצעות פסיקים.
- פתח את מנהל הלוחות מתוך כלים> תפריט לוח והתקן את פלטפורמת esp8266 (ואל תשכח לבחור את לוח ESP8266 שלך מתוך כלים> תפריט לוח לאחר ההתקנה. "LOLIN (WEMOS) D1 R2 & mini" עובד הכי טוב עבור Wemos D1 mini v2 ו- v3 לוחות.
אם אתה זקוק לעזרה נוספת בהתקנת Arduino ובהגדרת מנהלי ההתקן, תוכל להציץ בכתובת
בעורך Arduino, פתח קובץ חדש (קובץ> חדש) והעתק/הדבק את הקוד למטה בחלון שזה עתה נפתח. פשוט תחליף את השורות שכבר קיימות בחלון החדש (הגדרת חלל ולולאת חלל).
עכשיו אתה כמעט מוכן, אבל תצטרך להתאים כמה חלקים מהקוד להגדרה הספציפית שלך.
הדבר הראשון שאתה צריך לעשות הוא לשנות את כתובת ה- ip בשורה 34 (בעורך Arduino שורות הקוד ממוספרות) לכתובת ה- ip של גשר הגוון שלך. אם אינך יודע את כתובת ה- IP של Hue Bridge, בקר בכתובת https://discovery.meethue.com/ וכתובת ה- IP הנכונה היא תופיע מיד בדפדפן שלך. כתובת ה- ip היא המספר המקווקו שלפניו "כתובת פנימית".
כדי לתקשר עם נורות הגוון, יהיה עליך ליצור משתמש Hue API עבור ה- Wemos D1 mini, כך שה- Wemos יוכלו לתקשר עם אור הגוון באמצעות ה- Hue API. לשם כך, בצע את ההוראות בכתובת https://developers.meethue.com/develop/get-started-2/ והעתק/הדבק את שם המשתמש שנוצר (די ארוך) בחלון הקוד של Arduino. פשוט החלף כל "USERNAME API של HUE API שלך" בשם משתמש ה- API שנוצר.
לאחר מכן עליך לבחור את תאורת הגוון הנכונה כדי לשנות את הצבע. ב- Hue API לכל אור יש מספר, לכן עליך לברר את המספר המתכתב עם האור שאתה רוצה להשתמש בו לפרויקט זה. אחת הדרכים הקלות ביותר לברר איזה מספר יש לנורה מסוימת היא הורדת אפליקציית Hue Viewer לאנדרואיד או iOS. החלף את הטקסט "מספר האור שלך" במספר הנכון בכל מקום בחלון הקוד של Arduino.
הדבר האחרון שצריך לעשות הוא להתקין את ה- Wemos כדי להתחבר לרשת ה- wifi שלך. זה נעשה על ידי העלאת הקוד ל- Wemos ועל המחשב הנייד שלך לעבור לרשת wifi אחרת: ל- "AutoConnectAP". לאחר מכן הדפדפן שלך יציג דף שבו תוכל להוסיף את ה- SSID (שם) והסיסמה של רשת ה- WiFi שלך שבה משתמש בקר Wemos כדי להתחבר לרשת ה- wifi שלך (ולגשר הגוון).
הערה: אם העלאת הקוד ל- Wemos D1 mini שלנו באמצעות USB אינה פועלת, ייתכן שיהיה עליך להוריד מנהל התקן עבור שבב ה- USB ב- Wemos. ניתן להוריד מנהל התקן לפלטפורמה שלך (Windows, Mac) בכתובת
עכשיו אתה מוכן לבדוק את היצירה שלך!
// ESP8266 Hue Magic Wand // Richard van Kampen - 2018 // קוד זה נבדק על מיני Wemos D1, אך ככל הנראה יעבוד גם על לוחות פיתוח אחרים המבוססים על ESP8266 // להוספת תמיכה ב- Wemos D1 mini ולוחות ESP8266 אחרים. לעורך Arduino, בצע את הפעולות הבאות: // - הפעל את Arduino ופתח חלון העדפות. // - הזן https://arduino.esp8266.com/stable/package_esp8266com_index.json בשדה כתובות אתרים נוספות של מנהל הלוח. אתה יכול להוסיף מספר כתובות אתרים ולהפריד אותן באמצעות פסיקים. // - פתח את מנהל הלוחות מתוך כלים> תפריט לוח והתקן את פלטפורמת esp8266 (ואל תשכח לבחור את לוח ESP8266 שלך מתוך כלים> תפריט לוח לאחר ההתקנה). // ספריות משומשות: #כלול "ESP8266WiFi.h" // ESP8266 Core WiFi Library #include "DNSServer.h" // שרת DNS מקומי המשמש להפניית כל הבקשות לפורטל התצורה של WiFiManager אם אין הגדרות WIFI (SSID, סיסמה) עדיין לא נקבע. #include "ESP8266WebServer.h" // WebServer מקומי המשמש לשרת פורטל התצורה של WiFiManager #כלול "WiFiManager.h" // ספריית הקסם של תצורת WiFi, אם עדיין לא מותקן עיין ב https://github.com/tzapu/WiFiManager #מנהל ההתקנה דרך הספרייה #כלול את "RestClient.h" // https://github.com/fabianofranca/ESP8266RestClient, הדרוש לשימוש ב- Philips Hue API (ראה https://developers.meethue.com/develop/ hue-api/). #כלול את "ArduinoJson.h" // https://github.com/bblanchon/ArduinoJson, הדרוש לניתוח תגובת ה- API של גוון, התקן את גירסה 5.x באמצעות מנהל הספרייה בארדואינו (תפריט "סקיצה"> כלול ספרייה> נהל ספריות> חפש את ArduinoJson ושנה את הגירסה לגירסה 5.x האחרונה). גירסה 6 (כרגע בגרסת בטא) גורמת לשגיאה. // משתנים ו- init: תגובת מחרוזת; const int redPin = 13; // ב- Wemos זהו d7 const int greenPin = 12; // ב- Wemos זהו d6 const int bluePin = 14; // ב- Wemos זהו d5 const int touchSensor = 5; // ב- Wemos זה הוא d1 const int activationPin = 4; // ב- Wemos זוהי הפעלה bool d2 = HIGH; מגע בול = נמוך; const char* aan_restore; int bri_restore; x_restore כפול; y_restore כפול; x_magic כפול; y_magic כפול; בול ראשון = נכון; התחלה ארוכה לא חתומה מיליס; זרם ארוך לא חתום מיליס; משך זמן לא חתום מיליס; לקוח RestClient = RestClient ("192.168.178.23"); // "כתובת ה- IP שלך ב- Hue Bridge" // אם אינך יודע את כתובת ה- IP של Hue Bridge, בקר בכתובת https://discovery.meethue.com והיא תופיע מיד בדפדפן שלך. כתובת ה- ip היא המספר המקווקו שלפניו התקנת חלל "internalipaddress" () {analogWriteRange (255); Serial.begin (9600); // התחל כשהנורית כבויה. pinMode (activationPin, INPUT_PULLUP); pinMode (touchSensor, INPUT); startMillis = millis (); checkWand (); } לולאת void () {// אין מה לעשות כאן, השאר ריק …} void checkWand () {int rgbColour [3]; // קוד צבע RGB מאת ג'יימס הארטון, https://gist.github.com/jamesotron/766994 // התחל באדום. rgbColour [0] = 255; rgbColour [1] = 0; rgbColour [2] = 0; activation = digitalRead (activationPin); // LOW פירושו שימוש ברביט. touch = digitalRead (touchSensor); // HIGH פירושו שימוש באצבע במקום שרביט, מה שלא אמור להיות כך. while (activation == LOW && touch == LOW) {// בחר את הצבעים להגדלה ולהקטנה. עבור (int decColour = 0; decColour <3; decColour += 1) {int incColour = decColour == 2? 0: decColour + 1; // = אופרטור שלישי, פירושו: int incColour; אם (decColour == 2) {incColour = 0;} else {incColour = decColour +1;} // הצלב את שני הצבעים. עבור (int i = 0; i <255; i += 1) {rgbColour [decColour] -= 1; rgbColour [incColour] += 1; // מכיוון של LED RGB שלנו יש אנודה משותפת במקום קתודה (לכן עלינו להתחבר ל- +3.3V במקום הקרקע), אנו זקוקים לערכים הפוכים עבור RGB: int red = 255 - rgbColour [0]; int ירוק = 255 - rgbColour [1]; int blue = 255 - rgbColour [2]; analogWrite (redPin, אדום); analogWrite (greenPin, ירוק); analogWrite (bluePin, כחול); עיכוב (8); הפעלה = digitalRead (activationPin); אם (הפעלה == HIGH) {// HIGH פירושו שרביט מורם. goto stopColorCycling; }}}}} stopColorCycling: currentMillis = millis (); durationMillis = (currentMillis - startMillis); if (durationMillis> 1000) {RGBtoxy (rgbColour [0], rgbColour [1], rgbColour [2]); } else {// הכניסו את Wemos למצב שינה: ESP.deepSleep (0); }} void RGBtoxy (int red, int green, int blue) {// see https://developers.meethue.com/documentation/color-conversions-rgb-xy double R = map (אדום, 0, 255, 0, 1000); R /= 1000; G כפול = מפה (ירוק, 0, 255, 0, 1000); G /= 1000; B כפול = מפה (כחול, 0, 255, 0, 1000); B /= 1000; R = (R> 0.04045f)? pow ((R + 0.055f) / (1.0f + 0.055f), 2.4f): (R / 12.92f); G = (G> 0.04045f)? pow ((G + 0.055f) / (1.0f + 0.055f), 2.4f): (G / 12.92f); B = (B> 0.04045f)? pow ((B + 0.055f) / (1.0f + 0.055f), 2.4f): (B / 12.92f); X כפול = R * 0.649926f + G * 0.103455f + B * 0.197109f; כפול Y = R * 0.234327f + G * 0.743075f + B * 0.022598f; Z כפול = R * 0.0000000f + G * 0.053077f + B * 1.035763f; x כפול = X / (X + Y + Z); y כפול = Y / (X + Y + Z); // ההמרה לא הושלמה במלואה, אבל כנראה מספיק טובה למה שאנו רוצים להשיג, אז עזוב את זה ושלח ערכי XY למנורה: sendtoHue (x, y); } void sendtoHue (כפול a, כפול b) {// שינוי צבע בפועל מקסם שרביט אם (ראשון) {// מעבר ראשון: קבל את מצב המנורה הנוכחי getCurrentValues (); } // ואז שלח צבעי שרביט קסמים: // לחכות לאיית: המתנה ארוכה; x_magic = a; y_magic = b; // מנורה דולקת בצבע שרביט קסמים: response = ""; int temp = אקראי (2, 9); const char* state = "true"; for (int i = 1; i <= temp; i ++) {// צור מערך צ'אר לשלוח לגשר: מחרוזת temp_body1 = "{" on / ":" + String (state) + ", \" bri / ": 220, / "xy \": [" + מחרוזת (x_magic) +", " + מחרוזת (y_magic) +"], / "זמן מעבר \": 1} "; int str_len1 = temp_body1.length () + 1; char post_body1 [str_len1]; temp_body1.toCharArray (post_body1, str_len1); // עכשיו יש לנו post_body1 כמערך צ'אר; // בצע שיחת מנוחה: int statusCodePut1 = client.put ("/api/HOUR API USERNAME/lights/YOUR NUMBER/state", post_body1, & תגובה); המתן = אקראי (100, 600); עיכוב (המתנה); if (state == "true") {state = "false"; } אחר {state = "true"; }}} // הפחת את הבהירות…: response = ""; טמפ '= אקראי (4, 17); // צור מערך צ'אר לשלוח לגשר: מחרוזת temp_body2 = "{" על / ": true, \" bri / ": 154, \" זמן מעבר / ":" + מחרוזת (טמפ ') + "}"; int str_len2 = temp_body2.length () + 1; char post_body2 [str_len2]; temp_body2.toCharArray (post_body2, str_len2); // עכשיו יש לנו post_body2 כמערך צ'אר; // בצע שיחת מנוחה: int statusCodePut2 = client.put ("/api/YOUR HUE API USERNAME/lights/YOUR NUMBER/state", post_body2, & תגובה); המתן = אקראי (1000, 2500); עיכוב (המתנה); //.. ולהפוך שוב לבהירים יותר: response = ""; טמפ '= אקראי (4, 17); // צור מערך צ'אר לשלוח לגשר: מחרוזת temp_body3 = "{" bri_inc / ": 100, \" זמן מעבר / ":}"; int str_len3 = temp_body3.length () + 1; char post_body3 [str_len3]; temp_body3.toCharArray (post_body3, str_len3); // עכשיו יש לנו post_body3 כמערך צ'אר; // בצע שיחת מנוחה: int statusCodePut3 = client.put ("/api/שם המשתמש שלך HUE API/אורות/מספר האור שלך/מצב", post_body3, ותגובה); המתן = אקראי (2500, 5000); // המתן 2-5 שניות עיכוב (המתן); // ודעך בחזרה לערך הישן: response = ""; // צור מערך צ'אר לשלוח לגשר: String temp_body4 = "{" on / ":" + String (aan_restore) + ", \" bri / ":" + String (bri_restore) + ", \" xy / ": [" + מחרוזת (x_restore) +", " + מחרוזת (y_restore) +"], / "זמן מעבר \": " + מחרוזת (20) +"} "; int str_len4 = temp_body4.length () + 1; char post_body4 [str_len4]; temp_body4.toCharArray (post_body4, str_len4); // עכשיו יש לנו post_body4 כמערך צ'אר; // בצע שיחת מנוחה: int statusCodePut4 = client.put ("/api/משתמש המשתמש שלך HUE API/אורות/מספר האור שלך/מצב", post_body4, ותגובה); ESP.deepSleep (0); // הולכת לישון שוב…. } int getCurrentValues () {connectWifi (); // התחבר ראשון ל- Wifi response = ""; // בצע שיחת מנוחה: int statusCodeGet = client.get ("/api/משתמש המשתמש שלך HUE API/אורות/מספר האור שלך", & תגובה); Serial.print ("קוד סטטוס מהשרת לאחר GET:"); Serial.println (statusCodeGet); Serial.print ("גוף תגובה מהשרת:"); Serial.println (תגובה); StaticJsonBuffer jsonBuffer; // ניתוח ניתוח Json // שורש עץ האובייקט. // // זוהי התייחסות ל- JsonObject, הבייטים בפועל נמצאים בתוך // jsonBuffer עם כל הצמתים האחרים של עץ האובייקט. // הזיכרון משתחרר כאשר jsonBuffer יוצא מחוץ לתחום. JsonObject & root = jsonBuffer.parseObject (תגובה); JsonObject & state = root ["state"]; // בדוק אם הניתוח מצליח. if (! root.success ()) {Serial.println ("parseObject () נכשל"); } // אחזר ערכים. aan_restore = מצב ["מופעל"]; Serial.println (aan_restore); bri_restore = state ["bri"]; x_restore = מצב ["xy"] [0]; y_restore = state ["xy"] [1]; first = false;} void connectWifi () {// אינטליזציה מקומית.לאחר סיום עסקיו, אין צורך להשאיר אותו סביב WiFiManager wifiManager; // איפוס הגדרות - לבדיקה: //wifiManager.resetSettings (); // הגדר שיחה חוזרת שמתקשרת בעת חיבור ל- WiFi הקודם נכשלת, ונכנסת למצב נקודת גישה wifiManager.setAPCallback (configModeCallback); // מביא ssid ו- pass ומנסה להתחבר // אם הוא לא מתחבר הוא מתחיל נקודת גישה בשם שצוין // כאן "AutoConnectAP" // ונכנס ללולאה חוסמת בהמתנה לתצורה אם (! wifiManager.autoConnect ()) {Serial.println ("נכשל החיבור והפסק הזמן הקצוב"); // אפס ונסה שוב, או אולי הכנס אותו לשינה עמוקה ESP.reset (); עיכוב (1000); } // אם הגעת לכאן התחברת ל- WiFi Serial.println ("מחובר … כן:)"); Serial.print ("מחובר ל:"); Serial.println (WiFi. SSID ()); Serial.print ("כתובת IP:"); Serial.println (WiFi.localIP ()); // כתובת IP שהוקצתה ל- ESP שלך (Wemos) // הדפס את עוצמת האות שהתקבלה: rssi ארוך = WiFi. RSSI (); Serial.print ("עוצמת האות (RSSI):"); Serial.println (rssi); } void configModeCallback (WiFiManager * myWiFiManager) {Serial.println ("נכנס למצב תצורה"); Serial.println (WiFi.softAPIP ()); // אם השתמשת ב- SSID שנוצר אוטומטית, הדפס אותו Serial.println (myWiFiManager-> getConfigPortalSSID ()); }
מוּמלָץ:
פיצול והארכה של רצועת האור של פיליפס גוון: 8 שלבים (עם תמונות)
פיצול והארכה של רצועת האור של Philips Hue: הוספתי עוד " בית חכם " הקלד גאדג'טים לביתי, ואחד הדברים ששיחקתי איתם הוא Lightstrip של Philips Hue. זו רצועת נורות LED הניתנת לשליטה מאפליקציה או מעוזרת חכמה כמו אלקסה או
קסם אלקטרוני 8 כדור וגלגל העין: 11 שלבים (עם תמונות)
כדור מג'יק 8 וגלגל העין האלקטרוני: רציתי ליצור גרסה דיגיטלית של מג'יק 8 כדור … גוף זה מודפס בתלת מימד והתצוגה שונתה מפולידרדר בצבע כחול ל- OLED קטן הנשלט על ידי מספר אקראי. גנרטור מתוכנת ל- NANO Arduino. ואז אני
מתקן חיצוני, עמיד בפני מזג אוויר עבור Lifx או גוון: 5 שלבים (עם תמונות)
מתקן חיצוני, עמיד בפני מזג אוויר עבור Lifx או גוון: רציתי להאיר את הגינה שלי עם נורות Lifx Color 1000 שלי, להנאת ערב כמו גם להשתולל בחצר האחורית מדי פעם. בהתחשב בפגיעות הנורות ללחות וחום, לא הצלחתי למצוא מתקן בשוק שיגן כראוי על
ארנב "קסם" בכובע צילום: 7 שלבים (עם תמונות)
ארנב "קסם" בכובע צילום כובע: אז הנה " הקסם " טריק. ארנב עשוי קרח יושב על כובע קוסם. ארנב הקרח נמס ונעלם לנצח … או שזהו. מכיוון שבתוך כובע הקוסם מתגלה שיש תצלום של הארנב כאילו יש לו
מנורת לוח הגוונים של פיליפס גוון DIY: 4 שלבים (עם תמונות)
מנורת לוח הגוונים של פיליפס גוון DIY: לאחרונה קניתי כמה מנורות פיליפס גוון לחדר השינה שלי. הם מעולים! אני יכול לשלוט בהם באמצעות הקול שלי באמצעות Alexa וגם לשלוט בהם באמצעות הטלפון שלי. ניסיתי למצוא נורת לוח מחליפה בצבע, אך כפי שאתה יודע, פיליפס גוון לא רואה