קורס רובוטיקה ובינה מלאכותית : A106-04 מיקרו מעבד – רכיבים אלקטרונים
חלק ב – תרגול רשת נוירונים בכיתה
תרגיל 1 – יש להראות למרצה סיום תרגיל\ לגשת למרצה אם יש קושי
קובץ אקסל polynomial_noise1

תרגיל כיתה – אימון רשת ANN באמצעות TensorFlow
נושא: למידת נתוני ניסוי מעבדה באמצעות רשת נוירונים מלאכותית (ANN) עם פונקציית הפעלה ReLU.
סביבת עבודה: Python – Google Colab.
מטרת התרגיל: לבנות מודל בינה מלאכותית הלומד את הקשר בין שני משתנים מתוך קובץ CSV המכיל מדידות עם רעש.
דרישות התרגיל
-
טעינת נתונים: העלו מהמחשב קובץ CSV המכיל שתי עמודות:
X,Y. -
בדיקת נתונים: הציגו את 5 השורות הראשונות ואת 5 השורות האחרונות ואת מספר המדידות.
-
גרף המדידות: הציגו את נתוני המעבדה בגרף עם קו ונקודות.
-
חלוקת נתונים: חלקו את הנתונים ל־Training, Validation ו־Test.
-
בניית ANN: השתמשו ב־TensorFlow עם שלוש שכבות נסתרות ו־ReLU.
-
פרמטרי המודל: הציגו את מספר השכבות, מספר הנוירונים, פונקציות ההפעלה, Loss Function.
-
אימון: הציגו את מספר ה־Epoch ואת ערכי ה־Loss בכל שלב של האימון.
-
Cost Function: הציגו גרף MSE כנגד Epochs
-
בדיקת המודל: הציגו גרף המשווה בין המדידות האמיתיות לבין התחזיות של הרשת.
- שמירת מודל: שמרו את המודל בשם
ANN_ReLU_Laboratory_Model1.kerasוהורידו אותו למחשב.11 הוסיפו הערות בקוד המסבירות את תפקידן של הפקודות כל שורה
12 את השלבים הממוספרים ואת משמעות הפרמטרים של הרשת.
תרגיל כיתה 2 – בדיקת מודל ANN מאומן באמצעות TensorFlow
נושא: טעינת מודל ANN, ניתוח מבנה הרשת ובדיקת דיוק התחזיות.
סביבת עבודה: Python – Google Colab
מודל: ANN_ReLU_Laboratory_Model1.keras
מטרת התרגיל
בתוכנית הקודמת בנינו ואימנו רשת נוירונים מלאכותית (ANN) באמצעות TensorFlow, ושמרנו את המודל המאומן במחשב.
בתרגיל זה נבנה תוכנית חדשה שתטען את המודל המאומן, תציג את מבנה הרשת ותבדוק את יכולת החיזוי שלה באמצעות 10 זוגות נתונים.
חלק א' – טעינת המודל
- כתבו תוכנית חדשה ב־Google Colab.
- ייבאו את הספריות TensorFlow, NumPy, Pandas ו־Matplotlib.
- אפשרו למשתמש לטעון מהמחשב קובץ מודל מסוג
.keras. - טענו את המודל המאומן באמצעות
tf.keras.models.load_model(). - הדפיסו את שם המודל שנטען והודעת הצלחה.
חלק ב' – הצגת מבנה ופרמטרי המודל
- הציגו את מבנה הרשת באמצעות
model.summary(). - הציגו טבלה הכוללת את הנתונים הבאים עבור כל שכבה:
| Parameter | Description |
|---|---|
| Layer | מספר השכבה |
| Layer Name | שם השכבה |
| Layer Type | סוג השכבה |
| Neurons | מספר הנוירונים |
| Activation | פונקציית ההפעלה |
| Weights | מספר המשקלים הנלמדים |
| Biases | מספר ההטיות הנלמדות |
| Parameters | מספר הפרמטרים הכולל |
- הדפיסו את מספר הפרמטרים הכולל של המודל ואת מספר הפרמטרים הנלמדים והלא־נלמדים.
חלק ג' – נתונים לבדיקה
- צרו שני מערכי NumPy בשם
X_testו־Y_true, המכילים 10 זוגות נתונים.
נתוני הבדיקה:
| Test | X | Y Expected |
|---|---|---|
| 1 | -1.8 | -23.1 |
| 2 | -1.2 | -4.7 |
| 3 | -0.6 | 6.2 |
| 4 | 0.0 | 10.3 |
| 5 | 0.6 | 10.1 |
| 6 | 1.2 | 9.6 |
| 7 | 1.8 | 11.2 |
| 8 | 2.4 | 16.4 |
| 9 | 3.0 | 27.7 |
| 10 | 3.6 | 49.1 |
יש להזין את הנתונים כמערכים ישירות בקוד, ללא שימוש בנוסחה מתמטית לחישוב Y.
חלק ד' – בדיקת המודל
- הפעילו את המודל המאומן על 10 ערכי X באמצעות
model.predict(). - שמרו את התחזיות במערך
Y_pred. - חשבו עבור כל בדיקה את השגיאה המוחלטת:
[
Error=|Y_{\text{true}}-Y_{\text{pred}}|
]
- הגדירו את סף השגיאה המותרת כ־
tolerance = 2.0. - תחזית תיחשב מוצלחת אם השגיאה המוחלטת קטנה או שווה ל־2.
- חשבו את מספר התחזיות המוצלחות ואת אחוז ההצלחה:
[
Success(%)=\frac{Correct\ Predictions}{10}\times100
]
- חשבו גם את מדדי השגיאה MSE ו־MAE.
חלק ה' – הצגת תוצאות
- הציגו טבלת תוצאות הכוללת: מספר בדיקה, X, ערך Y אמיתי, תחזית ANN, שגיאה מוחלטת ותוצאת הבדיקה (Correct / Incorrect).
- הציגו גרף הכולל שני קווים עם נקודות: נתוני הייחוס ותחזיות המודל.
- הציגו גרף עמודות של השגיאה המוחלטת בכל בדיקה, כולל קו המציין את סף השגיאה המותרת.
- הדפיסו בסיום את מספר הבדיקות, מספר ההצלחות, אחוז ההצלחה, MSE ו־MAE.
חלק ו' – דרישות כתיבת הקוד
חובה להוסיף הערה באנגלית לכל שורת קוד בתוכנית, באמצעות הסימן #, המסבירה מה השורה עושה. שורות ריקות אינן מחייבות הערה.
בנוסף, יש לחלק את התוכנית לסעיפים ממוספרים עם כותרות ברורות באנגלית, ולתת שמות משמעותיים למשתנים.
תרגיל כיתה 3 – תרגילי כיתה – לימוד חוק פיזיקלי באמצעות TensorFlow ANN
נושא: בניית רשת נוירונים הלומדת את חוק האנרגיה הקינטית, אימון המודל ובדיקת יכולת החיזוי שלו.
סביבת עבודה: Python – Google Colab
סוג רשת: Artificial Neural Network (ANN)
פונקציית הפעלה: ReLU
פונקציית שגיאה: Mean Squared Error (MSE)
שם המודל לשמירה: E-KENTIKS.keras
רקע פיזיקלי
האנרגיה הקינטית של גוף מחושבת באמצעות הנוסחה:


תרגיל 3.1 – בניית המודל ואימון רשת ANN
משימות
-
פתחו Google Colab וצרו Notebook חדש.
-
ייבאו את ספריות NumPy, Pandas, Matplotlib ו־TensorFlow.
-
צרו 2,000 דוגמאות אקראיות, כאשר המסה בין 0.5 ל־10 ק"ג והמהירות בין 0 ל־30 מטר לשנייה.
-
חשבו לכל דוגמה את האנרגיה הקינטית באמצעות הנוסחה הפיזיקלית.
-
הציגו 5 שורות ראשונות ו־5 אחרונות של הנתונים.
-
הציגו גרף תלת־ממדי: מסה, מהירות ואנרגיה.
-
חלקו את הנתונים לקבוצות Training ו־Validation.
-
בנו ANN עם שלוש שכבות נסתרות, בכל אחת 64 נוירונים, ופונקציית ReLU.
-
הציגו את מבנה המודל, מספר הנוירונים ומספר הפרמטרים.
-
אמנו את המודל עד 500 Epochs והדפיסו את התקדמות הלמידה בכל Epoch.
-
הציגו גרף היסטוריית למידה: Training MSE ו־Validation MSE כתלות במספר ה־Epochs.
-
הציגו גרף המשווה בין האנרגיה הפיזיקלית המחושבת לבין תחזית ה־ANN.
-
שמרו את המודל בשם
E-KENTIKS.kerasוהורידו אותו למחשב.
תרגיל 3.2 – טעינת מודל ובדיקת תחזיות
משימות לסטודנט
-
פתחו Notebook חדש ב־Google Colab, ללא הרצה חוזרת של תרגיל 1.
-
העלו מהמחשב את הקובץ
E-KENTIKS.keras. -
טענו את המודל באמצעות TensorFlow.
-
הציגו את מבנה הרשת ואת מספר הפרמטרים.
-
הגדירו שלושה זוגות נתונים חדשים: מסה ומהירות.
-
חשבו לכל זוג את האנרגיה הקינטית באמצעות הנוסחה הפיזיקלית.
-
הפעילו את המודל המאומן לקבלת שלוש תחזיות.
-
הציגו טבלה: מסה, מהירות, אנרגיה מחושבת, תחזית ANN, שגיאה מוחלטת ושגיאה באחוזים.
-
הציגו גרף המשווה בין שלושת הערכים הפיזיקליים לבין שלוש התחזיות.
-
חשבו MSE ו־MAE והדפיסו סיכום.
נתוני הבדיקה
| Test | Mass (kg) | Velocity (m/s) | Expected Energy (J) |
|---|---|---|---|
| 1 | 1.0 | 5.0 | 12.5 |
| 2 | 3.0 | 10.0 | 150.0 |
| 3 | 8.0 | 20.0 | 1,600.0 |
הערכים בעמודת האנרגיה מחושבים מהנוסחה הפיזיקלית. ערכי ANN יתקבלו רק לאחר הרצת המודל.
חלק ג רכיבים אלקטרונים
תרגיל כיתה 1

קראו היטב את הסאיפים
הוספת רכיב
תרגיל Arduino ESP32 – שליטה במנוע Servo באמצעות פוטנציומטר
בנה את המעגל הבא בתוכנת https://wokwi.com/
מטרת התרגיל: ללמוד כיצד לקרוא אות אנלוגי מחיישן פוטנציומטר ולהשתמש בו לשליטה בזווית של מנוע Servo, בשילוב נורת LED.
1. רכיבים נדרשים
- לוח ESP32.
- מנוע Servo מסוג SG90.
- פוטנציומטר 10KΩ.
- נורת LED ונגד 220Ω.
- חוטי חיבור ומטריצת ניסויים.
- ספק מתח מתאים למנוע הסרוו.
2. חיבור הרכיבים
| רכיב | פין ESP32 | תפקיד |
|---|---|---|
| LED | GPIO 2 | שליטה בנורה |
| Potentiometer | GPIO 32 | קריאת אות אנלוגי |
| Servo | GPIO 4 | שליטה בזווית המנוע |
חברו את הפוטנציומטר בין 3.3V ל־GND, ואת הרגל האמצעית ל־GPIO 32. יש לחבר GND משותף ל־ESP32 ולספק מנוע הסרוו.
3. משימות התרגיל
- פתחו את סביבת Arduino IDE.
- התקינו את ספריית
ESP32Servo. - הגדירו את שלושת הפינים באמצעות
const int. - הגדירו את GPIO 2 כיציאה באמצעות
pinMode(). - קראו את ערך הפוטנציומטר באמצעות
analogRead(). - המירו את הערך האנלוגי מטווח 0–4095 לטווח זוויות של 0°–180° באמצעות
map(). - הפעילו את מנוע הסרוו בהתאם לזווית שחושבה.
- הדליקו את נורת ה־LED כאשר זווית הסרוו גדולה מ־90°.
- כבו את הנורה כאשר הזווית קטנה או שווה ל־90°.
- הציגו ב־Serial Monitor את ערך הפוטנציומטר ואת זווית המנוע.
4. קוד התחלתי
|
1 2 3 4 5 |
#include <ESP32Servo.h> const int ledPin = 2; const int potentiometerPin = 32; const int servoPin = 4; |
השלימו את התוכנית באמצעות הפונקציות setup() ו־loop().
5. שאלות לסיכום
- מה תפקיד הפונקציה
analogRead()? - מהו ADC ומה הרזולוציה שלו ב־ESP32?
- מדוע משתמשים בפונקציה
map()? - מה ההבדל בין אות אנלוגי לאות דיגיטלי?
- כיצד ניתן להגביל את תנועת הסרוו לטווח של 30°–150°?
תוצאה נדרשת: בסיום התרגיל, סיבוב הפוטנציומטר ישנה את זווית מנוע הסרוו באופן רציף, ונורת ה־LED תידלק כאשר הזווית גדולה מ־90°.
תרגיל כיתה 2
חבלא – קראו איך מוסיפים ספריה

תרגיל Arduino Uno – שליטה במנוע Servo באמצעות פוטנציומטר
מטרת התרגיל: לימוד קריאת אות אנלוגי באמצעות Arduino Uno והמרתו לזווית סיבוב של מנוע Servo.
1. רכיבים נדרשים
- Arduino Uno
- מנוע Servo מסוג SG90
- פוטנציומטר (נגד משתנה) 10KΩ
- חוטי חיבור
2. משימות הסטודנט
- פתחו את סימולטור Wokwi ובחרו Arduino Uno.
- הוסיפו לסימולטור מנוע Servo ופוטנציומטר.
- חברו את הפוטנציומטר לכניסה האנלוגית A0 ואת שתי הרגליים החיצוניות ל־5V ול־GND.
- חברו את אות הבקרה של מנוע ה־Servo לפין הדיגיטלי 9.
- חברו את מתח ההזנה וה־GND של מנוע ה־Servo.
- כתבו את התוכנית המצורפת בסביבת Arduino.
- הפעילו את הסימולציה וסובבו את הפוטנציומטר.
- בדקו כיצד שינוי ערך הפוטנציומטר משפיע על זווית מנוע ה־Servo.
הוספת ספרייה בסימולטור Wokwi
-
היכנס לאתר Wokwi.
-
פתח פרויקט Arduino Uno.
-
בחלונית הקוד, לחץ על Library Manager.
-
חפש את הספרייה הרצויה, לדוגמה
Servo. -
לחץ על סימן + להוספת הספרייה לפרויקט.
-
בקובץ
sketch.inoהוסף:

חבל ב
3. משימות נוספות
- שנו את התוכנית כך שמנוע ה־Servo יסתובב רק בין 30° ל־150°.
- הוסיפו הדפסה ל־Serial Monitor של ערך הפוטנציומטר ושל זווית המנוע.
- שנו את זמן ההשהיה מ־15ms ל־100ms ובדקו כיצד הדבר משפיע על תגובת המנוע.
- שנו את התוכנית כך שסיבוב הפוטנציומטר בכיוון אחד יגרום למנוע להסתובב בכיוון ההפוך.
5. שאלות לסיכום
- מה תפקיד הפונקציה
analogRead()? - מדוע הערך האנלוגי ב־Arduino Uno נע בין 0 ל־1023?
- מה תפקיד הפונקציה
map()? - מה תפקיד הפונקציה
myservo.write()? - מה ההבדל בין קריאת אות אנלוגי לשליטה במנוע Servo?
תוצאה נדרשת: מנוע ה־Servo ישנה את זווית הסיבוב שלו בהתאם למיקום הפוטנציומטר, בטווח של 0° עד 180°.