במאמרים הקודמים על IoT דיברנו על הבסיס. מה זה מעגל חשמלי וגם מה זה נגדים. את הידע הזה אנחנו חייבים על מנת לבנות מעגל חשמלי מתפקד עם נורת LED. כמובן שנורת LED זו רק ההתחלה.
אז נבנה מעגל חשמלי עם רספברי פיי. אנחנו צריכים את המצרכים הבאים:
- רספברי פיי עם לינוקס שיש לנו גישת SSH אליו שמחובר לחשמל.
- breadboard – לוח חשמלי.
- נורת LED אדומה בצבע אדום. צריכה מקסימום 2 וולט ו-20 מיליאמפר.
- נגד עם 150Ω לפחות או יותר (אני משתמש באחד שהוא 250Ω).
- כבלים זכר/נקבה
את 1-4 קונים כזכור בעלי אקספרס. ככה זה נראה:
נתחיל בתכנון המעגל החשמלי. יש לי נקודה שממנה נכנס המתח, נגד, המנורה ואז היציאה של המתח. מעגל. ככה זה נראה בפשטות:
ניקח את ה-breadboard. הרכיב שעליו הכל יושב:
נחבר את הכבל זכר/נקבה באיזור של הפלוס מעכשיו כל העמודה "מוארת" נשים את הנגד ממש מעליו.
הנגד, שמתאים לנורת LED, קופץ מעל התעלה לשורה 29, שם נחבר את נורת ה-LED כשזרוע אחת שלה בצד אחד של ה-breadboard והזרוע השניה מעל התעלה. למה? כי אנחנו רוצים שהזרם יעבור דרכה. באותה שורה אנו נוציא את הזרם.
טוב, עכשיו לאן לחבר את הכבל האדום והכבל האפור? מן הסתם לבאס של רספברי פיי. אבל לאן? התשובה נעוצה כמובן במפת ה-bus שדיברנו עליה באחד המאמרים הקודמים:
אנו נחבר פין אחד לגראונד, פין מספר 6 והשני לפין מספר 2 או 4. מה שנוח. ברגע שנחבר את הכל כמו שצריך – הכל יעבוד והמנורה תדלק באופן קבוע.
אם זה לא עובד – נסו לבדוק את הדברים הבאים:
- האם המנורה עובדת? תחליפו אותה במנורה אחרת. ייתכן שהיא תקולה.
- האם החיבורים מהודקים?
- האם החיבורים בקו ישר בדיוק כפי שרואים?
אם הכל עובד – מה הלאה?
טוב, לחבר מעגל חשמלי זה כיף ונחמד. אבל אנחנו רוצים שליטה על המנורה. אז מה עושים? אנו נשתמש ב-GPIO. המשמעות היא בעצם פין שברצותנו אנו מעבירים לו מתח, וברצוננו אנו לא מעבירים לו מתח. איך אנו עושים את זה? ישנן כמה שיטות. אני אראה את השיטה הפשוטה והישנה ובמאמר הבא נדבר על השיטה החדשה.
ראשית, אנו נבחר את הפין. נציץ ברשימה של ה-bus ברספברי פיי. מה שמעניין אותנו הם אלו שמסומנים כ-GPIO. אנו ננתק את החוט שמחובר לפין שנותן מתח תמידי ונעביר אותו לפין המסומן כ- 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++.
תגובה אחת
מכיוון שמאמר זה מיועד להדיוטות (בתחום האלק') רצוי להזכיר כי ל LED יש כיווניות – אז רצוי להסביר איזו רגל (קצרה/ארוכה) לחבר לצד ה+ , בכדי שיהיה פחות שימוש לעצה של להחליף נורה (כיוון ששרפתם אותה…)
(אגב – לכולם יש כנראה צעצועים ישנים בבית – ניתן לפרק מהם את הלדים במקום לחכות למשלוח מדוד עלי)
"נעביר מתח באמצעות לינוקס" – זה לא מדויק – אלא נשלוט על העברת המתח באמצעות פקודות לינוקס.
וכמובן השלב הבא – כתיבת ממשק GUI שבעזרתו נוכל להגדיר את הפורטים, לשלוט על הפעלת הלדים, או לקרוא מצב אות הכניסה (לדוגמא ממתג המדמה חיישן של מערכת אזעקה)
בהצלחה והנאה