facebook pixel בלוג: תוכניות למערכת בית חכם DIY - www.4project.co.il
Main logo www.4project.co.il
כל הרכיבים לפרוייקט שלכם
עגלת קניות

העגלה ריקה

לקוחות נכבדים, אלה שעות הפעילות של המחסן במהלך פסח 2024:
ערב חג וחג ראשון (22-23/04) - המחסן סגור
חול המועד (24-25/04) - המחסן יפעל בין 8:00 עד 15:00
ערב חג וחג שני (28-29/04) - המחסן סגור
נחזור לפעילות רגילה ביום שלישי 30/04
חג שמח!

תוכניות למערכת בית חכם DIY


2023-12-17 16:16:30
זהו פוסט תיאורטי, סוג של "הצהרת כוונות", או רשימת TODO של מה שיושב לי בראש במשך שנים לגבי מערכת בית חכם שאני רוצה לבנות. כותב את זה בעיקר בשבילי כדי לא לשכוח דברים כי בזמן האחרון אני מרגיש שאני קצת מתפזר בין כמה פרויקטים, אבל גם מי שעוקב אחרי הפוסטים שלי יוכל ללמוד, להגיב ואולי גם לשנות את כיוון המחשבה שלי.

קצת היסטוריה

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

ב-2012 התחלתי לזרוק את הרעיונות שהיו לי בפורום של האתר כחלק מסדרת הפוסטים "הייתי רוצה לבנות".
הנה פוסט על הרעיונות שהיו לי לגבי דלת כניסה.
ופוסט עם רעיונות לגבי תאורה בבית.

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

זה אחד הדברים שמדרבנים אותי להמשיך עם הפרוייקט Smile emoticon

אסביר בהמשך למה הייתי צריך את הצנרת הנוספת מכל קופסת מפסקים, בנוסף לצנרת החשמל הקיימת.

דבר נוסף שהיה לי ברור שחייבים לממש לפני שמתחילים לפזר רכיבי אלקטרוניקה ברחבי הבית זה עדכון מרחוק. פרוייקטים כאלה לא נכתבים במכה אחת, כל הזמן יש עדכונים. להגיע פיזית לכל רכיב כדי לעדכן אותו דרך חיבור USB של הבקר זה לא רעיון מוצלח במיוחד. לכן התקדמתי בכיוון של dual boot לרכיבי XIAO שאני מתכנן להשתמש בהם. על זה אפשר לסמן "V". אז מה הלאה?

בהמשך הפוסט אסביר על הנושאים הבאים:
  • התשתית הפיזית
  • רכיבי הפרוייקט (החומרה)
  • תקשורת בין הרכיבים (התוכנה)
  • שליטה מרחוק
  • שליטה על הצרכנים בבית (תאורה, מזגן, טלויזיה וכו')
  • שלבים הבאים

התשתית הפיזית

למה לי כל הסיבוך הזה אם אפשר לקנות את המוצרים המוכנים של SHELLY שמכניסים מאחורי המפסק ולהיות כמו רוב האנשים הרגילים?

כמה נקודות:
  1. מעדיף לא לפזר עוד ועוד רכיבים אלחוטיים בבית.
  2. לא סומך עליהם. במיוחד לא על השנאי שבתוכם. בסופו של דבר יש בהם רכיבי אלקטרוניקה שדורשים מתח נמוך, אז חייב להיות בהם ספק כוח ממותג כלשהו.

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

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

בחזרה לצנרת הנוספת שהוסיפו לי בין כל קופסת המפסקים ונקודות אסטרטגיות בדירה לארון התקשורת…
בצנרת הזו אני מתכנן להעביר חוטים לאספקת מתח ותקשורת.
למה צריך צנרת נפרדת? קודם כל כי לפי החוק אסור לערבב באותו צינור או באותה קופסה חוטים עם 230V ומתח נמוך (תקשורת וכו'). וגם המסלול שחוטי החשמל עוברים בדרך למפסקים לא תמיד מתאים למה שאני מתכנן לעשות.

התקשורת שבחרתי להשתמש בה היא RS-485. יש הרבה רכיבים זמינים בשוק. משתמשים בתקשורת זו בתעשיה איפה שיש הרבה רעש חשמלי, ולא רק. אפשר להגיע ל-10MBps במרחקים קצרים, ויכולת לתקשר למרחקים של 1.2 קילומטר על חשבון המהירות שקטנה עם המרחק. צריך רק 2 חוטים ואדמה. תצורה של הפריסה היא שרשור של הרכיבים אחד אחרי השני. בסוף קו המשורשר צריך לשים נגד של 50 אוהם כדי למנוע החזרים. ה-RS-485 מספק תקשורת Half-Duplex, מה שאומר שהתקן שמשדר לא יכול לשמוע באותו הזמן. אתייחס לזה בהמשך.

אספקת מתח

אסביר קודם על המתח שצריך לספק לרכיבים הפזורים ברחבי הבית…
הרכיבים צריכים לקבל 5V. לחוטים בקירות יש התנגדות. כמה שהם ארוכים יותר, כך ההתנגדות גדלה. כדי להקטין את ההתנגדות אפשר להשתמש בחוטים עבים יותר, אבל זה לא יהיה פרקטי במקרה שלי. כשיש התנגדות, חלק מהמתח נופל על החוטים (ומחמם אותם) כך שבסופו של דבר לרכיבים יגיע מתח נמוך יותר מ-5V.

מה שעושים, זה לספק מתח גבוה ממה שצריך ומורידים אותו קרוב לצרכן. אני מתכנן להשתמש בספק מרכזי של 12V וקרוב לבקרים המפוזרים בבית לשים ממיר מתח שיוריד אותו ל-5V. ההנחה שלי היא שהרכיבים לא צורכים הרבה זרם (כי הם יהיו במצב שינה רוב הזמן וגם אם לא, הצריכה של מיקרובקר לא גבוהה במיוחד), אז אפשר יהיה להשתמש בחוטים דקים, אפילו כאלה של כבל רשת שאפשר לפרוס בצינורות שנוספו.

בכל כבל רשת יש 4 זוגות חוטים. זוג אחד דרוש לתקשורת RS-485 להעברת נתונים. עוד זוג ישמש לחיווי שלרכיב כלשהו יש מידע לשדר (אסביר על זה בהמשך), כך שנשארו עוד 2 זוגות. אפשר להשתמש בזוג אחד לפלוס 12V וזוג נוסף לאדמה.

החוטים של כבל CAT6 שיש לנו באתר הם בעובי AWG23 ולפי טבלה זו אפשר להעביר עד 0.729A בכל חוט. מה שאומר ששני החוטים מאפשרים להעביר קרוב ל-1.5A. זרם כפול מתח שווה הספק, כך ש-12V שעוברים בחוטים כפול 1.5A שווה 18W. אם ממירים את ה-18W ל-5V שנצטרך למיקרובקרים (18 חלקי 5), יעילות של ממיר מתח של כ- 90% (כפול 0.9), נקבל קצת יותר מ-3A. זהו זרם המקסימלי שהרכיבים יוכלו למשוך מהחיבור דרך כבל רשת. לדעתי זה הרבה יותר ממה שמיקרובקרים שמחוברים לקו של הכבל יצטרכו. ובמקומות שצריך יהיה יותר זרם (פעמון של הדלת, ממסר, מסך וכו') אפשר יהיה להעביר כבל דו-גידי בנוסף לכבל רשת.

תקשורת

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

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

התקשורת מול רכיבי RS-485 בדרך כלל טורית (UART) ובדרך כלל למיקרובקרים אין הרבה ערוצי תקשורת UART חומרתיים. אז הפתרון יהיה לתקשר דרך חיבור תוכנתי (אפשרי בהחלט, פחות יעיל), או למתג בין רכיבי ה-RS-485, כך שרק רכיב אחד מתקשר עם מיקרובקר בכל זמן נתון.

תקשורת ה-RS-485 תשתמש בזוג חוטים בכבל הרשת שיפרס בין הנקודות בבית.

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

נראה לי שהכי פשוט יהיה להשתמש ברכיב RS-485 נוסף, שכבר יודע להתמודד עם קווי תקשורת ארוכים. רכיב שרוצה לשדר משהו פשוט ינדנד את הקו. בצד המרכזיה הקו הזה יחובר לכניסה דיגיטלית שתגרום לפסיקה בתוכנה (Interrupt), וכך ידע שצריך לפנות לרכיבים על מקטע זה. בפרק העוסק בתקשורת בין הרכיבים אסביר קצת יותר על פרוטוקול התקשורת התוכנתי שיעסוק בהודעות והקשר בין המרכזיה לרכיבים.

חיבורים

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

הכיוון שלי הוא בהשראת המתאם להארכת טווח ה-I2C:
"מתאם להארכת טווח ה-I2C"

אם אני פורס כבל רשת בצינורות, אז למה לא להשתמש במחבר RJ45 הסטנדרטי כדי לקשר בין הרכיבים?

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

על המעגל יהיו סוקטים לכרטיס XIAO שהוא המיקרובקר שאני מתכנן להשתמש להתקנים שיהיו מפוזרים בבית:


רכיבי תקשורת RS-458 יהיו חלק מהמעגל שאתכנן, בנוסף לרכיבים אחרים כמו רכיב ההצפנה ATECC508A שתכננתי להשתמש בו ואולי גם אחרים.

בצד השני של הכרטיס יהיו סוקטים לחיבור מודול ממיר מתח שיוריד מ-12V שמגיע על הקווים של הכבל ל-5V שצריך לספק למיקרובקר. יש מבחר גדול של המודולים האלה, השוני הוא בעיקר בזרם שהם יכולים לספק. אם ידוע לי שמיקרובקר עם החיישנים שמחוברים אליו צורכים רק 100mA לדוגמה, אין טעם להשתמש בממיר מתח שיכול לספק 3A. זה סתם ייקר את ההתקנה וגם יהיה כנראה לא יעיל אנרגטית כי רכיב שיכול לספק 3A יהיה יעיל יותר לזרמים גבוהים מאשר לזרמים נמוכים. לנקודות שברור יהיה שצריך יותר זרם אפשר יהיה להרכיב ממיר מותאם לזרם גבוה יותר.
הנה דוגמה למודול שיוכל להמיר 12V בכניסה ל-5V ביציאה ולספק עד 600mA:


ובנוסף לכל החיבורים האלה יהיו גם חיבורים לחיישנים ודברים אחרים שצריך להפעיל במתח נמוך (ממסרים, לדים וכו'). עוד לא החלטתי אם להשתמש במחברי JST (קטנים יותר ואפשר למקם באמצע המעגל), או פשוט לשים עוד כמה מחברי הברגה בשוליים של המעגל. אחליט כשאגיע לתכנון המעגל ואבין את הגודל וכמות החיבורים…

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

ערוץ תקשורת RS-485 דורש חיבור של Termination Resistor בקצה של הקו. הפתרון הוא פשוט: מחבר RJ45 עם כבל רשת קצר שהנגד מולחם בין הקווים הרלוונטיים. עם בידוד מתכווץ מעל כל זה כמובן.

לא כל הרכיבים יהיו מחוברים ל-RS-485 כנראה. כבר היום אני מזהה כמה מקומות שלא חשבתי עליהם ולא תהיה לי אפשרות לחבר חשמל או קוי תקשורת אליהם. אבל הרוב המוחלט של הרכיבים כן תוכננו להיות מחוברים לתשתית זו.

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

רכיבי הפרוייקט (החומרה)

כמו שכבר הזכרתי קודם, הרכיבים שאני מתכנן לפזר ברחבי הבית יהיו מבוססים על כרטיס Arduino XIAO SAMD21 של חברת Seeeduino:


זהו כרטיס קטן, עם מיקרובקר יחסית חדיש, עם הרבה זכרון ותכונות מעניינות. את זכרון ה-FLASH אני מתכנן לפצל לשני איזורים כדי לממש את ה-dual boot שתיארתי בפוסט הקודם. מקווה שכמות הזיכרון תספיק לתוכנה שאני מתכנן.

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

כמו שאתם מבינים, היחידות האלה יצטרכו לבצע פעולות קלט (לחיצה, קריאת חיווי החיישנים וכו') ולבצע פלט (להדליק לד, להפעיל זמזם וכו'). על התוכנה שתרוץ על מיקרובקרים אלה נדבר בהמשך. מבחינה חומרתית, רכיב ה-XIAO כולל את כל מה שצריך. זהו בעצם כרטיס תואם ארדואינו קטן, עם 11 קווי DIO, שכולם יכולים לתפקד גם כקווים אנלוגיים. שני קווים ילכו לטובת תקשורת ה-RS-485. עוד קו לחיווי כשיש משהו חשוב לשדר. נשארו עוד 8 קווים שאפשר להשתמש בהם לחיבור רכיבים חיצוניים. 8  רכיבים נראה לי קצת מוגזם כרגע, אבל עוד לא חשבתי על כל המקרים. את קווי ה-I2C כנראה אחבר למחבר מיוחד על הלוח, שיקבל גם 5V ואדמה. זה יאפשר לחבר הרחבות אם יהיה לכך צורך בעתיד. 4-6 מחברים לרכיבים חיצוניים נראה לי יהיה מצויין.

יש גם צד המרכזיה שלא התייחסתי אליו עדיין. הרכיבים שמפוזרים צריכים לתקשר עם ישות מרכזית, שתאסוף מהם את הנתונים ותגיד להם מה לעשות…
בצד זה צריך כמות קווים שתספיק לתקשר עם כל רכיבי ה-RS-485 שאליהם יחוברו מקטעי התשתית. קווים שיהיו מחוברים לחיווי הפסיקות מהרכיבים בבית. יכולת אחסון בסיסית כדי לשמור את ההגדרות של היחידות המפוזרות (אתייחס לזה בפרק הבא). מספיק זיכרון כדי לנהל את התקשורת בין כל הרכיבים וגם לספק אפשרות ניהול הרשת בצורה כלשהי.

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

הכיוון שלי לבינתיים הוא כרטיס Teensy 4.1. יש לו הרבה זיכרון (8MB של FLASH ו-1MB של RAM), יש לו תושבת זכרון microSD, יש 8 פורטים של UART חומרתי, מעבד חזק מאוד (600MHz), וגם 55 קווי DIO. בינתיים נשמע כמו התאמה מעולה למשימה.


בדומה לרכיבים המפוזרים ברחבי הבית, גם למרכזיה אצטרך לייצר סוג של "לוח אם" עליו ישב ה-Teensy, רכיבי תקשורת RS-485, רכיב הצפנה ATECC508A ואולי עוד כמה דברים.

אסביר טיפה למה אני רוצה שיהיה רכיב ATECC508A בכל יחידה…
קודם כל, כל יחידה תצטרך זכרון NVRAM כדי לשמור נתונים שונים. לבקר XIAO אין NVRAM פנימי, כך שצריך יהיה להשתמש ברכיב חיצוני.
בנוסף לזה, רציתי להוסיף קצת Security לרשת. לא שאני דואג שמישהו יוכל להתחבר ולשחק לי עם האורות בבית, או לדעת מה טמפרטורת המים בדוד… אבל בכל זאת, אם אני כבר מתכנן מערכת רצינית, רצוי שתהיה רצינית עד הסוף. רכיב ATECC508A הוא בקר עזר, שיכול לנהל מפתחות הצפנה RSA, ליצור חתימה מוצפנת להודעות שנשלחות ולפענח חתימה בהודעות שמתקבלות. פעולות אלה דורשות הרבה כוח חישוב, כך שמיקרובקר כמו XIAO לא יוכל להתמודד עם המשימה בעצמו.
לרכיב ATECC508A יש גם מנגנון יצירת מספרים אקראיים יעיל, משהו שיכול להיות שימושי בפרוטוקול התקשורת.

תקשורת בין הרכיבים (התוכנה)

בפרק זה אסביר על פרוטוקול התקשורת שאני מתכנן לממש. תוכנה זה איזור הנוחות שלי, כך שאני די בטוח במה שאני מתכנן. אני מאלה שלא מאמין במסמכי דיזיין לפני כתיבת קוד, כך שאל תצפו ממני לתרשימים וכו'  Smile emoticon

דברים קיימים

קודם כל, במקרה שמישהו שואל למה להמציא את הגלגל, הרי יש כבר ספריות ופרוייקטים שמימשו פרוטוקולים לרכיבי IoT, לדוגמה פרוייקט MySensors. זהו ללא ספק פרוייקט מעולה, לפני זמן מה צללתי לקוד שלו כדי להבין אם אפשר יהיה להשתמש בו למימוש הרעיון שלי… זהו פרוייקט OpenSource, כך שאפשר לראות את הכל וגם כמובן לתרום את השינויים והשיפורים שלכם. רואים שהם מתרכזים על חומרה מסוימת מאוד, כרטיסי ארדואינו UNO, NANO ו-Pro MINI. גם התקשורת מרוכזת סביב רכיבים אלחוטיים כמו ESP8266 ו-nRF24L01+. לא ממש הכיוון שלי. כמובן אפשר להתבסס על הקוד הקיים ולהציע שינויים ושיפורים, אבל במקרה שלי כנראה שהמאמץ יהיה הרבה יותר גדול מלכתוב את הכל מאפס. עובדה היא שלפני כמה שנים ראיתי אנשים שמדברים על תקשורת מבוססת על רכיבי RS-485, אבל גם היום היא לא מופיעה ככיוון שהם ממליצים עליו באתר של הפרוייקט. מניסיון שלי בפרוייקטי OpenSource אחרים, יש שם הרבה קוד "מת", שאף אחד לא יודע למה הוא שם ומה הוא עושה. כנראה נכתב ע"י אנשים שזנחו את הפרוייקט. מפתחים המובילים שצריכים לאשר את השינויים לרוב לא ששים לעשות שינויים גדולים, במיוחד אם הם לא יכולים לבדוק אותם (הרי אני מתבסס על חומרה שונה ממה שהם משתמשים).

התנהגות הרכיבים

הרכיבים שמפוזרים ברחבי הבית מבחינתי צריכים להיות כמה שיותר "טיפשים". הם לא אמורים לדעת אם מחובר אליהם מפסק שאמור להדליק את האור, חיישן טמפרטורה או זמזם של הדלת. בהדלקה והתחברות לרשת כל אחד מהם יקבל הגדרות התנהגות. לדוגמה, ההגדרה של רכיב שמחובר למפסק אור ולד לחיווי שהאור דולק יקבל הגדרה בסגנון של "פורט 1 מוגדר ככניסה דיגיטלית שמעירה את הרכיב ממצב שינה כשיש שינוי. פורט 2 מוגדר כיציאה דיגיטלית. כשפורט 1 משתנה, תדווח על השינוי. תתעורר כשיש תקשורת בערוץ ה-RS-485. כל שאר הזמן אפשר לישון כדי לחסוך בחשמל".
רכיב שמודד טמפרטורה של הדוד יכול לקבל הגדרה בסגנון של "פורט 3 מוגדר ככניסה אנלוגית שלא מעירה את הרכיב כשיש שינויים. תתעורר כל 5 דקות, תמדוד את הערך האנלוגי בפורט 3 ותדווח. לא צריך להתעורר בגלל תקשורת בערוץ ה-RS-485. כל שאר הזמן אפשר לישון כדי לחסוך בחשמל".

כל מה שהרכיבים האלה צריכים לעשות זה לבצע את התוכנית הפשוטה הזו שהוגדרה להם ולדעת לתקשר דרך ערוץ תקשורת ע"י מימוש הפרוטוקול.

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

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

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

לכל רכיב יהיה מזהה ייחודי משלו. חשבתי לשים מפסקי DIP על כל כרטיס של הרכיבים כדי לתת להם מספר מזהה, אבל אחרי שהחלטתי שאני רוצה לשלב רכיב הצפנה ATECC508A לכל יחידה, ראיתי שיש לכל רכיב כזה מספר מזהה ייחודי צרוב מהמפעל, כך שאפשר יהיה להשתמש בו לצורכי זיהוי. מספר המזהה של ATECC508A קצת ארוך (9bytes), צריך לבדוק אם זה מתאים לפרוטוקול. יכול להיות שבכל זאת אשתמש במפסקי DIP לצורכי פרוטוקול התקשורת, והמזהה של ATECC ישמש לצורכי זיהוי.

בשלב ההתחברות לרשת כל יחידה תזדהה ותקבל את ההגדרות שלה מהמרכזיה. זו הסיבה שאני רוצה שבבקר המרכזי תהיה יכולת אחסון (זכרון microSD) שיוכל לשמור את כל ההגדרות והנתונים הנוספים.

ניהול התקשורת הפיזית

תקשורת בערוץ RS-485 היא Half-Duplex, כלומר בזמן שרכיב כלשהו משדר, הוא לא שומע אחרים. מה שאומר שצריך לייצר מצב שלא יהיו שני רכיבים שמשדרים בו זמנית, אחרת אי אפשר יהיה לדעת שהיו שני שידורים וכנראה שגם שניהם ישתבשו.

כדי להתגבר על מגבלה זו, התקשורת בין הרכיבים צריכה להיות דומה לתקשורת ה-I2C שבה יש Master (המרכזיה במקרה שלנו) ויש Slaves (רכיבים המפוזרים בבית). ה-Master פונה ל-Slave לפי הכתובת שלו ומבקש מידע, או נותן לו פקודה לביצוע. ה-Slave עונה עם המידע שיש לו או עם הודעה פשוטה בסגנון "בוצע". אף Slave לא מתפרץ לשדר על הערוץ אם לא פנו אליו.

כדי לחסוך בחשמל, הרכיבים במערכת צריכים לישון כמה שיותר, עד שקורה משהו, כמו לחיצת כפתור הדלקת אור, או שהגיע הזמן למדוד משהו ולדווח למרכזיה. כדי לא לחכות למחזור הבא שהמרכזיה תפנה לרכיבים, צריך לדווח לה שקרה משהו, סוג של קו פסיקה במיקרובקרים. על קו ה-RS-485 יהיו מחוברים כמה רכיבים ואין קו ישיר מכל אחד למרכזיה. לצורך זה הקצתי זוג חוטים בכבל התקשורת שישמש לבקשת שידור על אותו הערוץ. רכיב שקרה בו אירוע צריך לדווח למרכזיה ע"י נדנוד של קו החיווי הזה. גם אם כמה רכיבים צריכים לשדר משהו, שניהם ינדנדו את אותו הקו, אולי בתזמון קצת שונה (Random) כדי להבטיח שהמרכזיה רואה שינוי על הקו הזה. וכשזה קורה, המרכזיה תתחיל לפנות לרכיבים לפי העדיפות שלהם, לדוגמה, לרכיב שיכול להדליק אור או לגרום לפעולה כלשהי שדורשת התייחסות מהירה תהיה עדיפות גבוהה יותר מאשר לרכיב שכל מה שהוא עושה זה למדוד ולדווח טמפרטורה כל כמה דקות.

פרוטוקול תקשורת

בהודעות שנשלחות בין הרכיבים אפשר להשתמש בשיטת ה-Type-Length-Value כדי להקל על המיקרובקרים לפענח את ההודעות. לכל סוג הודעה יהיה Type ייחודי, כמו למשל הודעות התחברות, זיהוי, הגדרות, העברת מידע של מצב הפורטים, הודעות עדכון תוכנה וכו'. ה-Length מציין את אורך ה-Value שמשודר מייד אחריו. ככה אפשר לשרשר כמה תתי-רמות של הודעות. בתוך ה-Value של הרמה העליונה של ההודעה יכולים להיות עוד קידודים של צירופי Type-Length-Value וכך הלאה.

בתקשורת מסוג זה בדרך כלל יש גם איזה שהוא Header עם שדות קבועים. עוד לא חשבתי לעומק אילו שדות צריכים להיות שם, אבל אשאיר כנראה מספיק מקום ספייר לשדות שאצטרך במהלך הפיתוח. כמה שדות שכבר חשבתי עליהם:
  • כתובת של הרכיב עליו מיועדת ההודעה (יהיו הודעות שמיועדות לכולם)
  • כתובת של הרכיב המשדר את ההודעה
  • כמה ביטים למספור של ההודעה
  • ביט המציין שזהו שידור חוזר (יעזור ב-Debug)
  • האם להודעה יש חתימת הצפנה
  • האם יש עוד מידע שצד המשדר רוצה לשדר אחרי הודעה זו (כדי שהרכיב יחכה ולא ילך לישון מיד אחרי ההודעה)
  • האם היתה הודעה שנאבדה בגלל שלא פנו לרכיב כלשהו כדי לקבל אותה (יעזור ב-Debug)

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

הפרוטוקול צריך להיות בעל 3 שלבים. כל שלושת השלבים יהיו ממוספרים עם אותו מספר בהודעה:
  • המרכזיה פונה לרכיב לפי המזהה שלו
  • הרכיב עונה כתגובה עם המידע שביקשו (או סתם OK)
  • המרכזיה שולחת הודעת Acknowledge לרכיב כדי להודיע שהיא קיבלה תשובה

אם המרכזיה לא תקבל תשובה (שלב 2), היא תפנה שוב לאותו הרכיב עם אותו מספר הודעה. אם הרכיב כבר ענה, אבל השידור לא התקבל במרכזיה, הוא יוכל להבין שזה שידור חוזר בגלל שזה אותו מספר הודעה. אם משהו ממש לא עובד והמרכזיה לא מצליחה לקבל תשובה מהרכיב, צריך יהיה להודיע איך שהוא על התקלה…
לא צריך לגבות את ההודעה השלישית בפרוטוקול. אם הגיע לרכיב, הוא ידע שההודעה שהוא שלח בשלב השני הגיע למרכזיה. אם הרכיב לא קיבל את ה-ACK של השלב השלישי, הוא יחכה עוד קצת לפני שילך לישון, למקרה שיפנו אליו שוב לשידור חוזר. אם לא, אז המספור של הפניה הבאה אליו תהיה שונה מהמספר הקודם, כך שהוא יידע שאפשר לוותר על ההודעה הקודמת ולהתקדם הלאה.

שליטה מרחוק

כמו שאפשר להבין מההסבר עד עכשיו, מערכת שאני מתכנן היא סגורה ולא מתקשרת עם שום דבר חיצוני. כדי להתחבר למערכת זו מבחוץ, כלומר לא דרך חיבור ה-RS-485, אפילו דרך ה-WIFI מתוך הבית, צריך לחבר את כל המערכת לשרת בית חכם, כמו ה-HomeAssistant או דומיו.

מערכת HomeAssistant מותקנת על מחשב כלשהו ותומכת במגוון רחב של רכיבים מוכנים הקיימים בשוק. היא תומכת גם בפרוטוקולים שונים, ביניהם גם MQTT. ה-MQTT הוא פרוטוקול המאפשר לרכיבים מסוימים להירשם להודעות של רכיבים אחרים. לדוגמה, מנורה שנמצאת בחדר שינה שצריכה להידלק בעקבות לחיצה על כפתור על הקיר יכולה להירשם לקבל הודעה "Home/BedRoom/Light" וכאשר המפסק ישלח הודעה כזו, היא תגיע למנורה שתפעל בהתאם.

אפשר יהיה לקשר בין המרכזיה לשרת HomeAssistant דרך חיבור Ethernet, או אולי גם דרך קו RS-485 עם מתאם לתקשורת טורית. עוד לא חקרתי את הכיוונים כאן, אבל ברור לי שכיוון ה-Ethernet הוא אפשרי ב-100%. כיוון החיבור הטורי צריך להיבדק כדי להבין איך מזריקים את ההודעות לתוך ה-HomeAssistant. אולי איזה שהוא סקריפט שירוץ ברקע על אותו השרת, יקבל הודעות דרך החיבור הטורי ב"שפה"/פרוטוקול של המערכת שאני רוצה לבנות, והסקריפט יתרגם את ההודעות לתצורת MQTT התקנית כמו שה-HomeAssistant מצפה לקבל. אותו הדבר גם בכיוון ההפוך, כשמישהו מחליט להדליק נורה דרך הממשק של HomeAssistant, היא צריכה להישלח למרכזיה של המערכת ומשם לרכיב הרלוונטי. צריך יהיה תאום בין ההגדרות של הרכיבים במרכזיה לאלה שיוגדרו ב-HomeAssistant. מניח שזה יהיה מבוסס סביב שמות ההודעות של MQTT.
אם הכיוון יהיה תקשורת בין המרכזיה ל-HomeAssistant דרך ה-Ethernet, אז פיזית זה בהחלט אפשרי, אבל המימוש של הודעות MQTT צריך יהיה להתבצע בבקר של המרכזיה, ואני כרגע לא בטוח שיהיה שם מספיק זיכרון כדי לעשות את זה.

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

למה HomeAssistant הוא לא המרכזיה של כל המערכת? כי אני לא רוצה שיהיה מחשב בלב המערכת. כזה שצריך לעדכן גרסאות של מערכת ההפעלה, כזה שיכול להיתקע או להשתבש. אם זה יקרה, מקסימום לא אוכל להדליק את האור מהנייד, אבל עדיין אפשר יהיה לקום וללחוץ על הכפתור שעל הקיר.

בנוסף לשליטה מהנייד על כל רכיבי הבית החכם, אני צריך שיהיה גם איזה שהוא ממשק ניהול למרכזיה כדי להוסיף רכיבים, לעדכן את ההגדרות ולראות הודעות LOG כדי לתקן בעיות. בינתיים הכיוון שחשבתי עליו הוא חיבור USB של ה-Teensy ולהתנהל מולו דרך ערוץ תקשורת טורית. כל ההגדרות אומנם ישמרו על כרטיס ה-microSD אפשר להוציא ולעדכן, אבל לא חושב שזה רעיון טוב להשבית את כל המערכת כדי לעדכן משהו בהגדרות או להוסיף רכיב נוסף.

שליטה על הצרכנים בבית

הגענו לנקודה שכל הרכיבים מצליחים לתקשר ביניהם ולהעביר את המידע ל-HomeAssistant. איך שאני רואה את זה, ההתחלה של הפרוייקט תתמקד בחיישנים שונים (כמו טמפרטורה של המים בדוד או בחדרים), האם החלונות סגורים כדי להדליק מזגן, האם הדלת נעולה… אחרי זה יגיע שלב של הפעלת דברים שלא דורשים מתח גבוה, כמו שליטה על המזגן והטלויזיה ע"י דימוי שלט רחוק, התחברות לאינטרקום של הבניין אם אצליח לעשות את זה, פעמון של הדלת… רק בסוף יגיע השלב של שליטה על צרכנים המחוברים ל-230V, כמו התאורה בבית או הפעלת תריסים חשמליים.

איך עושים את זה? הרבה ירוצו לשים ממסרים בטור לקו המתח ועל הממסר אפשר יהיה לשלוט עם מיקרובקר שמחובר למערכת. נשמע פשוט, אבל זה לא…

קודם כל, אסור לגעת או לעשות שינויים בכל מה שקשור למתח הרשת (230V), אלא אם יש לכם רישיון חשמלאי מוסמך! לי אין כזה, כך שכל שינוי שארצה לעשות צריך יהיה להיות מלווה ע"י חשמלאי אמיתי.

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

אתחיל מהנקודה השניה כדי להסביר את המצב קצת יותר…
ניקח כדוגמה חדר שיש בו 3 נורות, שעל כל אחת מהן אתם רוצים לשלוט בנפרד.
מלוח החשמל בבית יוצא רק חוט מתח אחד שהולך לכיוון החדר. אם נשים ממסר על קו זה, נוכל להדליק ולכבות רק את כל הנורות יחד (ויכול להיות שגם כמה שקעים שמחוברים לאותו הקו, תלוי בצורה שבה חיברו את החשמל בדירה). קו המתח הזה מגיע לנקודת חיבורים שנמצאת בחדר. לפעמים זו קפסה או חור בקיר, לפעמים זה יהיה מעל או מאחורי איזו שהיא מנורה בתקרה או בקיר. קופסאות כאלה בדרך כלל מלאות בחוטים וחיבורים, שם בטוח אי אפשר יהיה לשים איזה שהוא ממסר או מיקרובקר. מקופסת החיבורים יוצא חוט נפרד למפסק של כל מנורה ומהמפסק למנורה עצמה. יש גם קו האפס שדרוש לסגירת המעגל, אבל בדרך כלל המסלול שלו קצת שונה, הוא מגיע לנקודת החיבורים ומשם ישירות למנורה. אז נשמע שמפסק זו נקודה טובה לחבר בו את הממסר בדרך למנורה ואת המפסק לחבר למערכת בית החכם. זהו בהחלט אחד הכיוונים האפשריים, ושם בדרך כלל מתקינים את המודולים הקיימים בשוק, כמו מפסקי SHELLY או אחרים. כבר הסברתי למה אני לא רוצה להשתמש בהם, כי לדעתי הם לא כל כך אמינים והם מתחברים דרך רשת WIFI הביתית. מה גם, לפעמים אין מספיק מקום בקופסה, מאחורי המפסקים, במיוחד אם יש יותר ממפסק אחד. בנקודה זו אני מניח שלמפסקי SHELLY יש אישור של מכון התקנים הישראלי, כי מוכרים אותם ביותר מדי מקומות בארץ… אני אישית לא מכיר שום מוצר שיש לו תקן ישראלי שמיועד להתקנה בתוך קופסת מפסקים, וכזה שאפשר יהיה לשלוט עליו ממיקרובקר.

מה שאני כן מכיר, אלה ממסרים, או לפעמים נקראים קונטקטורים (Contactors) שמתקינים בתוך ארונות חשמל על מסילות ה-DIN הסטנדרטיות. אלה מוצרים תקניים שמיועדים לתעשיה ולהתקנות בית חכם. מה שאומר שבתצורה הזו אני צריך שקו המתח יגיע ישירות מלוח החשמל, דרך הממסר/קונטקטור למנורה. אם יש 3 מנורות שצריך לשלוט עליהן, אז צריך שיהיו 3 חוטי חשמל שיעברו דרך הצינור שמגיע לחדר לקופסת חיבורים ומשם ישירות למנורה, לא צריך לעבור דרך הקופסה של המתג בקיר. לפי מה שהבנתי מהחשמלאים, בצינור שרשורי סטנדרטי שמותקנים בקירות הבית, אפשר להעביר 6-7 חוטי חשמל, כך שאני מקווה שלא תהיה בעיה פיזית עם הכיוון הזה.

מה עם המפסק? במקום לסגור/לפתוח את המעגל של המנורה, בקופסה שלו תהיה עוד יחידה עם מיקרובקר שמחובר לרשת ה-RS-485 דרך הצינור הנוסף שהוספתי בזמן השיפוץ של הדירה, שמגיע ישירות לארון התקשורת. זה לא חייב להיות מתג מכני כמו שזה ברוב המקרים הרגילים, זה יכול להיות כפתור עם חיווי של מנורה על מצב התאורה, או לוח Touch יפה עם חיישני מגע שמחוברים למיקרובקר. זה יכול להיות גם מסך קטן שמדמה כפתורים של תאורה ושולט על עוד דברים בחדר, כמו מזגן, נותן חיווי של טמפרטורה ושעון וכל דבר אחר…

נחזור לקונטקטורים… קודם כל, הם דורשים מקום בארון החשמל. ארון המינימליסטי שקבלנים מתקינים בהחלט לא מספיק. את הבעיה הזו פתרתי כנראה. ביקשתי מהקבלן שעשה שיפוץ בבית להגדיל את לוח החשמל להכי גדול שאפשר היה להכניס (של 54 מקומות). אחרי זה הרחבתי בעצמי את ארון התקשורת לארון גדול והוספתי עוד ארון קטן של 18 מקומות. זהו, לא נשאר יותר מקום על הקיר  Smile emoticon  האם זה יספיק? עוד לא יודע, עדיין נראה לי קצת צפוף:
"ארונות חשמל ותקשורת"

איך שולטים בקונטקטורים? יש כמה סטנדרטים בתחום זה. הבקרה של חלק מהקונטקטורים היא ע"י 230VAC (נראה לי שסוג זה הנפוץ ביותר בשוק). סוג זה לא מתאים למה שאני מתכנן כי אני לא רוצה להתעסק עם 230VAC בצד הבקרה. אבל יש גם דגמים שנשלטים ע"י מתח DC (לא זוכר איזה מתח, או 12 או 24V). ויש כאלה שנשלטים ע"י מתח AC נמוך, באיזור ה-30V. אני מתכוון להשתמש בדגמים של מתח DC או AC נמוך. מתח זה עדיין גבוה יותר ממה שמיקרובקר של המרכזיה יוכל לספק, לכן התכנון שלי הוא להשתמש במערך ממסרים הנשלט ע"י מיקרובקר, והממסרים הם אלה שיספקו את המתח לקונטקטורים שימתגו את מתח הרשת 230VAC.

הנה אחת הדוגמאות למערך הממסרים שאפשר להשתמש בו:
"מודול עם 32 ממסרים"

זהו מערך של 32 ממסרים שאפשר לשלוט עליהם דרך חיבור ה-RS485. ליצרן יש גם גרסאות של 16 או 8 ממסרים, כך שאפשר יהיה להגיע לכמות הרצויה בקלות ע"י חיבור של כמה מודולים כאלה על קו ה-RS-485.

שלבי עבודה

מה יש היום? בעיקר הרעיון שהתבשל בראש במשך הרבה שנים. שזה לא מעט.
יש גם מימוש של DualBoot לרכיבים שיפוזרו ברחבי הבית.

שלב הבא הוא לחבר מודול עם רכיב הצפנה ATECC508A לכרטיס ה-XIAO כדי להוסיף את הקוד שמשתמש ב-NVRAM שיש על הרכיב ולהשלים את הקוד של עדכון מרחוק.

תזכורת לעצמי:
לבדוק אם ה-ATECC508A יהיה שימושי בתקשורת של רכיב אחד מול הרבה (בצד המרכזיה). מאוד יכול להיות שלא יהיה מספיק זיכרון בתוך הרכיב כדי לשמור את המפתחות של כל הרכיבים שצריך לפענח את החתימה של ההודעות. הרכיב מעולה לתקשורת נקודה-לנקודה כשצריך לנהל מפתחות הצפנה של אותו הרכיב ובנוסף מפתחות של הרכיב מולו מתקשרים. המרכזיה צריכה לתקשר עם כל הרכיבים בבית (כנראה עשרות). המפתחות נשמרים בזכרון NVRAM, כך שעדכון של המפתחות לפני כל פתיחת הצפנה כנראה לא יהיה ישים. אולי הפתרון הוא שכל הרכיבים המפוזרים יהיו עם אותו מפתח הצפנה…

שלב הבא יהיה להתחיל לממש את פרוטוקול התקשורת. צריך יהיה לממש אותו כספריה נפרדת כדי שאפשר יהיה להשתמש בה גם בצד של כרטיסי XIAO וגם בצד המרכזיה (בקר Teensy). בשלב הפיתוח אפשר יהיה לחבר כרטיס Teensy ל-XIAO דרך פורט תקשורת טורית, בלי ה-RS-485. כשהדברים יתחילו לעבוד, אפשר יהיה להוסיף מודול RS-485 בשני הצדדים ולתקשר ביניהם דרך חתיכה של כבל. אחרי זה אפשר יהיה למקם את האב-טיפוס של יחידת הקצה במיקום מרוחק, להעביר כבלים בקיר כדי לוודא שכל רעיון ה-RS-485 עובד גם עם כבל ארוך.

שלב הבא יהיה לייצר לוח PCB עם כל מה שתיארתי בפרק "רכיבי הפרוייקט (חומרה)" ולפזר כמה רכיבים ברחבי הבית עם חיישנים שונים. אפשר לחשוב על זה כעל שלב ייצור אחרי שהרכיבים עובדים ומתקשרים ביניהם. אפשר יהיה להתקדם להתקנה קבועה יותר של המרכזיה והרכיבים המפוזרים.

במקביל אפשר יהיה להתקין מחשב קטן כשרת של HomeAssistant ולעבוד על הפתרון של חיבור המרכזיה לשרת. להגדיר בתוכנה זו את הרכיבים המחוברים לרשת בית החכם.

רכיב של פעמון דלת הכניסה הוא שלב הבא אחרי שיהיה לוח PCB מוכן. זהו מיקום שיספק גם קלט (לחצן הפעמון) וגם פלט (זמזם הפעמון). סביב דלת הכניסה יש עוד הרבה דברים שצריך לחבר לבית החכם, כמו זיהוי האם הדלת נעולה (כנראה יהיה אתגר של התקנה פיזית של הרכיבים), מצלמה כדי לראות מי נמצא מאחורי הדלת, זיהוי דפיקה בדלת וכו'.

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

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

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

הרבה עבודה… עכשיו צריך רק למצוא את הזמן לכל זה  Smile emoticon

יש לכם שאלות או הערות? מוזמנים להגיב, תוכלו לעשות זאת כתגובה לפוסט בפייסבוק.

הודעות נוספות:

  • בלוג dual boot - הצלחה

    dual boot - הצלחה

    2023-10-05 18:17:07

    זהו פוסט רביעי בדרך ל-dual boot ואפשרות לעדכן תוכנה מרחוק. פוסט זה מסיים את סדרת ה-dual-boot אחרי שהצריבה הצליחה והכל עובד.

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

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

    2023-08-14 09:13:50

    מאז שאני זוכר את עצמי, תמיד פירקתי דברים כדי לראות איך הם בנויים. הייתי אוגר חלקים ודברים שימושיים בארון שהיה לנו במרפסת. הייתי אומר שאפשר לקרוא לי מייקר (Maker) מגיל מאוד מאוד צעיר...
    אם ישאלו אותי מה משך אותי לעולם האלקטרוניקה, בלי לחשוב אפילו שניה אני יכול להצביע בבירור על ערכת אלקטרוניקה שהיתה לי איפה שהוא בגיל 10-14...

  • בלוג נפרדים מ-Actobotics

    נפרדים מ-Actobotics

    2023-06-07 19:53:24

    העולם משתנה. גם המוצרים שנמכרים באתר. אבל לפעמים זה שינוי די גדול.
    אפשר להכריז סופית שהיצרן של סדרת רכיבי המכניקה Actobotics האינצ'יט החליט להפסיק לייצר סדרה זו ולעבור סופית לסדרת ה-goBILDA המילימטרית.

  • בלוג dual boot - נראה עובד

    dual boot - נראה עובד

    2023-05-05 21:38:04

    זהו פוסט שלישי בדרך ל-dual boot ואפשרות לעדכן תוכנה מרחוק.
    כדי להתקדם עם הרעיונות שלי לפתרונות בית חכם, אני צריך שלרכיבים המפוזרים ברחבי הבית תהיה אפשרות לעדכן את התוכנה בלי שאני צריך להתחבר ל-USB שלהם כדי לצרוב משהו. הרכיבים יכולים להיות מוחבאים במקומות ממש לא נגישים (מסתור כביסה, ארגז של התריס, קופסאות חשמל וכו').

  • בלוג שיפורים בהכנסת כתובת

    שיפורים בהכנסת כתובת

    2022-12-29 16:33:19

    האתר כל הזמן עובר שינויים ושיפורים. הרבה מהם כאלה שאתם לא ממש רואים, שיפורים בתשתיות ומערכת הניהל.
    שינוי האחרון נוגע בצורה בה אתם מכניסים כתובת למשלוח (לשליחים של UPS או דואר רשום).