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

NexArdu: שליטה חכמה בתאורה: 5 שלבים
NexArdu: שליטה חכמה בתאורה: 5 שלבים

וִידֵאוֹ: NexArdu: שליטה חכמה בתאורה: 5 שלבים

וִידֵאוֹ: NexArdu: שליטה חכמה בתאורה: 5 שלבים
וִידֵאוֹ: Séance ordinaire - 5 juillet 2021 2024, יולי
Anonim
NexArdu: שליטה חכמה בתאורה
NexArdu: שליטה חכמה בתאורה

עדכון

אם פיתחו את אותה פונקציונליות באמצעות Home Assistant. Home Assistant מציע מגוון עצום של אפשרויות. אתה יכול למצוא את הפיתוח כאן.

שרטוט לשליטה בתאורה הביתית בצורה חכמה באמצעות 433.92MHz (aka 433MHz) מכשירים אלחוטיים דמויי X10, למשל נקסה.

רקע כללי

בכל הנוגע לתאורה דקורטיבית, איכשהו היה לי מעייף שכל שבוע שני או שלישי הייתי צריך להתאים מחדש את הטיימרים שמדליקים את האורות בגלל הזזה של השעה הסולרית ביחס ל- CET. במקביל, בחלק מהלילות אנחנו הולכים לישון מוקדם יותר מאחרים. בגלל זה, לפעמים האורות כבים "מאוחר מדי" או "מוקדם מדי". האמור לעיל אתגר אותי לחשוב: אני רוצה שהתאורה הדקורטיבית תידלק תמיד באותה רמה של אור הסביבה ואז תכבה בזמן מסוים, תלוי אם אנחנו ערים או לא.

מַטָרָה

מדריך זה מנצל את האפשרויות של מכשירים מבוקרים אלחוטית כמו System Nexa הפועלים בתדר 433.92MHz. כאן אנו אמורים להציג:

  1. בקרת תאורה אוטומטית
  2. שליטה באינטרנט

שליטה באינטרנט. שרת אינטרנט פנימי לעומת חיצוני

השרת הפנימי מנצל את האפשרות של מגן ה- Ethernet של Arduino לספק שרת אינטרנט. שרת האינטרנט ישתתף בשיחות של לקוח אינטרנט כדי לבדוק ולתקשר עם ה- Arduino. זהו פתרון פשוט עם פונקציונליות מוגבלת; האפשרויות לשפר את קוד שרת האינטרנט מוגבלות על ידי הזיכרון של ה- Arduino. השרת החיצוני דורש התקנה של שרת אינטרנט חיצוני של PHP. התקנה זו מסובכת יותר ואינה נתמכת על ידי הדרכה זו, אולם קוד/דף PHP לבדיקת וניהול ה- Arduino מסופק עם פונקציונליות בסיסית. האפשרויות לשפר את שרת האינטרנט מוגבלות במקרה זה על ידי שרת האינטרנט החיצוני.

כתב חומרים

כדי לנצל באופן מלא את האפשרויות שסקיצה זו נותנת, אתה צריך:

  1. Uno Arduino (נבדק על R3)
  2. מגן אתרנט של ארדואינו
  3. ערכת Nexa או דומה הפועלת על 433.92MHz
  4. חיישן PIR (פסיבי אינפרא אדום) הפועל במהירות 433.92MHz
  5. נגד 10KOhms
  6. LDR
  7. RTC DS3231 (גירסת שרת חיצוני בלבד)
  8. משדר 433.92MHz: XY-FST
  9. מקלט 433.92MHz: MX-JS-05V

המינימום המומלץ הוא:

  1. Uno Arduino (נבדק על R3)
  2. ערכת Nexa או דומה הפועלת על 433.92MHz
  3. נגד 10KOhms
  4. LDR
  5. משדר 433.92MHz: XY-FST

(השמטת מגן ה- Ethernet מחייבת שינויים בסקיצה שלא מסופקת במסגרת הוראה זו)

ההיגיון של נקסה. תיאור קצר

מקלט Nexa לומד את מזהה השלט הרחוק ואת מזהה הכפתור. במילים אחרות, לכל שלט יש את מספר השולח שלו ולכל זוג כפתורי הפעלה/כיבוי יש את מזהה הלחצן שלו. המקלט צריך ללמוד את הקודים האלה. חלק ממסמכי Nexa קובעים שניתן לשייך מקלט לעד שישה שלטים. הפרמטרים של Nexa:

  • SenderID: מזהה השלט הרחוק
  • ButtonID: מספר זוגות כפתורים (הפעלה/כיבוי). זה מתחיל במספר 0
  • קבוצה: כן/לא (גם כפתורי "כבוי/מופעל")
  • פקודה: הפעלה/כיבוי

שלבים ניתנים להדרכה. הערה

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

שלב 1: המעגל

שלב 2: Nexardu עם שרת אינטרנט פנימי (הכולל NTP)

שלב 3: Nexardu עם שרת חיצוני

שלב 4: מידע בעל ערך

שלב 1: המעגל…

המעגל…
המעגל…

חברו את הרכיבים המגוונים כפי שמוצג בתמונה.

סיכת ארדואינו מספר 8 לסיכת נתונים במודול RX (מקלט) סיכת ארדואינו מספר 2 לסיכת נתונים במודול RX (מקלט) סיכת ארדואינו מספר 7 לסיכת נתונים במודול TX (שולח) סיכת ארדואינו A0 ל- LDR

תצורת RTC. נחוץ רק בתצורת השרת החיצוני. Pin Arduino pin to pin SDA on module RTC pin Arduino pin A5 to SCL on module RTC

שלב 2: Nexardu עם שרת אינטרנט פנימי (הכולל NTP)

הספריות

קוד זה עושה שימוש בהרבה ספריות. את רובם ניתן למצוא דרך "מנהל הספרייה" של ה- Arduino IDE. אם לא תמצא ספריה רשומה, אנא חפש בגוגל.

Wire.hSPI.h - נדרש על ידי Ethernet shieldNexaCtrl.h - בקר מכשיר Nexa Ethernet.h - כדי להפעיל ולהציג את מגן ה- EthernetRCSwitch.h - נדרש עבור PIRTime.h - נדרש עבור RTCTimeAlarms.h - ניהול אזעקות זמן EthernetUdp.h - נדרש עבור לקוח NTP

הסקיצה

הקוד שלהלן מנצל את האפשרות להשתמש בלוח ה- Arduino UNO לא רק כאמצעי השליטה במכשירי Nexa, אלא שהוא כולל גם שרת אינטרנט פנימי. יש להוסיף הערה כי מודול ה- RTC (שעון בזמן אמת) מותאם אוטומטית באמצעות NTP (פרוטוקול זמן הרשת).

לפני שתעלה את הקוד ל- Arduino, ייתכן שיהיה עליך להגדיר את הדברים הבאים:

  • SenderId: עליך קודם כל לרחרח את ה- SenderId, ראה להלן
  • PIR_id: עליך קודם כל לרחרח את SenderId, ראה להלן
  • כתובת IP של LAN: הגדר IP של ה- LAN שלך למגן ה- Arduino Ethernet שלך. ערך ברירת מחדל: 192.168.1.99
  • שרת NTP: לא הכרחי בהחלט אך יכול להיות טוב לגוגל עבור שרתי NTP בסביבתך. ערך ברירת מחדל: 79.136.86.176
  • הקוד מותאם לאזור הזמן של CET. התאם ערך זה -אם יש צורך, לאזור הזמן שלך על מנת להציג את הזמן הנכון (NTP)

הרחת קודי הנקסה

לשם כך עליך לחבר -לפחות את רכיב ה- RX ל- Arduino כפי שמוצג במעגל.

מצא מתחת למערכון Nexa_OK_3_RX.ino שבזמן כתיבתו תואם את מכשירי Nexa NEYCT-705 ו- PET-910.

השלבים שיש לבצע הם:

  1. חבר את מקלט Nexa לשלט הרחוק.
  2. טען את Nexa_OK_3_RX.ino על ה- Arduino ופתח את "צג סידורי".
  3. לחץ על כפתור השלט הרחוק השולט במקלט Nexa.
  4. שים לב ל - "RemoteID" ו- "ButtonID".
  5. הגדר את המספרים האלה תחת SenderID ו- ButtonID בהצהרה המשתנה של המערכון הקודם.

כדי לקרוא את מזהה ה- PIR, פשוט השתמש באותו סקיצה (Nexa_OK_3_RX.ino) וקרא את הערך על "צג סידורי" כאשר ה- PIR מזהה תנועה.

שלב 3: Nexardu עם שרת חיצוני

הספריות

קוד זה עושה שימוש בהרבה ספריות. את רוב הדברים ניתן למצוא דרך "מנהל הספרייה" של ה- Arduino IDE. אם לא תמצא ספרייה ברשימה, אנא חפש בגוגל.

Wire.hRTClib.h - זוהי הספרייה מ- https://github.com/MrAlvin/RTClibSPI.h - נדרש על ידי Ethernet shieldNexaCtrl.h - בקר מכשיר Nexathernet.h - כדי להפעיל ולהציג את ה- shield shieldRCSwitch.h - חובה עבור PIRTime.h - חובה עבור RTCTimeAlarms.h - ניהול אזעקות זמן aREST.h - עבור שירותי API של RESTful המנוצלים על ידי שרת חיצוני/wdt.h - טיפול בטיימר של כלב שמירה

הסקיצה

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

לפני שתעלה את הקוד ל- Arduino, ייתכן שיהיה עליך להגדיר את הדברים הבאים:

  • SenderId: עליך קודם כל לרחרח את SenderId, ראה ריחוף קודי ה- Nexa בשלב הקודם
  • PIR_id: תחילה עליך לרחרח את SenderId, ראה ריחוף קודי ה- Nexa בשלב הקודם
  • כתובת IP של LAN: הגדר IP של ה- LAN שלך למגן ה- Arduino Ethernet שלך. ערך ברירת מחדל: 192.168.1.99

להליך הרחת קוד Nexa, עיין בשלב מס '1.

קובץ משלים

העלה את קובץ ה- nexardu4.txt המצורף לשרת ה- PHP החיצוני שלך ושנה את שמו ל- nexardu4.php

הזמן RTC נקבע

כדי לקבוע את השעה/תאריך ב- RTC אני משתמש בסקיצה SetTime המאגדת את הספרייה DS1307RTC.

שלב 4: מידע בעל ערך

מידע בעל ערך
מידע בעל ערך
מידע בעל ערך
מידע בעל ערך

טוב לדעת התנהגות

  1. כאשר ארדואינו נמצא תחת "שליטה אוטומטית קלה", הוא יכול לעבור ארבעה מצבים שונים ביחס לתאורת הסביבה ולשעה ביום:

    1. בערנות: ארדואינו מחכה ללילה.
    2. פעיל: הלילה הגיע וארדואינו הדליק את האורות.
    3. רדום: האורות דולקים אך הגיע הזמן לכבות אותם. זה מתחיל ב- "time_to_turn_off - PIR_time" כלומר, אם time_to_turn_off מוגדר ל -22: 30 ו- PIR_time מוגדר ל -20 דקות, אז הארדואינו ייכנס למצב הרוגע בשעה 22:10.
    4. רדום: הלילה עובר, ארדואינו כיבה את האורות וארדואינו מחכה שהשחר יהפוך לערות.
  2. ארדואינו תמיד מקשיב לאותות שנשלחים על ידי שלט רחוק. זה כולל את האפשרות להציג את מצב הנורות (הדלקה/כיבוי) באינטרנט בעת שימוש בשלט רחוק.
  3. אף על פי שארדואינו בערנות הוא מנסה לכבות את האורות כל הזמן, לכן אותות ON שנשלחים על ידי שליטה מחדש על מנת להדליק את האורות עלולים להיתפס על ידי ארדואינו. אם זה יקרה, הארדואינו ינסה לכבות את האורות שוב.
  4. בעוד ארדואינו פעיל הוא מנסה להדליק את האורות כל הזמן ולכן, אותות כיבוי שנשלחים על ידי שלט רחוק כדי לכבות את האורות עלולים להיתפס על ידי ארדואינו. אם זה יקרה, הארדואינו ינסה להדליק שוב את האורות.
  5. במצב רדום ניתן להדליק/לכבות את האורות באמצעות שלט רחוק. הארדואינו לא יפעל.
  6. במצב מיושן הספירה לאחור של PIR תתחיל להתאפס מ- "time_to_turn_off - PIR_time" וכך זמן_ההפוך_התארכות ב- 20 דקות בכל פעם שה- PIR מזהה תנועה. "אות PIR זוהה!" ההודעה תוצג בדפדפן האינטרנט כאשר זה קורה.
  7. בעוד Arduino הוא רדום ניתן להדליק ולכבות אורות באמצעות השלט הרחוק. הארדואינו לא יפעל.
  8. מחזור איפוס או הפעלה של ה- Arduino יביא אותו למצב פעיל. המשמעות היא שאם הארדואינו התאפס לאחר time_turn_off אז ארדואינו ידליק את האורות. כדי להימנע מכך יש להביא את Arduino למצב ידני (סמן את האפשרות "בקרה אוטומטית קלה") והמתן עד הבוקר כדי להחזיר אותו ל"בקרה אוטומטית קלה ".
  9. כאמור, ארדואינו מחכה שהשחר יתחיל לפעול שוב. בגלל זה, המערכת יכולה להטעות על ידי הפניית אור חזק מספיק לעבר חיישן האור שעומד לעלות על סף הבהירות המינימלית. אם זה יקרה, אז ארדואינו ישתנה למצב פעיל.
  10. ערך הסובלנות הוא בעל חשיבות גבוהה על מנת למנוע מהמערכת להתנפנף ולכבות סביב ערך הסף המינימלי של זוהר. נורות לד, בשל הבהוב ותגובתן הגבוהה, יכולות להוות מקור להתנהגות מתנפנפת. הגדל את ערך הסובלנות אם אתה נתקל בבעיה זו. אני משתמש בערך 7.

טוב לדעת על הקוד

  1. כפי שאתה יכול להבחין, הקוד הוא גדול מאוד ועושה שימוש בכמות ניכרת של ספריות. זה פוגע בכמות הזיכרון הפנוי הדרוש לערימה. שמתי לב להתנהגות לא יציבה בעבר שהמערכת נעצרת, במיוחד לאחר שיחות אינטרנט. לכן האתגר הגדול ביותר שהיה לי היה להגביל את גודלה ואת השימוש במשתנים מגוונים על מנת להפוך את המערכת ליציבה.
  2. הקוד המנצל את השרת הפנימי -משמש אותי בבית, פועל כעת מאז פברואר 2016 ללא בעיות.
  3. השקעתי מאמצים רבים להעשיר את הקוד בהסברים. נצל זאת כדי לשחק עם פרמטרים מגוונים כמו מספר משלוחי קוד Nexa לכל פרץ, זמן סנכרון NTP וכו '.
  4. הקוד אינו כולל שעון קיץ. יש להתאים זאת באמצעות דפדפן האינטרנט כאשר הוא חל.

כמה נקודות שכדאי לקחת בחשבון

  1. הוסף את האנטנות למודולי תדר הרדיו TX ו- RX. זה יחסוך לך זמן להתלונן על שתי נקודות עיקריות: חוסן וטווח האות RF. אני משתמש בחוט 50Ohms באורך 17.28 ס"מ (6.80 אינץ ').
  2. זה בלתי ניתן להשגה עשוי לעבוד עם מערכות אוטומציה ביתיות אחרות כמו Proove, למשל. אחד התנאים הרבים שעליהם להתקיים הוא להפעיל אותם בתדר 433.92MHz.
  3. כאב ראש גדול עם ארדואינו הוא להתמודד עם ספריות שעשויות להתעדכן עם הזמן ופתאום לא יהיו תואמות בחזרה למערכון ה"ישן "שלך; אותה בעיה עלולה לעלות בעת שדרוג ה- Arduino IDE שלך. שימו לב שזה יכול להיות המקרה שלנו כאן -כן, גם הבעיה שלי.
  4. מספר לקוחות בו זמנית עם מצבי אור שונים יוצרים מצב "מהבהב".

צילום מסך

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

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

תיעוד מפורט/מתקדם

צירפתי את הקבצים הבאים כדי שיוכלו לעזור לך להבין את כל הפתרון, במיוחד לפתרון בעיות ושיפור.

Arduino_NexaControl_IS.pdf מספק תיעוד על פתרון השרת הפנימי.

Arduino_NexaControl_ES.pdf מספק תיעוד על פתרון השרת החיצוני.

הפניות חיצוניות

מערכת נקסה (שוודית)

שלב 5: סיים

גָמוּר!
גָמוּר!

הנה הכל נגמר ופועל!

ניתן למצוא את מארז Arduino Uno ב- Thingiverse כ- "Arduino Uno Rev3 עם מארז Ethernet Shield XL".

מוּמלָץ: