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

הידע שצריך
איך זה עובד

חיישן מודד מרחק ברציפות. רכב מתקרב → הסרוו מרים את הזרוע ונורית נדלקת. הרכב עובר ומתרחק → הזרוע יורדת לאט והנורית נכבית.
הרעיון המרכזי: שני ספים
וכאן הפרט שהופך את הפרויקט הזה למעניין.
המערכת נפתחת מתחת ל-14 ס"מ — אבל נסגרת רק מעל 20 ס"מ. למה לא אותו מספר?
כי חיישן לא מדויק לחלוטין. אם הסף היה 14 לשני הכיוונים, רכב שעומד בדיוק על 14 היה גורם למדידות של 13.8, 14.2, 13.9, 14.1... והשער היה נפתח ונסגר שוב ושוב בלי הפסקה.
פער בין שני הספים פותר את זה:
סגור ──(מתחת ל-14)──> פתוח
^ |
└────(מעל ל-20)──────────┘
זה נקרא היסטרזיס, וזה קיים בכל מערכת בקרה רצינית — בתרמוסטט של מזגן, בבקרת מפלס מים, בכל דבר שיש לו שני מצבים וחיישן רועש.
הזכרנו את זה בשיעורים 21 ו-28 כתרגיל רשות. כאן זה חלק מהעיצוב.
ההרכבה
בלי ערכת הבנייה — דלגו ישר לקוד. הפרויקט יעבוד עם סרוו, חיישן ונורית.
שלבי ההרכבה:





























הניסוי
המטרה: מתחת ל-14 ס"מ השער נפתח; מעל 20 ס"מ הוא נסגר.
רשימת רכיבים
| הרכיב | כמות |
|---|---|
| לוח ESP32 | 1 |
| חיישן אולטרסוני | 1 |
| סרוו | 1 |
| נורית LED | 1 |
| נגד 220Ω | 1 |
הקוד
#include <ESP32Servo.h>
#define TRIG_PIN 5
#define ECHO_PIN 16
#define SERVO_PIN 17
#define LED_PIN 18
Servo servo;
int angle = 90;
int flag = 0; // 0 = סגור, 1 = פתוח
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
servo.attach(SERVO_PIN);
servo.write(angle); // מצב סגור
}
void loop() {
long distance = readDistance();
Serial.println(distance);
// רכב התקרב והשער סגור → פותחים
if (distance > 0 && distance <= 14 && flag == 0) {
digitalWrite(LED_PIN, HIGH);
for (angle = 90; angle > 0; angle--) {
servo.write(angle);
delay(5);
}
flag = 1;
}
// הרכב התרחק והשער פתוח → סוגרים
else if (distance > 20 && flag == 1) {
digitalWrite(LED_PIN, LOW);
for (angle = 0; angle < 90; angle++) {
servo.write(angle);
delay(5);
}
flag = 0;
}
delay(500);
}
float readDistance() {
digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
return (duration * 0.0343) / 2;
}
שימו לב לשני המספרים השונים בתנאים: <= 14 לפתיחה, > 20 לסגירה. זה ההיסטרזיס, והוא כל ההבדל בין שער שעובד לשער שמרעיד.
ובין 14 ל-20 יש "אזור מת" שבו שום דבר לא קורה — המערכת פשוט נשארת במצב שהיא כבר בו.
נסו בעצמכם
- שנו את שני הספים ל-14 ו-14 והחזיקו יד בדיוק שם. עכשיו ראיתם למה צריך היסטרזיס.
- הרחיבו את הפער ל-10 ו-30. מה השתנה בהתנהגות?
- הוסיפו זמזם שמצפצף בזמן פתיחה.
- הוסיפו טיימר בטיחות: אם השער פתוח יותר מ-10 שניות — סגירה בכפייה.
- שלבו עם שיעור 24: ספרו כמה רכבים עברו והציגו על תצוגה.


