דלגו לתוכן המרכזי
KitLab
שיעור קודם
מנורת בלוטות׳ — מדליקים אור מהטלפון· 35 / 41
מנורת בלוטות׳ — מדליקים אור מהטלפון
🎬

הסרטון בדרך אלינו

בינתיים — התמלול המלא של השיעור מחכה לכם למטה

מנורת בלוטות׳ — מדליקים אור מהטלפון

מה בשיעור?

  • להסביר מה זה בלוטות׳ ואיך שני מכשירים מוצאים זה את זה
  • להבדיל בין מכשיר ראשי (master) למכשיר משני (slave)
  • להשתמש בבלוק initialize bluetooth ולתת ללוח שם
  • לקרוא נתונים מהטלפון עם receive data from bluetooth
  • לשמור את הנתון במשתנה ולבדוק אותו בבלוק if
  • להתקין אפליקציה, להתחבר ללוח ולשלוט בנורית

מה נלמד כאן

  • מה זה בלוטות׳, ואיך הוא מעביר מידע בלי חוטים
  • שלבי החיבור: שידור, התאמה, חיבור, ניתוק
  • הבלוק initialize bluetooth — נותנים ללוח שם
  • הבלוק receive data from bluetooth — מקשיבים לטלפון
  • לבנות מנורה שנשלטת מהאפליקציה בטלפון

הרגע שבו הלוח מפסיק להיות צעצוע

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

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

ילד בחדר מדליק את מנורת הלילה מהטלפון

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

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


הרכיבים

בלוטות׳ — איך זה בכלל עובד

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

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

יש שני סוגים עיקריים:

הסוג למה הוא טוב
Classic Bluetooth העברת הרבה מידע במהירות — מוזיקה, שיחות, קבצים
BLE (Bluetooth Low Energy) שליחת מעט מידע מדי פעם, בצריכת חשמל זעירה — חיישנים, שעונים חכמים

מי מוביל ומי עונה

בבלוטות׳ תמיד יש מכשיר ראשי (master) ומכשיר משני (slave).

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

ארבעת השלבים תמיד אותם שלבים:

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

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


החיבור

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

תרשים חשמלי — פין IO5 דרך נגד 200 אוהם אל נורית LED וממנה ל-GND

  • הרגל הארוכה של הנורית (פלוס) מתחברת לנגד 220Ω, והנגד לפין 5.
  • הרגל הקצרה (מינוס) הולכת ל-GND.

חיבור הנורית על לוח הניסוי — נגד מפין 5 אל הנורית ו-GND

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


הבלוקים

זאת התוכנית השלמה, והיא קצרה באופן מפתיע:

תוכנית הבלוקים של מנורת הבלוטות׳ ב-ACECode

הבלוק שמדליק את הבלוטות׳

הבלוק initialize bluetooth עם השם Bluetooth LED

initialize bluetooth [Bluetooth LED] — הבלוק הזה נמצא בקבוצת הבלוקים Robots. הוא עושה שני דברים: מפעיל את שבב הבלוטות׳ שבלוח, ונותן לו שם.

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

שימו לב איפה הבלוק יושב: מיד אחרי start the program, ומחוץ ללולאת ה-forever. זה הגיוני — מדליקים את הבלוטות׳ פעם אחת בהתחלה, לא אלף פעמים בשנייה.

הבלוק שמקשיב

הבלוק receive data from bluetooth

receive data from bluetooth גם הוא מקבוצת Robots, והוא בלוק עגול — כלומר ערך. הוא הולך אל הטלפון ומחזיר את המספר האחרון שנשלח.

הוא לא עומד לבד. הוא נכנס לתוך set [message] to (receive data from bluetooth), כלומר: ״קח את מה שהגיע בבלוטות׳ ושים אותו במשתנה ששמו message

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

הבלוקים שמחליטים

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

  • if <(message) = (0)> then → set digital pin [5] to [high] — אם הגיע 0, הנורית נדלקת.
  • if <(message) = (1)> then → set digital pin [5] to [low] — אם הגיע 1, הנורית נכבית.

כן, זה קצת הפוך ממה שהייתם מצפים: 0 מדליק ו-1 מכבה. ככה נבנתה האפליקציה, ואפשר להחליף — בתרגילים.

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

הבלוק שנושם

wait [0.02] seconds — הפסקה של שתי מאיות שנייה בכל סיבוב. המספר הקטן הזה חשוב: הוא מספיק מהיר כדי שהלחיצה בטלפון תרגיש מיידית, ועדיין נותן ללוח רגע לנשום במקום לרוץ בלי הפסקה.


מריצים

⬇ להורדת הקובץ BluetoothLED.sb3 — גוררים אותו לתוך ACECode ולוחצים Upload.

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

מתקינים את האפליקציה

בתיקיית הקבצים של הערכה יש אפליקציה בשם Bluetooth_light.apk. מעתיקים אותה לטלפון ומתקינים.

⚠️ האפליקציה עובדת רק על אנדרואיד. באייפון לא ניתן להתקין קובץ APK. אם יש לכם רק אייפון — השתמשו בטלפון של מבוגר או במכשיר אנדרואיד בכיתה, וההתקנה צריכה להיעשות בעזרת מבוגר.

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

אייקון האפליקציה BT_Light על מסך הטלפון

מתחברים

פותחים את האפליקציה ולוחצים על Bluetooth Select:

מסך האפליקציה עם הכפתור Bluetooth Select מסומן

נפתחת רשימה של כל מכשירי הבלוטות׳ שהטלפון שומע בסביבה. מחפשים בה את השם שנתתם ללוח — Bluetooth LED:

רשימת מכשירי הבלוטות׳ בטלפון, עם Bluetooth LED מסומן

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

לוחצים

אחרי החיבור, כפתורי Turn On ו-Turn Off הופכים לפעילים:

האפליקציה מחוברת ללוח, והנורית על לוח הניסוי נדלקת בלחיצה

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


מה קרה כאן

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

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

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


תרגילים

  1. שם משלכם. שנו את הטקסט בבלוק initialize bluetooth מ-Bluetooth LED ל-Lamp ואת שם המשפחה שלכם. צרבו מחדש, וחפשו את השם החדש ברשימה בטלפון.

  2. הופכים את הפקודות. בשני בלוקי ה-if, החליפו בין [high] ל-[low]. עכשיו 0 יכבה ו-1 ידליק. ככה אתם קובעים מה כל פקודה עושה — לא האפליקציה.

  3. מוסיפים זמזם. חברו זמזם לפין 16, והוסיפו בתוך ה-if הראשון בלוק set digital pin [16] to [high] נוסף. עכשיו לחיצה אחת מדליקה אור ומצפצפת.

  4. פקודה שלישית. הוסיפו בלוק if שלישי שבודק <(message) = (2)>, ובתוכו שני בלוקים שמדליקים ומכבים את הנורית עם wait ביניהם — כלומר הבהוב. איזה כפתור באפליקציה שולח 2? בדקו בעצמכם מה קורה.

🧰 הרכיבים לשיעור הזה

רוצים את חומרי הקורס והעדכונים?

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