🎓 תלמיד רשום? חזור לפורטל לאחר הלימוד פורטל התלמידים

📡 IoT ואוטומציה למהנדסים

חיבור בקרים וחיישנים (Arduino / ESP32) ל-Python — איסוף נתונים בזמן אמת, תקשורת וניתוח.

👨‍🏫 LearningHub 📅 עודכן: ⏱️ זמן קריאה: 15 דקות 📊 קושי: בינוני

🎯 מטרות הלמידה

🏗️

הבנת ארכיטקטורה

להבין ארכיטקטורת מערכת IoT פשוטה עבור מהנדסי מכונות

🔌

חיבור חומרה

לחבר חיישן ל-Arduino/ESP32 ולשלוח נתונים ל-Python

📊

ויזואליזציה

לבנות גרף זמן אמת ולשמור נתונים ל-CSV לצורך ניתוח

📋 דרישות מוקדמות

💻 ידע טכני

  • ידע בסיסי ב-Python (משתנה, פונקציות)
  • הבנה בסיסית של מעגלים חשמליים

🛠️ חומרה נדרשת

  • Arduino Uno או ESP32
  • חיישן טמפרטורה (DHT22)
  • כבלי USB וחיבור

⚙️ תוכנה

  • Python 3.8+
  • Arduino IDE
  • חיבור USB ל-PC

🛠️ חומרה וחיווט

רשימת רכיבים לדוגמה:

חיווט בסיסי לדוגמה (DHT22): VCC → 5V, GND → GND, DATA → דיגיטל 2 (עם pull-up 10K).

דיאגרמת חיווט DHT22 ל-Arduino
דיאגרמת חיווט בסיסית — הורדה וקוד לדוגמה נמצאים בהמשך.
⬇️ הורדת Sketch (Arduino) ⬇️ הורדת סקריפט Python (plot & CSV) ⬇️ הורדת דיאגרמת חיווט (SVG) ⬇️ הורדת חבילת דוגמאות (ZIP)

הוראות מהירות: חברו את הארדואינו, פתחו את מנהל ההתקנים למציאת COM Port, העלו את ה-Sketch, והריצו את הסקריפט Python לדוגמה עם הפרמטר `--port COM3` (החליפו ב-COM שלכם).

💾 קוד בארדואינו (Sketch)

שלח ערכים בפורמט פשוט (לדוגמה: 24.5) דרך Serial:

// Arduino - DHT22 example (pseudo)
#include 
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float t = dht.readTemperature();
  if (!isnan(t)) {
    Serial.println(t);
  }
  delay(1000);
}

🐍 Python — קריאת Serial וגרף בזמן אמת

התקן חבילות:

pip install pyserial matplotlib
import serial
import matplotlib.pyplot as plt
import matplotlib.animation as animation

SERIAL_PORT = 'COM3'  # שנה לפי המערכת
BAUD_RATE = 9600

ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1)
plt.ion()
fig, ax = plt.subplots()
xs, ys = [], []

def update(frame):
    if ser.in_waiting:
        try:
            line = ser.readline().decode().strip()
            temp = float(line)
            ys.append(temp); xs.append(len(ys))
            if len(ys) > 100: ys.pop(0); xs.pop(0)
            ax.clear(); ax.plot(xs, ys); ax.set_ylim(0, 50)
        except:
            pass

ani = animation.FuncAnimation(fig, update, interval=500)
plt.show()

🔗 פרוטוקולים מתקדמים ואבטחה

אוּמלץ על שימוש ב-MQTT עבור משלוח נתונים לשרת/ענן. ודא אימות TLS וניהול הרשאות בעת פריסה.

אבטחה חשובה:
אל תשדרו רשתות לא מאובטחות או סיסמאות ב-Plaintext. השתמשו ב-TLS/MQTT עם אישורים ותיעוד גישה.

❓ שאלות נפוצות ופתרון תקלות

התקנה לא מצליחה/Port לא קיים

בדקו את מנהל ההתקנים (Device Manager) למצוא את COM Port וודאו שאין תהליך אחר שפתח את הפורט (למשל Arduino IDE).

הנתונים לא נעים/ייפוי שגיאות המרה

ודאו שהארדואינו שולח ערכים מספריים בלבד (ללא טקסט נוסף). השתמשו ב-try/except בצד ה-Python.

📋 תרגילים ומטלות

  1. חבר חיישן ושלח טמפרטורה לסקריפט ה-Python — הצג גרף בזמן אמת.
  2. הרחב: שלח את הנתונים ל-MQTT Broker וצרף Dashboard ב-Node-RED.
  3. אתגר: הכן מערכת שמתריעה כאשר חורגת טמפרטורה מסף.

📚 מדריכים קשורים

Python למקצוענים דיאגנוסטיקה ואבחון רכב Web Scraping למהנדסים

❓ שאלות נפוצות

איך אני יודע שהחיישן עובד?

פתח את Serial Monitor ב-Arduino IDE ובדוק שאתה רואה ערכים מספריים. אם אתה רואה "nan" או שגיאות, בדוק את החיווט.

מה עושים אם Python לא מוצא את הפורט?

בדוק במנהל ההתקנים (Device Manager) את מספר ה-COM Port הנכון. ודא שאין תוכנה אחרת שמשתמשת בפורט.

איך אפשר לשמור את הנתונים לקובץ?

השתמש בספריית pandas או csv של Python כדי לשמור את הנתונים. הוסף שורה כמו: data.to_csv('sensor_data.csv')

🚀 הצעדים הבאים

🌟 רוצה להעמיק? הצטרף לקורס המלא

למד IoT מהיסודות ועד לפרויקטים מתקדמים עם ליווי אישי

🚀 הצטרף חינם 📚 פורטל התלמידים