רכב רובוטי אלחוטי עם שלט ג'ויסטיק ו-ESP32

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

לומדים רובוטיקה דרך פרויקט אמיתי

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

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

בצד הרכב, בקר ESP32 נוסף מקבל את הפקודות ומתרגם אותן לכיוון ולמהירות של שני מנועי DC באמצעות מנהל המנועים L298N ואותות PWM.

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

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

למה זה פרויקט טוב ללמידה?

1

רואים מיד את התוצאה

כל שינוי בקוד או בחיווט משפיע ישירות על תנועת הרכב.

2

לומדים תקשורת אלחוטית

שתי יחידות ESP32 שולחות ומקבלות פקודות באמצעות nRF24L01+.

3

משלבים כמה תחומים

הפרויקט מחבר בין תכנות, מנועים, מתח, מכניקה ותכנון מארז.

מה הרכב יודע לעשות?

  • לנסוע קדימה ואחורה.
  • לפנות ימינה ושמאלה.
  • להסתובב במקום באמצעות הנעה דיפרנציאלית.
  • לשנות את מהירות המנועים בהתאם למיקום הג'ויסטיק.
  • לעצור אוטומטית אם הקשר האלחוטי נפסק.

מבנה הרכב:

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

איך המערכת עובדת?

  1. ה-ESP32 בשלט קורא את הצירים X ו-Y של הג'ויסטיק.
  2. התוכנה מחשבת פקודת מהירות נפרדת למנוע השמאלי ולמנוע הימני.
  3. הפקודה נשלחת באלחוט באמצעות מודול nRF24L01+.
  4. ה-ESP32 שעל הרכב מקבל את הפקודה.
  5. דרייבר L298N קובע את כיוון הסיבוב ואת מהירות שני המנועים.
  6. אם לא מתקבלת פקודה חדשה במשך חצי שנייה, הרכב עוצר.

רשימת רכיבים

רכיבי יחידת השלט

כמותרכיבתפקידקישור
1ESP32 DevKitקריאת הג'ויסטיק ושליחת הפקודותלמוצר
1ג'ויסטיק KY-023שליטה בכיוון ובמהירותלמוצר
1nRF24L01+ PA+LNAשידור הפקודות אל הרכבלמוצר
1ממיר מתח LM2596 CC/CVהורדת מתח שתי הסוללות ל-5.0V עבור ה-ESP32למוצר
1בית סוללות ל-2×18650חיבור שתי הסוללות בטורלמוצר
2סוללת 18650 נטענתמקור המתח של יחידת השלטלמוצר

רכיבי יחידת הרכב

כמותרכיבתפקידקישור
1ESP32 DevKitקבלת הפקודות ושליטה במנועיםלמוצר
1nRF24L01+ 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.

מתח מודול nRF24L01+:
יש לחבר את פין 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.3VKY-023 VCC ו-nRF24L01+ VCCאין לחבר את nRF24L01+ ל-5V

חיבור הג'ויסטיק

KY-023ESP32תפקיד
VCC3.3Vמתח הזנה
GNDGNDאדמה משותפת
VRxGPIO34ציר X
VRyGPIO35ציר Y
SWGPIO32עצירה כל עוד הכפתור לחוץ

חיבור מודול הרדיו בשלט

nRF24L01+ESP32תפקיד
VCC3.3Vמתח הזנה
GNDGNDאדמה משותפת
CEGPIO4הפעלת מודול הרדיו
CSNGPIO5בחירת התקן SPI
SCKGPIO18שעון SPI
MISOGPIO19נתונים מהמודול ל-ESP32
MOSIGPIO23נתונים מה-ESP32 למודול
IRQלא מחובראינו נדרש בפרויקט

תרשים חיבור הרכב

יחידת הרכב כוללת ESP32, דרייבר L298N, ממיר LM2596, מודול nRF24L01+,
שני מנועים ושתי סוללות 18650.

חיבור L298N ל-ESP32

L298NESP32תפקיד
ENAGPIO25PWM מנוע שמאלי
IN1GPIO26כיוון מנוע שמאלי
IN2GPIO27כיוון מנוע שמאלי
ENBGPIO32PWM מנוע ימני
IN3GPIO33כיוון מנוע ימני
IN4GPIO14כיוון מנוע ימני

חיבור מודול הרדיו ברכב

nRF24L01+ESP32תפקיד
VCC3.3Vמתח הזנה
GNDGNDאדמה משותפת
CEGPIO4הפעלת מודול הרדיו
CSNGPIO5בחירת התקן SPI
SCKGPIO18שעון SPI
MISOGPIO19נתונים מהמודול ל-ESP32
MOSIGPIO23נתונים מה-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 השני.

הפעלה ראשונית

  1. כוונו את יציאת LM2596 ל-5.0V באמצעות מולטימטר.
  2. בדקו את כל חיבורי המתח וה-GND.
  3. חברו אנטנה לכל מודול nRF24L01+.
  4. העלו את קוד השלט ל-ESP32 הראשון.
  5. העלו את קוד הרכב ל-ESP32 השני.
  6. הפעילו תחילה את הרכב ולאחר מכן את השלט.
  7. הזיזו את הג'ויסטיק באיטיות ובדקו את כיוון המנועים.

כיול ושינוי כיוון

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

אם מנוע אחד מסתובב בכיוון הפוך מהמנוע השני, יש להחליף בין שני החוטים
של אותו מנוע בלבד.

אם הרכב נע כאשר הג'ויסטיק במרכז, ניתן להגדיל את ערך אזור הסרק
JOYSTICK_DEAD_ZONE בקובץ קוד השלט.

הרכב בפעולה

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

אפשרויות לשדרוג

  • הוספת חיישן מרחק למניעת התנגשות.
  • הוספת תאורת LED הנשלטת מהשלט.
  • הוספת חיישני מעקב אחר קו.
  • הוספת מד מתח להצגת מצב הסוללות.
  • הוספת מצלמה או ESP32-CAM.

דילוג לתוכן