MAKELAB יהוד · שיעור 6 מתוך 10

ESP32, מנוע סרוו ופח חכם

מהתקנת הלוח ועד תנועה מכנית מדויקת

מסלול השיעור

1 · התקנההוספנו לתוכנת Arduino IDE תמיכה בלוחות ESP32.
2 · העלאה ראשונהבחרנו ESP32 Dev Module והעלינו תוכנית בסיסית.
3 · סרוולמדנו כיצד מנוע סרוו בנוי וכיצד שולטים בזווית שלו.
4 · בנייהחיברנו זרוע לסרוו וקיבענו אותו למכסה הפח.

1מה זה בכלל ESP32?

ESP32 הוא שבב מיקרו-בקר (microcontroller) שמפתחת ומייצרת חברה סינית בשם Espressif Systems, ובו משתמשים עשרות יצרני לוחות ברחבי העולם (כולל הלוח שאנחנו עובדים איתו). הוא יצא לשוק לראשונה ב-6 בספטמבר 2016, כממשיך של דגם קודם וחלש יותר בשם ESP8266.

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

Wi‑Fi מובנהBluetooth (Classic + BLE)שני ליבות עיבודעד 240MHzכ-520KB זיכרון RAMמחיר נמוך

למה בוחרים ESP32 ולא ארדואינו רגיל?

תקשורת אלחוטית מובנית

ל-ESP32 יש Wi‑Fi ו-Bluetooth כבר בתוך השבב עצמו. לארדואינו Uno הרגיל אין בכלל תקשורת אלחוטית — כדי להוסיף אותה צריך רכיב הרחבה נפרד, עלות נוספת וחיווט נוסף.

הרבה יותר מהיר

ESP32 עובד בתדר של עד 240 מגה-הרץ, לעומת 16 מגה-הרץ בלבד בארדואינו Uno — כלומר פי 15 מהר יותר בערך. יש לו גם שתי ליבות עיבוד (dual-core), כך שהוא יכול לבצע כמה משימות "במקביל".

הרבה יותר זיכרון

לארדואינו Uno יש רק כ-2 קילובייט זיכרון עבודה (RAM). ל-ESP32 יש כ-520 קילובייט — פי מאות. זה מאפשר קוד מורכב, מסכי תצוגה, ושמירת נתונים בזמן ריצה בלי "להיגמר".

אותה סביבת תכנות

למרות ההבדלים, אפשר לתכנת ESP32 באותה תוכנה בדיוק שכבר מכירים — Arduino IDE, ועם אותה שפה (C/C++). זו הסיבה שהמעבר אליו קל יחסית.

טבלת השוואה מהירה

מאפיין Arduino Uno ESP32
מעבדליבה אחת, 16MHzשתי ליבות, עד 240MHz
זיכרון RAMכ-2 קילובייטכ-520 קילובייט
Wi‑Fiאין (דרוש רכיב נפרד)מובנה
Bluetoothאיןמובנה (כולל BLE)
מתח לוגי5V3.3V
מספר פינים14 דיגיטליים + 6 אנלוגייםכ-30 פינים, ADC ברזולוציה גבוהה יותר (12-bit)

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

2מתחילים לעבוד עם ESP32

כדי שתוכנת Arduino IDE תכיר את ה־ESP32, התקנו את חבילת הלוחות שלו דרך Boards Manager. ההורדה וההתקנה הראשונית עשויות להימשך זמן, משום שהחבילה כוללת כלי תכנות וקבצים רבים.

בחירת הלוח

בחרנו בתפריט הלוחות את ESP32 Dev Module. הבחירה אומרת לתוכנה לאיזה בקר אנחנו עומדים להעלות את הקוד.

בחירת החיבור

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

3מהו מנוע סרוו?

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

מנוע DC קטןגלגלי שינייםפוטנציומטרמעגל בקרהציר יציאה
ESP32
שולח פולסים המייצגים זווית
←
מעגל הבקרה
משווה בין הזווית הרצויה לזווית שנמדדה
←
מנוע + פוטנציומטר
נעים עד שהציר מגיע למקום הנכון

התקשורת מזכירה PWM, אך כאן משמעות רוחב הפולס היא הזווית הרצויה. בסרוו נפוץ נשלח פולס בערך כל 20 אלפיות השנייה.

דוגמה: תנועה מ־0° עד 180° וחזרה

#include <ESP32Servo.h>

Servo lidServo;
const int servoPin = 13;

void setup() {
  lidServo.attach(servoPin);
}

void loop() {
  for (int angle = 0; angle <= 180; angle++) {
    lidServo.write(angle);
    delay(15);
  }

  for (int angle = 180; angle >= 0; angle--) {
    lidServo.write(angle);
    delay(15);
  }
}

4הפרויקט: פח חכם

תכננו מנגנון שמרים את מכסה הפח בכ־90°. קיבענו את מנוע הסרוו לפח בעזרת דבק חם וחיברנו לציר מקל/זרוע מ־RTPLA. הזרוע מתרגמת את סיבוב הסרוו להרמת המכסה.

מצב סגור

הסרוו נמצא בזווית ההתחלתית והמכסה מונח על הפח.

מצב פתוח

הסרוו נע לזווית שנבחרה — בערך 90° — והזרוע מרימה את המכסה.

#include <ESP32Servo.h>

Servo lidServo;
const int servoPin = 13;

void setup() {
  lidServo.attach(servoPin);
}

void loop() {
  lidServo.write(90);  // פתיחת המכסה
  delay(2000);
  lidServo.write(0);   // סגירת המכסה
  delay(2000);
}

5משימות לשיעורי הבית

חובה

משימה 1 — בדיקת ESP32

פתחו תוכנית חדשה, בחרו ESP32 Dev Module והעלו תוכנית בסיסית. כתבו לעצמכם איזה Port עבד.

חובה

משימה 2 — שלוש זוויות

הזיזו את הסרוו ל־0°, לאחר מכן ל־45°, לאחר מכן ל־90°, ובסוף חזרה ל־0°. כל מצב יישאר למשך שנייה.

חובה

משימה 3 — לולאת תנועה

כתבו לולאת for שמזיזה את הסרוו בהדרגה מ־0° עד 90°. לאחר מכן כתבו לולאה שמחזירה אותו.

חובה

משימה 4 — כוונון המכסה

מצאו את הזווית הנכונה לפתיחה מלאה בלי שהסרוו דוחף את המכסה מעבר לגבול המכני. תעדו את זווית הסגירה וזווית הפתיחה.

אתגר למתקדמים

פתיחה רכה וסגירה איטית

במקום לקפוץ מיד בין 0° ל־90°, הזיזו את המכסה בהדרגה. פתחו אותו מהר יחסית, המתינו שתי שניות וסגרו אותו לאט יותר. רמז: השתמשו בשתי לולאות ובערכי delay() שונים.

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