חיבור חומרה לרשת האינטרנט

תגיות: , , , , , , , ,

חיבור חומרה לאינטרנט

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

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

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

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

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

הגדרות המערכת

  • מימוש של מערכת חומרה המתמשקת עם רשת האינטרנט, באמצעות פרוטוקול TCP/IP ומימוש Web Server על מיקרו-בקר.
  • המשתמש יוכל לגשת לכתובת של ההתקן מכל מחשב/פלאפון המחובר לרשת האינטרנט. ניסה לכתובת זו תעלה אתר (באמצעות פרוטוקול HTTP ) שיעלה מרכיב זיכרון שיהיה חלק מהחומרה.
  • באמצעות אתר זה יוכל המשתמש לצפות בנתונים הנמצאים על זיכרון החומרה או בכל קלט המתקבל כגון אותות מדידים וחיישנים שונים, קלט מהמשתמש באמצעות לחיצים/מקלדת המחוברת לבקר, ואף אותות שמע ווידאו. הנתונים יוצגו באתר בצורה טקסטואלית או גרפית באתר.
  • המשתמש יוכל לשלוט בחומרה באמצעות האתר ובכל להדליק נוריות, לשלוט בבקר למנועי סרוו/צעד, להציג הודעות על צג LCD, לשלוח הודעות תקשורת לכל רכיב אחר המחובר לחומרה ובכך לשלוט על מערכות רבות.
  • האתר יהיה מאובטח ויהיה ניתן לגשת אליו רק באמצעות שם משתמש וסיסמא.
  • ניתן יהיה לקרוא ולכתוב קבצים לאיזור מסויים בזיכרון המערכת דרך הרשת באמצעות FTP . ניתן יהיה לבצע עדכון של דפי ה HTML של האתר ולרשום אותם לזכרון המערכת באמצעות פרוטוקול FTP.
  • המערכת תוכל לקבל נתוני זמן (תאריך ושעה) מהרשת, ולתזמן פעלויות ע"פ שעון זה.
  • ניתן יהיה לשלוט בהגדרות החומרה, כמו כתובת ה IP והגדרות שונות באמצעות חיבור סיריאלי.
  • החומרה תוכל לקבל כתובת IP מהנתב באמצעות פרוטוקול DHCP.
  • החומרה תשמור היסטוריה של שינויים/פעילויות מסויימות כבקשת המשתמש על מנת לבצע מעקב על פעילות המערכת.
  • יושם דגש על אמינות המערכת, כלומר שהמערכת תוכל לפעול באופן מלא וללא תקלות וניתוקים, כל עוד מסופק לה מתח כראוי והחיבור לאינטרנט תקין.
  • במידה ויהיה ניתוק זמני של מקור המתח/חיבור הרשת, לאחר שיחזרו לפעול, ההתקן יחזור לפעול כרגיל.

דיאגרמה של המערכת

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

network

תכנון

בהתקני תקשורת, הדבר הראשון שצריך לחשוב עליו הוא מודל שבע השכבות – OSI.
הטכנולוגיות הנפצות ביותר בהקשר של רשת האינטרנט למימוש השכבה הפיזית ובשכבת ה data link הן פרוטוקול Ethernet לתקשורת קווית או wi-fi לתקשורת אלחוטית.
בפרויקט זה אשתמש בפרוטוקול Ethernet ב 10BaseT כך שאוכל להגיע לקצבים של 10Mbit/s
לשכבת הרשת אשתמש בפרוקוטול IP כשבשכבת התעבורה מעליו ב TCP. (שני שכבות אלה מכילות ביחד את חבילת TCP/IP).
השכבה העליונה היא שכבת האפליקציה עליה ממומשים פרוטוקולים כמוו SMTP,HTTP,FTP ועוד.

דיאגרמת השכבות למימוש תקשורת אינטרנט קווי:

בחירת רכיבים

למימוש שכבות 1,2 (הפיזית וה data link ) אשתמש ברכיב ENC28J60.
רכיב זה מממש את השכבה הפיזיקלית של פרוטוקול ה ethernet ואת שכבת ה MAC. הרכיב מתקשר עם הבקר באמצעות פרוטוקול SPI ויש לו buffer פנימי לחבילות ethernet המתקבלות והנשלחות. לרכיב נדרש שעון חיצוני של 25MHz .

כל שאר השכבות יממומשו בתוכנה ע"ג המיקרו-בקר. לשם כך אני זקוק למעבד עם זכרון פנימי גדול כמות גדולה של קוד) שיש לו מספר רב של כניסות/יציאות, (חיבור LCD, תקשורת טורית, כניסות דיגיטליות ואנלוגיות) בחרתי במעבד PIC18F4620 של חברת Microchip, בעל קצב שעון מקסימאלי של 40MHz.
מכיוון שהרכיב ENC28J60 פועל ברמת מתח של 3.3V בעוד שהבקר פועל ב 5V (אם רוצים לעבוד בקצב השעון המקסימאלי של 40Mhz ) יש להשתמש ב Buffer (כדי להגביר את האותות היוצאים מהמתאם ונכנסים לבקר ל 5V)

  • רכיבים נוספים:
    מתאם רמות מתח בין TTL ל RS232 כמו max232 .
  • צג LCD בעל תקשורת טורית (בקר HITACHI).
  • ממיר מתח 5V ל3.3V .
  • זיכרון EEPROM חיצוני – אני אשתמש ב LC512 של חברת Microchip בעל זיכרון של 512Kbit.
  • גביש 25Mhz למתאם (נדרש ב Datasheet של הרכיב.)
  • גביש 10Mhz למיקרו-בקר (בתוך הבקר אכפיל את הקצב פי 4 ובכך אקבל שעון של 40Mhz – התדר המקסימלי של הבקר.)
  • מחבר RJ45 שבתוכו יש כבר את שנאי הבידול הנדרשים ע"פ הפרוטוקול.

דיאגרמת בלוקים של החומרה תראה כך:

block dig

תוכנה

חברת Micr-chip מספקת ספריית תוכנה לעבודה עם הבקר ENC28J60 ולפרוטוקול TCP/IP.
התחלתי ללמוד את הספריות המתאימות ולהוסיף שינויים בקוד להתאמה למערכת שלי. מימשתי ספרייה לשליטה ב LCD והגדרות שונות, טיפלתי בהגדרות הפורטים והרכיבים הפריפריאליים. אחרי עבודה של כמה ימים, היה לי קטע קוד ראשוני והצלחתי להפעיל את ה LCD, וליצור תקשורת SPI
בין הבקר למתאם.
בנקודה זו נתקלתי בבעיה סבוכה בתקשורת שגרמה למתאם להחזיר הודעות שגויות לבקשות שנשלחו ע"י הבקר. בעזרת אוסילוסקופ וכלי ה debuging שיש לצורב שלי ICD2. בסופו של דבר הצלחתי לקנפג את המתאם וליצור את השכבות הראשונות.
מכאן עברתי ללמוד את ספרייה ה IP ובצעתי מספר שינויים. לחומרה שלי נתתי כתובת IP 192.168.1.151 בתור כתובת פנימית ברשת.

ונסיתי לשלוח PING לחומרה ואחד המחשבים שמחובר גם הוא לנתב (בחיבור אלחוטי) אחרי מספר כשלונות שנבעו מתקלות כאלה ואחרות הצלחתי לבצע PING:

ping

השתמשתי בספרייה של חברת Microchip המממשת את הממשק עם הרכיב ופונקציות שירות לפרוטוקול tcp/ip . מכאן עברתי לספריות של פרוטוקול SNTP והצלחתי לגרום לחומרה לקבל את נתוני התאריך והשעה משרת יעודי.

מכאן עברתי למימוש ה WebServer עצמו. כתבתי דף HTML לחומרה המציג נתונים שונים כמו מצב הלדים והלחצנים. עשיתי שימוש בספרייה הממשת פרוטקול HTTP.
הדף נשמר על זיכרון ה EEPROM המתקשר עם המיקרו-בקר בתקשורת SPI .

לאחר ששלב זה עבד בהצלחה, הצלחתי לגשת לדף ה HTML ע"י גישה לכתובת ה IP של החומרה שבניתי, חוברה לנתב דרך המחשב הנייד שלי המחובר לרשת.

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

הוספתי תיבת קלט באתר, המקבלת מהמשתמש קלט של עד 40 תווים, את ה STRING של תווים אלה העברתי לבקר ומשם להצגה על מסך ה LCD.

העמוד נראה כך:

html

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

המחשב הנייד מחובר לרשת בחיבור אלחוטי. ההתקן (ע"ג המטריצה) מחובר משמאל
למקור מתח של 9V DC ומימין לכבל רשת רגיל המחובל לנתב.

תצוגה של שינוי אות אנאלוגי הנכנס לחומרה

תצוגה של כתיבת טקסט בדף האינטרנט והצגתו על גבי מסך ה LCD בחומרה

תכנון אב טיפוס

בשלב זה, החלטתי לעצור לרגע עם התקדמות הפרויקט ולנסות לייצר אב טיפוס ל webserver , כלומר מעגל מודפס שיכיל את כל מה שבניתי על המטריצה.
קניתי את כל רכיבי ה IC בתצורת SMD על מנת לחסוך מקום וקדיחות. עדכנתי את השרטוט החשמלי ויצרתי שרטוט של מיקום הרכיבים על גבי הלוח (Layout)
השרטוט נראה כך:

web server layout

כדי לההמחיש את כיצד יראה הלוח לאחר יצור, תיכננתי מודל תלת מימדי שלו:

web server 3d

  • המחבר הלבן בצד הוא לחיבור LCD ולחיבור לחיישנים/מערכות חיצוניות.
  • הצד שבחלק התחתון של התמונה הוא הצד שאליו יעשו כל החיבורים מימין לשמאל: פלג rj45 לכניסת כבל רשת, חיבור סיריאלי rs232 למחשב, כפתור RESET חיבור לשנאי למקור מתח.
  • המפסק בצד שמאל בחלק התחתון הוא מפסק ראשי לכרטיס.
  • המחר 5PIN בחלק העליון של הכרטיס הוא חיבור ICSP לצורב למיקרו-בקר

    תמונה נוספת של המודל מזווית אחרת:

web server 3d 22

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

כתובת IP דינאמית

הנתב (ראוטר) הביתי שלכם, וכלל המחשבים והחומרה המחוברת אליו מגדירים רשת מקומית (LAN). ברשת זו בדר"כ מוקצה לנתב עצמו הכתובת IP שהיא 192.168.1.1 ולשאר המחשבים/התקנים המחוברים לרשת כתובות 192.168.2-254 . חשוב להבין כי כתובות IP אלו מוכרות רק לרשת המקומית (של הארגון או הבית) ולא לרשת האינטרנט הכלל עולמית.
את כתובת ה IP המייצגת אתכם ברשת האינטרנט מקבל הנתב בעת ביצוע חיוד לרשת (באמצעות מודם של HOT או בזק לדוגמא). כתובת זו תהיה למשל 217.132.34.55 והיא מוקצת לכם באופן דינאמי ע"י ספק השירות, כלומר בכל פעם שתתנתקו מהחיבוק לספק ותתחברו שוב, יש סיכוי גבוה שתקבלו כתובת IP שונה, או במילים אחרות שמול רשת האינטרנט תהיה לכם "כתובת אחרת". הנתב יודע כיצד לקשר חבילות IP המגיעות מכל אחת מהצרכנים ברשת המקומית לרשת האינטרנט ולשייך חבילות המגיעות מרשת האינטרנט לכל צרכן ברשת המקומית, אך כאן זה לא המקום להסביר כיצד זה מתבצע.
הסיבה שאני מסביר את כל זה, היא שמכיוון שמוקצת לרשת כתובת דינאמית שיכולה להשתנות, לא יהיה ניתן לגשת לחומרה שלנו באמצעות כתובת IP אחת קבועה תמיד, כי הרי הכתובת של הרשת המקומית אליה תהיה מחוברת החומרה שלנו תמיד תשתנה.
פתרון אחד הוא לבקש כתובת IP סטאטית לרשת שלנו, כלומר שהספק תמיד יתן לנו את אותה כתובת IP בכל חיבור מחדש, אך זה כמובן בתשלום חודשי קבוע. (בד"כ בעלי אתרים/שרתים יבחרו באופציה זו) אפשרות אחרת היא להשתמש בשרת Dynamic DNS . פרוטוקול DNS בקצרה, הוא פרוטוקול המתרגם כתובת אינטרנט לכתובות IP. כך שבמקום להקליד בשורת הכתובת 72.14.207.99 נוכל להקליד www.google.co.il כלומר זהו מעיין אינדקס שיותר קישור בית כתובות IP לשמות אתרים ולהפך. נחזור לבעייה שלנו, כדי להבטיח שהמשתמש תמיד יוכל להגיע לחומרה שלו, לא משנה איזה כתובת IP הוקצתה לרשת המקומית אליה הוא מחובר ניתן להשתמש בשרתי DDNS. שרתים אלה נותנים לך כתובת קבועה ברשת. יש לעדכן את הנתב שלנו פעם אחת שיצור קשר עם שרת זה בכל פעם שהוא מבצע התחברות חדשה לרשת האינטרנט "ויספר" לו מהי כתובת ה IP שקיבל מספק השירות. כך בכל פעם שמישהו יגש לכתובת אינטרנט שנתן שרת ה DDNS הוא ידע להפנות את הבקשה לנתב שלנו, ומשם הנתב יפנה אותה לחומרה. אני השתמשתי בשרת www.DynDNS.com . את הכתובת שסיפק לי השרת מיפתי לאתר זה וכעת כדי לגשת לעמוד של החומרה מכל מחשב/טלפון סלולארי שיודע להתחבר לאינטרנט בפשטות ע"י www.lirtex.com/hardware
(כרגע לא זמין מכיוון שהחומרה לא מחוברת לנתב באופן קבוע שכן הפרויקט עדיין בפיתוח. כשאסיים אני אחבר את הלינק כך שתוכלו להכנס ולהתרשם)

תכנון להמשך:

השלבים הבאים בפרויקט אותם אני אנסה לישם בקרוב:

1. כתובת IP דינאמית.
2. הוספת שם משתמש וסיסמא, לגישה לעמוד ה HTML של החומרה.
3. שינוי הגדרות באמצעות החיבור הסיריאלי.
4. שליטה במנועי סרוו באמצעות הכרטיס.

3 Responses to "חיבור חומרה לרשת האינטרנט"

Leave a Comment

No results