41 KiB
راهنمای عیبیابی
این راهنما به شما کمک میکند تا مشکلات رایج هنگام کار با برنامه درسی اینترنت اشیاء برای مبتدیان را حل کنید. مشکلات بر اساس دستهبندی برای پیمایش آسان سازماندهی شدهاند.
فهرست مطالب
- مشکلات نصب
- مشکلات سختافزاری
- مشکلات اتصال
- مشکلات حسگر و عملگر
- مشکلات محیط توسعه
- مشکلات عملکرد
- پیامهای خطای رایج
- دریافت کمک
مشکلات نصب
نصب پایتون
مشکل: نسخه پایتون خیلی قدیمی است
خطا: Python 3.6 or higher is required
راهحل:
- آخرین نسخه پایتون ۳ را از python.org دانلود کنید
- هنگام نصب روی ویندوز، گزینه "Add Python to PATH" را انتخاب کنید
- نصب را تأیید کنید:
python3 --version
مشکل: نسخههای مختلف پایتون موجب تداخل شدهاند
علائم: نسخه اشتباه پایتون اجرا میشود، بستهها در محل اشتباه نصب میشوند
راهحل:
- ویندوز: به جای
pythonازpy -3استفاده کنید تا به طور صریح پایتون ۳ را اجرا کنید - مکاواس/لینوکس: به جای
pythonازpython3استفاده کنید - همیشه برای پروژهها محیط مجازی ایجاد و استفاده کنید
مشکل: دستور pip پیدا نمیشود
خطا: 'pip' is not recognized as an internal or external command
راهحل:
- به جای
pipازpip3استفاده کنید - یا از
python -m pipیاpython3 -m pipاستفاده کنید - مطمئن شوید پایتون به PATH اضافه شده است (پایتون را مجدداً نصب کرده و گزینه را تیک بزنید)
VS Code و افزونهها
مشکل: افزونه Pylance کار نمیکند
علائم: بدون IntelliSense پایتون، کاملکردن کد یا بررسی نوع
راهحل:
- پنل فرمان VS Code را باز کنید (
Ctrl+Shift+PیاCmd+Shift+P) - فرمان "Python: Select Interpreter" را اجرا کنید
- مفسر پایتون صحیح را انتخاب کنید (محیط مجازی در صورت استفاده)
- پنجره VS Code را بازنشانی کنید
مشکل: VS Code محیط مجازی را نمیشناسد
علائم: مفسر پایتون اشتباه انتخاب شده
راهحل:
- اطمینان حاصل کنید که محیط مجازی در ترمینال فعال شده است
- پنل فرمان را باز کرده و "Python: Select Interpreter" را اجرا کنید
- مفسر از پوشه
.venvرا انتخاب کنید - نوار وضعیت (پایین سمت چپ) نسخه درست پایتون را نشان میدهد
PlatformIO (Wio Terminal)
مشکل: نصب PlatformIO با خطا مواجه میشود
خطا: خطاهای مختلف هنگام نصب PlatformIO
راهحل:
- اطمینان حاصل کنید VS Code بهروز است
- اول افزونه C/C++ را نصب کنید
- پس از نصب PlatformIO، VS Code را ریاستارت کنید
- اتصال اینترنت خود را بررسی کنید (PlatformIO فایلهای بزرگی دانلود میکند)
مشکل: برد توسط PlatformIO شناسایی نمیشود
علائم: امکان آپلود کد به Wio Terminal نیست
راهحل:
- از کابل USB دیگری استفاده کنید (برخی کابلها فقط شارژ هستند)
- Device Manager (ویندوز) یا فرمان
ls /dev/tty*(مکاواس/لینوکس) را بررسی کنید - درایورهای USB را نصب یا بهروزرسانی کنید
- از پورت USB دیگری استفاده کنید
- کلید روشن/خاموش Wio Terminal را دو بار سریع بلغزانید تا وارد حالت بوتلودر شود
مشکل: خطاهای کامپایل در PlatformIO
خطا: fatal error: Arduino.h: No such file or directory
راهحل:
- پوشه
.pioدر پروژه خود را حذف کنید - فرمان "PlatformIO: Rebuild" را از پنل فرمان اجرا کنید
- اطمینان حاصل کنید
platformio.iniپیکربندی برد صحیحی دارد:[env:seeed_wio_terminal] platform = atmelsam board = seeed_wio_terminal framework = arduino
کتابخانههای Grove
مشکل: ایمپورت کتابخانه Grove در رسپبری پای خطا میدهد
خطا: ModuleNotFoundError: No module named 'grove'
راهحل:
- کتابخانههای Grove را مجدداً نصب کنید:
cd ~ git clone https://github.com/Seeed-Studio/grove.py cd grove.py sudo pip3 install . - اگر از محیط مجازی استفاده میکنید، ممکن است لازم باشد کتابخانهها را به صورت سراسری نصب یا کپی کنید
- اطمینان حاصل کنید I2C فعال است:
sudo raspi-config nonint do_i2c 0
مشکل: حسگر Grove شناسایی نمیشود
خطا: IOError: [Errno 121] Remote I/O error
راهحل:
- اتصالات فیزیکی را بررسی کنید (اطمینان حاصل کنید کابل Grove کامل وارد شده است)
- اطمینان حاصل کنید حسگر به پورت صحیح متصل شده (آنالوگ، دیجیتال، I2C، UART)
- فرمان
i2cdetect -y 1را اجرا کنید تا دستگاه روی باس I2C دیده شود - کابل Grove دیگری را امتحان کنید
- اطمینان حاصل کنید Grove Base Hat به خوبی روی پینهای GPIO رسپبری پای قرار گرفته است
مشکلات سختافزاری
رسپبری پای
مشکل: رسپبری پای بوت نمیشود
علائم: نمایشگر روشن نمیشود، هیچ فعالیت LED یا صفحه رنگین کمان
راهحل:
- بررسی منبع تغذیه: از منبع تغذیه رسمی ۵V 3A USB-C برای Pi 4 استفاده کنید
- مشکلات کارت SD:
- کارت SD را قالببندی کرده و سیستمعامل رسپبری پای را دوباره نصب کنید
- کارت SD دیگری را امتحان کنید (از برندهای پیشنهادی استفاده کنید)
- کارت SD به درستی وارد شده باشد
- بررسی اتصال HDMI: هر دو پورت HDMI روی Pi 4 را امتحان کنید، از پورتی استفاده کنید که به منبع تغذیه نزدیکتر است
مشکل: نمیتوان به رسپبری پای SSH کرد
علائم: اتصال رد شده یا تایماوت
راهحل:
- SSH را فعال کنید:
- هنگام فلش کردن کارت SD با Raspberry Pi Imager، SSH را در گزینههای پیشرفته فعال کنید
- یا فایل خالی به نام
ssh(بدون پسوند) در بخش بوت بسازید
- آدرس IP رزبری پای را بیابید:
- دستگاههای متصل به روتر را بررسی کنید
- از
ping raspberrypi.local(در صورت فعال بودن mDNS) استفاده کنید - از ابزارهای اسکن شبکه مانند
nmapیا Angry IP Scanner استفاده کنید
- شبکه را بررسی کنید:
- اطمینان حاصل کنید پای روی همان شبکه رایانه شماست
- به جای WiFi از کابل اترنت استفاده کنید
- نام کاربری/رمز عبور را بررسی کنید (پیشفرض: نام کاربری
pi، رمز عبورraspberry)
مشکل: Grove Base Hat شناسایی نمیشود
علائم: حسگرها کار نمیکنند، خطاهای I2C
راهحل:
- اطمینان حاصل کنید Base Hat به درستی روی همه پینهای GPIO نشسته است
- پینهای خمیده روی پای یا Base Hat را بررسی کنید
- رابط I2C را فعال کنید:
sudo raspi-config nonint do_i2c 0 sudo reboot - بررسی کنید I2C کار میکند:
i2cdetect -y 1
مشکل: رسپبری پای کند کار میکند
علائم: رابط کاربری کند، پاسخدهی آهسته
راهحل:
- سرعت کارت SD را بررسی کنید (از کلاس ۱۰ یا بهتر استفاده کنید، یا SSD با USB)
- فضای دیسک را آزاد کنید: با فرمان
df -hبررسی کنید و فایلهای غیر ضروری را حذف کنید - حافظه GPU را در
raspi-configکاهش دهید اگر دوربین/نمایشگر به شدت استفاده نمیشود - برنامههای غیرضروری را ببندید
- اگر از Pi 3 یا قدیمیتر استفاده میکنید، ارتقا به Pi 4 با رم بیشتر را در نظر بگیرید
Wio Terminal
مشکل: صفحه Wio Terminal خالی میماند
علائم: پس از آپلود کد، نمایشگر هیچ خروجی ندارد
راهحل:
- بررسی کنید کد نمایشگر را مقداردهی اولیه میکند (کتابخانه TFT_eSPI)
- فرمور Wio Terminal را از ویکی Seeed بهروزرسانی کنید
- کد مقداردهی اولیه نمایشگر را اضافه کنید:
#include <TFT_eSPI.h> TFT_eSPI tft; tft.begin(); tft.fillScreen(TFT_BLACK); - نمونه اسکیچ از PlatformIO آپلود کنید تا سختافزار تست شود
مشکل: WiFi در Wio Terminal کار نمیکند
علائم: نمیتواند به WiFi متصل شود، خطاهای شبکه
راهحل:
- آپدیت فرمور WiFi: راهنمای بهروزرسانی فرمور WiFi Wio Terminal را دنبال کنید
- بررسی اعتبارنامه WiFi: اطمینان حاصل کنید SSID و رمز عبور صحیح هستند
- باند WiFi: Wio Terminal فقط از WiFi 2.4GHz پشتیبانی میکند (5GHz نه)
- قدرت سیگنال: به روتر نزدیکتر شوید
- تنظیمات روتر: برخی شبکههای Enterprise/WPA-Enterprise ممکن است کار نکنند
مشکل: Wio Terminal توسط رایانه شناخته نمیشود
علائم: دستگاه USB شناسایی نمیشود
راهحل:
- کابل USB متفاوت امتحان کنید: از کابل داده استفاده کنید، کابل فقط شارژ را نخرید
- وارد حالت بوتلودر شوید: کلید پاور را دو بار سریع به پایین بلغزانید
- LED آبی باید پالس کند، دستگاه به عنوان "Arduino" در Device Manager ظاهر میشود
- نصب درایورها (ویندوز):
- درایور USB Seeed را از اینجا دانلود و نصب کنید
- استفاده از پورت USB دیگر: از هاب USB استفاده نکنید، اتصال مستقیم داشته باشید
- درایورهای USB سیستم را بهروزرسانی کنید
مشکل: حسگرها در Wio Terminal کار نمیکنند
علائم: حسگرهای Grove دادهای نمیخوانند
راهحل:
- اتصالات کابل Grove را بررسی کنید
- اطمینان حاصل کنید از پورت Grove صحیح (چپ یا راست) استفاده میکنید
- کتابخانههای صحیح حسگر را وارد کنید
- نیازمندیهای تغذیه حسگر را بررسی کنید
- حسگر را با کد نمونه از کتابخانه آزمایش کنید
دستگاه مجازی (CounterFit)
مشکل: اپلیکیشن CounterFit اجرا نمیشود
خطا: خطاهای مختلف پایتون هنگام اجرای CounterFit
راهحل:
- اطمینان حاصل کنید محیط مجازی فعال است
- CounterFit را نصب یا مجدداً نصب کنید:
pip install CounterFit - بررسی کنید پورت ۵۰۰۰ در استفاده نباشد:
- ویندوز:
netstat -ano | findstr :5000 - مکاواس/لینوکس:
lsof -i :5000
- ویندوز:
- فرایندی که از پورت ۵۰۰۰ استفاده میکند را متوقف کنید یا پورت متفاوتی انتخاب کنید:
counterfit --port 5001
مشکل: نمیتوان از کد به CounterFit متصل شد
خطا: اتصال رد شده یا تایماوت
راهحل:
- اطمینان حاصل کنید CounterFit در حال اجرا است: مرورگر را روی
http://127.0.0.1:5000باز کنید - آدرس اتصال در کد مطابق آدرس CounterFit باشد
- اطمینان حاصل کنید فایروال اتصال را مسدود نکرده است
- برنامه CounterFit و کد خود را ریاستارت کنید
مشکل: حسگرها در CounterFit ظاهر نمیشوند
علائم: حسگرهای ایجاد شده در رابط کاربری CounterFit نشان داده نمیشوند
راهحل:
- حسگرها را قبل از اجرای کد در رابط کاربری CounterFit ایجاد کنید
- صفحه مرورگر را تازه کنید
- نوع حسگر با آنچه کد انتظار دارد مطابقت داشته باشد
- کش مرورگر را پاک کنید
مشکلات اتصال
اتصال WiFi
مشکل: دستگاه نمیتواند به WiFi متصل شود
علائم: زمان اتصال تمام میشود، احراز هویت ناموفق
راهحل:
- SSID و رمز عبور را بررسی کنید: اعتبارنامهها صحیح باشند
- باند WiFi: اکثر دستگاههای IoT فقط از 2.4GHz پشتیبانی میکنند (5GHz نه)
- تنظیمات روتر:
- اگر ایزولاسیون AP فعال است آن را غیرفعال کنید
- از امنیت WPA2-PSK استفاده کنید (از WPA3، WEP یا شبکه باز پرهیز کنید)
- اطمینان حاصل کنید DHCP فعال است
- شبکههای مخفی: اگر SSID مخفی است، ممکن است لازم باشد آن را به صراحت تنظیم کنید
- قدرت سیگنال: دستگاه را به روتر نزدیک کنید
- تداخل: سایر دستگاهها، مایکروویو یا دیوارها میتوانند مزاحمت ایجاد کنند
مشکل: اتصال WiFi مکرراً قطع میشود
علائم: اتصال ناپایدار
راهحل:
- پایداری روتر را بررسی و در صورت نیاز ریاستارت کنید
- فرمور دستگاه را بهروزرسانی کنید
- به جای DHCP از آیپی ثابت استفاده کنید
- فاصله را به روتر کاهش دهید یا تقویتکننده WiFi اضافه کنید
- برای تداخل از سایر دستگاهها بررسی کنید
- اطمینان حاصل کنید منبع تغذیه کافی است (خصوصاً برای رسپبری پای)
خدمات ابری
مشکل: نمیتوان به Azure IoT Hub متصل شد
خطا: احراز هویت ناموفق، اتصال رد شده
راهحل:
- اعتبارنامهها را بررسی کنید:
- رشته اتصال صحیح باشد
- رشته اتصال فاقد فاصله اضافی یا شکستهای خط باشد
- ثبت دستگاه را بررسی کنید: دستگاه باید در IoT Hub ثبت شده باشد
- فایروال/پراکسی: اطمینان حاصل کنید ترافیک خروجی MQTT (پورت ۸۸۸۳) یا HTTPS (پورت ۴۴۳) مجاز است
- منطقه IoT Hub: اطمینان حاصل کنید IoT Hub در حال اجرا است و منطقه متفاوتی که باعث تاخیر شود نیست
- محدودیت سهمیه: بررسی کنید محدودیتهای سطح رایگان رعایت شده باشد
- اتصال را تست کنید:
az iot hub device-identity show-connection-string --hub-name YourIoTHub --device-id YourDevice
مشکل: Azure Functions فعال نمیشود
علائم: پیامها ارسال شدهاند اما تابع اجرا نمیشود
راهحل:
- بررسی کنید اپلیکیشن Function در حال اجرا است (متوقف نشده)
- رشته اتصال در تنظیمات Function App صحیح است
- لاگهای تابع را در Azure Portal بررسی کنید
- اطمینان حاصل کنید نقطه پایانی سازگار با Event Hub درست پیکربندی شده
- بررسی کنید فرمت پیام مطابق انتظار تابع باشد
- طرح سرویس Function App را بررسی کنید (مصرفی یا اختصاصی)
MQTT
مشکل: اتصال MQTT برقرار نمیشود
خطا: ارتباط رد شد، تأیید هویت ناموفق بود
راهحل:
- آدرس بروکر: اطمینان حاصل کنید آدرس URL/IP بروکر صحیح است
- پورت: شماره پورت را بررسی کنید (1883 برای بدون رمزنگاری، 8883 برای TLS)
- تأیید هویت: نام کاربری/رمز عبور را در صورت نیاز بررسی کنید
- TLS/SSL: اطمینان حاصل کنید گواهیها معتبر و قابل اعتماد هستند
- فایروال: بررسی کنید پورت مسدود نشده باشد
- آزمایش با کلاینت MQTT: از MQTT Explorer یا mosquitto_pub/sub برای تست استفاده کنید
مشکل: پیامهای MQTT دریافت نمیشوند
نشانهها: پیامها منتشر میشوند اما توسط مشترکین دریافت نمیشوند
راهحل:
- نام موضوعها: اطمینان حاصل کنید موضوع مشترک دقیقاً با موضوع ناشر مطابقت دارد
- سطح QoS: به جای 0 از QoS 1 یا 2 استفاده کنید
- کاراکترهای جایگزین: اطمینان حاصل کنید کاراکترهای جایگزین موضوع به درستی استفاده شدهاند (
+برای یک سطح،#برای چند سطح) - پیامهای نگهداری شده: ناشر میتواند پرچم نگهداری را برای حفظ آخرین پیام تنظیم کند
- زمان اتصال: اطمینان حاصل کنید مشترک قبل از انتشار پیامها متصل شده است
مشکلات حسگر و عملگرها
حسگرهای Grove
مشکل: حسگر مقادیر نادرستی باز میگرداند
نشانهها: مقدار خوانده شده 0، -1 یا مقادیر بیمعنی است
راهحل:
- بررسی اتصالات: اطمینان حاصل کنید حسگر به درستی متصل است
- پورت صحیح: مطمئن شوید حسگر در نوع پورت صحیح قرار دارد:
- حسگرهای آنالوگ → پورتهای آنالوگ (A0, A2, A4)
- حسگرهای دیجیتال → پورتهای دیجیتال (D5, D16, D18، و غیره)
- حسگرهای I2C → پورتهای I2C
- کالیبراسیون: برخی حسگرها به کالیبراسیون نیاز دارند (رطوبت خاک، نور)
- قطع و وصل مجدد: حسگر را قطع و دوباره وصل کنید
- برگه مشخصات حسگر: مشخصات و نیازمندیهای حسگر را بررسی کنید
مشکل: حسگر رطوبت خاک خازنی همیشه رطوبت بالا میخواند
نشانهها: حسگر حتی در حالت خشک رطوبت بالا نشان میدهد
راهحل:
- نیاز به کالیبراسیون: حسگرهای خاک نیاز به کالیبراسیون دارند:
- خواندن مقدار در هوا (پایه خشک)
- خواندن مقدار در آب (پایه مرطوب)
- نگاشت خواندهها بین این مقادیر
- بررسی پوشش حسگر: حسگرهای رطوبت ممکن است اگر پوشش آسیب ببیند خراب شوند
- محل قرارگیری: اطمینان حاصل کنید حسگر به طور کامل در خاک قرار گرفته است
مشکل: خواندنهای حسگر دما/رطوبت نادرست است
نشانهها: DHT11/DHT22 دما یا رطوبت اشتباه نمایش میدهد
راهحل:
- محل قرارگیری حسگر: از تابش مستقیم آفتاب، منابع گرما یا باد مستقیم دور نگه دارید
- زمان گرم شدن: پس از روشن شدن حسگر، 2 ثانیه صبر کنید قبل از خواندن
- فاصله خواندن: حسگرهای DHT حداقل به 2 ثانیه فاصله بین خواندنها نیاز دارند
- بررسی تراکم: میتواند بر خواندن تأثیر بگذارد
- کیفیت حسگر: دقت DHT11 از DHT22 کمتر است
دوربین
مشکل: دوربین در رزبری پای شناسایی نمیشود
خطا: mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera'
راهحل:
- فعالسازی رابط دوربین:
به Interface Options → Camera → Enable برویدsudo raspi-config - بررسی کابل روبان: اطمینان حاصل کنید کابل دوربین به درستی وارد شده است
- سمت آبی روبان به سمت پورتهای USB روی Pi Zero باشد
- سمت آبی روبان به دور از پورتهای USB روی Pi 4 باشد
- بهروزرسانی فریمور:
sudo apt update sudo apt full-upgrade sudo reboot - تست دوربین:
raspistill -o test.jpg
مشکل: کیفیت تصاویر دوربین پایین است
نشانهها: تصاویر تار، تاریک یا کمرنگ هستند
راهحل:
- کانون: فیلم محافظ لنز را بردارید، در صورت امکان کانون را تنظیم کنید
- نورپردازی: اطمینان حاصل کنید نور کافی وجود دارد
- تنظیمات دوربین: در کد مقدار اکسپوژر، ISO، تعادل سفید را تنظیم کنید
- ثبات: دوربین را ثابت نگه دارید، در صورت نیاز از سهپایه استفاده کنید
- رزولوشن: رزولوشن بیش از حد دوربین استفاده نکنید
میکروفون و بلندگو
مشکل: ورودی/خروجی صدا ندارد
نشانهها: میکروفون ضبط نمیکند، بلندگو صدا پخش نمیکند
راهحل:
- بررسی اتصالات: اطمینان حاصل کنید دستگاههای صوتی به درستی متصل باشند
- آزمایش سختافزار:
- بلندگو:
speaker-test -t wav -c 2 - میکروفون:
arecord -lبرای فهرست،arecord test.wavبرای ضبط
- بلندگو:
- تنظیمات صدا: حجم صدا را بررسی و تنظیم کنید:
alsamixer - انتخاب دستگاه صوتی: دستگاه صوتی صحیح را در کد مشخص کنید
- مشکلات درایور: ALSA را بهروزرسانی کنید یا درایورهای صوتی را دوباره نصب کنید
مشکل: برد ReSpeaker کار نمیکند
نشانهها: دستگاه صوتی شناسایی نمیشود
راهحل:
- نصب درایورها:
git clone https://github.com/HinTak/seeed-voicecard cd seeed-voicecard sudo ./install.sh sudo reboot - بررسی نصب:
arecord -lباید ReSpeaker را فهرست کند - بهروزرسانی فریمور: بعضی نسخههای Pi OS نیاز به بهروزرسانی درایور دارند
- بررسی اتصال: اطمینان حاصل کنید برد به درستی به پایههای GPIO متصل است
مشکلات محیط توسعه
VS Code
مشکل: ترمینال به طور خودکار محیط مجازی را فعال نمیکند
نشانهها: ترمینال باز میشود ولی محیط مجازی فعال نیست
راهحل:
- تنظیم مفسر پایتون: نوار فرمان → "Python: Select Interpreter" → انتخاب محیط مجازی
- راهاندازی مجدد VS Code پس از انتخاب مفسر
- بررسی تنظیمات: در
settings.jsonاضافه کنید:"python.terminal.activateEnvironment": true
مشکل: کد روی دستگاه اجرا نمیشود
نشانهها: کد اجرا میشود اما هیچ کاری روی دستگاه انجام نمیشود
راهحل:
- اطمینان از ذخیره شدن کد (نشان نقطه روی تب فایل)
- بررسی مفسر پایتون در حال اجرا:
which pythonیاwhere python - برای Wio Terminal: اطمینان حاصل کنید کد از طریق PlatformIO آپلود شده است (روی دکمه آپلود کلیک کنید)
- برای Raspberry Pi: از طریق SSH به Pi متصل شده و کد را آنجا اجرا کنید
- بررسی پنجره خروجی برای خطاها
مشکل: IntelliSense توابع کتابخانه را نشان نمیدهد
نشانهها: تکمیل خودکار برای ماژولهای وارد شده وجود ندارد
راهحل:
- اطمینان حاصل کنید کتابخانه در محیط فعال نصب شده است
- پنجره VS Code را مجدداً بارگذاری کنید
- بررسی کنید مفسر پایتون صحیح است
- در صورت موجود بودن type stubs نصب کنید:
pip install types-<نام کتابخانه>
محیطهای مجازی پایتون
مشکل: نمیتوان محیط مجازی ساخت
خطا: The virtual environment was not created successfully
راهحل:
- نصب ماژول venv:
- اوبونتو/دبیان:
sudo apt install python3-venv - مک: معمولاً همراه با پایتون نصب است
- ویندوز: پایتون را با همه اجزاء دوباره نصب کنید
- اوبونتو/دبیان:
- بررسی نصب پایتون: مطمئن شوید پایتون به درستی نصب شده است
- استفاده از مسیر کامل: سعی کنید با
python3 -m venv .venvبا فراخوانی صریح python3
مشکل: بستهها در محل اشتباه نصب میشوند
نشانهها: خطای ایمپورت پس از نصب بسته
راهحل:
- اطمینان از فعال بودن محیط مجازی: پرامپت فرمان باید
(.venv)را نشان دهد - بررسی موقعیت pip:
which pipباید به.venv/bin/pipاشاره کند - از نو نصب در محیط مجازی: محیط مجازی را فعال کرده و سپس
pip install <package> - از sudo با pip در محیط مجازی استفاده نکنید
مشکل: محیط مجازی قابل حمل نیست
نشانهها: محیط مجازی پس از جابجایی یا روی کامپیوتر دیگر کار نمیکند
راهحل:
- محیطهای مجازی را جابهجا نکنید: حذف و در محل جدید دوباره بسازید
- استفاده از requirements.txt:
pip freeze > requirements.txt pip install -r requirements.txt - دوباره ساختن محیط مجازی:
python3 -m venv .venv source .venv/bin/activate # یا activate.bat در ویندوز pip install -r requirements.txt
وابستگیها
مشکل: نصب پکیجها شکست میخورد
خطا: خطاهای مختلف pip هنگام نصب
راهحل:
- بروزرسانی pip:
pip install --upgrade pip - نصب ابزارهای ساخت:
- اوبونتو/دبیان:
sudo apt install build-essential python3-dev - مک:
xcode-select --install - ویندوز: نصب Visual Studio Build Tools
- اوبونتو/دبیان:
- بررسی اتصال اینترنت
- آزمایش استفاده از شاخص بسته متفاوت:
pip install --index-url https://pypi.org/simple/ <package> - نصب نسخه مشخص:
pip install <package>==<version>
مشکل: تعارض وابستگیها
خطا: ERROR: pip's dependency resolver does not currently take into account all the packages that are installed
راهحل:
- استفاده از محیط مجازی تازه برای هر پروژه
- بروزرسانی بستهها:
pip install --upgrade <package> - بررسی پیشنیازها: با
pip checkتعارضها را پیدا کنید - نصب نسخههای سازگار: بازه نسخهها را در requirements.txt مشخص کنید
مشکلات عملکرد
مشکل: کد با سرعت پایین اجرا میشود
نشانهها: تاخیر، قطعی، پاسخ ندادن
راهحل:
- کاهش فرکانس خواندن حسگر: حسگرها را بیش از حد نخوانید
- بهینهسازی حلقهها: از busy-waiting دوری کنید و sleep() یا توقف کوتاه استفاده کنید
- مشکلات حافظه:
- برنامههای غیرضروری را ببندید
- فضای ذخیرهسازی را آزاد کنید
- با
topیاhtopروی Pi نظارت کنید
- سرعت کارت SD: از کارت SD یا SSD سریعتر برای Raspberry Pi استفاده کنید
- تاخیر شبکه: برای فراخوانیهای شبکه از عملیات ناهمزمان استفاده کنید
مشکل: خطاهای کمبود حافظه
خطا: MemoryError یا قفل شدن سیستم
راهحل:
- برای Raspberry Pi:
- برنامههای غیرضروری را ببندید
- فضای swap را افزایش دهید
- از نسخه سبکتر سیستم عامل استفاده کنید (نسخه Lite)
- رم را ارتقا دهید (Pi 4 دارای نسخههای 2/4/8 گیگابایت)
- برای Wio Terminal:
- اندازه بافرها را کاهش دهید
- از تصاویر کوچکتر استفاده کنید
- بهینهسازی استفاده از رشتهها
- نشت حافظه را بررسی کنید (حافظه آزاد نشده)
مشکل: از دست رفتن یا خرابی دادهها
نشانهها: پیامهای گم شده، فایلهای خراب
راهحل:
- مشکلات کارت SD:
- از کارتهای SD با کیفیت استفاده کنید (از کارت بیکیفیت یا تقلبی خودداری کنید)
- پشتیبانگیری منظم
- خاموش کردن صحیح (کابل برق را ناگهانی قطع نکنید)
- سرریز بافر: اندازه بافرها را در کد افزایش دهید
- قابلیت اطمینان شبکه: منطق تلاش مجدد و مدیریت خطا را پیادهسازی کنید
- کیفیت سرویس: از MQTT QoS 1 یا 2 برای پیامهای مهم استفاده کنید
پیامهای خطای رایج
ModuleNotFoundError: No module named 'X'
علت: بسته نصب نشده یا محیط مجازی فعال نشده
راهحل:
pip install X
ابتدا اطمینان حاصل کنید محیط مجازی فعال است.
Permission denied در لینوکس/مک
علت: نیاز به مجوزهای ارتقا یافته یا مشکل مجوز فایل
راهحل:
- برای عملیات سیستم: از
sudoاستفاده کنید - برای pip: با venv از sudo استفاده نکنید، ابتدا venv را فعال کنید
- برای پورت سریال: کاربر را به گروه dialout اضافه کنید:
sudo usermod -a -G dialout $USER، سپس خارج و دوباره وارد شوید
OSError: [Errno 98] Address already in use
علت: پورت توسط پردازش دیگری در حال استفاده است
راهحل:
- پردازش استفادهکننده از پورت را پیدا کنید:
lsof -i :<port>یاnetstat -ano | findstr :<port> - پردازش را متوقف کنید یا در کد پورت دیگری را استفاده کنید
SSL: CERTIFICATE_VERIFY_FAILED
علت: اعتبارسنجی گواهی SSL ناموفق است
راهحل:
- بروزرسانی گواهیها:
pip install --upgrade certifi - زمان سیستم را بررسی کنید:
date - فقط برای توسعه (نه تولید): در کد اعتبارسنجی را غیرفعال کنید
IndentationError: unexpected indent
علت: مشکلات تورفتگی پایتون (ترکیب تب و فاصله)
راهحل:
- از تورفتگی یکنواخت استفاده کنید (چهار فاصله استاندارد پایتون است)
- ادیتور را برای استفاده از فاصله به جای تب تنظیم کنید
- VS Code: مقدار
"editor.insertSpaces": trueو"editor.tabSize": 4را تنظیم کنید
UnicodeDecodeError یا UnicodeEncodeError
علت: مشکلات کدگذاری کاراکتر
راهحل:
# هنگام خواندن فایلها
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 و دستورالعملهای درس را مرور کنید
- راهنمای سختافزار: فایل hardware.md برای اطلاعات خاص سختافزار را بررسی کنید
- ویکی Seeed Studio: Seeed Studio Wiki برای قطعات Grove
2. جستجو برای مشکلات مشابه
- مسائل GitHub: جستجوی مسائل موجود
- Stack Overflow: جستجو برای پیامهای خطا
- انجمنهای دستگاه: انجمنهای Raspberry Pi یا Arduino را بررسی کنید
3. ایجاد Issue در GitHub
اگر نتوانستید راه حل پیدا کنید:
- به مسائل GitHub بروید
- روی "New Issue" کلیک کنید
- موارد زیر را ارائه دهید:
- توضیح واضح مشکل
- مراحل بازتولید
- پیامهای خطا (متن کامل)
- نسخه سختافزار/نرمافزار
- اقداماتی که انجام دادهاید
- اسکرینشات در صورت نیاز
4. به جامعه بپیوندید
- دیسکورد: Microsoft Foundry Discord
- Microsoft Learn: Microsoft Learn IoT
5. گزارش مشکل خوب ارائه دهید
یک گزارش مشکل خوب شامل:
- محیط: سیستم عامل، نسخه پایتون، سختافزار استفاده شده
- مراحل بازتولید: مراحل دقیق وقوع مشکل
- رفتار مورد انتظار: آنچه باید اتفاق بیفتد
- رفتار واقعی: آنچه واقعاً اتفاق میافتد
- پیامهای خطا: متن کامل خطا، نه اسکرینشات
- کد: مثال حداقلی کد که مشکل را بازتولید میکند
نکات پیشگیری
بهترین شیوههای کلی
- پشتیبانگیری منظم: نسخههای پشتیبان منظم از کارتهای SD / کدهای کاری
- مستندسازی تغییرات: یادداشت کردن آنچه کار میکند در کامنتها
- کنترل نسخه: استفاده از گیت برای دنبال کردن تغییرات کد
- آزمایش تدریجی: تست تغییرات کوچک قبل از ترکیب آنها
- خواندن پیامهای خطا: معمولاً دقیقاً میگویند چه مشکلی وجود دارد
- بهروزرسانی منظم: نگه داشتن نرمافزار / فرمویر بهروز
- استفاده از قطعات با کیفیت: اجتناب از کابلها / منابع تغذیه ارزان
- برق پایدار: استفاده از منبع تغذیه مناسب (مخصوصاً برای پای)
روند توسعه
- شروع ساده: از کد نمونهای که کار میکند شروع کنید
- یک تغییر در هر بار: آسانتر است که بفهمید چه چیزی خراب شده
- آزمایش مکرر: مشکلات را زودتر پیدا کنید
- مرتب نگه داشتن: فایلها و کد را منطقی سازماندهی کنید
- کد را کامنتگذاری کنید: نسخه آیندهی خودتان از این کار قدردانی خواهد کرد
این راهنمای عیبیابی توسط جامعه نگهداری میشود. اگر راهحلی برای مشکلی یافتید که در اینجا نیامده است، لطفاً در contributing مشارکت کنید تا به دیگران کمک نمایید!
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است دارای خطا یا عدم دقت باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه میشود ترجمه حرفهای انسانی انجام گیرد. ما مسئول هیچ گونه سوءتفاهم یا برداشت نادرستی که از استفاده این ترجمه ناشی شود نیستیم.