תוכן עניינים:
- שלב 1: אסוף את החומרים
- שלב 2: בניית מבנה המנורה
- שלב 3: צורות התלת מימד
- שלב 4: סכמטי הרכיבים
- שלב 5: הקוד
- שלב 6: שליטה במנורה
- שלב 7: תהנה מנורת מצב הרוח שלך
וִידֵאוֹ: מנורת LED חכמה בשליטת סמארטפון: 7 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
אני תמיד חולם לשלוט במכשירי התאורה שלי. ואז מישהו הכין מנורת לד צבעונית להפליא. לאחרונה נתקלתי במנורת LED של ג'וזף קאשה ביוטיוב. קיבלתי השראה ממנה, והחלטתי להוסיף מספר פונקציות תוך שמירה על העיצוב העכשווי.
התוכנית היא להפוך את המנורה לידידותית יותר למשתמש על ידי הוספת מודול בלוטות 'ורצועת LED WS2812B RGB שניתן להתייחס אליה. זה איפשר לשלוט על צבע התאורה רק באמצעות אפליקציית סמארטפון.
שלב 1: אסוף את החומרים
כלים:
• תחנת הלחמה
• אקדח מפוח חימום
• מקדחה
• מסור מעגלי
• פאזל
• צבת חותך תיל
• צבת אף צר
חומרים:
• לוח אקרילי שקוף
• עץ ברוש יפני (או שניתן להשתמש בכל עץ כל עוד הוא יציב וחזק מספיק)
• ברגים
• מוט נירוסטה או מקל
• חוטים (אני משתמש בחוט אדום ושחור)
• פח הלחמה
רכיבי אלקטרוניקה:
• ארדואינו ננו
• מודול Bluetooth HC-05 (החלטתי להשתמש בזה מכיוון שקל יותר לקוד אותו מאשר מודול Wifi ESP8266)
• רצועת LED מסוג RGB WS2812B ניתנת להתייחסות
• מודול הורדת LM2596
• שקע חשמל של חבית DC
שלב 2: בניית מבנה המנורה
בשלב זה, יש לי שתי דרכים לבנות את מבנה שיטת המנורה- שיטת עיבוד עץ ושיטת הדפסה תלת-ממדית. אני משתמש בשיטה הראשונה. אם אתה מעדיף לעשות זאת באמצעות מדפסת תלת מימד, אל תהסס לדלג לשלב 2 עבור הדגם שעיצבתי.
בחלק העליון של המנורה אני מחמם ומכופף את לוח האקריליק לזווית של 90 ° כפי שמוצג למעלה. לוקח לי די הרבה זמן לכופף אותו לזווית וכיוון מושלמים כאלה.
לאחר מכן, עבור החלק התחתון של המנורה. לרוע המזל … היום בו אני עובד על החלק התחתון של המנורה, שכחתי לגמרי לצלם את הבנייה! הבנתי את זה כשסיימתי את הפרויקט הזה. אבל אני אנסה כמיטב יכולתי לספק לך את המדידה של החלק התחתון של המנורה.
בעיקרון, אתה רק צריך לחתוך ארבעה גושי עץ בגודל 13x6x2 ס מ (LxHxW). לאחר מכן, עליך לחתוך חתך דמוי מדרגות בקצה העץ. התמונה תוצג למעלה.
שלב 3: צורות התלת מימד
לכל מי שיש לו מדפסת תלת מימד משלו, אתם נמצאים בצעד הנכון. זה הפך את המנורה לידידותית למשתמש.
למען האמת, זה היה הצעד הקשה ביותר שעשיתי. זה הדבר הראשון שעשיתי מיד לאחר התקנת התוכנה!
אני משתמש ב- Sketchup Pro כדי לעצב את מבנה המנורה. למרבה הצער, אני לא מיומן מספיק כדי לעצב את רכיב הפנים שלו. הקישור לדגם התלת ממד שלי נמצא בקובץ למטה.
שלב 4: סכמטי הרכיבים
אני משתמש ב- Fritzing כדי לבנות את סכמות הרכיבים. הסכימה למעשה די קלה.
שלב 5: הקוד
לקידוד מנורת מצב הרוח הזו, השתמשתי בכמה ספריות מה- Arduino IDE. הספריות יופיעו למטה בשלב 7.
בשביל הקוד, אתה צריך את תוכנת Arduino עצמה. אני אתן את הקישור להורדה כאן.
כמו כן, הסקיצה או הקוד יוצגו למטה?
סיפקתי גם את הקובץ של הקוד ב- Github.com למקרה שהקוד למטה ארוך מכדי להעתיק אותו כאן;)
#include #include #include #ifdef _AVR_ #include #endif
SoftwareSerial BT (10, 11);
#define LED_PIN 7 #define NUM_LEDS 60 #define BRIGHTNESS 200 #define SPEED 10 #define IMMEDIATELY 0 #define RAINBOW_SPEED 50 CRGB leds [NUM_LEDS];
רצועת Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
bool offOld = LOW;
bool WhiteOld = LOW; bool RedOld = LOW; bool GreenOld = LOW; bool BlueOld = LOW; bool TopazOld = LOW; bool LilacOld = נמוך; bool RainbowOld = LOW; bool rgbOld = נמוך; int showType = 0;
הגדרת בטל () {
FastLED.addLeds (leds, NUM_LEDS); //////////
BT.begin (9600);
BT.println ("מחובר לארדואינו");
strip.setBrightness (בהירות);
strip.begin ();
strip.show ();
}
צ'אר א;
לולאת חלל () {
עבור (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } התנפלות = נמוכה; בול לבן = נמוך; bool כחול = נמוך; בול אדום = נמוך; בול ירוק = נמוך; בול טופז = נמוך; בול לילך = נמוך; bool קשת = נמוכה; bool rgb = נמוך; בול סוף; אם (BT.available ()) {a = (char) BT.read ();
אם (a == 'o')
{off = HIGH; BT.println ("כיבוי נוריות..");
}אַחֵר{
כבוי = נמוך; } // ================================================ ==============================================
אם (a == 'w')
{לבן = גבוה; BT.println ("נוריות המסתובבות לבנות");
}אַחֵר{
לבן = נמוך; } // ================================================ ==============================================
אם (a == 'b')
{כחול = גבוה; BT.println ("משתנה לכחול"); } אחר {כחול = נמוך; }
// ===========================================================================================
אם (a == 'r')
{אדום = גבוה; BT.println ("שינוי לאדום"); } אחר {אדום = נמוך; }
// ===========================================================================================
אם (a == 'g')
{ירוק = גבוה; BT.println ("משתנה לירוק"); } אחר {ירוק = נמוך; }
// ===========================================================================================
אם (a == 't')
{טופז = HIGH; BT.println ("שינוי TOPAZ"); } אחר {טופז = נמוך; }
// ===========================================================================================
אם (a == 'l')
{לילך = גבוה; BT.println ("שינוי ללילאק"); } אחר {לילך = נמוך; }
// ===========================================================================================
אם (a == 'a')
{קשת = HIGH; BT.println ("אנימציה RAINBOW"); } אחרת {קשת = נמוכה; } // ================================================ ==============================================
אם (a == 'm')
{rgb = HIGH; BT.println ("MIX COLORS"); } אחר {rgb = LOW; }} if (off == LOW && offOld == HIGH) {עיכוב (20); אם (כבוי == LOW) {showType = 0; // כבוי אנימציה סוג 0 startShow (showType); }}
// ===========================================================================================
if (White == LOW && WhiteOld == HIGH) {
עיכוב (20); אם (לבן == נמוך) {showType = 1; // אנימציה לבנה סוג 1 startShow (showType); }}
// ================================================= ============================================ אם (אדום == נמוך && RedOld == HIGH) {עיכוב (20); אם (אדום == נמוך) {showType = 2; // אנימציה אדומה סוג 2 startShow (showType); }}
// ===========================================================================================
אם (ירוק == LOW && GreenOld == HIGH) {
עיכוב (20); אם (ירוק == LOW) {showType = 3; // אנימציה ירוקה סוג 3 startShow (showType); }} // =============================================== ===============================================
אם (כחול == LOW && BlueOld == HIGH) {
עיכוב (20); אם (כחול == LOW) {showType = 4; // אנימציה כחולה סוג 4 startShow (showType); }}
// ===========================================================================================
if (Topaz == LOW && TopazOld == HIGH) {
עיכוב (20); אם (טופז == LOW) {showType = 5; // אנימציה טופז סוג 5 startShow (showType); }}
// ===========================================================================================
אם (לילך == LOW && LilacOld == HIGH) {
עיכוב (20); אם (לילך == LOW) {showType = 6; // אנימציה טופז סוג 6 startShow (showType); }} // =============================================== ===============================================
אם (קשת == LOW && RainbowOld == HIGH) {
עיכוב (20);
אם (קשת == LOW) {
showType = 8; // אנימציה קשת סוג 8 startShow (showType); }}
// ===========================================================================================
אם (rgb == LOW && rgbOld == HIGH) {
עיכוב (20);
אם (rgb == LOW) {
showType = 7; // מיקס אנימציה סוג 7 rgb = HIGH;
startShow (showType);
} }
WhiteOld = לבן;
RedOld = אדום; BlueOld = כחול; GreenOld = ירוק; TopazOld = טופז; LilacOld = לילך; offOld = off; RainbowOld = קשת; rgbOld = rgb;
}
void startShow (int i) {
לעבור (i) {
מקרה 0: colorWipe (strip. Color (0, 0, 0), SPEED); // שחור/כבוי
לשבור;
מקרה 1: strip.setBrightness (255); // משנה את הבהירות ל- MAX
colorWipe (strip. Color (255, 255, 255), באופן מיידי); // strip.setBrightness (בהירות) לבנה; // אפס את הבהירות לערך ברירת מחדל;
מקרה 2: colorWipe (strip. Color (255, 0, 0), SPEED); // אדום
לשבור;
מקרה 3: colorWipe (strip. Color (0, 255, 0), SPEED); // ירוק
לשבור;
מקרה 4: colorWipe (strip. Color (0, 0, 255), SPEED); // כחול
לשבור;
מקרה 5: colorWipe (strip. Color (0, 250, 255), SPEED); // טופז
לשבור;
מקרה 6: colorWipe (strip. Color (221, 130, 255), SPEED); // לילך
לשבור; מקרה 7: colorWipe (strip. Color (255, 0, 0), SPEED); // ColorWipe אדום (strip. Color (0, 255, 0), SPEED); // ירוק colorWipe (strip. Color (0, 0, 255), SPEED); // Blue theaterChase (strip. Color (0, 0, 127), SPEED); // Blue theaterChase (strip. Color (127, 0, 0), SPEED); // תיאטרון אדום צ'ייס (strip. Color (0, 127, 0), SPEED); // הפסקה ירוקה;
מקרה 8: rainbowCycle (25);
לשבור; }} void colorWipe (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i
void rainbowCycle (uint8_t wait) {
uint16_t i, j;
עבור (j = 0; j <256*10; j ++) {// 5 מחזורים של כל הצבעים על הגלגל עבור (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); עיכוב (המתנה); }}
void theaterChase (uint32_t c, uint8_t wait) {
for (int j = 0; j <10; j ++) {// לעשות 10 מחזורים של רדיפה אחרי (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // הפעל כל פיקסל שלישי} strip.show ();
עיכוב (המתנה);
for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // לכבות כל פיקסל שלישי}}}}
גלגל uint32_t (בייט WheelPos) {
WheelPos = 255 - WheelPos; אם (WheelPos <85) {strip return. Color (255 - WheelPos * 3, 0, WheelPos * 3); } אם (WheelPos <170) {WheelPos -= 85; רצועת החזרה.צבע (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; רצועת החזרה.צבע (WheelPos * 3, 255 - WheelPos * 3, 0); }
שלב 6: שליטה במנורה
ניתן לשלוט על צבע המנורה באמצעות הסמארטפון שלך.
ראשית, עליך להתקין את האפליקציה בשם 'Bluetooth Terminal HC-05' מחנות Google Play או חנות האפליקציות של Apple.
אלה הם השלבים לשליטה במנורה באמצעות הטלפון החכם שלך:
1. הפעל את ה- Bluetooth בסמארטפון שלך.
2. פתח את האפליקציה שהיא 'מסוף Bluetooth HC-05'.
3. כעת אתה אמור לראות את ההתקנים המשויכים על המסך. בחר 'HC-05'.
4. עכשיו אתה יכול לראות במסך החכם שלך מסך שחור שיציין 'מחובר לארדואינו'.
5. הנה החלק המהנה, אם תקליד 'b' בתיבת הטקסט, המנורה תהפוך לצבע כחול. להלן רשימת הפקודה שתוכל להקליד עבור המנורה:
- w ללבן
- ב לכחול
- g לירוק
- r לאדום
- לא לטופז
- l לילך
- אנימציה לקשת בענן
- o עבור כבוי
כיף נכון?
6. אחרון חביב, תוכל גם להתאים אישית את הלחצן מתחת למסך לטקסט הרצוי כפי שמוצג בתמונה למעלה.
שלב 7: תהנה מנורת מצב הרוח שלך
אני מקווה שאהבתם את המדריך הזה. זה היה פרויקט מאתגר מאוד עבורי אבל הצלחתי לסיים אותו לגמרי כילד בן 14. תן לי קצת משוב לשיפורים עתידיים.
תודה שקראתם וחג שמח!
מוּמלָץ:
תצוגת שעון תצוגת LED עם מטריקס LED בשליטת WiFi: 3 שלבים (עם תמונות)
תאורת שעון תצוגת מטריצת תצוגת LED מבוקרת באמצעות WiFi: רצועות LED הניתנות לתכנות, למשל מבוסס על WS2812, מרתקים. יישומים הם רבים ואתה יכול להשיג תוצאות מרשימות במהירות. ואיכשהו בניית שעונים היא תחום אחר שאני חושב עליו הרבה. מתחיל עם קצת ניסיון בתחום
מנורת LED שולחנית חכמה - תאורה חכמה עם ארדואינו - סביבת העבודה של Neopixels: 10 שלבים (עם תמונות)
מנורת LED שולחנית חכמה | תאורה חכמה עם ארדואינו | סביבת העבודה של Neopixels: כיום אנו מבלים זמן רב בבית, לומדים ועובדים וירטואלית, אז למה לא להפוך את מרחב העבודה שלנו גדול יותר באמצעות מערכת תאורה מותאמת וחכמה מבוססת Arduino ו- Ws2812b LEDs. כאן אני מראה לך כיצד בונים את ה- Smart שלך אור LED לשולחן כי
מנורת לילה LED חכמה: 5 שלבים
מנורת לילה LED חכמה: האם יש לך ניסיון להתעורר בלילה בחיפוש אחר מתג האור? הימים האלה חלפו, עכשיו המכשיר הזה הוא מנורת לילה חכמה LED שאפשר להדליק אותה בתנועה אחת של היד. לאנשים צריך להיות ה- LE החכם הזה
מנורת המומיה - מנורה חכמה בשליטת WiFi: 5 שלבים (עם תמונות)
מנורת המומיה - מנורה חכמה מבוקרת WiFi: לפני כ -230 אלף שנה למד האדם לשלוט באש, הדבר מוביל לשינוי משמעותי באורח חייו כשהחל לעבוד בלילה גם באמצעות אור מהאש. אנו יכולים לומר שזוהי תחילתה של תאורה פנימית. עכשיו אני
עגלת קניות חכמה נשלטת באמצעות סמארטפון: 7 שלבים
עגלת קניות חכמה בשליטת סמארטפון: ביקור בקניונים יכול להיות כיף. אבל גרירת עגלת הקניות בזמן שאתה ממלא אותה בדברים היא דבר שהוא ממש מעצבן. הכאב של לדחוף אותו בין המעברים הצרים האלה, לבצע את הפניות החדות האלה! אז, הנה (סוג) הצעה שאתה יכול