דלגו לתוכן המרכזי
KitLab
שיעור קודם
מאוורר מסתובב — שלוש מהירויות וראש שמסתובב לבד· 4 / 5
מאוורר מסתובב — שלוש מהירויות וראש שמסתובב לבד
🎬

הסרטון בדרך אלינו

בינתיים — התמלול המלא של השיעור מחכה לכם למטה

מאוורר מסתובב — שלוש מהירויות וראש שמסתובב לבד

מה בשיעור?

  • להסביר איך מאוורר מסתובב מפזר אוויר בכל החדר
  • להרכיב מאוורר עץ שלם — להב, מגן, בסיס ועמוד
  • לחבר מנהג מנוע L9110S, מנוע, סרוו ושלושה כפתורים
  • לשלוט במהירות רוח עם הבלוק write analog pin
  • להבין את הבלוק mod ואיך הוא הופך כפתור אחד למתג
  • לבנות בלוק משלכם עם define ולקרוא לו מהתוכנית
  • לגרום לראש לחזור אחורה כשהוא מגיע לקצה הטווח

מה נלמד כאן

  • איך מאוורר מסתובב מפזר רוח על כל החדר
  • להרכיב מאוורר עץ מלא — 19 שלבי הרכבה
  • להפעיל מנוע במהירויות שונות עם write analog pin
  • להפוך כפתור אחד למתג הדלקה-כיבוי בעזרת הבלוק mod
  • לבנות בלוק משלכם עם define — ולמה זה משנה הכול

הרוח שמגיעה לכולם

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

איור של ילדים משחקים בחדר עם מאוורר מסתובב

בתוך המאוורר יש שני מנועים שונים לגמרי ושתי משימות שונות לגמרי:

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

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

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


איך מאוורר מסתובב עובד

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

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

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


הרכיבים

מנוע זרם ישר ולהב

מנוע קטן שמסתובב מהר. הלהב מתלבש עליו בלחיצה.

מנהג המנוע L9110S

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

מנוע סרוו

מנוע שעוצר בזווית מדויקת. הוא יסובב את ראש המאוורר.

שלושה כפתורים ושלושה נגדים 10kΩ

כל כפתור מחובר ל-5V דרך נגד 10kΩ ולאדמה דרך הכפתור. זה נקרא נגד מעלה (pull-up): כשהכפתור לא לחוץ הפין "רואה" 1, וכשלוחצים עליו הוא "רואה" 0. שימו לב — לחוץ = 0. זה מבלבל בהתחלה ואחר כך הופך טבעי.

לוח ניסוי 400 חורים

עליו נרכיב את שלושת הכפתורים.


מרכיבים את המאוורר

אין לכם את ערכת לוחות העץ? דלגו ל"החיבור". התוכנית תעבוד גם על רכיבים פרוסים על השולחן.

שלב 1 — מרכיבים את המגן הקדמי

שש הזרועות נכנסות לחריצים שבדיסקית המרכזית ויוצרות כוכב.

פירוק שש זרועות המגן הקדמי סביב הדיסקית

המגן הקדמי מורכב ככוכב

שלב 2 — מתקינים את המגן הקדמי

פירוק המגן הקדמי אל הטבעת החיצונית

המגן הקדמי בתוך הטבעת

שלב 3 — מרכיבים את המגן האחורי

פירוק זרועות המגן האחורי

המגן האחורי מורכב

שלב 4 — מתקינים את הסרוו

שני ברגי M2 באורך 14 מ״מ ושני אומי M2 מקבעים את הסרוו לבסיס.

פירוק הסרוו והברגים אל לוח הבסיס

הסרוו מוברג במקומו

שלב 5 — מתקינים את ההגה

"הגה" הוא זרוע הפלסטיק הלבנה שמגיעה עם הסרוו. שני ברגים עצמיים M1.7 באורך 6 מ״מ מחברים אותה ללוח.

פירוק ההגה והברגים העצמיים

ההגה מחובר ללוח

שלב 6 — מקבעים את ההגה לציר

עצרו לפני שאתם ממשיכים.

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

⬇ להורדת הקובץ Servo Initialize.sb3 — גוררים לתוך ACECode, לוחצים Upload, והסרוו קופץ ל-90 מעלות.

פירוק בורג הקיבוע M2.5 של ההגה

ההגה מונח על ציר הסרוו

מהדקים את בורג הקיבוע

ההגה מקובע לציר הסרוו

שלב 7 — מרכיבים את תושבת המנוע

פירוק לוחות תושבת המנוע

התושבת מתחילה להתחבר

תושבת המנוע מורכבת

שלב 8 — מתקינים את תושבת המנוע

פירוק התושבת אל המגן האחורי

התושבת נכנסת לחריצים

התושבת מחוברת למגן האחורי

שלב 9 — מתקינים את המנוע והמגן האחורי

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

פירוק המנוע אל תוך התושבת

המנוע מקובע בתושבת

שלב 10 — מרכיבים את הלהב

הלהב נלחץ על ציר המנוע. לחצו ישר ובעדינות, בלי לכופף את הציר.

פירוק הלהב אל ציר המנוע

הלהב נלחץ על הציר

הלהב מורכב ומסתובב חופשי

שלב 11 — סוגרים עם המגן הקדמי

פירוק המגן הקדמי אל ראש המאוורר

ראש המאוורר סגור

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

שלב 12 — תושבת הבסיס

פירוק תושבת התמיכה של הבסיס

התושבת מחוברת

שלב 13 — מרכיבים את הבסיס

פירוק לוחות הבסיס

הלוחות מתחברים לקופסה

הבסיס מורכב

שלב 14 — מתקינים את הכפתורים

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

פירוק שלושת הכפתורים ולוח הניסוי

הכפתורים נעוצים בלוח הניסוי

לוח הניסוי עם שלושת הכפתורים בבסיס

שלב 15 — מתקינים את הכיפות

הכיפות הצבעוניות מתלבשות על הכפתורים ומקלות על הלחיצה. זכרו איזה צבע יושב על איזה כפתור — תצטרכו את זה בסוף.

פירוק כיפות הכפתורים

הכיפות מותקנות

שלב 16 — מתקינים את מנהג המנוע

שני ברגי M3 באורך 10 מ״מ ושני אומי M3 מקבעים את לוח המנהג לבסיס.

פירוק מנהג המנוע והברגים

מנהג המנוע מוברג לבסיס

שלב 17 — מרכיבים את עמודי התמיכה

פירוק חלקי עמודי התמיכה

העמודים מתחברים

עמודי התמיכה מורכבים

שלב 18 — מתקינים את העמודים על הבסיס

פירוק העמודים אל הבסיס

העמודים נכנסים לחריצי הבסיס

העמודים ניצבים על הבסיס

שלב 19 — מקבעים את ראש המאוורר

זה השלב שמחבר את הכול. הראש יושב על ההגה של הסרוו — ומרגע זה, כשהסרוו מסתובב, כל הראש מסתובב איתו.

פירוק ראש המאוורר אל הגה הסרוו

המאוורר מורכב במלואו


החיבור

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

תרשים חשמלי — מנהג L9110S, שלושה כפתורים עם נגדי 10k וסרוו

וכך זה נראה על השולחן:

חיבור בפועל — מנוע, מנהג, סרוו ושלושה כפתורים ללוח ESP32

מאיפה לאן בלוח
מנהג L9110S — A-1A פין 16
מנהג L9110S — A-1B פין 17
מנהג L9110S — VCC / GND 5V / GND
מנוע — שני חוטים חיבורי OA1 ו-OA2 במנהג
סרוו — חוט אות פין 5
כפתור הפעלה / כיבוי פין 18
כפתור מהירות פין 19
כפתור סיבוב פין 23

לכל כפתור צריך גם נגד 10kΩ אל 5V ורגל שנייה אל GND, בדיוק כמו בתרשים.


הבלוקים

זאת התוכנית הארוכה ביותר בקורס. אל תיבהלו — נפרק אותה לשלושה חלקים.

חלק ראשון — ההכנות והכפתור הראשי

החלק הראשון של תוכנית המאוורר — הגדרת המשתנים ולולאת forever

מתחת ל-start the program יושבת שורה ארוכה של בלוקי set כתומים. כל אחד מהם מכין משתנה אחד:

  • set [n] to (1) — מונה הלחיצות על כפתור ההפעלה. כל לחיצה תגדיל אותו באחד.
  • set [m] to (0) — דגל שאומר "כבר נגעו בכפתור ההפעלה לפחות פעם אחת".
  • set [speed] to (100) — עוצמת הרוח ההתחלתית.
  • set [angle] to (90) — הזווית הנוכחית של הסרוו. 90 זה האמצע.
  • set [step] to (2) — בכמה מעלות לזוז בכל צעד של הסיבוב.
  • set [minAngle] to (0) ו-set [maxAngle] to (180) — גבולות הסיבוב.
  • set [isPaused] data type [boolean] ואחריו set [isPaused] to (boolean value [true]) — משתנה מסוג בוליאני, כלומר משתנה שיכול להחזיק רק נכון או לא נכון. הוא מתחיל ב-true, כלומר הסיבוב מושהה בהתחלה.
  • set [lastButtonState] to (1), set [lastDebounceTime] to (0), set [debounceDelay] to (50) — שלושת אלה שייכים לטיפול בכפתור, נגיע אליהם.

ואז servo [5] angle (90) מעמיד את הראש באמצע, ו-forever פותח את הלולאה האינסופית.

הבלוק הראשון בתוך הלולאה:

if <(read digital pin [18]) = (0)> then

הבלוק read digital pin הוא בלוק עגלגל — הוא לא מבצע כלום, הוא עונה מה קורה על הפין: 1 או 0. וכיוון שהכפתור מחובר בנגד מעלה, 0 פירושו לחוץ.

בפנים: set [m] to (1) (סימנו שנגעו), כמה בלוקי serial print שעוזרים לנו לראות מה קורה, set [n] to ((n) + (1)) שמקדם את המונה, ו-wait (200) milliseconds שמונע מלחיצה אחת להיספר עשר פעמים.

חלק שני — שלוש המהירויות והסיבוב

החלק השני של תוכנית המאוורר — הפעלת המנוע, מהירויות וקריאה ל-Servomove

עכשיו מגיע הטריק היפה של השיעור: הבלוק mod.

mod הוא בלוק ירוק עגלגל שמחזיר את השארית של חילוק. 4 mod 2 = 0. 5 mod 2 = 1. כלומר: מספר זוגי נותן 0, מספר אי-זוגי נותן 1. ולכן (n) mod (2) הופך מונה לחיצות רגיל למתג של שני מצבים — דלוק, כבוי, דלוק, כבוי.

  • if <(m) = (1) and ((n) mod (2)) = (0)> thenwrite analog pin [16] to (speed) ו-write analog pin [17] to (0). המנוע מסתובב.
  • if <(m) = (1) and ((n) mod (2)) = (1)> thenwrite analog pin [16] to (0) ו-write analog pin [17] to (0). המנוע נעצר.

write analog pin הוא הבלוק שמייצר "חצי מתח". בלוק set digital pin יודע רק הכול או כלום, אבל write analog pin מקבל מספר בין 0 ל-255: 0 זה כיבוי מלא, 255 זה מלוא הכוח, ו-100 זה בערך 40 אחוז. הלוח משיג את זה בכך שהוא מדליק ומכבה את הפין אלפי פעמים בשנייה — כל כך מהר שהמנוע פשוט "מרגיש" מתח ממוצע נמוך יותר. זה בדיוק מה שנותן למאוורר שלכם מהירויות.

שני הפינים 16 ו-17 הם שני הכיוונים של המנוע. מי שמקבל מספר גדול יותר קובע לאיזה כיוון הלהב יסתובב. שניהם 0 — עצירה.

אחר כך:

if <((n) mod (2)) = (0)> then — כלומר רק כשהמאוורר דולק:

  • Servomove — בלוק ורוד. עוד רגע נראה מה יש בתוכו.
  • if <(speed) < (255) and (read digital pin [19]) = (0)> thenchange [speed] by (70). לחצתם על כפתור המהירות, והרוח מתחזקת. 100 נהיה 170, אחר כך 240.
  • elseif <(speed) >= (255)> then set [speed] to (100) — כשהמספר עובר את הגבול, הוא חוזר להתחלה. ככה נוצרות שלוש מהירויות במעגל: חלשה, בינונית, חזקה, ושוב חלשה.

חלק שלישי — הבלוק שבניתם בעצמכם

הגדרת הבלוק Servomove — הבלוק המותאם אישית שמסובב את ראש המאוורר

הכובע הוורוד define Servomove הוא משהו חדש: בלוק שאתם המצאתם. נותנים לו שם, שמים בתוכו כמה פעולות, ומאותו רגע אפשר לקרוא לו מכל מקום בתוכנית בבלוק ורוד אחד. זה בדיוק כמו שאומרים "תסדר את החדר" במקום לפרט שמונה משימות.

מה יש בתוך Servomove?

set [buttonState] to (read digital pin [23]) — קורא את כפתור הסיבוב.

if <(buttonState) = (0) and (lastButtonState) = (1)> then — התנאי הזה נכון רק ברגע המעבר: הכפתור לחוץ עכשיו והוא לא היה לחוץ קודם. כך לחיצה ארוכה נספרת פעם אחת בלבד. בפנים: wait (50) milliseconds ובדיקה חוזרת שהכפתור באמת לחוץ. ההמתנה הקצרה הזאת נקראת debounce — היא מסננת את הרעד הזעיר של מגעי המתכת ברגע הלחיצה.

set [isPaused] to (invert the value of (isPaused)) — הבלוק invert the value of הופך נכון ללא-נכון ולהפך. זאת הדרך הקצרה להפוך כפתור אחד למתג: לחצתם — הסיבוב התחיל; לחצתם שוב — נעצר.

set [lastButtonState] to (buttonState) — זוכרים את המצב לפעם הבאה.

ולבסוף, if <(isPaused) = (boolean value [false])> then — כלומר רק אם הסיבוב מופעל:

  • servo [5] angle (angle) — הזז את הראש לזווית הנוכחית.
  • set [angle] to ((angle) + (step)) — קדם את הזווית בגודל הצעד.
  • if <(angle) >= (maxAngle) or (angle) <= (minAngle)> then set [step] to ((0) - (step)) — וזה החלק החכם באמת. כשהראש מגיע לקצה, הצעד מתהפך מ-2 ל-2 מינוס, ומשם הוא מתחיל לזוז בכיוון ההפוך. ככה, בלי שום לולאה נוספת, נוצרת תנועת הלוך-ושוב אינסופית. בדיוק כמו כדור שקופץ בין שני קירות.

מריצים

⬇ להורדת הקובץ Oscillating_Fan.sb3 — גוררים אותו לתוך ACECode ולוחצים Upload.

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

  • Servo Initialize.sb3 — צריבה חד-פעמית לפני שלב 6 בהרכבה, רק כדי להעמיד את הסרוו על 90 מעלות.
  • Oscillating_Fan.sb3 — התוכנית המלאה של המאוורר, וזאת שנשארת על הלוח.

ההסבר המלא על צריבה נמצא בשיעור ההתקנה.

אחרי הצריבה:

  1. לחצו על כפתור ההפעלה (פין 18, במדריך המקורי הוא השחור) — המאוורר מתחיל לנשוב במהירות הראשונה.
  2. לחצו על כפתור המהירות (פין 19, הצהוב) — הרוח מתחזקת. עוד לחיצה, עוד חוזק. בפעם הרביעית הוא חוזר לחלשה.
  3. לחצו על כפתור הסיבוב (פין 23, האדום) — הראש מתחיל להסתובב מצד לצד.
  4. לחצו שוב על כפתור ההפעלה — הכול נעצר.

המאוורר המסתובב המוכן

לא עובד?

  • הלהב לא זז בכלל → בדקו את ההזנה של מנהג המנוע. הוא צריך 5V ו-GND משלו, לא רק את שני פיני האות.
  • הלהב מסתובב לאחור → החליפו בין שני חוטי המנוע ב-OA1 ו-OA2.
  • הראש מסתובב עקום או נתקע → ההגה כנראה קובע בלי איפוס ל-90 מעלות. חזרו לשלב 6.
  • לחיצה אחת נספרת כשתיים → הגדילו את wait (200) milliseconds ל-300.
  • כלום לא מגיב → ודאו שכל נגד 10kΩ באמת מחבר את רגל הכפתור ל-5V.

מה קרה כאן

בנינו מכשיר עם שני מנועים שונים, שלושה כפתורים ושלושה מצבים — והכול מתוך בלוקים שכבר הכרתם.

שלושת הרעיונות הגדולים של השיעור הם:

mod — שארית חילוק, שהופכת מונה פשוט למתג של דלוק-כבוי. write analog pin — היכולת לשלוט לא רק אם, אלא כמה. זה מה שהופך מנוע עם מתג למאוורר עם מהירויות. define — היכולת להמציא בלוק משלכם. מהרגע שיש לכם בלוק בשם Servomove, התוכנית הראשית נשארת קצרה וקריאה. כל מתכנת בעולם עושה בדיוק את זה, כל יום.

אם הגעתם עד כאן — בניתם מוצר צריכה אמיתי בזעיר אנפין. זה לא תרגיל, זה מאוורר.


תרגילים

  1. טווח סיבוב צר יותר. שנו את set [minAngle] to (0) ל-45 ואת set [maxAngle] to (180) ל-135. הראש יסתובב רק בטווח הצר שמולו — כמו מאוורר שמופנה לשולחן אחד.
  2. סיבוב איטי או מהיר. שנו את set [step] to (2) ל-1 ואז ל-5. במספר קטן הראש זוחל, במספר גדול הוא מתנדנד. מצאו את המספר שנראה לכם הכי טבעי.
  3. ארבע מהירויות. שנו את change [speed] by (70) ל-50. עכשיו הסדרה היא 100, 150, 200, 250 — ארבע מהירויות במקום שלוש. שימו לב שהגבול בבלוק if <(speed) < (255)> עדיין קובע מתי הכול מתאפס.
  4. אתגר — סיבוב שמתחיל לבד. שנו את set [isPaused] to (boolean value [true]) ל-false. המאוורר יתחיל להסתובב מיד עם ההדלקה, וכפתור הסיבוב יעבוד הפוך — הוא יעצור אותו. תחשבו: איזה מהשניים הגיוני יותר במאוורר אמיתי, ולמה יצרנים בחרו דווקא בדרך השנייה?

🧰 הרכיבים לשיעור הזה

רוצים את חומרי הקורס והעדכונים?

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