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

תחשבו על מנורה רגילה: יש לה מתג, והמתג נמצא בקיר. מנורה חכמה, לעומת זאת, אפשר להדליק מהמיטה, מהסלון, ואפילו לתת לה להידלק לבד בשעה שקבעתם. הפעולה עצמה זהה — מה שהשתנה זה מי מחזיק את המתג.
הדבר המשמח בשיעור הזה: לא צריך להוסיף שום רכיב. ה-ESP32 כבר יש בתוכו שבב בלוטות׳. הוא היה שם כל הזמן. היום סוף סוף נדליק אותו.
הרכיבים
בלוטות׳ — איך זה בכלל עובד
בלוטות׳ היא טכנולוגיה שמעבירה מידע בין מכשירים קרובים בעזרת גלי רדיו, על תדר של 2.4 גיגה-הרץ. אותו דבר בדיוק שמחבר אוזניות אלחוטיות לטלפון, או רמקול קטן למחשב.
היא בנויה למרחקים קצרים — כמה מטרים בתוך חדר — ולכן היא חסכונית מאוד בחשמל. זה אולי נשמע כמו חיסרון, אבל זה בדיוק מה שמאפשר לאוזניות קטנות לעבוד שעות מסוללה זעירה.
יש שני סוגים עיקריים:
| הסוג | למה הוא טוב |
|---|---|
| Classic Bluetooth | העברת הרבה מידע במהירות — מוזיקה, שיחות, קבצים |
| BLE (Bluetooth Low Energy) | שליחת מעט מידע מדי פעם, בצריכת חשמל זעירה — חיישנים, שעונים חכמים |
מי מוביל ומי עונה
בבלוטות׳ תמיד יש מכשיר ראשי (master) ומכשיר משני (slave).
- המשני משדר כל הזמן הודעה קצרה לסביבה: ״אני כאן, קוראים לי ככה.״ קוראים לזה שידור (advertising). הלוח שלנו יהיה המשני.
- הראשי סורק, שומע את השידור, ומתחיל את החיבור. הטלפון שלכם יהיה הראשי.
ארבעת השלבים תמיד אותם שלבים:
- שידור — המשני מכריז על עצמו שוב ושוב.
- התאמה (pairing) — שני הצדדים מוודאים שהם באמת מדברים זה עם זה, ולפעמים גם מצפינים את הקשר.
- חיבור — עכשיו אפשר להעביר נתונים לשני הכיוונים.
- ניתוק — כשמסיימים, או כשיוצאים מהטווח.
זה בדיוק מה שקורה כשאתם מחברים אוזניות. רק שהפעם — אתם בונים את הצד השני.
החיבור
זה החלק הקל ביותר בשיעור. צריך רק נורית אחת:

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

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

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

initialize bluetooth [Bluetooth LED] — הבלוק הזה נמצא בקבוצת הבלוקים Robots. הוא עושה שני דברים: מפעיל את שבב הבלוטות׳ שבלוח, ונותן לו שם.
השם בתיבה הלבנה הוא מה שתראו ברשימת המכשירים בטלפון. אם תשנו אותו ל-My Lamp, זה מה שיופיע שם. כדאי לשנות — במיוחד אם בכיתה יש עשרה לוחות עם אותו שם בדיוק.
שימו לב איפה הבלוק יושב: מיד אחרי start the program, ומחוץ ללולאת ה-forever. זה הגיוני — מדליקים את הבלוטות׳ פעם אחת בהתחלה, לא אלף פעמים בשנייה.
הבלוק שמקשיב

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. אם יש לכם רק אייפון — השתמשו בטלפון של מבוגר או במכשיר אנדרואיד בכיתה, וההתקנה צריכה להיעשות בעזרת מבוגר.
אחרי ההתקנה יופיע אייקון חדש במסך הטלפון:

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

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

הרשימה הזאת היא בדיוק השידור שדיברנו עליו. כל שם שם הוא מכשיר שצועק ״אני כאן״. אחד מהם — זה שאתם בניתם.
לוחצים
אחרי החיבור, כפתורי Turn On ו-Turn Off הופכים לפעילים:

לחצו. הנורית צריכה להגיב מיד. עכשיו קחו את הטלפון לחדר השני — כל עוד אתם בטווח, זה ימשיך לעבוד.
מה קרה כאן
לחיצה על כפתור בטלפון שלחה מספר אחד באוויר. הלוח קלט אותו, שמר אותו במשתנה, בדק אותו, והזיז פין.
וזה, בקצרה, כל האינטרנט של הדברים (IoT). כל מכשיר חכם בעולם עובד ככה: מישהו שולח פקודה קטנה, מכשיר קטן קולט אותה ומחליט מה לעשות. ההבדל בין הנורית שלכם לבין מזגן חכם בשווי אלפי שקלים הוא בעיקר גודל, לא עיקרון.
ומרגע שהמידע עובר באוויר, כבר לא משנה מה בצד השני. במקום נורית אפשר לשים מנוע, זמזם, או מסך. הבלוקים של הבלוטות׳ לא ישתנו בכלל.
תרגילים
שם משלכם. שנו את הטקסט בבלוק initialize bluetooth מ-
Bluetooth LEDל-Lampואת שם המשפחה שלכם. צרבו מחדש, וחפשו את השם החדש ברשימה בטלפון.הופכים את הפקודות. בשני בלוקי ה-if, החליפו בין [high] ל-[low]. עכשיו 0 יכבה ו-1 ידליק. ככה אתם קובעים מה כל פקודה עושה — לא האפליקציה.
מוסיפים זמזם. חברו זמזם לפין 16, והוסיפו בתוך ה-if הראשון בלוק set digital pin [16] to [high] נוסף. עכשיו לחיצה אחת מדליקה אור ומצפצפת.
פקודה שלישית. הוסיפו בלוק if שלישי שבודק <(message) = (2)>, ובתוכו שני בלוקים שמדליקים ומכבים את הנורית עם wait ביניהם — כלומר הבהוב. איזה כפתור באפליקציה שולח 2? בדקו בעצמכם מה קורה.


