מדריך רספברי פיי למתחילים

 

מדריך רספברי פיי למתחילים

ללמוד על האינטרנט, לינוקס ופייתון עם הרספברי פיי

מדריך רספברי פיי

מארז רספברי פיי

 

מדריך רספברי פיי – ללמוד על האינטרנט, לינוקס ופייתון עם הרספברי פיי

פרקים:

  1. מחשב בגודל של כרטיס אשראי
  2. איך מתחילים? הסבר כללי והתקנה
  3. ממשק המשתמש
  4. מערכת ההפעלה – לינוקס רספביאן
  5. שליטה בפיי מרחוק
  6. תכנות בפייתון
  7. רגלי פלט/קלט
  8. עולם האינטרנט והרשתות
  9. מרכז מדיה של קודי
  10. מצלמת וידאו וסטילס
  11. הקמת שרת אינטרנט

 

 

book-pi_connections

 


מחשב בגודל של כרטיס אשראי

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

מיליונים של כרטיסים כאלה נמכרו בעולם ומשמשים לכל מיני פרויקטים של חובבים, סטודנטים ואחרים. הרבה משתמשים בו בתור מרכז מולטימדיה בגלל העלות הזולה שלו וכניסת HDMI וכרטיס גרפי באיכות 1080P.

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

  • הרספברי פיי הראשון שיוצר מתחלק לדגמים A ו B. הראשון הוא דגם בסיסי יותר עם שתי כניסות USB ופחות זכרון וכח מחשוב ולכן צורך פחות חשמל בעוד ה B חזק יותר ומציע שיפורים מסוימים.
  • הרספברי פיי 2 הוא הדגם החדש יותר של הפיי עם מעבד של 1GHz וזכרון של 1G.
  • רספברי פיי 3 הוא הדגם החדש ביותר בעת כתיבת הספר ויש בו שני שדרוגים עיקריים: המעבד שודרג ל 1.2GHz , ובנוסף הלוח כולל בתוכו WIFI וBLUETOOTH מובנים, כך שאין יותר צורך לקנות מתאם אלחוטי והוא המומלץ ביותר לקנייה.

כל רספברי פיי דורש ספק עם כניסת מיקרו USB שמספק 5 וולט ואמפר גבוה יחסית – 2 אמפר מספיקים בהחלט.

החיבור שלו מתאים לכבל של טלפון אבל לא רצוי לתת לו פחות מ 2 אמפר, לדוגמה חיבור יציאת USB של מחשב יכול לספק רק 750mA.

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

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

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

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

בשונה ממחשב רגיל יש לו יציאות וכניסות(GPIO) רגלי פלט/קלט כך שאפשר להתקין עליו חיישנים למיניהם ולהפעיל איתו התקנים חיצוניים כמו מנועים ונורות.

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

 


איך מתחילים?  הסבר כללי והתקנה

במדריך רספברי פיי זה נלמד קודם מהם הפריטים הנחוצים להתקנה של הרספברי פיי:

  • ספק כוח 5 וולט רצוי 2  אמפר עם כניסת מיקרו USB, מטען פלאפון יכול גם לעבוד אם הוא מספק מספיק זרם.

store-raspberry-pi-power-supply

  • כרטיס זכרון מיקרו SD מומלץ לפחות 8GB עם מתאם כפי שמופיע בתמונה

store-sd-card-8gb

  • במידה ואין מתאם צריך קורא כרטיסי זכרון מיקרו לכתיבת מערכת הפעלה

store-micro-sd-card-reader

  • מתאם אלחוטי לחיבור לאינטרנט(לא חובה). ברספברי פיי 3 אין צורך כי יש בו כבר מתאם אלחוטי מובנה

 

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

כתיבת מערכת הפעלה

ניתן להתקין על הרספברי פיי מגוון של מערכות הפעלה, חלקן משמשות כמרכזי מדיה וחלקן מערכות הפעלה כלליות. על הרספברי פיי 2 ו 3 ניתן להתקין את אובונטו CORE שהיא גרסה קלה של אובונטו, וגם את ווינדוס 10.

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

מערכת ההפעלה הרשמית של הרספברי פיי היא רספביאן ובה נתרכז.
היכנסו לאתר הראשי של רספברי פיי https://www.raspberrypi.org .

לחצו על DOWNLOADS ו RASPBIAN . הורידו את קובץ הזיפ של JESSIE למחשב וחלצו אותו. יש גם גרסה קלה של JESSIE LITE שהיא ללא ממשק משתמש, אבל עדיף לוותר עליה כרגע.

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

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

זהו, כרטיס הזיכרון מוכן להפעלה. הכניסו אותו לגב הרספברי פיי:

book-raspberry_pi_back

 

כעת חברו עכבר ומקלדת לכניסות הUSB, חברו את המסך לכניסת ה HDMI , חברו כבל רשת לכניסת ה ETHERNET. ולסיום חברו את ספק הכח לרספברי פיי – כעת הוא נכנס לעבודה.

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

שם משתמש: pi
ססמה: raspberry (בלינוקס הססמה אינה נרשמת על המסך מטעמי אבטחה)
לחצו ENTER ואתם בפנים, כעת הכניסו את הפקודה startx כדי להיכנס לממשק המשתמש.

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

 


ממשק המשתמש

 

book-raspberry_pi_gui

 

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

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

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

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

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

 

book-pi_gui_terminal

 

אם אתם רוצים ללמוד לינוקס הטרמינל הזה יהיה החבר הכי טוב שלכם. כדי להתקין או להסיר תוכנות היכנסו ל menu>preferences>add/remove software .

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

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

היכנסו ל preferences>raspberry pi configuration .

 

book-raspberry_pi_config

 

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

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

את כל הדברים שניתן לעשות דרך ממשק המשתמש, ויותר מכך, ניתן לעשות דרך הטרמינל.

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

טרמינל הפקודות

אם אתם לא מחוברים למסך ומקלדת או סתם בא לכם להשתמש בטרמינל אתם יכולים לשנות את הגדרות התצורה ע"י הקלדה בטרמינל  sudo raspi-config .

הפקודה sudo אומרת למחשב שאנחנו עושים את הפעולה כמשתמש ראשי. sudo = superuser do.

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

expand file system – שימוש בכל המקום בכרטיס הזכרון.
Change user password – אפשרות לשנות ססמה.
Boot options – אפשרות כניסה לממשק משתמש בהפעלה.
Internationalization options – שינוי הגדרות שפה ושעה.

 

blog-raspi_config

 

יש עוד הרבה אפשרויות אבל האפשרויות למעלה הן החשובות יותר.

לחצו finish ו reboot.

עדכון מערכת ההפעלה

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

  sudo apt-get update
  sudo apt-get upgrade
  sudo reboot

תהליך זה לוקח קצת זמן…

התקנת תוכנות

כדי להתקין תוכנה דרך הטרמינל אנחנו מקלידים:

sudo apt-get install (שם התוכנה)

ללינוקס אלפי תוכנות:

  • vlc  – נגן מולטימדיה
  • gimp  – תוכנה לעריכת תמונות דומה לפוטושופ
  • chromium  – דפדפן אינטרנט – גרסה קלה של כרום
  • filezilla  – תוכנה להעברת קבצים
  • gedit  – סביבת פיתוח ותוכנה לעריכת טקסט
  • fritzing  – תוכנה לעריכת מעגלים אלקטרוניים

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

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

 sudo apt-get install htop 

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

 

book-raspberry_pi_htop

 

ניתן לראות את כל הפעולות שרצות ברקע, כמה זכרון הן לוקחות וכמה כח מחשוב. ע"י f9 ניתן לעצור פעולות מסוימות או לסגור תוכנות.
כדי לצאת מהתוכנה הקישו ctrl c.

כדי להסיר את התוכנה מהפיי הקלידו:

sudo apt-get purge htop

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

ברספברי פיי 3 ישנה אפשרות פשוטה להתחבר לאינטרנט WIFI ללא מתאם אלחוטי. הדבר נעשה ע"י הצ'יפ המובנה בלוח שכולל בתוכו WIFI. בממשק המשתמש בפינה הימנית למעלה תלחצו על כפתור האינטרנט ויופיעו לכם כל הרשתות בסביבה.

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


מערכת ההפעלה – לינוקס רספביאן

ניווט במערכת הקבצים

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

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

 / cd

לאחר מכן נקליד:

ls 

book-terminal_nav

הפקודה cd היא קיצור של change directory ונותנת לנו לנוע בקבצי המערכת. ls היא קיצור ל list ומציגה את כל הקבצים והתיקיות בתיקייה שאנחנו נמצאים בה.

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

  • home היא תיקיית הבית ובה נמצאים המסמכים האישיים, מוזיקה סרטים ועוד
  •  etc היא תיקייה שבה נמצאים קבצי ההגדרות של התוכנות
  • var היא תיקייה עם קבצים שונים כמו קבצי יומן, קבצי אינטרנט ועוד

בואו נכנס לתיקיית הבית:

 cd home/pi

עכשיו נקליד ls .

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

 mkdir testfolder

ואז נכנס אליה :

cd testfolder

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

nano testfile

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

נקליד איזשהו טקסט בתוך העורך ואז נלחץ ctrlx  כדי לשמור את העריכה, נקליד y ואז enter.

כדי לראות את תוכן הקובץ נקליד:

 cat testfile

book-nano_pi

 

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

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

לכל פקודה בלינוקס יש הוראות משתמש ומגיעים אליהם דרך הפקודה man:

man ls ייתן לנו את כל ההסברים על הפקודה.

הנה כמה פקודות שימושיות בלינוקס:

  • ls :  מציג את הקבצים והתיקיות בתיקייה בה אנחנו נמצאים
  • cd :  עבור לתיקיה אחרת. לדוגמה: cd Music. כדי לחזור תיקיה אחת אחורה נקליד שתי נקודות אחרי הפקודה   .. cd
  • cat :  הצג את תוכן הקובץ
  • cp:  העתק קובץ למיקום אחר
  • mv :  העבר קובץ למיקום אחר
  • sudo :  הפעל פקודה כמשתמש מורשה
  • man:  עזרה לגבי פקודה. לדוגמה : man cp

עוד נקודה אחת למעבר בין תיקיות. המעבר יכול להיות יחסי בין תיקייה לתיקייה או ע"י מיקום מלא של התיקייה על השרת. אם אנחנו נמצאים בתיקיית home ורוצים להיכנס לתיקיית pi אפשר להקליד cd pi.

אבל אם אנחנו נמצאים בתיקייה אחרת ורוצים להגיע לתיקיית pi הפקודה לא תזהה את התיקייה. כדי להיות בטוחים שאנחנו מגיעים אפשר לכתוב את הכתובת המלאה של התיקייה – cd /home/pi.

הנה רשימה של 42 פקודות שימושיות בלינוקס. וגם מקור טוב ללמוד על מערכת ההפעלה לינוקס.

הרשאות וקבוצות

לינוקס היא מערכת הפעלה רבת משתמשים, והעיקרון הראשי הוא שכל משתמש יכול ליצור ולשנות קבצים לפי רמת ההרשאה שלו. המשתמש הראשי שנקרא root או superuser יכול לשנות כל קובץ במערכת הקבצים.

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

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

כל קובץ ותיקייה במערכת שייכים למשתמש כלשהו וקבוצה כלשהי. כדי לראות את הפרטים האלה אנחנו יכולים להקליד את הפקודה ls -l . פתחו את הטרמינל והקלידו ls -l

 

book-linux_permissions

 

פה אנחנו רואים את כל התיקיות שנמצאות בתיקיית הבית ואת ההרשאות שלהן. ההרשאות שקיימות הן:

r – קריאה. W -כתיבה. X – הפעלה. משמאל לימין ניתן לראות את המשתמשים לפי סוגי ההרשאה שלהם – הראשון הוא בעלים, השני הוא קבוצה, והשלישי הוא כל השאר.

הבעלים שבמקרה זה הוא פיי, יכול לקרוא, לכתוב ולהפעיל. הקבוצה שנקראת pi ומשויכים אליה מספר משתמשים יכולה רק להפעיל ולקרוא. כל שאר המשתמשים יכולים רק להפעיל קבצים, חוץ מ root(superuser) שכמובן יכול לעשות מה שהוא רוצה במחשב.

ברוב המקרים תיקיות וקבצים יהיו בבעלות root או pi. אנחנו יכולים לשנות הרשאות לכל תיקיה וקובץ ע"י הפקודה chmod. כמה דוגמאות:

בואו נניח שאנחנו רוצים לתת לתיקייה Public הרשאות לכולם לקרוא לכתוב ולהפעיל קבצים. נקליד את הפקודה:

chmod u=rwx,g=rwx,o=rwx

נתנו למשתמש(user), לקבוצה(group) ולכל השאר את כל ההרשאות הקיימות.

עכשיו אנחנו רוצים להחזיר את ההרשאות למצב הקודם:

chmod u=rwx,g=rx,o=x Public

הבעלים יכול לעשות הכל, הקבוצה יכולה לקרוא ולהפעיל וכל השאר יכולים רק להפעיל.
אם אנחנו רוצים שההרשאות ימשיכו גם לכל הקבצים בתיקייה נוסיף R לאחר שם התיקייה שהוא קיצור של recursive  :

chmod u=rwx,g=rx,o=x Public -R

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

chmod-octal

sudo chmod 777 Public -R

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

כדי לשנות את הבעלים והקבוצה של התיקייה נשתמש בפקודה chown. כדי לעשות זאת צריך להשתמש בפקודה sudo:

  sudo chown root Public

מעכשיו הבעלים של התיקייה הוא root ולכן המשתמש pi שנמצא בקבוצת Pi יכול רק לקרוא ולהפעיל קבצים. אם נשנה גם את הקבוצה ל root:

sudo chgrp root Public

המשתמש pi שאנחנו מחוברים בשמו לא יוכל לעשות כלום חוץ מלהפעיל קבצים, כי הוא משתמש ציבורי. עכשיו החזירו את ההרשאות למצב הקודם:

sudo chown pi Public

sudo chgrp pi Public

 

טריקים בטרמינל

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

חיבוריות לאינטרנט

הרספברי פיי מתחבר לאינטרנט כמו כל מחשב אחר דרך הנתב הביתי שלכם. כדי לראות את כתובת ה ip שלו נקליד  ifconfig . ונסתכל בשורת INET ADDR ב ETH0.

 

book-pi_if_config

 

למעלה אתם יכולים לראות את כתובת ה ip שקיבל הפיי מהנתב שלכם(אצלי זה 192.168.1.150). ברירת המחדל של הרספברי פיי היא לקבל כתובת דרך dhcp שהיא מערכת נוחה ואוטומטית שנותנת לנתב לחלק כתובות לכל המחשבים ברשת.

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

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

1. לשנות את ההגדרות בתוך הרספברי פיי –

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

ssh raspberrypi.local

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

רוב ההסברים באינטרנט מתייחסים למערכות הפעלה ישנות יותר, אבל כדי לעשות זאת במערכת ההפעלה החדשה ביותר פתחו את הקובץ הבא:

sudo nano /etc/dhcpcd.conf

בסוף הקובץ הכניסו את השורות הבאות:

interface eth0
static ip_address=192.168.1.150/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

הכתובת ip היא איזה כתובת שאתם רוצים. ה gateway צריך להיות תואם לנתב שלכם וברוב המקרים זה 192.168.1.1

לתת כתובת ip קבועה לחיבור אלחוטי הכניסו :

interface wlan0
static ip_address=192.168.1.160/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

הכתובת היא שרירותית ואתם יכולים להכניס סיומת אחרת במקום 150 ו 160 רק שתהיה בטווח שבין 100-200.

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

 

book-pi_static_ip

 

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

הכניסו שם משתמש וססמה (בדרך כלל שניהם admin). לרשימה מלאה של ססמאות נתבים:
http://www.routerpasswords.com

עכשיו זה משתנה מנתב לנתב אבל ב tp-link היכנסו ל dhcp>client list. שימו לב לכתובת ה mac של הפיי:

book-pi_router

תרשמו את כתובת ה mac בצד והכנסו ל address reservation. הוסיפו חדש והכניסו את כתובת הmac ואת כתובת ip שאתם רוצים שיקבל. עדיף לתת כתובת גבוהה כמו 192.168.1.150
עכשיו רק נשאר לכבות ולהדליק את הנתב ולפיי שלכם יש כתובת קבועה.

 


שליטה ברספברי מרחוק

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

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

SSH ו- VNC

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

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

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

ssh pi@192.168.1.150

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

 

book-pi_ssh

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

שליטה ממחשב ווינדוס

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

VNC

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

  sudo apt-get install tightvncserver

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

  tightvncserver

כעת אפשר להתחיל SESSION ברספברי פיי:

 vncserver :1

עכשיו בואו נתקין לקוח VNC במחשב שלנו, בלינוקס הקלידו

sudo apt-get install xtightvncviewer

הכניסו את הפקודה

xtightvncviewer

אמור להיפתח חלון התחברות קטן. הכניסו בו את כתובת ה IP של הרספברי פיי, נקודתיים ו 1. לדוגמה: 192.168.1.150:1 . 1 הוא מספר ה SESSION שפתחנו.

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

vncserver -kill :1

בווינדוס עקבו אחר ההסבר הזה להתקין לקוח vnc.

 


תכנות בפייתון

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

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

אבל הוא ייתן לכם לפחות בסיס כלשהו להתחיל איתו ולכתוב תוכנות פשוטות בפייתון.

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

למרות שאפשר להוריד לפיי עוד שפות תכנות כמו c++ ,java ,php רוב הדוגמאות שקיימות הן בפייתון ולכן נלמד אותה.

פייתון היא שפה "מפורשת” מה שאומר שאפשר לכתוב תוכנה ולהפעיל אותה ישירות ללא צורך בקומפיילר.

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

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

היא נחשבת שפה כללית כלומר שיש לה מגוון שימושים כמו למשל בתכנות אינטרנט ממשקי משתמש ופיתוח תוכנה כללית….וגם ברספברי פיי כמובן.

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

 

book-pi_idle3

 

פתחו את 3 IDLE , זה מכניס אתכם ישירות אל המפרש שבתוכו ניתן לכתוב פקודות פשוטות ביותר.

 

book-pi_idle3_2

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

כתיבה ישירות במפרש היא טובה להתנסות ראשונית אבל כדי לכתוב תוכנות קצת יותר מעניינות ומסובכות נפתח קובץ חדש ע"י file>open new file .

נשמור את הקובץ בשם מסוים לדוגמה example1. עכשיו ניתן לכתוב את התוכנה ולהריץ אותה במפרש בשתי חלונות נפרדים:

book-pi_new_file

כדי להריץ תוכנה אנחנו שומרים אותה ע"י ctrl-s ומריצים ע"י f5.

סוגי נתונים

מספרים : זה די ברור מאליו מהם מספרים בעולם החשבון אבל בשפות תכנות זה קצת יותר מסובך. ישנם מספרים שלמים : 4, 5, 6-  שנקראים בשפת תכנות int.

שברים כמו 0.4,5.6, 8.0 נקראים float. מספרים שנמצאים בתוך מרכאות כמו: "46", "2" נקראים מחרוזות(string) והמחשב מתייחס אליהם אחרת.

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

+ : חיבור
– : חיסור
* : כפל
/ : חילוק
^ : חזקה
% : שארית
<, >, ==, =! : השוואות בין מספרים.

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

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

 

book-pi_math

 

מחרוזות – מחרוזת בפייתון הן אוסף של אותיות שמייצגות שם מסוים. לדוגמה "hello world”. מחרוזת יכולה להיות גם אוסף של מספרים…המחרוזת "48” לדוגמה היא לא המספר 48.

המחשב מתייחס בצורה שונה למספרים ומחרוזות. ניתן להמיר ביניהם ע"י הפונקציות int ו str.
כדי לכתוב הערות בפייתון אנחנו משתמשים בסימן #. המחשב מתעלם מהערות והן משמשות את המשתמש כדי להבין מה התוכנה עושה:

 

book-pi_python_programming

 

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

כדי לבדוק יש פקודה בפייתון שנקראית type. לדוגמה type(3) יחזיר לנו את התשובה int

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

variable = False
או 
variable  = True

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

רשימות

רשימה(list) היא אוסף של נתונים שנמצאים תחת שם אחד. בשפות תכנות אחרות הן נקראות בדרך כלל מערך ובאנגלית array. הנתונים יכולים להיות מספרים,מחרוזות, או עוד רשימות. אנחנו יוצרים רשימה ע"י סוגריים מרובעות [ ]. הנה רשימה שנקראית li

 li = [“a”,12,56,”hello python”]

הפקודה list היא פקודה שמורה במערכת של פייתון לכן לא ניתן להשתמש בה בתור שם משתנה. כדי לגשת לאיבר ברשימה אנחנו מכניסים li[item number] , כשהאיבר הראשון תמיד מתחיל מאפס.

book-pi_python_list

 

ככה אפשר לגשת אל האיברים ששמורים ברשימה ולעשות איתם מה שאנחנו רוצים. רשימה היא מבנה נתונים פשוט לשמירת מידע ויש עוד הרבה אחרים שמשתמשים בהם במקרים שונים כמו set ,associative array ועוד.

משתנים

משתנה הוא שם מסוים שיכול להיקרא x או שם אחר ששומר בזכרון הזמני של המחשב את הערך שלו. כדי לשמור משתנה ניצור השמה לדוגמה x = 2 . שימו לב ש = זה השמה ולא השוואה בין שני ערכים. כדי לעשות השוואה נשתמש ב ==.

בדרך כלל נרצה לתת למשתנה שם קריא שניתן לזכור.

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

 

book-pi_variables

 

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

הפקודה לקחת קלט מהמשתמש בפייתון  היא input. הכניסו את הקוד הבא, רשמו את השם שלכם ולחצו enter.

 

book-pi_input

 

התניות

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

if condition:
    do something

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

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

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

 

book-pi_conditionals

 

תוצאה של השוואה יכולה להיות אמת(true) או שקר(false). אם היא אמת אז הפקודה מתחת להשוואה מתבצעת. אם היא שקר אז היא מתעלמת מהפקודה. elif אומרת לפייתון שאם ההתנייה הראשונה היתה שקר אז עכשיו לבדוק עוד התנייה אחרת.

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

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

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

if GPIO.INPUT(17) == False:
    GPIO.OUTPUT(18, 1)
else:
    GPIO.OUTPUT(18, 0)

ככה נראית השוואה טיפוסית ברספברי פיי בה אנחנו בודקים אם כפתור נלחץ ובהתאם מדליקים נורה.

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

if x == 3 and y == 7 and z == 13:

    print('this is checking if all conditions are true')

elif x == 9 or y < 3 or z > 12:

    print(' this is checking if any of them are true ')

elif not x and y < 7 or not z == 9:

   print('הבנתם? גם אני לא. מקווה בשבילכם שלא תיצרו התניות כאלו')

לולאות

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

הפקודה של לולאה היא for. אחריה יבוא השם שאנחנו רוצים לתת לאיבר המתחלף, אחרי זה in , ובסוף איפה אנחנו רוצים להריץ את הלולאה:

for number in list:
    print(number)

 

book-pi_loops

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

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

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

x = 0
while x < 100:
    x = x + 1
    print(x)

לעומת זאת כדי ליצור לולאה אינסופית כמו שקיימת בארדואינו נרשום:

while True:
    ## this is infinite loop

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

פייתון באתר רספברי פיי

פייתון באתר קוד אקדמי

 

הרצת תוכנות דרך הטרמינל

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

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

python3 example.py

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

שימו לב שאתם מריצים את התוכנה בפייתון 3 ולא בפייתון 2 כי זו סביבת הפיתוח שהשתמשתם בה. אם אתם רוצים להריץ תוכנה בפייתון 2 פשוט תרשמו python ושם הקובץ להפעלה.

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

ספריות פייתון שימושיות לרספברי פיי

RPi.GPIO – ספרייה שמשמשת להפעלת רגלי פלט/קלט
Pygame – ספריית פייתון ליצירת משחקים
SimpleCV – ספרייה לראיית מכונות/ראייה מלאכותית
requests – ספריה לבקשות אינטרנט
Flask – תבנית לפיתוח אינטרנט
PySerial- גישה לתקשורת טורית

ועוד ועוד….


 

רגלי פלט/קלט

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

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

אם אתם מכירים את הארדואינו והפעלתם איתו נורות או מנועים אז הפיי יכול לעשות כל מה שהארדואינו עושה ואפילו יותר מכך.

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

ישנה אפשרות להפעיל את רגלי הפלט/קלט על ידי פקודות מהטרמינל או שאפשר לכתוב קובץ בשפת פייתון.

 

book-pi_gpio

 

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

צריך להבין את ההבדל בין פינים שנותנים מתח קבוע(אלה שרשום עליהם 5V 3V3) לבין פינים שרשום עליהם GP.

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

הפינים שרשום עליהם GP הם אלה שהופכים את הרספברי פיי לבקר ונותנים לנו להפעיל או לכבות פינים בהתאם לשינוי מסוים ובאמצעות התוכנה.

הפינים האלה הם פינים דיגיטליים ויכולים לקבל או לתת מתח בעצמה של 3.3 וולט בניגוד לארדואינו שעובד על לוגיקת מתח של 5 וולט. שימו לב: אין לחבר לפינים מתח גבוה מ 3.3 וולט. אין להם הגנה מובנית והם מחוברים ישירות לצ'יפ של ברודקום.

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

שימוש לא נכון ברגלי הפלט/קלט עלול להרוס את הרספברי פיי.

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

עוד סטנדרט הוא BOARD ובסטנדרט זה הפינים נקראים לפי הסדר הפיזי שלהם על הלוח.

ברספברי פיי אין פינים של כניסה אנלוגית כמו בארדואינו וכדי לקבל מתח אנלוגי עלינו לחבר ממיר אנלוגי/דיגיטלי – analog to digital converter.

לעומת זאת כל הפינים יכולים להוציא מתח משתנה הנקרא pwm.

הבהוב נורה

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

 

book-pi_led_python

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

nano blink.py

רק שימו לב איפה אתם יוצרים אותו כדי לזכור איפה הוא נמצא.

עכשיו הכניסו את הקוד הבא:

import RPi.GPIO as gpio
    import time
    gpio.setmode(gpio.BCM)
    gpio.setup(17, gpio.OUT)

while True:
    gpio.output(17, 1)
    time.sleep(1)
    gpio.output(17, 0)
    time.sleep(1)

 

שמרו את הקוד והפעילו אותו ע"י f5. בואו נעבור על הקוד שורה שורה:
1. ייבא את ספריית GPIO ותן לה שם gpio
2. ייבא את ספריית time
3. הכן את מספור הפינים לפי הסטנדרט של BCM – המספור כפי שמופיע למעלה.
4. הכן את פין מספר 17 לשמש כפלט – OUT.
5. צור לולאה אינסופית.
6. הדלק את פין 17 – תן לו מתח של 3.3 וולט.
7. השתמש בפונקציית sleep מתוך ספריית time כדי לחכות שנייה.
8. כבה את פין מספר 17.
9. חכה שנייה.

כפי שאתם רואים הקוד מזכיר את הבהוב הנורה בארדואינו ופועל על אותו עקרון. לעצור את התוכנה ניתן ללחוץ על ctrlc או ctrlf6 .

 

book-python_gpio_led

 

אם נרצה לקבל קלט מכפתור נצטרך לשנות את setup ל IN.
בואו נחבר כפתור לחיצה ונורת לד למטריצה. אנחנו רוצים שהנורה תדלק כשאנחנו לוחצים על הכפתור ותכבה כשאנחנו לוחצים עליו שוב.

צד אחד של הכפתור יהיה מחובר לפין מספר 27 שאותו נתכנת כקלט ואת חיבור זה נחבר גם ל GND דרך נגד כדי ל"משוך את המתח" למטה מה שנקרא pull-down resistor. צד אחר של הכפתור יהיה מחובר ל 3.3 וולט.

שימו לב: אין לחבר פין של רספברי פיי ל 5 וולט. דבר זה עלול להרוס את הלוח!! חברו פין כקלט אך ורק לחיבור של 3.3 וולט. הנורה תהיה מחוברת לפין 17 עם נגד:

 

book-led_fritzing

 

book-pi_code_led_button

 

book-pi_led_button

PWM- יציאת מתח משתנה

pulse width modulation היא טכניקה להוציא מפין מסוים את מה שנראה כמו מתח משתנה. המתח אמנם נע בין 0 ל 3.3 וולט אבל הוא נדלק ונכבה במהירות מה שגורם לנו לחשוב שהוא משתנה.

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

import time 
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
led = GPIO.PWM(18, 100) # create pwm object in pin 18 with frequency of 100
led.start(0) # start pwm with duty cycle of 0
while True: # infinite loop
    for i in range(0, 101): 
        led.ChangeDutyCycle(i) # change duty cycle from 0 to 100 
        time.sleep(0.03)
    for i in range(100, -1, -1):
        led.ChangeDutyCycle(i)
        time.sleep(0.02)

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

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

קריאת נתונים מחיישן טמפרטורה

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

blog-dht-11

פין ראשון משמאל בחיישן הולך ל 3V, השני הולך ל GPIO18, השלישי נשאר ריק והרביעי הולך ל GND. נגד 10K מחובר בין הפין השני ל 3V.

 

book-fritzing-pi-temp

תזכורת למבנה הפינים ברספברי פיי:

book-gpio-pi-pins

 

לרספברי פיי אין פינים של כניסה אנלוגית כמו לארדואינו אז יש לנו שתי אפשרויות – להוסיף ממיר דיגיטלי לאנלוגי ADC או להשתמש בחיישן דיגיטלי.

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

כשאנחנו מחוברים לפיי ונמצאים בתיקיית הבית home/pi/ נוריד את הספרייה:

  git clone https://github.com/adafruit/Adafruit_Python_DHT.git

ונעבור לתיקיה הזו:

  cd Adafruit_Python_DHT

כעת צריך להוסיף כמה ספריות נוספות שתומכות בספריה הזו:

  sudo apt-get update
  sudo apt-get install build-essential python-dev python-openssl

ולבסוף נתקין את הספרייה:

sudo python setup.py install

עכשיו אפשר לבדוק אם הספריה עובדת ע"י הדוגמה הבאה. קודם כל נעבור לתיקיית examples:

  cd examples

ונריץ את הדוגמה. הפרמטר הראשון הוא סוג החיישן והשני הוא הפין שחיברנו אליו:

 sudo ./AdafruitDHT.py 11 18

 

book-pi-temp-adafruit

 

אם הסתבכתם תעברו שוב על הדוגמה הנמצאת בקישור הזה.


 

עולם האינטרנט והרשתות

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

אנחנו למעשה כבר התחברנו לאינטרנט מספר פעמים בספר גם כשעדכנו את התוכנות על הפיי בפקודה sudo apt-get update , גם כשהורדנו תוכנות לרספברי פיי, וגם כשהתחברנו אליו ממחשב אחר דרך ssh.

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

אז מה זה האינטרנט?

כולנו משתמשים בו עוברים בו טריליונים של ביטים של מידע – טקסט, תמונות, סרטים ומוזיקה אבל מה זה בעצם האינטרנט?

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

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

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

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

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

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

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

יחסי שרת / לקוח

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

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

  ping google.com

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

  wget google.com

הפקודה מורידה אוטומטית את דף הבית של גוגל ששמו index.html ושומרת אותו בתיקייה שבה אנחנו נמצאים.

 

book-py_google

 

הקלידו בטרמינל ls כדי לוודא שהוא שם, ואחרי זה less index.html כדי לפתוח אותו.
השפה שבה הוא כתוב היא html שהיא השפה הרשמית של האינטרנט.

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

כך נראה דף html שמפורש על יד דפדפן:

 

book-google_pi

 

DNS

איך שם האתר מתקשר לכתובת ה ip שדיברנו עליה קודם? ישנו קשר ישיר בין שם האתר שנקרא שם דומיין לבין כתובת ה ip של המחשב.

שם דומיין נוצר כדי להקל על אנשים לזכור כתובות אינטרנט. איזה שם יותר קל לכם לזכור www.google.com או 54.134.241.112 ?

תפקידו של שרת ה dns הוא להמיר את שם הדומיין בכתובת ה ip של המחשב שכן מחשבים מבינים מספרים. בסופו של דבר כל השמות מתורגמים לכתובות Ip.

HTTP

פרוטוקול זה הוא פרוטוקול תקשורת שנועד להעביר דפי אינטרנט. כשרשמנו את הפקודה
wget google.com הפקודה שלמעשה נשלחה הייתה wget http://www.google.com .
הפרוטוקול http הוא כל כך נפוץ שלא צריך לרשום אותו בגלל שהוא ברירת המחדל.

עוד פרוטוקולים שקיימים חוץ ממנו הם ftp להעברת קבצים, smtp להעברת דואר ועוד.
הפונקציה העיקרית של פרוטוקול http היא GET והיא אומרת לשרת להעביר את דף הבית.

העברת קבצים

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

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

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

לאחר שהתחברתם אתם אמורים לראות שתי חלונות – אחד של המחשב האישי שלכם ואחד של הרספברי פיי.

 

book-pi_filezilla

 

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

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

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

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

 


 

מרכז מדיה של קודי

אין אף מדריך רספברי פיי שלא כולל בתוכו את האפשרות להשתמש בו כמרכז מדיה.

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

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

 

book-osmc_pi

 

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

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

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

https://osmc.tv/download

OSMC היא תוכנה משופרת של התוכנה הקודמת שנקראה raspbmc ואכן היא טובה ממנה הרבה – הממשק שופר, המהירות עלתה והבאגים כמעט ונעלמו.

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

ישנה עוד מערכת הפעלה שיכולה לשמש כנגן מדיה: open-elec. באופן מפתיע היא אפילו יותר חלקה ומהירה מ osmc ומתאימה לאנשים שלא מכירים ולא מתעניינים יותר מדי ברספברי פיי אלא רק מעוניינים בתוכנה פשוטה שתשמש כנגן מדיה.

http://openelec.tv/get-openelec/category/7-raspberry-pi2-builds

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

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

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

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

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

ישנה קהילה שלמה של קודי בישראל ששם יש הסברים על התקנה והפעלה של המערכת:

http://www.kodisrael.co.il/index.php

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

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

מארז רספברי פיי

 

 


מצלמת וידאו וסטילס

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

ישנם שתי דרכים לחבר מצלמה אל הפיי – מצלמה ייעודית המתחברת ישירות אל הCSI ממשק המצלמה הנמצא על הלוח, או מצלמת רשת המתחברת באמצעות כבל USB.

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

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

 

raspberry pi camera

 

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

 

raspberry pi webcam

 

צילום סטילס ווידאו

אם יש לכם מצלמה ייעודית של הרספברי פיי תוכלו לקחת תמונות סטילס על ידי הפקודה raspistill. המצלמה הרשמית היא ברזולוציה של 5 מגה פיקסל כך שהתמונה תצא בגודל 2592×1944.

לאחרונה יצאה גרסה חדשה של המצלמה של 8 מגה פיקסל.

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

raspberry pi camera installation

 

עכשיו צריך לאפשר לרספברי פיי לעבוד עם המצלמה ע"י כניסה לתפריט ההגדרות –  raspi-config>enable camera

כדי לצלם תמונה ולשמור אותה הכניסו את הפקודה:

raspistill -o image1.jpg

האפשרות o היא output כלומר לשמור תמונה ולאחר מכן שם הקובץ שניתן לתמונה.

כדי לצלם וידאו נכניס את הפקודה:

raspivid -t 5000 -o video.h264

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

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

 

הזרמת וידאו

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

sudo apt-get install motion

אחרי שהתוכנה הותקנה הכנסו להגדרות התצורה:

sudo nano /etc/motion/motion.conf

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

קודם כל כדי להזרים תמונה למחשב שונה מהפיי עלינו לשנות את stream_localhost מ yes ל no. האפשרות נמצאת באזור אמצע הקובץ ב live stream server וללא השינוי נוכל לראות וידאו רק מהרספברי פיי.

לאחר מכן נשנה את output_pictures ל off כדי לא למלא את הפיי בתמונות, כי כל פעם שהתוכנה מזהה תנועה היא שומרת כמה תמונות בזכרון. תמיד נוכל להפעיל את האפשרות הזאת מאוחר יותר.

נשנה את הרזולוציה ל 640×480. נשנה את stream_auth_method ל 1 ,  ואת stream_authentication ל admin:1234 או לכל ססמה אחרת. נשנה את המקום לשמירת וידאו ותמונות ל :

target_dir  /home/pi/motion.

את framerate נשנה מ2 ל 7 ואת  stream_maxrate גם ל 7 . נמחק את הגרשיים מהשורה tmp/motion.log/ כי אנחנו רוצים לשמור לשם את כל יומן האירועים למען פתירת בעיות. נשמור את הקובץ ונצא.

לאחר מכן נקליד :

sudo nano /etc/default/motion

ונשנה את הערך ל start_motion_daemon=yes. דבר זה יתחיל את התוכנה בכל פעם כשהפיי נדלק.

כשאנחנו בתיקיית הבית pi ניצור תיקיה חדשה שנקראית motion:

mkdir motion

נשנה לה את ההרשאות:

sudo chmod 777 motion -R

עכשיו התחילו מחדש את הפיי – sudo reboot.

כדי לראות את הוידאו הכנסו מכל מחשב מאותה הרשת והקלידו את הכתובת של הפיי ומספר פורט 8081. לדוגמה: 192.168.1.102:8081

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

לעצור את התוכנה הקלידו

 sudo /etc/init.d/motion stop

ולהתחיל אותה

 sudo /etc/init.d/motion start

למעבד של הרספברי פיי הישנים יותר קצת קשה להתמודד עם התוכנה(לפיי 2 או 3 לא צריכה להיות בעיה) אז נפעיל לו טורבו. ב raspi-config יש אפשרות של overclock ואפשר לשים אותה על מקסימום. זה קצת מקצר לו את החיים אבל לא נורא, מקסימום נקנה חדש.

זכרו שה log file  נמצא ב tmp/motion.log/ כך שאם יש בעיות אתם יכולים לבדוק שם מה קורה. בדרך כלל הבעיות הם הרשאות לתיקיות מסוימות.

זהו רק קצה הקרחון של מה שאפשר לעשות עם התוכנה הזו. עוד כמה דברים חמודים שאפשר לעשות זה לכוון את הסף של זיהוי התנועה(ברירת מחדל 1500 פיקסלים), לשלוח תמונות או וידאו לבסיס נתונים של mysql וליצור התראות כמו אימייל וsms כשיש תנועה.

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

לצפות במצלמה מרחוק

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

זה משתנה מנתב לנתב אבל בגדול אתם צריכים להפנות את כל הקריאות לפורטים האלה לכתובת המקומית של הרספברי פיי. עדיף לשריין לפיי כתובת קבועה באזור גבוה כמו 192.168.1.150 ע"י כתובת סטטית או ע"י mac address reservation.

אחרי שעשיתם את זה תוכלו להיכנס דרך כתובת ה ip הציבורית של הבית שלכם(wan). אם אתם עושים את זה זכרו לתת שם משתמש וססמה.

הוספת עוד מצלמות

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

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

<img src="192.168.1.150:8081">

4 cameras

המצלמה הייעודית של הרספברי פיי

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

sudo modprobe bcm2835-v4l2

זהו. הנה שתי המצלמות על אותו הרספברי פיי כשהן מזהות תנועה… הימנית היא המצלמה הייעודית והשמאלית היא מצלמת רשת סטנדרטית:

raspberry pi webcam vs csi camera


הקמת שרת אינטרנט על הרספברי פיי

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

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

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

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

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

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

תכנון הפרוייקט

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

ראוי לציין גם את nginx שהוא שרת פופולרי ומהיר מאוד. אפשרות אחרת לגמרי היא להשתמש ב- flask ואז אין צורך בשרת וגם לא ב- PHP. כאן אפשר ללמוד איך לעשות את זה.

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

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

בסיס הנתונים MYSQL הוא מהיר ועצמתי אבל אין לנו צורך בו במקרה הזה אז במקום נשמור את המידע בקובץ טקסט.

אם אתם רוצים לשמור הרבה נתונים או להשתמש בהרבה חיישנים אז עדיף להשתמש במסד נתונים כמו mysql או ברדיס.

מה האפליקציה שלנו תעשה?

  1. נבנה ממשק גרפי על שרת שנמצא על הרספברי פיי ובממשק יהיו 2 כפתורים אחד להדלקת נורה ואחד לכיבוי נורה. בממשק יהיה גם חיווי (log) לדיווח ברגע שלחצנו על כפתור, וגם מקום להצגת טמפרטורה ולחות שמתעדכנים כל 10 שניות.
  2. המשתמש נכנס לממשק ממחשב אחר על ידי הכנסת הכתובת של הרספברי פיי בדפדפן. ברגע שהוא לוחץ על כפתור נשלחת בקשה לשרת ומופעל קובץ פייתון על הרספברי פיי שמדליק או מכבה את הנורה. הנורה נמצאת על פין 17 במקרה שלנו.
  3. ברגע שמישהו נכנס לממשק נלקחת דגימה טמפרטורה מחיישן DHT11 והנתונים נשלחים לממשק המשתמש, ולאחר מכן הפעולה חוזרת כל 10 שניות כדי לעדכן את הנתונים. החיישן במקרה שלנו יושב על פין 18.
  4. ישנה אפשרות ליצור סליידר ששולח נתוני PWM להפעלת מנוע או עמעום נורה אך היא לא נמצאת בפרויקט זה.
  5. אפשר לקדם את פורט 80 בנתב הביתי שלנו לרספברי פיי ואז להיכנס לממשק המשתמש מכל מקום בעולם.

איפה ישבו הקבצים שנכתוב?

בתיקית השורש של השרת שלנו (var/www/html) ישבו הקבצים :

index.html – קובץ html שכולל גם css וגם jquery

led_on.php – קובץ שתקידו לקרוא לקובץ פייתון

led_off.php – קובץ שתפקידו לקובץ פייתון

led_on.py – קובץ פייתון שמדליק את הנורה בפין 17

led_off.py – קובץ פייתון שמכבה את הנורה על פין 17

temp.php – קובץ php שקורא נתנוי טמפרטורה ולחות מקובץ temp_data ושולח אותם למשתמש.

בתיקיית home/pi תשב ספריית adafruit שקוראת נתוני טמפרטורה ולחות ובה השתמשנו בפרק קודם.

בתוך תיקיית examples הנמצאת בתוך ספריה זו יושב הקובץ שלוקח טמפרטורה ואותו נשפצר לכתוב את הנתונים לקובץ חדש שניצור שנקרא temp_data שיישב באותה התיקייה.

קודם כל נוריד את שרת האינטרנט אפאצ'י :

sudo apt-get install apache2 -y

עכשיו נקליד את כתובת ה- IP של הרספברי פיי בדפדפן. זה המסך שאמור להופיע:

שרת אפאצ'י
שרת אפאצ'י

 

 

 

 

 

 

 

 

 

 

 

בגדול מה ששרת אינטרנט עושה זה מקבל בקשות ממחשבים אחרים ומשרת להם את דף ה"שורש” שברוב המקרים נמצא בתיקיית var/www/html/

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

עוד דבר אחד שצריך לעשות זה לשנות את ההרשאות של התיקייה ואת הבעלים של התיקייה:

sudo chmod -R 755 /var/www

sudo chown -R www-data:www-data /var/www


sudo service apache2 restart

 

book-nginx-debian

 

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

כדי לראות איך קובץ html נראה היכנסו לתיקייה והקלידו:

sudo nano index.html

 

book-var-www-html

 

קובץ השורש בשרת אינטרנט בדרך כלל נקרא index.html וכך השרת יודע להפנות את כל הבקשות לקובץ זה. במקרה שלנו שם הקובץ הוא שונה אבל עוד רגע נחליף אותו.

קובץ html בנוי מתגיות פתיחה וסגירה והוא מחויב בתגיות הבאות:
<DOCTYPE html><html><head></head><body></body></html>
תגית פתיחה נראית כך  <> וסגירה נראית כך </>.

כדי ללמוד עוד על html היכנסו לקישור הזה:

 

במקרה שלנו תגית html עוטפת את תגיות head ו body וכל התוכן של הדף נמצא בגוף(body).
נסו לשנות את התוכן שנמצא בתגית h1 צאו עם ctrlx ושמרו. עכשיו שתרעננו את הדף הוא ישתנה.

 

בואו נתחיל לבנות את ממשק המשתמש –

 

book-www-index-html

 

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

אתם יכולים להכניס תמונה אחרת מהאינטרנט. אנחנו יוצרים גם איזור log לחיווי לחיצה.

<!DOCTYPE html> <html> <head> <meta charset="UTF-8">
 <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<title>graphic user interface for the raspberry pi</title>
 <style> body{ 
   color:white; 
   background-image:url("http://i.imgur.com/49G7YDA.jpg");
   } 
  #content{
   margin-left:2%;
   } 
h1{
 text-align:center;
 }
 button{ 
font-size:3em;
 }
 </style> 
</head> 
<body> 
<h1>ממשק משתמש לרספברי פיי</h1> 
<div id="content"> 
<p><button id="led_on" type="button">הדלקת נורה</button></p>
 </p><button id="led_off" type="button">כיבוי נורה</button></p>
 <br><br><br>
 <div id="log">
</div> 
</div> 
</body> 
</html>

book-gui-pi

הקוד שנמצא בין התגיות style הוא בשפת css שהיא אחראית לסגנון לצורה ולצבע של דף האינטרנט. כדי ללמוד עוד על  CSS הכנסו לקישור.

html היא שפת תגיות ולא שפת תכנות וכדי לבצע פעולות כמו הדלקת נורה נצטרך להוריד לרספברי פיי שפת תכנות כדוגמת php.

פייתון שנמצאת על הפיי היא גם שפת תכנות ואפשר להשתמש בה כשפת צד שרת אבל רוב האתרים בעולם בנויים ב- php ולכן נשתמש בה.

הנה מקורות ידע טובים ללמוד עוד על PHP:

http://www.guru99.com/php-tutorials.html

https://www.codecademy.com/learn/php

קודם כל נוריד אותה:

sudo apt-get install php5 libapache2-mod-php5 -y

פה יש הסבר מפורט איך להתקין את אפאצ'י ו-PHP אם הסתבכתם.

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

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

Jquery היא חבילה שמשתמשת בשפת javascript ורוב האתרים המודרניים משתמשים בה כי היא מפשטת את הדברים. כדי לייבא אותה נכניס את השורה הבאה בין תגיות head בקובץindex.html

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

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

<button id="led_on" type="button">הדלקת נורה</button> 

<button id="led_off" type="button">כיבוי נורה</button>

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

<script></script>  בתחתית הקובץ כי הוא אמור לרוץ רק אחרי קוד ה- html.

<script> // turn on led 
$("#led_on").on('click',function(){ // if we press on button with id led_on 
  $.get('led_on.php',function(data){ // send get request to php file named led_on.php 
    $('#log').html("led_on ok") // if the request is successful print ok to the screen 
  }) 
}) 
// turn off led 
$("#led_off").on('click',function(){ 
  $.get('led_off.php',function(data){ 
    $('#log').html("led_off ok") 
  }) 
}) 
</script>

אם בא לכם ללמוד את הבסיס של javascript אז הכנסו לקישור הזה או לקישור הזה.

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

או קיי, אז עכשיו לחיצה על הכפתורים מפנה לקובץ php , אז בואו נכתוב את הקובץ .
באותה התיקייה ניצור קובץ שנקרא led_on.php:

sudo nano led_on.php

ונכניס בו פקודה שמפעילה קובץ פייתון שנקרא led_on.py

book-py-shell-exe

shell_exec היא פונקציה שמדמה כתיבת פקודה בטרמינל.

עכשיו כל מה שנותר לעשות זה לכתוב את קובץ הפייתון שמפעיל את הנורה. קודם כל ניצור אותו:

sudo nano led_on.py

ונכניס בו את הקוד:

#!/usr/bin/python # tells it to execute  with  a python program 
import RPi.GPIO as GPIO # import gpio library 
GPIO.setmode(GPIO.BCM) # select BCM as pin numbering 
GPIO.setup(17, GPIO.OUT) # setup pin number 17 to output 
GPIO.output(17, GPIO.HIGH) # turn on pin 17

באותה הדרך שהפעלנו את הנורה אפשר לכבות אותה עם כפתור הכיבוי. ניצור קובץ php שנקרא led_off.py שמפנה לקובץ פייתון שנקרא led_off.py. קובץ הפייתון ייראה כך:

#!/usr/bin/python # tells it to execute it with python program 
import RPi.GPIO as GPIO # import gpio library 
GPIO.setmode(GPIO.BCM) # select BCM as pin numbering 
GPIO.setup(17, GPIO.OUT) # setup pin number 17 to output 
GPIO.output(17, GPIO.LOW) # turn on pin 17

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

 הצגת טמפרטורה בממשק המשתמש

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

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

מה שננסה לעשות עכשיו הוא לשנות את הקוד של adafruit מהדפסה של נתונים על המסך לשמירה של הנתונים בקובץ.

ברגע שהנתונים ישמרו בקובץ נוכל לשלוף אותם כל כמה שניות ולהציג אותם בממשק המשתמש. מתוך קובץ הדוגמאות בספרית adafruit נקליד:

sudo nano AdafruitDHT.py

 

book-adafruit-save

 

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

מה שאנחנו רוצים לעשות זה לפתוח את הקובץ temp_data שעוד רגע ניצור ולכתוב אליו את שני המשתנים. שתי השורות הבאות מבצעות את הפעולה הזו:

 

f = open('temp_data','w') 
f.write('temperature = '+ str(temperature)+' humidity = '+ str(humidity))

 

לפני הכתיבה לקובץ אנחנו ממירים את הנתונים משברים(floats) למחרוזות(strings) .

עכשיו ניצור את הקובץ שאנחנו רוצים לכתוב אליו:

touch temp_data

touch היא פקודה שיוצרת קובץ בלי לפתוח אותו.

עכשיו אנחנו רוצים להוסיף כמה שורות של קוד לjavascript שקוראות לשרת ומביאות הנתונים מהקובץ. כדי לעשות זאת נקרא לקובץ temp.php ברגע שאנחנו נכנסים לממשק המשתמש:

$.get('temp.php',function(data){ 
  $('#temp').html(data) 
})

אנחנו מבצעים קריאה לקובץ בשרת, מביאים את הנתונים(data) ומחדירים אותם לאלמנט חדש שנקרא temp בדף ה html שעוד מעט ניצור. כדי ליצור את האלמנט נכניס את השורה לקובץ ה html:

<div id="temp"></div>

עכשיו ניצור את קובץ ה php  שמפעיל את קובץ קריאת הטמפרטורה של adafruit וגם קורא את קובץ הטמפרטורה:

sudo nano temp.php

ונכניס בו את הקוד הבא:

<?php 
 shell_exec('cd /home/pi/Adafruit_Python_DHT/examples;sudo python AdafruitDHT.py 11 18');
 sleep(2);
 $temp_file = fopen("/home/pi/Adafruit_Python_DHT/examples/temp_data", "r") or die("Unable to open file!");
 echo fread($temp_file,filesize("/home/pi/Adafruit_Python_DHT/examples/temp_data"));
 fclose($temp_file);
 ?>

 

זהו, ממשק המשתמש מוכן:

book-pi-gui-temp

 

כדי לקרוא לשרת כל 10 שניות ולעדכן את הטמפרטורה והלחות נוסיף כמה שורות לקוד….

setInteval היא פונקציה שנותנת לנו לבצע פקודה שוב ושוב כל כמה שניות :

$.get('temp.php',function(data){
  $('#temp').html(data)
}) 
setInterval(function(){ 
  $.get('temp.php',function(data){
    $('#temp').html(data) 
  })
}, 10000);

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

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

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

הנה הקוד המלא של הפרויקט.


 

דרג מדריך

33 thoughts on “מדריך רספברי פיי למתחילים”

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

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

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

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

          1. אתה מתכוון להתקין שתיים או שלוש יציאות נפרדות? אחת לוודאו ושתיים לאוודיאו? זה אפשרי?

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

  3. מדריך מצויין, תודה. פתור בלי שאלה אי אפשר 🙂 – איך אפשר לחבר כמה מצלמות בחיבור cis , פשוט לחבר אותן במקביל (פלט כבל צמוד לפלט כבל) ?

    1. לא חושב שאפשר לחבר ככה מצלמות במקביל. צריך מתאם מיוחד יש אחד של 4 של חברת ARDUCAM.

  4. שלום,
    אני מתכנן משהו דומה למדריך שלכם, כשאני רוצה להציג את הטמפרטוה והלחות למשתמש עשיתי בדיוק כמו שרשמתם:
    $.get('temp.php',function(data){
    $('#temp').html(data)
    })
    זה לא מציג לי את הנתונים,
    הוא נכנס לפןנקציה, והקוד php תקין, כשאני מפעיל אותו מהטרמינל הוא עובד. מה יכולה להיות הבעיה?

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

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

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

    1. לא קופץ לי חלון, כן זה בתוך javascript

      $.get('temp.php', function (data){ _$
      $('#temp').html(data)
      })
      .
      .
      .

  5. זה נראה כמו משהו באינטראקציה בין PHP ל-פייתון תנסה להוסיף sudo או להוריד אותו. לדעתי זה משהו בשתי השורות האלו:
    shell_exec('cd /home/pi/Adafruit_Python_DHT/examples;
    sudo python AdafruitDHT.py 11 18');

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

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

  7. זה רק עובד עם sudo,כשאני מפעיל את temp.php זה כן עובד, לכן לא חושב שיש בעיה באינטרקציה בין PHP לפייתון.
    באיזה דרך את ממליץ לעשות את זה?

  8. אם הקובץ עובד כמו שאתה אומר אז למה לא קופץ חלון? alert חייב להקפיץ חלון אפילו אם אין נתונים , אז זה מוזר שלא קופץ. סליחה על השאלה אבל אתה מרענן את הדף בדפדפן כן? f5? זה כתובת IP של רספברי פיי כן?

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

    בגלל שרספברי פיי עובד עם פייתון אז כבר עדיף להשתמש בפייתון לכל המשימות

  9. סליחה, alert() כן עובד אבל זה לא נותן לי את הפלט של קוד PHP הוא דווקא נותן את התוכן של קוד php

  10. alert לא אמור לתת קוד של PHP אלא רק את הפלט שיוצא מ-echo או print. אף דפדפן לא אמור לדעת את קוד השרת, זה נראה כמו בעיה בהתקנה של PHP.

  11. אם אתה רוצה תעלה לאנשהו את כל הקוד ואז אולי אני יעלה על הבעיה. בלי לראות קוד אין לי סיכוי להבין מה קורה

  12. ניסיתי עם דרך אחרת והשתמשתי ב- $ajax זה נותן לי אותה תוצאה, כשאני לוחץ על נלחצן נפח חלון שבתוכו יש את הקובץ php/
    יש מייל שלכם של החנות שאוכל לשלוח את הקבצים לשם?

    תודה רבה על כל העזרה!

  13. אוקיי משתמש ברירת המחדל של התיקייה www הוא root וצריך לשנות את זה ל-www-data שהוא המשתמש שאחראי על כל הפעולות של האתר:
    sudo chown -R www-data:www-data /var/www

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

כתיבת תגובה

האימייל לא יוצג באתר.