תקשורת אלחוטית מובנית
ל-ESP32 יש Wi‑Fi ו-Bluetooth כבר בתוך השבב עצמו. לארדואינו Uno הרגיל אין בכלל תקשורת אלחוטית — כדי להוסיף אותה צריך רכיב הרחבה נפרד, עלות נוספת וחיווט נוסף.
מהתקנת הלוח ועד תנועה מכנית מדויקת
ESP32 הוא שבב מיקרו-בקר (microcontroller) שמפתחת ומייצרת חברה סינית בשם Espressif Systems, ובו משתמשים עשרות יצרני לוחות ברחבי העולם (כולל הלוח שאנחנו עובדים איתו). הוא יצא לשוק לראשונה ב-6 בספטמבר 2016, כממשיך של דגם קודם וחלש יותר בשם ESP8266.
בשונה מארדואינו קלאסי (כמו Uno), שהוא בעיקר "מוח" פשוט ואמין לפרויקטים בסיסיים, ESP32 תוכנן מההתחלה בשביל עולם ה-IoT — מכשירים מחוברים לאינטרנט: מדבקת מזג אוויר חכמה, מצלמת אבטחה ביתית, רובוט שנשלט מהנייד, פח חכם שמדווח כשהוא מלא, ועוד.
ל-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) |
| מתח לוגי | 5V | 3.3V |
| מספר פינים | 14 דיגיטליים + 6 אנלוגיים | כ-30 פינים, ADC ברזולוציה גבוהה יותר (12-bit) |
לסיכום: ESP32 לא "מחליף" את הארדואינו הרגיל — הוא מתאים במיוחד לפרויקטים שדורשים חיבור לאינטרנט, מהירות, או זיכרון גדול, כמו הפח החכם שנבנה בהמשך השיעור.
כדי שתוכנת Arduino IDE תכיר את ה־ESP32, התקנו את חבילת הלוחות שלו דרך Boards Manager. ההורדה וההתקנה הראשונית עשויות להימשך זמן, משום שהחבילה כוללת כלי תכנות וקבצים רבים.
בחרנו בתפריט הלוחות את ESP32 Dev Module. הבחירה אומרת לתוכנה לאיזה בקר אנחנו עומדים להעלות את הקוד.
בחרנו את יציאת ה־USB המתאימה והעלינו תוכנית בסיסית. כך בדקנו שהמחשב, הכבל והלוח מתקשרים.
סרוו הוא מנגנון שיודע להגיע לזווית שנבקש ולשמור עליה. בסרוו קטן טיפוסי ניתן בדרך כלל לנוע בקירוב בין 0° ל־180°, אך הטווח המדויק תלוי בדגם.
התקשורת מזכירה PWM, אך כאן משמעות רוחב הפולס היא הזווית הרצויה. בסרוו נפוץ נשלח פולס בערך כל 20 אלפיות השנייה.
#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);
}
}תכננו מנגנון שמרים את מכסה הפח בכ־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);
}פתחו תוכנית חדשה, בחרו ESP32 Dev Module והעלו תוכנית בסיסית. כתבו לעצמכם איזה Port עבד.
הזיזו את הסרוו ל־0°, לאחר מכן ל־45°, לאחר מכן ל־90°, ובסוף חזרה ל־0°. כל מצב יישאר למשך שנייה.
כתבו לולאת for שמזיזה את הסרוו בהדרגה מ־0° עד 90°. לאחר מכן כתבו לולאה שמחזירה אותו.
מצאו את הזווית הנכונה לפתיחה מלאה בלי שהסרוו דוחף את המכסה מעבר לגבול המכני. תעדו את זווית הסגירה וזווית הפתיחה.
במקום לקפוץ מיד בין 0° ל־90°, הזיזו את המכסה בהדרגה. פתחו אותו מהר יחסית, המתינו שתי שניות וסגרו אותו לאט יותר. רמז: השתמשו בשתי לולאות ובערכי delay() שונים.