|
|
# מדריך פתרון בעיות
|
|
|
|
|
|
מדריך זה מסייע לך לפתור בעיות נפוצות בעבודה עם תכנית הלימודים IoT למתחילים. הבעיות מאורגנות לפי קטגוריות לנוחות הניווט.
|
|
|
|
|
|
## תוכן העניינים
|
|
|
|
|
|
- [בעיות התקנה](../..)
|
|
|
- [התקנת Python](../..)
|
|
|
- [VS Code והרחבות](../..)
|
|
|
- [PlatformIO (Wio Terminal)](../..)
|
|
|
- [ספריות Grove](../..)
|
|
|
- [בעיות חומרה](../..)
|
|
|
- [Raspberry Pi](../..)
|
|
|
- [Wio Terminal](../..)
|
|
|
- [מכשיר וירטואלי (CounterFit)](../..)
|
|
|
- [בעיות חיבור](../..)
|
|
|
- [חיבור WiFi](../..)
|
|
|
- [שירותי ענן](../..)
|
|
|
- [MQTT](../..)
|
|
|
- [בעיות חיישנים ומבצעים](../..)
|
|
|
- [חיישני Grove](../..)
|
|
|
- [מצלמה](../..)
|
|
|
- [מיקרופון ורמקול](../..)
|
|
|
- [בעיות סביבת פיתוח](../..)
|
|
|
- [VS Code](../..)
|
|
|
- [סביבות וירטואליות פייתון](../..)
|
|
|
- [תלויות](../..)
|
|
|
- [בעיות ביצועים](../..)
|
|
|
- [הודעות שגיאה נפוצות](../..)
|
|
|
- [קבלת עזרה](../..)
|
|
|
|
|
|
---
|
|
|
|
|
|
## בעיות התקנה
|
|
|
|
|
|
### התקנת Python
|
|
|
|
|
|
#### בעיה: גרסת Python ישנה מדי
|
|
|
**שגיאה:** `דרושה גרסת Python 3.6 ומעלה`
|
|
|
|
|
|
**פתרון:**
|
|
|
1. הורד את גרסת Python 3 העדכנית מ-[python.org](https://www.python.org/downloads/)
|
|
|
2. במהלך ההתקנה ב-Windows, סמן "Add Python to PATH"
|
|
|
3. אמת את ההתקנה:
|
|
|
```bash
|
|
|
python3 --version
|
|
|
```
|
|
|
|
|
|
#### בעיה: גרסאות Python מרובות גורמות לקונפליקטים
|
|
|
**תסמינים:** רצה גרסת Python שגויה, חבילות מותקנות במיקום שגוי
|
|
|
|
|
|
**פתרון:**
|
|
|
- **Windows:** השתמש ב-`py -3` במקום `python` כדי להפעיל במפורש Python 3
|
|
|
- **macOS/Linux:** השתמש ב-`python3` במקום `python`
|
|
|
- תמיד צור והשתמש בסביבות וירטואליות לפרויקטים
|
|
|
|
|
|
#### בעיה: פקודת pip לא נמצאה
|
|
|
**שגיאה:** `'pip' אינו מזוהה כפקודה פנימית או חיצונית`
|
|
|
|
|
|
**פתרון:**
|
|
|
1. נסה `pip3` במקום `pip`
|
|
|
2. או השתמש ב-`python -m pip` או `python3 -m pip`
|
|
|
3. ודא ש-Python הוספה ל-PATH (התקן מחדש את Python וסמן את האפשרות)
|
|
|
|
|
|
### VS Code והרחבות
|
|
|
|
|
|
#### בעיה: הרחבת Pylance לא עובדת
|
|
|
**תסמינים:** אין IntelliSense לפייתון, השלמת קוד או בדיקת טיפוסים
|
|
|
|
|
|
**פתרון:**
|
|
|
1. פתח את לוח הפקודות של VS Code (`Ctrl+Shift+P` או `Cmd+Shift+P`)
|
|
|
2. הפעל "Python: Select Interpreter"
|
|
|
3. בחר את מפרש ה-Python הנכון (סביבה וירטואלית אם משתמשים כזו)
|
|
|
4. טען מחדש את חלון VS Code
|
|
|
|
|
|
#### בעיה: VS Code לא מזהה את הסביבה הווירטואלית
|
|
|
**תסמינים:** נבחר מפרש Python שגוי
|
|
|
|
|
|
**פתרון:**
|
|
|
1. ודא שהפעלת את הסביבה הווירטואלית בטרמינל
|
|
|
2. פתח את לוח הפקודות והפעל "Python: Select Interpreter"
|
|
|
3. בחר את המפרש מתיקיית `.venv`
|
|
|
4. בדוק שורת סטטוס (בתחתית שמאל) מראה את גרסת Python הנכונה
|
|
|
|
|
|
### PlatformIO (Wio Terminal)
|
|
|
|
|
|
#### בעיה: התקנת PlatformIO נכשלה
|
|
|
**שגיאה:** שגיאות שונות במהלך התקנת PlatformIO
|
|
|
|
|
|
**פתרון:**
|
|
|
1. ודא ש-VS Code מעודכן
|
|
|
2. התקן קודם את תוסף C/C++
|
|
|
3. אתחל מחדש את VS Code לאחר התקנת PlatformIO
|
|
|
4. בדוק את חיבור האינטרנט שלך (PlatformIO מוריד קבצים גדולים)
|
|
|
|
|
|
#### בעיה: הלוח לא מזוהה על ידי PlatformIO
|
|
|
**תסמינים:** לא מצליח להעלות קוד ל-Wio Terminal
|
|
|
|
|
|
**פתרון:**
|
|
|
1. נסה כבל USB שונה (יש כבלים שמיועדים רק לטעינה)
|
|
|
2. בדוק ב-Device Manager (Windows) או `ls /dev/tty*` (macOS/Linux)
|
|
|
3. התקן או עדכן דרייברים ל-USB
|
|
|
4. נסה פורט USB שונה
|
|
|
5. החלק את מתג ההפעלה ב-Wio Terminal פעמיים במהירות כדי להיכנס למצב אתחול
|
|
|
|
|
|
#### בעיה: שגיאות קומפילציה ב-PlatformIO
|
|
|
**שגיאה:** `fatal error: Arduino.h: No such file or directory`
|
|
|
|
|
|
**פתרון:**
|
|
|
1. מחק את תיקיית `.pio` בפרויקט שלך
|
|
|
2. הפעל "PlatformIO: Rebuild" מלוח הפקודות
|
|
|
3. ודא שקובץ `platformio.ini` מכיל תצורת לוח נכונה:
|
|
|
```ini
|
|
|
[env:seeed_wio_terminal]
|
|
|
platform = atmelsam
|
|
|
board = seeed_wio_terminal
|
|
|
framework = arduino
|
|
|
```
|
|
|
|
|
|
### ספריות Grove
|
|
|
|
|
|
#### בעיה: ייבוא ספריית Grove נכשל ב-Raspberry Pi
|
|
|
**שגיאה:** `ModuleNotFoundError: No module named 'grove'`
|
|
|
|
|
|
**פתרון:**
|
|
|
1. התקן מחדש את ספריות Grove:
|
|
|
```bash
|
|
|
cd ~
|
|
|
git clone https://github.com/Seeed-Studio/grove.py
|
|
|
cd grove.py
|
|
|
sudo pip3 install .
|
|
|
```
|
|
|
2. אם משתמשים בסביבה וירטואלית, יתכן שתצטרך להתקין גלובלית או להעתיק ספריות
|
|
|
3. אמת כי I2C מופעל: `sudo raspi-config nonint do_i2c 0`
|
|
|
|
|
|
#### בעיה: חיישן Grove לא מזוהה
|
|
|
**שגיאה:** `IOError: [Errno 121] Remote I/O error`
|
|
|
|
|
|
**פתרון:**
|
|
|
1. בדוק חיבורים פיזיים (וודא שכבל Grove מוכנס במלואו)
|
|
|
2. אמת שהחיישן מחובר לכניסה הנכונה (אנלוגית, דיגיטלית, I2C, UART)
|
|
|
3. הפעל `i2cdetect -y 1` כדי לבדוק אם המכשיר מופיע על קו I2C
|
|
|
4. נסה כבל Grove שונה
|
|
|
5. ודא ש-Grove Base Hat מותקן כיאות על פיני GPIO של Raspberry Pi
|
|
|
|
|
|
---
|
|
|
|
|
|
## בעיות חומרה
|
|
|
|
|
|
### Raspberry Pi
|
|
|
|
|
|
#### בעיה: Raspberry Pi לא עולה
|
|
|
**תסמינים:** אין תצוגה, אין פעילות נוריות LED, או מסך קשת בענן
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **בדוק ספק כוח:** השתמש בספק USB-C רשמי 5V 3A ל-Pi 4
|
|
|
2. **בעיות בכרטיס SD:**
|
|
|
- פרמט את כרטיס ה-SD והתקן מחדש את מערכת ההפעלה Raspberry Pi OS
|
|
|
- נסה כרטיס SD שונה (השתמש במותגים מומלצים)
|
|
|
- ודא שכרטיס ה-SD מוכנס כראוי
|
|
|
3. **בדוק חיבור HDMI:** נסה את שני יציאות ה-HDMI ב-Pi 4, השתמש ביציאת HDMI הקרובה לספק הכוח
|
|
|
|
|
|
#### בעיה: לא מצליח להתחבר ל-Raspberry Pi ב-SSH
|
|
|
**תסמינים:** חיבור נדחה או השתבש
|
|
|
|
|
|
**פתרון:**
|
|
|
1. אפשר SSH:
|
|
|
- בעת כתיבת כרטיס SD בעזרת Raspberry Pi Imager, הגדר SSH באפשרויות מתקדמות
|
|
|
- או צור קובץ ריק בשם `ssh` (ללא סיומת) במחיצת האתחול
|
|
|
2. מצא את כתובת ה-IP של ה-Pi:
|
|
|
- בדוק את המכשירים המחוברים לנתב שלך
|
|
|
- השתמש ב-`ping raspberrypi.local` (אם mDNS פעיל)
|
|
|
- השתמש בכלי סריקת רשת כמו `nmap` או Angry IP Scanner
|
|
|
3. בדוק את הרשת:
|
|
|
- ודא שה-Pi ועם המחשב באותה רשת
|
|
|
- נסה חיבור Ethernet במקום WiFi
|
|
|
4. אמת שם משתמש/סיסמה (ברירת מחדל: שם משתמש `pi`, סיסמה `raspberry`)
|
|
|
|
|
|
#### בעיה: Grove Base Hat לא מזוהה
|
|
|
**תסמינים:** חיישנים לא עובדים, שגיאות I2C
|
|
|
|
|
|
**פתרון:**
|
|
|
1. ודא ש-Base Hat יושב היטב על כל פיני GPIO
|
|
|
2. בדוק פינים כפופים ב-Pi או ב-Base Hat
|
|
|
3. אפשר את ממשק I2C:
|
|
|
```bash
|
|
|
sudo raspi-config nonint do_i2c 0
|
|
|
sudo reboot
|
|
|
```
|
|
|
4. אמת ש-I2C עובד: `i2cdetect -y 1`
|
|
|
|
|
|
#### בעיה: Raspberry Pi רץ לאט
|
|
|
**תסמינים:** ממשק משתמש איטי, תגובה איטית
|
|
|
|
|
|
**פתרון:**
|
|
|
1. בדוק מהירות כרטיס ה-SD (השתמש ב-Class 10 או טוב יותר, או ב-SSD דרך USB)
|
|
|
2. שחרר מקום בדיסק: הפעל `df -h` למחיקה של קבצים מיותרים
|
|
|
3. הפחת זיכרון GPU ב-`raspi-config` אם לא משתמש במצלמה/מסך בכבדות
|
|
|
4. סגור יישומים מיותרים
|
|
|
5. שקול לשדרג ל-Pi 4 עם יותר זיכרון RAM אם משתמש ב-Pi 3 או ישן יותר
|
|
|
|
|
|
### Wio Terminal
|
|
|
|
|
|
#### בעיה: המסך של Wio Terminal נשאר ריק
|
|
|
**תסמינים:** אין פלט תצוגה לאחר העלאת קוד
|
|
|
|
|
|
**פתרון:**
|
|
|
1. בדוק אם הקוד מאתחל את התצוגה (ספריית TFT_eSPI)
|
|
|
2. עדכן את הקושחה של Wio Terminal מ-[Seeed Wiki](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/)
|
|
|
3. הוסף קוד אתחול תצוגה:
|
|
|
```cpp
|
|
|
#include <TFT_eSPI.h>
|
|
|
TFT_eSPI tft;
|
|
|
tft.begin();
|
|
|
tft.fillScreen(TFT_BLACK);
|
|
|
```
|
|
|
4. נסה להעלות סקיצה לדוגמה מ-PlatformIO כדי לבדוק חומרה
|
|
|
|
|
|
#### בעיה: WiFi לא עובד ב-Wio Terminal
|
|
|
**תסמינים:** לא מצליח להתחבר ל-WiFi, שגיאות רשת
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **עדכן את קושחת ה-WiFi:** עקוב אחרי [מדריך עדכון קושחת WiFi ל-Wio Terminal](https://wiki.seeedstudio.com/Wio-Terminal-Network-Overview/)
|
|
|
2. **בדוק אישורי WiFi:** ודא ש-SSID והסיסמה נכונים
|
|
|
3. **רצועת WiFi:** Wio Terminal תומך רק ב-2.4GHz (לא ב-5GHz)
|
|
|
4. **עוצמת אות:** התקרב לנתב
|
|
|
5. **הגדרות נתב:** חלק מרשתות Enterprise/WPA-Enterprise עלולות לא לעבוד
|
|
|
|
|
|
#### בעיה: Wio Terminal לא מזוהה במחשב
|
|
|
**תסמינים:** מכשיר USB לא מזוהה
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **נסה כבל USB שונה:** השתמש בכבל נתונים, לא בכבל לטעינה בלבד
|
|
|
2. **היכנס למצב אתחול:** החלק את מתג ההפעלה כלפי מטה פעמיים במהירות
|
|
|
- נורית LED כחולה תדליק, המכשיר מופיע כ-"Arduino" ב-Device Manager
|
|
|
3. **התקן דרייברים (Windows):**
|
|
|
- הורד והתקן את [דרייבר USB מ-Seeed](https://wiki.seeedstudio.com/Driver_for_Seeeduino/)
|
|
|
4. **נסה פורט USB שונה:** הימנע מהרכבים (USB hubs), השתמש בחיבור ישיר
|
|
|
5. **עדכן דרייברי USB במערכת**
|
|
|
|
|
|
#### בעיה: חיישנים לא עובדים ב-Wio Terminal
|
|
|
**תסמינים:** חיישני Grove לא קוראים נתונים
|
|
|
|
|
|
**פתרון:**
|
|
|
1. בדוק חיבורי כבל Grove
|
|
|
2. אמת שאתה משתמש בכניסה הנכונה ב-Grove (שמאל או ימין)
|
|
|
3. כלול את הספריות הנכונות לחיישן
|
|
|
4. בדוק דרישות הספק חשמלי של החיישן
|
|
|
5. בדוק את החיישן עם קוד דוגמה מהספריה
|
|
|
|
|
|
### מכשיר וירטואלי (CounterFit)
|
|
|
|
|
|
#### בעיה: אפליקציית CounterFit לא מתחילה
|
|
|
**שגיאה:** שגיאות Python שונות בעת הפעלת CounterFit
|
|
|
|
|
|
**פתרון:**
|
|
|
1. ודא שהסביבה הווירטואלית מופעלת
|
|
|
2. התקן / התקן מחדש את CounterFit:
|
|
|
```bash
|
|
|
pip install CounterFit
|
|
|
```
|
|
|
3. בדוק שפורט 5000 לא בשימוש כבר:
|
|
|
- Windows: `netstat -ano | findstr :5000`
|
|
|
- macOS/Linux: `lsof -i :5000`
|
|
|
4. לעצור את התהליך שמשתמש בפורט 5000 או השתמש בפורט שונה:
|
|
|
```bash
|
|
|
counterfit --port 5001
|
|
|
```
|
|
|
|
|
|
#### בעיה: לא מצליח להתחבר ל-CounterFit מתוך הקוד
|
|
|
**שגיאה:** חיבור נדחה או השתבש
|
|
|
|
|
|
**פתרון:**
|
|
|
1. אמת ש-CounterFit רץ: פתח דפדפן לכתובת `http://127.0.0.1:5000`
|
|
|
2. בדוק שכתובת החיבור בקוד תואמת לכתובת CounterFit
|
|
|
3. ודא שהחומת אש לא חוסמת את החיבור
|
|
|
4. נסה לאתחל את אפליקציית CounterFit ואת הקוד שלך שניהם
|
|
|
|
|
|
#### בעיה: חיישנים לא מופיעים ב-CounterFit
|
|
|
**תסמינים:** החיישנים שיצרת לא מופיעים בממשק המשתמש של CounterFit
|
|
|
|
|
|
**פתרון:**
|
|
|
1. צור את החיישנים בממשק CounterFit לפני הפעלת הקוד
|
|
|
2. רענן את דף הדפדפן
|
|
|
3. בדוק שסוג החיישן תואם למה שהקוד מצפה
|
|
|
4. נקה את זיכרון המטמון של הדפדפן
|
|
|
|
|
|
---
|
|
|
|
|
|
## בעיות חיבור
|
|
|
|
|
|
### חיבור WiFi
|
|
|
|
|
|
#### בעיה: המכשיר לא מצליח להתחבר ל-WiFi
|
|
|
**תסמינים:** זמן חיבור פג, אימות נכשל
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **בדוק SSID וסיסמה:** אמת שהפרטים נכונים
|
|
|
2. **רצועת WiFi:** רוב מכשירי ה-IoT תומכים רק ב-2.4GHz (לא 5GHz)
|
|
|
3. **הגדרות נתב:**
|
|
|
- בטל בידוד AP אם אפשרי
|
|
|
- השתמש באבטחת WPA2-PSK (הימנע מ-WPA3, WEP או רשתות פתוחות)
|
|
|
- ודא ש-DHCP מופעל
|
|
|
4. **רשתות מוסתרות:** אם SSID מוסתר, ייתכן שתצטרך להגדיר אותו במפורש
|
|
|
5. **עוצמת אות:** קרב את המכשיר לנתב
|
|
|
6. **הפרעות:** מכשירים אחרים, מיקרוגל או קירות עלולים להפריע
|
|
|
|
|
|
#### בעיה: חיבור WiFi נופל לעיתים קרובות
|
|
|
**תסמינים:** חיבור לא יציב
|
|
|
|
|
|
**פתרון:**
|
|
|
1. בדוק יציבות הנתב ושקול לבצע הפעלה מחדש
|
|
|
2. עדכן את הקושחה במכשיר
|
|
|
3. השתמש בכתובת IP סטטית במקום DHCP
|
|
|
4. קירב את המכשיר לנתב או הוסף מאריך WiFi
|
|
|
5. בדוק הפרעות ממכשירים אחרים
|
|
|
6. אמת שספק הכוח מספק דיור (במיוחד עבור Raspberry Pi)
|
|
|
|
|
|
### שירותי ענן
|
|
|
|
|
|
#### בעיה: לא מצליח להתחבר ל-Azure IoT Hub
|
|
|
**שגיאה:** אימות נכשל, חיבור נדחה
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **ודא אישורים:**
|
|
|
- בדוק ששרשרת החיבור נכונה
|
|
|
- ודא שאין רווחים או שבירות שורה מיותרות בשרשרת החיבור
|
|
|
2. **בדוק רישום המכשיר:** המכשיר חייב להיות רשום ב-IoT Hub
|
|
|
3. **חומת אש/פרוקסי:** ודא שפורטים MQTT (8883) או HTTPS (443) פתוחים
|
|
|
4. **אזור IoT Hub:** ודא שה-IoT Hub פעיל ואינו באזור אחר שגורם לעיכובים
|
|
|
5. **מגבלות מכסה:** בדוק אם עברו את גבולות התוכנית החינמית
|
|
|
6. **בדוק את החיבור:**
|
|
|
```bash
|
|
|
az iot hub device-identity show-connection-string --hub-name YourIoTHub --device-id YourDevice
|
|
|
```
|
|
|
|
|
|
#### בעיה: Azure Functions לא מופעלות
|
|
|
**תסמינים:** הודעות נשלחות אך הפונקציה לא מתבצעת
|
|
|
|
|
|
**פתרון:**
|
|
|
1. בדוק ש-Function App רץ (לא נעצר)
|
|
|
2. אמת שרשרת חיבור בהגדרות Function App
|
|
|
3. בדוק יומני פונקציות בפורטל Azure
|
|
|
4. ודא שנקודת קצה תאומה ל-Event Hub מוגדרת כראוי
|
|
|
5. אמת שפורמט ההודעה תואם לציפיות הפונקציה
|
|
|
6. בדוק את תכנית השירות של Function App (צריכה או ייעודית)
|
|
|
|
|
|
### MQTT
|
|
|
#### בעיה: כשל בחיבור MQTT
|
|
|
**שגיאה:** חיבור נדחה, אימות נכשל
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **כתובת הברוקר:** ודא ש-URL/IP של הברוקר נכון
|
|
|
2. **פורט:** בדוק את מספר הפורט (1883 ללא הצפנה, 8883 ל-TLS)
|
|
|
3. **אימות:** וודא שם משתמש/סיסמה אם נדרש
|
|
|
4. **TLS/SSL:** ודא שהתעודות תקפות ומאושרות
|
|
|
5. **חומת אש:** בדוק שהפורט לא חסום
|
|
|
6. **בדיקה עם לקוח MQTT:** השתמש ב-MQTT Explorer או mosquitto_pub/sub לבדיקה
|
|
|
|
|
|
#### בעיה: הודעות MQTT לא מתקבלות
|
|
|
**תסמינים:** הודעות מתפרסמות אך לא מתקבלות על ידי המנויים
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **שמות נושאים:** ודא שנושא המנוי תואם במדויק לנושא המפרסם
|
|
|
2. **רמת QoS:** נסה QoS 1 או 2 במקום 0
|
|
|
3. **תווים כלליים (Wildcards):** בדוק שימוש נכון בתווים כלליים (`+` לרמה אחת, `#` לרב-רמות)
|
|
|
4. **הודעות נשמרות:** המפרסם יכול להגדיר flag של שמירת ההודעה האחרונה
|
|
|
5. **תזמון חיבור:** ודא שהמנוי מתصل לפני שההודעות מתפרסמות
|
|
|
|
|
|
---
|
|
|
|
|
|
## בעיות בסנסורים ומבצעים
|
|
|
|
|
|
### Grove Sensors
|
|
|
|
|
|
#### בעיה: הסנסור מחזיר ערכים שגויים
|
|
|
**תסמינים:** קריאות 0, -1, או ערכים לא הגיוניים
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **בדוק חיבורים:** ודא שהסנסור מחובר כראוי
|
|
|
2. **פורט נכון:** ודא שהסנסור מחובר לסוג הפורט הנכון:
|
|
|
- חיישנים אנלוגיים → פורטים אנלוגיים (A0, A2, A4)
|
|
|
- חיישנים דיגיטליים → פורטים דיגיטליים (D5, D16, D18, וכו')
|
|
|
- חיישני I2C → פורטי I2C
|
|
|
3. **כיול:** חלק מהחיישנים דורשים כיול (לחות קרקע, אור)
|
|
|
4. **ניתוק והפעלה מחדש:** נתק וחבר מחדש את הסנסור
|
|
|
5. **גיליון נתונים של הסנסור:** בדוק מפרטים ודרישות
|
|
|
|
|
|
#### בעיה: סנסור לחות קרקע קבלטי תמיד קורא רטוב
|
|
|
**תסמינים:** קריאות לחות גבוהות גם כשהקרקע יבשה
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **צריך כיול:** סנסורי קרקע דורשים כיול:
|
|
|
- קרא ערך באוויר (קו בסיס יבש)
|
|
|
- קרא ערך במים (קו בסיס רטוב)
|
|
|
- התאם את הקריאות בין הערכים הללו
|
|
|
2. **בדוק ציפוי הסנסור:** סנסורים עלולים להתקלקל אם הציפוי פגום
|
|
|
3. **מיקום:** ודא שהסנסור מוכנס במלואו באדמה
|
|
|
|
|
|
#### בעיה: קריאות סנסור טמפרטורה/לחות שגויות
|
|
|
**תסמינים:** DHT11/DHT22 מציג טמפרטורה או לחות לא נכונים
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **מיקום הסנסור:** הימנע מאור שמש ישיר, מקורות חום, או זרימת אוויר
|
|
|
2. **זמן התחממות:** אפשר לסנסור 2 שניות אחרי הפעלתו לפני קריאה
|
|
|
3. **תדירות קריאה:** סנסורי DHT צריכים זמן בין קריאות (לפחות 2 שניות)
|
|
|
4. **בדוק עיבוי:** עלול להשפיע על הקריאות
|
|
|
5. **איכות הסנסור:** DHT11 פחות מדויק מ-DHT22
|
|
|
|
|
|
### מצלמה
|
|
|
|
|
|
#### בעיה: המצלמה לא מתגלת ברספברי פאי
|
|
|
**שגיאה:** `mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera'`
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **אפשר את ממשק המצלמה:**
|
|
|
```bash
|
|
|
sudo raspi-config
|
|
|
```
|
|
|
עבור ל-Interface Options → Camera → Enable
|
|
|
2. **בדוק כבל סרט:** ודא שכבל המצלמה מוכנס היטב
|
|
|
- הצד הכחול פונה ליציאות USB ב-Pi Zero
|
|
|
- הצד הכחול פונה הרחק מיציאות USB ב-Pi 4
|
|
|
3. **עדכן קושחה:**
|
|
|
```bash
|
|
|
sudo apt update
|
|
|
sudo apt full-upgrade
|
|
|
sudo reboot
|
|
|
```
|
|
|
4. **בדוק את המצלמה:**
|
|
|
```bash
|
|
|
raspistill -o test.jpg
|
|
|
```
|
|
|
|
|
|
#### בעיה: תמונות מצלמה באיכות ירודה
|
|
|
**תסמינים:** תמונות מטושטשות, חשוכות או דהויות
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **פוקוס:** הסר את סרט ההגנה מהעדשה, כוון פוקוס אם ניתן
|
|
|
2. **תאורה:** ודא תאורה מספקת
|
|
|
3. **הגדרות מצלמה:** כוון חשיפה, ISO, איזון לבן בקוד
|
|
|
4. **יציבות:** החזק את המצלמה יציבה, השתמש בחצובה אם צריך
|
|
|
5. **רזולוציה:** אל תעלה על הרזולוציה המרבית של המצלמה
|
|
|
|
|
|
### מיקרופון ורמקול
|
|
|
|
|
|
#### בעיה: אין קול נכנס/יוצא
|
|
|
**תסמינים:** המיקרופון לא מקליט, הרמקול לא מנגן
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **בדוק חיבורים:** ודא שהתקני הקול מחוברים כראוי
|
|
|
2. **בדיקת חומרה:**
|
|
|
- רמקול: `speaker-test -t wav -c 2`
|
|
|
- מיקרופון: `arecord -l` להצגה, `arecord test.wav` להקלטה
|
|
|
3. **הגדרות ווליום:** בדוק וכוון עוצמה:
|
|
|
```bash
|
|
|
alsamixer
|
|
|
```
|
|
|
4. **בחר התקן קול:** ציין את התקן הקול הנכון בקוד
|
|
|
5. **בעיות דרייבר:** עדכן ALSA או התקן מחדש דרייברים
|
|
|
|
|
|
#### בעיה: ReSpeaker hat לא עובד
|
|
|
**תסמינים:** התקן קול לא מתגלה
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **התקן דרייברים:**
|
|
|
```bash
|
|
|
git clone https://github.com/HinTak/seeed-voicecard
|
|
|
cd seeed-voicecard
|
|
|
sudo ./install.sh
|
|
|
sudo reboot
|
|
|
```
|
|
|
2. **בדוק התקנה:** `arecord -l` אמור להציג את ReSpeaker
|
|
|
3. **עדכן קושחה:** חלק מגרסאות Pi OS דורשות עדכון דרייברים
|
|
|
4. **בדוק חיבור:** ודא שה-Hat מחובר נכון לפיני ה-GPIO
|
|
|
|
|
|
---
|
|
|
|
|
|
## בעיות בסביבת הפיתוח
|
|
|
|
|
|
### VS Code
|
|
|
|
|
|
#### בעיה: טרמינל לא מפעיל אוטומטית סביבת וירטואלית
|
|
|
**תסמינים:** הטרמינל נפתח אבל הסביבה הווירטואלית לא מופעלת
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **בחר מפרש Python:** פלטת הפקודות → "Python: Select Interpreter" → בחר את ה-venv
|
|
|
2. **הפעל מחדש את VS Code** לאחר בחירת המפרש
|
|
|
3. **בדוק הגדרות:** בקובץ `settings.json`, הוסף:
|
|
|
```json
|
|
|
"python.terminal.activateEnvironment": true
|
|
|
```
|
|
|
|
|
|
#### בעיה: הקוד לא רץ על המכשיר
|
|
|
**תסמינים:** הקוד רץ אבל שום דבר לא קורה במכשיר
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **ודא שהקוד נשמר** (בדוק נקודה בכרטיסיית הקובץ)
|
|
|
2. **בדוק איזו גרסת Python רצויה:** `which python` או `where python`
|
|
|
3. **ל-Wio Terminal:** ודא שהקוד מועלה דרך PlatformIO (לחץ על כפתור העלאה)
|
|
|
4. **ל-Raspberry Pi:** התחבר ב-SSH ל-Pi והריץ את הקוד שם
|
|
|
5. **בדוק חלון פלט** לאיתור שגיאות
|
|
|
|
|
|
#### בעיה: IntelliSense לא מציג פונקציות ספרייה
|
|
|
**תסמינים:** אין השלמה אוטומטית למודולים מיובאים
|
|
|
|
|
|
**פתרון:**
|
|
|
1. ודא שהספרייה מותקנת בסביבה הנוכחית
|
|
|
2. טען מחדש את חלון ה-VS Code
|
|
|
3. בדוק שמפרש Python נכון
|
|
|
4. התקן קבצי type stubs אם זמינים: `pip install types-<library-name>`
|
|
|
|
|
|
### סביבות וירטואליות של Python
|
|
|
|
|
|
#### בעיה: לא מצליח ליצור סביבה וירטואלית
|
|
|
**שגיאה:** `The virtual environment was not created successfully`
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **התקן מודול venv:**
|
|
|
- אובונטו/דביאן: `sudo apt install python3-venv`
|
|
|
- macOS: אמור להיות כלול עם Python
|
|
|
- ווינדוס: התקן מחדש Python עם כל הרכיבים
|
|
|
2. **בדוק התקנת Python:** ודא ש-Python מותקן כראוי
|
|
|
3. **השתמש בנתיב מלא:** נסה `python3 -m venv .venv` עם קריאה מפורשת ל-python3
|
|
|
|
|
|
#### בעיה: חבילות מותקנות במקום הלא נכון
|
|
|
**תסמינים:** שגיאת ייבוא לאחר התקנת חבילה
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **ודא ש-venv מפעיל:** בשורת הפקודה צריך להופיע `(.venv)`
|
|
|
2. **בדוק מיקום pip:** `which pip` צריך להצביע ל-`.venv/bin/pip`
|
|
|
3. **התקן מחדש ב-venv:** הפעל את ה-venv ואז `pip install <package>`
|
|
|
4. **אל תשתמש ב-sudo עם pip** בסביבה וירטואלית
|
|
|
|
|
|
#### בעיה: הסביבה הווירטואלית לא ניידת
|
|
|
**תסמינים:** venv לא עובד אחרי העברה או במחשב אחר
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **אל תזיז venvs:** מחק ויצור מחדש במיקום חדש
|
|
|
2. **השתמש בקובץ requirements.txt:**
|
|
|
```bash
|
|
|
pip freeze > requirements.txt
|
|
|
pip install -r requirements.txt
|
|
|
```
|
|
|
3. **צור מחדש את ה-venv:**
|
|
|
```bash
|
|
|
python3 -m venv .venv
|
|
|
source .venv/bin/activate # או activate.bat בווינדוס
|
|
|
pip install -r requirements.txt
|
|
|
```
|
|
|
|
|
|
### תלותיות
|
|
|
|
|
|
#### בעיה: התקנת חבילה נכשלת
|
|
|
**שגיאה:** שגיאות pip שונות במהלך ההתקנה
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **עדכן pip:**
|
|
|
```bash
|
|
|
pip install --upgrade pip
|
|
|
```
|
|
|
2. **התקן כלים לבנייה:**
|
|
|
- אובונטו/דביאן: `sudo apt install build-essential python3-dev`
|
|
|
- macOS: `xcode-select --install`
|
|
|
- ווינדוס: התקן Visual Studio Build Tools
|
|
|
3. **בדוק חיבור אינטרנט**
|
|
|
4. **נסה אינדקס חבילות שונה:** `pip install --index-url https://pypi.org/simple/ <package>`
|
|
|
5. **התקן גרסה ספציפית:** `pip install <package>==<version>`
|
|
|
|
|
|
#### בעיה: סתירות תלותיות
|
|
|
**שגיאה:** `ERROR: pip's dependency resolver does not currently take into account all the packages that are installed`
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **השתמש בסביבה וירטואלית חדשה** לכל פרויקט
|
|
|
2. **עדכן חבילות:** `pip install --upgrade <package>`
|
|
|
3. **בדוק דרישות:** השתמש ב-`pip check` למציאת סתירות
|
|
|
4. **התקן גרסאות תואמות:** ציין טווחי גרסאות ב-requirements.txt
|
|
|
|
|
|
---
|
|
|
|
|
|
## בעיות ביצועים
|
|
|
|
|
|
### בעיה: הקוד רץ לאט
|
|
|
**תסמינים:** עיכובים, חוסר תגובה, timeout
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **הפחת תדירות קריאת חיישנים:** אל תקרא חיישנים בתדירות גבוהה מדי
|
|
|
2. **אופטימזציה של לולאות:** הימנע מ_busy-waiting_, השתמש ב-sleep() או השהיות
|
|
|
3. **בעיות זיכרון:**
|
|
|
- סגור תוכנות מיותרות
|
|
|
- פנה מקום אחסון
|
|
|
- פקח באמצעות `top` או `htop` על ה-Pi
|
|
|
4. **מהירות כרטיס SD:** השתמש בכרטיס מהיר יותר או ב-SSD ל-Raspberry Pi
|
|
|
5. **עיכובי רשת:** השתמש באסינכרוניות לקריאות רשת
|
|
|
|
|
|
### בעיה: שגיאות זיכרון מלא
|
|
|
**שגיאה:** `MemoryError` או הקפאות מערכת
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **ל-Raspberry Pi:**
|
|
|
- סגור תוכנות מיותרות
|
|
|
- הגדל שטח החלפה (swap)
|
|
|
- השתמש במערכת קלה (גרסת Lite)
|
|
|
- שדרג זיכרון RAM (ל-Pi 4 יש אפשרויות 2/4/8GB)
|
|
|
2. **ל-Wio Terminal:**
|
|
|
- הפחת גדלי מאגר (buffer)
|
|
|
- השתמש בתמונות קטנות יותר
|
|
|
- אופטמז שימוש במחרוזות
|
|
|
- בדוק דליפות זיכרון (זיכרון שלא שוחרר)
|
|
|
|
|
|
### בעיה: אבידות או כשל בנתונים
|
|
|
**תסמינים:** הודעות חסרות, קבצים מקולקלים
|
|
|
|
|
|
**פתרון:**
|
|
|
1. **בעיות בכרטיס SD:**
|
|
|
- השתמש בכרטיסי איכות (הימנע מכרטיסים זולים/לא מקוריים)
|
|
|
- גבה באופן שגרתי
|
|
|
- כבה את ההתקן בצורה נקייה (אל תנתק חשמל ישירות)
|
|
|
2. **הגדל גודל מאגר בזיכרון** בקוד
|
|
|
3. **אמינות רשת:** יישם לוגיקת ניסיון חוזר וטיפול בשגיאות
|
|
|
4. **איכות שירות:** השתמש ב-MQTT QoS 1 או 2 להודעות חשובות
|
|
|
|
|
|
---
|
|
|
|
|
|
## הודעות שגיאה נפוצות
|
|
|
|
|
|
### `ModuleNotFoundError: No module named 'X'`
|
|
|
**סיבה:** חבילה לא מותקנת או סביבה וירטואלית לא מופעלת
|
|
|
|
|
|
**פתרון:**
|
|
|
```bash
|
|
|
pip install X
|
|
|
```
|
|
|
ודא שהסביבה הווירטואלית מופעלת תחילה.
|
|
|
|
|
|
### `Permission denied` בלינוקס/macOS
|
|
|
**סיבה:** דרוש הרשאות מורמות או בעיית הרשאות קובץ
|
|
|
|
|
|
**פתרון:**
|
|
|
- עבור פעולות מערכת: השתמש ב-`sudo`
|
|
|
- עבור pip: אל תשתמש ב-sudo בסביבה ווירטואלית, הפעל את ה-venv קודם
|
|
|
- עבור פורט סיריאלי: הוסף משתמש לקבוצת dialout: `sudo usermod -a -G dialout $USER`, ואז התנתק והתחבר מחדש
|
|
|
|
|
|
### `OSError: [Errno 98] Address already in use`
|
|
|
**סיבה:** הפורט בשימוש על ידי תהליך אחר
|
|
|
|
|
|
**פתרון:**
|
|
|
1. מצא תהליך שמשתמש בפורט: `lsof -i :<port>` או `netstat -ano | findstr :<port>`
|
|
|
2. עצור את התהליך או השתמש בפורט אחר בקוד שלך
|
|
|
|
|
|
### `SSL: CERTIFICATE_VERIFY_FAILED`
|
|
|
**סיבה:** אימות תעודת SSL נכשל
|
|
|
|
|
|
**פתרון:**
|
|
|
1. עדכן תעודות: `pip install --upgrade certifi`
|
|
|
2. בדוק שהשעה במערכת נכונה: `date`
|
|
|
3. לפיתוח בלבד (לא פרודקשן): השבת אימות בקוד
|
|
|
|
|
|
### `IndentationError: unexpected indent`
|
|
|
**סיבה:** בעיות הזחה בפייתון (תערובת של טאבים ורווחים)
|
|
|
|
|
|
**פתרון:**
|
|
|
1. השתמש בהזחה אחידה (4 רווחים הוא הסטנדרט של פייתון)
|
|
|
2. הגדר את העורך להשתמש ברווחים במקום טאבים
|
|
|
3. ב-VS Code: הגדר `"editor.insertSpaces": true` ו-`"editor.tabSize": 4`
|
|
|
|
|
|
### `UnicodeDecodeError` או `UnicodeEncodeError`
|
|
|
**סיבה:** בעיות קידוד תווים
|
|
|
|
|
|
**פתרון:**
|
|
|
```python
|
|
|
# בעת קריאת קבצים
|
|
|
with open('file.txt', 'r', encoding='utf-8') as f:
|
|
|
content = f.read()
|
|
|
|
|
|
# בעת כתיבת קבצים
|
|
|
with open('file.txt', 'w', encoding='utf-8') as f:
|
|
|
f.write(content)
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## קבלת עזרה
|
|
|
|
|
|
אם ניסית את שלבי פתרון הבעיות הללו ועדיין יש בעיות:
|
|
|
|
|
|
### 1. בדוק משאבים קיימים
|
|
|
- **תיעוד:** עיין ב-[README](README.md) ובהוראות השיעור
|
|
|
- **מדריכי חומרה:** בדוק ב-[hardware.md](hardware.md) למידע ספציפי לחומרה
|
|
|
- **ויקי Seeed Studio:** [Seeed Studio Wiki](https://wiki.seeedstudio.com/) לרכיבי Grove
|
|
|
|
|
|
### 2. חפש בעיות דומות
|
|
|
- **בעיות GitHub:** חפש [בעיות קיימות](https://github.com/microsoft/IoT-For-Beginners/issues)
|
|
|
- **Stack Overflow:** חפש הודעות שגיאה
|
|
|
- **פורומים של המכשיר:** בדוק פורומים של Raspberry Pi או Arduino
|
|
|
|
|
|
### 3. צור Issue ב-GitHub
|
|
|
אם לא מצאת פתרון:
|
|
|
1. עבור אל [GitHub Issues](https://github.com/microsoft/IoT-For-Beginners/issues)
|
|
|
2. לחץ על "New Issue"
|
|
|
3. ספק:
|
|
|
- תיאור ברור של הבעיה
|
|
|
- צעדים לשחזור
|
|
|
- הודעות שגיאה (טקסט מלא)
|
|
|
- גרסאות חומרה/תוכנה
|
|
|
- מה שכבר ניסית
|
|
|
- צילומי מסך אם רלוונטי
|
|
|
|
|
|
### 4. הצטרף לקהילה
|
|
|
- **Discord:** [Microsoft Foundry Discord](https://discord.gg/nTYy5BXMWG)
|
|
|
- **Microsoft Learn:** [Microsoft Learn IoT](https://docs.microsoft.com/learn/browse/?products=azure-iot)
|
|
|
|
|
|
### 5. ספק דו"חות שגיאות טובים
|
|
|
דו"ח שגיאה טוב כולל:
|
|
|
- **סביבה:** מערכת הפעלה, גרסת פייתון, חומרה בשימוש
|
|
|
- **שלבים לשחזור:** שלבים מדויקים שגורמים לבעיה
|
|
|
- **התנהגות צפויה:** מה אמור לקרות
|
|
|
- **התנהגות בפועל:** מה באמת קורה
|
|
|
- **הודעות שגיאה:** טקסט מלא של השגיאה, לא צילומי מסך
|
|
|
- **קוד:** דוגמת קוד מינימלית שמייצרת את הבעיה
|
|
|
|
|
|
---
|
|
|
|
|
|
## טיפים למניעה
|
|
|
|
|
|
### שיטות עבודה מומלצות כלליות
|
|
|
1. **שמור גיבויים:** גיבויים קבועים של כרטיסי SD/קוד שעובד
|
|
|
2. **תעד שינויים:** ציין מה עובד בהערות
|
|
|
3. **בקרת גרסאות:** השתמש ב-git כדי לעקוב אחרי שינויים בקוד
|
|
|
4. **בדוק בהדרגה:** בדוק שינויים קטנים לפני שילובם
|
|
|
5. **קרא הודעות שגיאה:** הן לעיתים קרובות מראות בדיוק מה הבעיה
|
|
|
6. **עדכן באופן קבוע:** שמור על תוכנה/קושחה מעודכנת
|
|
|
7. **השתמש ברכיבים איכותיים:** הימנע מכבלים/ספקי כוח זולים
|
|
|
8. **ספק כוח יציב:** השתמש בספק כוח מתאים (במיוחד ל-Raspberry Pi)
|
|
|
|
|
|
### זרימת עבודה בפיתוח
|
|
|
1. **התחל בפשטות:** התחל עם קוד דוגמה שעובד
|
|
|
2. **שינוי אחד בכל פעם:** קל יותר למצוא מה נשבר
|
|
|
3. **בדוק תכופות:** גלה בעיות מוקדם
|
|
|
4. **שמור על סדר:** ארגן קבצים וקוד באופן לוגי
|
|
|
5. **הערות בקוד:** העתיד יעריך זאת
|
|
|
|
|
|
---
|
|
|
|
|
|
*מדריך פתרון הבעיות הזה מתוחזק על ידי הקהילה. אם מצאת פתרון לבעיה שלא מופיעה כאן, אנא שקול [לתרום](CONTRIBUTING.md) כדי לעזור לאחרים!*
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**כתב ויתור**:
|
|
|
מסמך זה תורגם באמצעות שירות התרגום המבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לזכור כי תרגומים ממוחשבים עלולים לכלול שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית נחשב למקור הסמכותי. למידע קריטי מומלץ להיעזר בתרגום מקצועי וידני. אנחנו אינם אחראים לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |