מבוא ל-IOT ברספברי פיי: ממשק ה-GPIO

הפעלה ראשונה של מעגל חשמלי עם GPIO והדלקת נורה באופן ממוחשב

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

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

  1. רספברי פיי עם לינוקס שיש לנו גישת SSH אליו שמחובר לחשמל.
  2. breadboard – לוח חשמלי.
  3. נורת LED אדומה בצבע אדום. צריכה מקסימום 2 וולט ו-20 מיליאמפר.
  4. נגד עם 150Ω לפחות או יותר (אני משתמש באחד שהוא 250Ω).
  5. כבלים זכר/נקבה

את 1-4 קונים כזכור בעלי אקספרס. ככה זה נראה:

רכיבים של רספברי פיי - מעגל חשמלי פשוט
רכיבים של רספברי פיי – מעגל חשמלי פשוט

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

מעגל חשמלי פשוט

ניקח את ה-breadboard. הרכיב שעליו הכל יושב:

Breadbasket

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

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

ככה זה נראה

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

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

אם זה לא עובד – נסו לבדוק את הדברים הבאים:

  1. האם המנורה עובדת? תחליפו אותה במנורה אחרת. ייתכן שהיא תקולה.
  2. האם החיבורים מהודקים?
  3. האם החיבורים בקו ישר בדיוק כפי שרואים?

אם הכל עובד – מה הלאה?

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

ראשית, אנו נבחר את הפין. נציץ ברשימה של ה-bus ברספברי פיי. מה שמעניין אותנו הם אלו שמסומנים כ-GPIO. אנו ננתק את החוט שמחובר לפין שנותן מתח תמידי ונעביר אותו לפין המסומן כ- GPIO17.

חיבור ל-GPIO17

המנורה לא תדלק. למה? כיוון שאין מתח. עכשיו אנחנו נעביר מתח באמצעות לינוקס. נתחבר ב-SSH לרספברי פיי ונפתח פתח אל הבאס או ליתר דיוק אל GPIO17.

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

echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction

הכל מוכן. מה שעשינו פה הוא להגדיר את GPIO17 ולהגדיר את הנתונים שלו כ"יציאה". עכשיו אם נעביר 1, הוא יופעל והמתח יעבור בו. נעביר 0? הוא ייכבה. אם תקלידוL

echo "1" > /sys/class/gpio/gpio17/value

תראו שהמנורה עובדת!

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

אם נקליד

echo "0" > /sys/class/gpio/gpio17/value

המנורה תכבה.

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

שימו לב שכאשר אני מחבר כמה נורות, אני צריך רק גראונד אחד. כל פין עם מתח מתחבר ל-GPIO אחר. איזה? אנחנו נבחר. זוכרים את https://pinout.xyz ? זה האתר שבו אנו נשתמש על מנת לבחור את הפינים ולראות מה המספר הפיזי שלהם לעומת המספר שלהם ב"מערכת".

אבל זו השיטה הישנה. מה השיטה החדשה שבה משתמשים? על כך במאמר הבא. ואז נכנס קצת ל-C++.

פוסטים נוספים שכדאי לקרוא

צילום מסך של סוואגר
יסודות בתכנות

openAPI

שימוש בתשתית הפופולרית למיפוי ותיעוד של API וגם הסבר בסיסי על מה זה API

גלילה לראש העמוד