https://raymandshop.ir/wp-content/uploads/2026/05/hmi.py
https://raymandshop.ir/wp-content/uploads/2026/05/checkweigher_v14.ziphttps://raymandshop.ir/wp-content/uploads/2026/05/checkweigher_v14.zip
فکر میکنید هنوز هم برای داشتن یک مانیتورینگ صنعتی دقیق باید دهها میلیون تومان هزینه خرید HMIهای برندهای معروف و ماژولهای PLC گرانقیمت کنید؟ تا همین چند وقت پیش، من هم در پروژههای صنعتی با محدودیتهای عجیب مانیتورهای سنتی دست و پنجه نرم میکردم؛ اما نتایج تستهای اخیر من روی بردهای لینوکسی نشان میدهد که معادلات کاملاً تغییر کرده است.
در پروژههای اخیرم برای توسعه سیستمهای حساس (مانند رابط کاربری دستگاههای توزین با تم تاریک صنعتی)، متوجه شدم که ترکیب Raspberry Pi 4 با قدرت گرافیکی PyQt6، نهتنها هزینههای سختافزاری اتوماسیون را تا ۸۰ درصد کاهش میدهد، بلکه انعطافپذیری فوقالعادهای برای رسم نمودارهای زنده (Live Charting)، کیپدهای مجازی و دیتابیسهای لوکال در اختیار مهندسین قرار میدهد. در این مقاله، فازهای اجرایی یک سیستم دادهبرداری (DAQ) صنعتی پایدار را زیر ذرهبین میبریم.
بله، اما فقط به شرط اجرای ایزولاسیون گالوانیک. بردهای رزبری پای به خودی خود برای محیطهای دارای نویز الکترومغناطیسی (EMI) یا موتورهای سهفاز طراحی نشدهاند. اگر سنسورها را مستقیماً به پایههای GPIO متصل کنید، اولین استارت یک الکتروموتور باعث کرش کردن کل سیستم میشود.
برای تبدیل این برد به یک غول صنعتی، در فاز سختافزار از استراتژیهای زیر استفاده میکنیم:
وقتی صحبت از مانیتورینگ ۲۴ ساعته و بدون قطعی میشود، رابطهای کاربری تحت وب گاهی به دلیل نشتی حافظه (Memory Leak) مرورگرها دچار لگ میشوند. راه حل قطعی، استفاده از اپلیکیشنهای Native دسکتاپ است.
در پروژههای تخصصی توسعه نرمافزاری و خدمات تحت وب ما، معماری PyQt6 به دلایل زیر انتخاب اول است:
pyqtgraph، میتوانیم دادههای سنسورها (مثلاً لودسلهای توزین یا سنسورهای فشار) را در لحظه با استایل تاریک (Dark Mode) صنعتی رسم کنیم.
یک HMI مدرن فقط نمایشگر نیست، بلکه دیتالاگر نیز هست. در سیستم اجرا شده، موتور پردازش دادهها (Data Engine) وظیفه دارد مقادیر را هر ۱۰۰ میلیثانیه فیلتر کند (با استفاده از فیلترهای کالمن یا میانگین متحرک برای حذف نویز سنسور) و در دیتابیسهای سبکی مثل SQLite ثبت کند.
این اطلاعات به سرپرست خط تولید اجازه میدهد تا با یک فلش مموری ساده یا از طریق شبکه، فایلهای خروجی CSV شامل گزارش شیفتها، خطاها و زمانهای توقف ماشینآلات را دریافت کند.
| ویژگی | پنل HMI سنتی (Delta/Siemens) | سیستم سفارشی رزبری پای + PyQt6 |
|---|---|---|
| هزینه پیادهسازی | بسیار بالا (بسته به ابعاد تا دهها میلیون) | بسیار اقتصادی (قیمت برد و مانیتور) |
| انعطاف در UI/UX | محدود به المانهای نرمافزار شرکتی | نامحدود (پشتیبانی کامل از CSS، تم تاریک و انیمیشن) |
| اتصال به دیتابیس و شبکه | نیاز به ماژولهای افزایشی گرانقیمت | پشتیبانی Native از SQL, API, WiFi, LAN |
| تعمیرپذیری سختافزار | انحصاری و نیازمند ارسال به نمایندگی | در دسترس بودن قطعات در بازار (خدمات تعمیرات سختافزار) |
دیگر نیازی به پرداخت هزینههای گزاف به شرکتهای واسط یا پلتفرمهای فریلنسری نیست. اگر برای دستگاه صنعتی، خط تولید یا سیستم کنترل وزن خود به یک HMI لمسی سفارشی و پرسرعت نیاز دارید، من صفر تا صد سختافزار، شیلد نویزگیر و برنامهنویسی پایتون را برای شما با ضمانت اجرایی پیادهسازی میکنم.
مشاوره مستقیم در واتساپ (09131516913) 🚀حساب کاربری ندارید؟
ایجاد یک حساب کاربری
تراشههای FTDI وقتی به لینوکس (رزبریپای) وصل میشوند، نام پورت آنها در ۹۹٪ مواقع به جای ttyUSB به صورت ttyUSB0 یا با حروف کوچک و بزرگ خاصی ساخته میشود، یا اینکه سطح دسترسی (Permission) برای پایتون قفل است.
بیا با دو تا دستور فوقالعاده سریع کار را یکسره کنیم:
۱. نام دقیق پورت را پیدا کن
این دستور را دقیقاً با رعایت فاصلهها کپی کن و در ترمینال بزن:
Bash
ls -l /dev/ttyUSB*
(یا اگر خطایی داد، دستور ls /dev/ را بزن و ببین کلمه ttyUSB0 یا شبیه به آن وجود دارد یا خیر). نام پورت هر چیزی که بود (مثلاً /dev/ttyUSB0)، باید دقیقاً در خط آخر کد پایتون شما (بخش تنظیمات MainWindow) در متغیر MODBUS_PORT قرار بگیرد.
۲. باز کردن قفل دسترسی (مهمترین بخش)
در لینوکس، به صورت پیشفرض برنامههای پایتون اجازه دسترسی مستقیم به پورتهای سختافزاری سریال را ندارند؛ برای همین روی حالت Connecting قفل میکنند. با این دستور، قفل پورت را کاملاً باز کن:
Bash
sudo chmod 666 /dev/ttyUSB0
(نکته: اگر در گام اول متوجه شدی شماره پورت چیز دیگری است، مثلاً ttyUSB1، در این دستور هم همان را بنویس).
🛠️ کار نهایی همین الان:
دستور قفلگشایی (sudo chmod 666 /dev/ttyUSB0) را بزن.
مطمئن شو در کد پایتون MODBUS_PORT = “/dev/ttyUSB0” تنظیم شده باشد.
برنامه را دوباره اجرا کن.
ls -l /dev/ttyUSB*
crw-rw—-+ 1 root plugdev 188, 0 May 19 10:34 /dev/ttyUSB0
pi@raspberrypi:~/Desktop/1/3 $
این یعنی پورت دقیقاً /dev/ttyUSB0 است و رزبریپای آن را بدون هیچ مشکلی در مسیر قرار داده است. تاریخ و ساعت سیستم هم کاملاً بهروز است.
تنها یک مانع کوچک وجود دارد: علامت + در انتهای دسترسیها (crw-rw—-+) نشان میدهد که یک لیست دسترسی امنیتی (ACL) روی این پورت فعال است که ممکن است اجازه ندهد اسکریپت پایتون بدون دسترسی مدیر (Root) پورت را باز کند. برای همین روی حالت Connecting قفل میکند.
بیا با این ۲ ترفند نهایی و قطعی، قفل ارتباط را بشکنیم:
۱. باز کردن قفل دسترسی پورت (تیر خلاص لینوکس)
این دستور را در ترمینال کپی کن و اینتر بزن تا دسترسی پورت برای پایتون کاملاً آزاد شود:
Bash
sudo chmod 777 /dev/ttyUSB0
۲. اجرای برنامه با دسترسی مدیر (Sudo)
به جای اینکه برنامه را به صورت معمولی اجرا کنی، این بار ترمینال را در پوشه پروژه باز کن و پایتون را با دستور sudo صدا بزن تا هیچ دیوار امنیتی جلوی ارتباط مدباس را نگیرد:
Bash
sudo python3 checkweigher_v13.py