דלג לתוכן הראשי
🎓 תלמיד רשום? פורטל התלמידים | 🚀 גולש חדש? הצטרף חינם

📡 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
דיאגרמת חיווט בסיסית

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

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

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

// Arduino - DHT22 example
#include <DHT.h>
#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 עם אישורים ותיעוד גישה.

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

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

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

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

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

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

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

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

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

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

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

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

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