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

לומדים רובוטיקה דרך פרויקט אמיתי
בפרויקט זה נלמד כיצד לבנות מערכת רובוטית אלחוטית המורכבת משתי יחידות עצמאיות: שלט רחוק ורכב רובוטי.
השלט קורא את תנועת הג׳ויסטיק באמצעות כניסות אנלוגיות של בקר ESP32, מעבד את הנתונים ושולח אותם לרכב דרך מודולי התקשורת nRF24L01.
בצד הרכב, בקר ESP32 נוסף מקבל את הפקודות ומתרגם אותן לכיוון ולמהירות של שני מנועי DC באמצעות מנהל המנועים L298N ואותות PWM.
במהלך הבנייה נלמד על קריאת חיישנים אנלוגיים, תקשורת אלחוטית בין בקרים, שליטה במהירות ובכיוון של מנועים, חלוקת מתח נכונה ועבודה משותפת של מספר מודולים במערכת אחת.
בסיום הפרויקט נוכל לשלוט ברכב בזמן אמת באמצעות ג׳ויסטיק ולהבין כיצד מידע עובר מהמשתמש אל המערכת הרובוטית.
למה זה פרויקט טוב ללמידה?
רואים מיד את התוצאה
כל שינוי בקוד או בחיווט משפיע ישירות על תנועת הרכב.
לומדים תקשורת אלחוטית
שתי יחידות ESP32 שולחות ומקבלות פקודות באמצעות nRF24L01+.
משלבים כמה תחומים
הפרויקט מחבר בין תכנות, מנועים, מתח, מכניקה ותכנון מארז.
מה הרכב יודע לעשות?
- לנסוע קדימה ואחורה.
- לפנות ימינה ושמאלה.
- להסתובב במקום באמצעות הנעה דיפרנציאלית.
- לשנות את מהירות המנועים בהתאם למיקום הג'ויסטיק.
- לעצור אוטומטית אם הקשר האלחוטי נפסק.
מבנה הרכב:
הרכב משתמש בשני מנועים ושני גלגלים מניעים. גלגל תמיכה חופשי
מחזיק את החלק הקדמי של השלדה ואינו דורש חיבור חשמלי.
איך המערכת עובדת?
- ה-ESP32 בשלט קורא את הצירים X ו-Y של הג'ויסטיק.
- התוכנה מחשבת פקודת מהירות נפרדת למנוע השמאלי ולמנוע הימני.
- הפקודה נשלחת באלחוט באמצעות מודול nRF24L01+.
- ה-ESP32 שעל הרכב מקבל את הפקודה.
- דרייבר L298N קובע את כיוון הסיבוב ואת מהירות שני המנועים.
- אם לא מתקבלת פקודה חדשה במשך חצי שנייה, הרכב עוצר.
רשימת רכיבים
רכיבי יחידת השלט
| כמות | רכיב | תפקיד | קישור |
|---|---|---|---|
| 1 | ESP32 DevKit | קריאת הג'ויסטיק ושליחת הפקודות | למוצר |
| 1 | ג'ויסטיק KY-023 | שליטה בכיוון ובמהירות | למוצר |
| 1 | nRF24L01+ PA+LNA | שידור הפקודות אל הרכב | למוצר |
| 1 | ממיר מתח LM2596 CC/CV | הורדת מתח שתי הסוללות ל-5.0V עבור ה-ESP32 | למוצר |
| 1 | בית סוללות ל-2×18650 | חיבור שתי הסוללות בטור | למוצר |
| 2 | סוללת 18650 נטענת | מקור המתח של יחידת השלט | למוצר |
רכיבי יחידת הרכב
| כמות | רכיב | תפקיד | קישור |
|---|---|---|---|
| 1 | ESP32 DevKit | קבלת הפקודות ושליטה במנועים | למוצר |
| 1 | nRF24L01+ PA+LNA | קליטת הפקודות מהשלט | למוצר |
| 1 | דרייבר מנועים L298N | שליטה בשני מנועי DC | למוצר |
| 1 | ממיר מתח LM2596 CC/CV | הורדת מתח הסוללות ל-5.0V | למוצר |
| 1 | ערכת שלדה לרכב דו-מנועי 2WD | שלדה, שני מנועים, שני גלגלים וגלגל תמיכה | למוצר |
| 1 | בית סוללות ל-2×18650 | חיבור שתי הסוללות בטור | למוצר |
| 2 | סוללת 18650 נטענת | אספקת החשמל ליחידת הרכב | למוצר |
מערכת ההזנה
הזנת יחידת השלט
שתי סוללות 18650 מחוברות בטור ומזינות את כניסת ממיר LM2596.
את יציאת הממיר יש לכוון ל-5.0V ולחבר לכניסת VIN/5V של ה-ESP32.
הג'ויסטיק ומודול nRF24L01+ מוזנים ישירות מיציאת 3.3V של ה-ESP32.
הזנת יחידת הרכב
שתי סוללות 18650 מחוברות בטור. מתח הסוללות מגיע לכניסת המנועים של L298N
ובמקביל לכניסת ממיר LM2596. את יציאת הממיר יש לכוון ל-5.0V והיא מזינה
את כניסת VIN/5V של ה-ESP32. מודול nRF24L01+ מוזן מיציאת 3.3V של ה-ESP32.
יש לחבר את פין VCC של המודול ל-3.3V בלבד. אין לחבר אותו ישירות ל-5V.
מומלץ להתקין קבל של 10–100µF בין VCC ל-GND, קרוב ככל האפשר למודול הרדיו.
תרשים חיבור השלט
יחידת השלט כוללת ESP32, ג'ויסטיק KY-023, מודול nRF24L01+, ממיר LM2596 ושתי סוללות 18650.

חיבור מערכת ההזנה של השלט
| מקור | יעד | הערה |
|---|---|---|
| בית הסוללות + | LM2596 IN+ | שתי סוללות 18650 בטור |
| בית הסוללות − | LM2596 IN− | שלילי משותף |
| LM2596 OUT+ | ESP32 VIN / 5V | יש לכוון תחילה ל-5.0V |
| LM2596 OUT− | ESP32 GND | אדמה משותפת |
| ESP32 3.3V | KY-023 VCC ו-nRF24L01+ VCC | אין לחבר את nRF24L01+ ל-5V |
חיבור הג'ויסטיק
| KY-023 | ESP32 | תפקיד |
|---|---|---|
| VCC | 3.3V | מתח הזנה |
| GND | GND | אדמה משותפת |
| VRx | GPIO34 | ציר X |
| VRy | GPIO35 | ציר Y |
| SW | GPIO32 | עצירה כל עוד הכפתור לחוץ |
חיבור מודול הרדיו בשלט
| nRF24L01+ | ESP32 | תפקיד |
|---|---|---|
| VCC | 3.3V | מתח הזנה |
| GND | GND | אדמה משותפת |
| CE | GPIO4 | הפעלת מודול הרדיו |
| CSN | GPIO5 | בחירת התקן SPI |
| SCK | GPIO18 | שעון SPI |
| MISO | GPIO19 | נתונים מהמודול ל-ESP32 |
| MOSI | GPIO23 | נתונים מה-ESP32 למודול |
| IRQ | לא מחובר | אינו נדרש בפרויקט |
תרשים חיבור הרכב
יחידת הרכב כוללת ESP32, דרייבר L298N, ממיר LM2596, מודול nRF24L01+,
שני מנועים ושתי סוללות 18650.

חיבור L298N ל-ESP32
| L298N | ESP32 | תפקיד |
|---|---|---|
| ENA | GPIO25 | PWM מנוע שמאלי |
| IN1 | GPIO26 | כיוון מנוע שמאלי |
| IN2 | GPIO27 | כיוון מנוע שמאלי |
| ENB | GPIO32 | PWM מנוע ימני |
| IN3 | GPIO33 | כיוון מנוע ימני |
| IN4 | GPIO14 | כיוון מנוע ימני |
חיבור מודול הרדיו ברכב
| nRF24L01+ | ESP32 | תפקיד |
|---|---|---|
| VCC | 3.3V | מתח הזנה |
| GND | GND | אדמה משותפת |
| CE | GPIO4 | הפעלת מודול הרדיו |
| CSN | GPIO5 | בחירת התקן SPI |
| SCK | GPIO18 | שעון SPI |
| MISO | GPIO19 | נתונים מהמודול ל-ESP32 |
| MOSI | GPIO23 | נתונים מה-ESP32 למודול |
| IRQ | לא מחובר | אינו נדרש בפרויקט |
לפני החיבור:
- יש לכוון את יציאת LM2596 ל-5.0V באמצעות מולטימטר.
- יש להסיר את המגשרים ENA ו-ENB כדי לאפשר שליטה במהירות באמצעות PWM.
- כאשר לוגיקת L298N מוזנת מ-5V חיצוני, יש להסיר גם את מגשר 5V-EN.
- כל חיבורי GND במערכת חייבים להיות מחוברים יחד.
- אין לחבר 5V ישירות לפין VCC של nRF24L01+.
הכנת Arduino IDE
לפני העלאת הקוד יש להתקין ב-Arduino IDE את התמיכה בלוחות ESP32
ואת ספריית RF24.
פתחו את Tools → Board → Boards Manager,
חפשו esp32 by Espressif Systems והתקינו גרסה 3.x.
לאחר מכן בחרו ESP32 Dev Module מתוך רשימת הלוחות.
פתחו את Tools → Manage Libraries,
חפשו RF24 והתקינו את
RF24 by TMRh20.
הורדת קוד הפרויקט
קוד הפרויקט מחולק לשני קבצים. יש להעלות את קוד השלט ל-ESP32 הראשון
ואת קוד הרכב ל-ESP32 השני.
הפעלה ראשונית
- כוונו את יציאת LM2596 ל-5.0V באמצעות מולטימטר.
- בדקו את כל חיבורי המתח וה-GND.
- חברו אנטנה לכל מודול nRF24L01+.
- העלו את קוד השלט ל-ESP32 הראשון.
- העלו את קוד הרכב ל-ESP32 השני.
- הפעילו תחילה את הרכב ולאחר מכן את השלט.
- הזיזו את הג'ויסטיק באיטיות ובדקו את כיוון המנועים.
כיול ושינוי כיוון
אם הרכב נוסע לאחור כאשר הג'ויסטיק מוזז קדימה, ניתן להחליף בין שני
חוטי המנועים או להפוך את כיוון הציר בקוד השלט.
אם מנוע אחד מסתובב בכיוון הפוך מהמנוע השני, יש להחליף בין שני החוטים
של אותו מנוע בלבד.
אם הרכב נע כאשר הג'ויסטיק במרכז, ניתן להגדיל את ערך אזור הסרק
JOYSTICK_DEAD_ZONE בקובץ קוד השלט.
הרכב בפעולה
בסרטון הקצר ניתן לראות את הרכב מתחיל בנסיעה, משנה כיוון ועוצר
בהתאם לתנועת הג'ויסטיק.
אפשרויות לשדרוג
- הוספת חיישן מרחק למניעת התנגשות.
- הוספת תאורת LED הנשלטת מהשלט.
- הוספת חיישני מעקב אחר קו.
- הוספת מד מתח להצגת מצב הסוללות.
- הוספת מצלמה או ESP32-CAM.