آموزش رزبری پای

جلسه 16: خواندن داده سریال UART و USB Raspberry Pi

تصویر شاخص خواندن حسگر دما و رطوبت

در جلسهٔ 16 دورهٔ آموزش رزبری پای به سراغ «خواندن داده سریال UART و USB» می‌رویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: تفاوت UART روی هدر با مبدل USB-Serial، نرخ انتقال و سطح TTL. این مسیر برای کسی طراحی شده که می‌خواهد با رزبری‌پای یک پروژه قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط چند فرمان را حفظ کند. هر بار مدل دقیق برد و ابزار خود را ثبت کنید؛ نمونهٔ Raspberry Pi 5 و مدل‌های دیگر ممکن است تفاوت سخت‌افزاری داشته باشند.

هدف یادگیری و پیش‌نیاز

عکس قطعه مرتبط با خواندن داده سریال UART و USB
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — Raspberry Pi Sense HAT – 51065957303.jpg. این تصویر نقشه اتصال نیست.

پس از این جلسه باید بتوانید تفاوت UART روی هدر با مبدل USB-Serial، نرخ انتقال و سطح TTL را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیش‌نیاز شما شناخت روش خاموش‌کردن امن سیستم، تشخیص سطح ۳٫۳ ولت GPIO و خواندن نقشه پایه‌های مدل خود است. اگر یکی از این موارد را هنوز انجام نداده‌اید، ابتدا جلسه‌های پیش‌نیاز را مرور کنید. نام مدل، نسخه سیستم‌عامل و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیب‌یابی بعدی بسیار کمک می‌کنند.

وسایل و آماده‌سازی

رزبری‌پای مدل سازگار، منبع تغذیه و رسانه بوت مناسب، کابل‌های مورد نیاز و مولتی‌متر و قطعه مرتبط با «خواندن داده سریال UART و USB» را آماده کنید. پیش از جابه‌جایی سیم GPIO، سیستم را خاموش و تغذیه را قطع کنید. شماره پایه فیزیکی و BCM و سطح ۳٫۳ ولت را با راهنمای رسمی همان مدل بررسی کنید. عکس‌های این مقاله برای شناخت ظاهری‌اند و نقشه اتصال نیستند.

اصل فنی به زبان ساده

تفاوت UART روی هدر با مبدل USB-Serial، نرخ انتقال و سطح TTL. رزبری‌پای یک رایانهٔ دارای سیستم‌عامل است؛ نتیجهٔ برنامه به تنظیم سیستم، مجوزها و سخت‌افزار وابسته است. اگر نسخه سیستم‌عامل و کتابخانه با مدل برد هماهنگ نباشد، رابط‌های سخت‌افزاری ممکن است درست کار نکنند. اگر یک رابط یا پایه برای چند کار انتخاب شود، باید تداخل‌ها را پیش از اتصال مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی راهنمای سازنده بخوانید و هیچ GPIO را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

عکس قطعه مرتبط با خواندن داده سریال UART و USB
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — Raspberry Pi LCD – 7″ Touchscreen 13733-04.jpg. این تصویر نقشه اتصال نیست.

اجرای آزمایش مرحله به مرحله

  1. سؤال آزمون را بنویسید: «یک پیام کوتاه از دستگاه سازگار دریافت و در ترمینال ثبت کنید».
  2. محیط نرم‌افزاری و در صورت نیاز قطعات را مطابق راهنمای همان مدل آماده کنید.
  3. اگر آزمایش سخت‌افزاری است، سطح ۳٫۳ ولت GPIO و سازگاری ماژول را پیش از اتصال بررسی کنید.
  4. دستور، برنامه پایتون یا تنظیم لازم را فقط برای همین مرحله اجرا کنید و یک شرط را تغییر دهید.
  5. نتیجه را در جدول «ورودی، انتظار، مشاهده، توضیح» ثبت کنید.

یک پیام کوتاه از دستگاه سازگار دریافت و در ترمینال ثبت کنید. بار اول از یک وضعیت ساده و بدون سرویس یا قطعات اضافی شروع کنید. بار دوم مقدار ورودی یا شرط آزمایش را تغییر دهید تا تفاوت نتیجه را ببینید. بار سوم همان آزمایش را پس از راه‌اندازی مجدد امن تکرار کنید؛ پایداری رفتار از یک مشاهده تصادفی ارزشمندتر است. هنگام تغییر تنظیمات برنامه، نام فایل و تاریخ آزمایش را ثبت کنید تا نسخه‌های مختلف با هم اشتباه نشوند.

چه نتیجه‌ای درست است؟

پیام بدون نویسه‌های خراب دیده می‌شود. انتظار خود را پیش از اجرای آزمایش بنویسید و بعد داده واقعی را کنار آن قرار دهید. اگر مشاهده و انتظار تفاوت دارند، ابتدا ورودی، نسخه سیستم‌عامل و گزارش خطا را بررسی کنید، سپس سراغ برنامه بروید. صرف اجرای بدون خطای یک دستور یا نمایش یک عدد نشانه صحت کامل سیستم نیست؛ برای هر ورودی دست‌کم دو حالت متفاوت را امتحان کنید و مقدارهای مرزی را نیز در نظر بگیرید.

عکس قطعه مرتبط با خواندن داده سریال UART و USB
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — Raspberry Pi 5 SBC.jpg. این تصویر نقشه اتصال نیست.

خطاهای رایج و روش پیدا کردن علت

سطح RS-232 یا ۵ ولت را مستقیم به GPIO وصل نکنید. برای عیب‌یابی، ابتدا برق، رسانه بوت، وضعیت شبکه و گزارش سیستم را بررسی کنید. در درس‌های GPIO، زمین و سطح ولتاژ را نیز بسنجید. پس از آن اتصالات رابط و نام پایه‌ها را با راهنمای رسمی همان مدل تطبیق دهید. اگر پیام خطای ابزار دارید، متن دقیق پیام و تنظیمات پروژه را نگه دارید. تغییر هم‌زمان چند سیم یا چند سطر برنامه باعث می‌شود نفهمید کدام تغییر مشکل را حل کرده است.

تمرین تکمیلی و معیار ارزیابی

تمرین این جلسه آن است که آزمایش «خواندن داده سریال UART و USB» را یک بار با شرایط اولیه و یک بار با یک تغییر کنترل‌شده اجرا کنید. در گزارش کوتاه خود هدف، قطعات، نسخه برد، پیش‌بینی، نتیجه و علت تفاوت احتمالی را بنویسید. معیار موفقیت فقط گرفتن خروجی نیست: باید بتوانید توضیح دهید چرا نتیجه به دست آمد، کدام بخش آن را اندازه گرفتید و برای تکرار آزمون چه تنظیماتی لازم است. اگر به نتیجه نرسیدید، گزارش خطا هنوز یک خروجی آموزشی مفید است.

نکته طراحی برای پروژه واقعی

در محصول واقعی، «خواندن داده سریال UART و USB» باید با دیگر بخش‌ها هماهنگ شود. مصرف حافظه، زمان پاسخ، خطای اندازه‌گیری، نویز و رفتار هنگام روشن شدن دوباره را جدا بررسی کنید. پایه‌هایی که نقش جایگزین دارند را روی نقشه پروژه علامت بزنید تا هنگام افزودن نمایشگر یا ارتباط سریال تداخل ایجاد نشود. قبل از اجرای دائمی سرویس، یک آزمایش کوچک با همان نسخه سیستم‌عامل، تغذیه و قطعات نهایی انجام دهید. عکس نمایشی قطعات جایگزین نقشه و راهنمای سازنده نیست.

پرسش‌های کوتاه

آیا همین مراحل برای همه نسخه‌ها یکسان است؟ خیر؛ نام دقیق مدل برد، نسخه سیستم‌عامل و راهنمای رسمی را ملاک بگیرید. آیا بدون ابزار اندازه‌گیری می‌توان نتیجه را تأیید کرد؟ برای بعضی رفتارها مشاهده اولیه ممکن است، اما برای ولتاژ، زمان‌بندی و خطاهای متناوب اندازه‌گیری لازم است. اگر آزمایش کار نکرد از کجا شروع کنم؟ از برق و رسانه بوت و پیام خطا شروع کنید؛ سپس شبکه، مجوزها و برنامه را بررسی کنید.

جمع‌بندی و ادامه مسیر

در این درس، «خواندن داده سریال UART و USB» را به یک پرسش قابل آزمون تبدیل کردیم و معیار مشاهده را مشخص کردیم. نتیجهٔ خود را با یک عکس از چیدمان قطعات، فایل کد یا تنظیمات و جدول اندازه‌گیری نگه دارید. جلسه بعد بر همین نتیجه تکیه می‌کند؛ اگر خروجی هنوز پایدار نیست، قبل از رفتن به بخش بعدی علت را پیدا کنید. پیوندهای دوره: جلسه قبل جلسه بعد.

منبع فنی: راهنمای رسمی Raspberry Pi. دستورهای سیستم‌عامل را با نسخه نصب‌شده تطبیق دهید.

ثبت دقیق آزمایش خواندن داده سریال UART و USB

برای اینکه شخص دیگری بتواند کارتان را تکرار کند، فقط نوشتن «کار کرد» کافی نیست. نام برد، نسخه سیستم‌عامل، نسخه پایتون، ولتاژ اندازه‌گیری‌شده، نسخه برنامه و شرایط ورودی را ثبت کنید. سپس خروجی مشاهده‌شده را با واحد یا وضعیت منطقی بنویسید. اگر چند بار آزمون می‌کنید، نتیجه هر بار را جدا بگذارید. تفاوت بین آزمون‌ها ممکن است از افت تغذیه، وضعیت شبکه، بسته‌ها یا تغییر تنظیمات باشد. گزارش دقیق به شما کمک می‌کند هنگام افزودن بخش بعدی، نقطهٔ سالم قبلی را بشناسید.

آزمون مرزی و بازبینی

بعد از آزمون اصلی، حالت بدون داده و حالت خطا را نیز بررسی کنید. در آزمون GPIO از حدود الکتریکی راهنمای سازنده فراتر نروید. سیستم را یک بار بدون ورودی اختیاری و یک بار با ورودی معتبر راه‌اندازی کنید. در هر دو حالت، خروجی باید تعریف‌شده باشد. اگر مقدار ناپایدار می‌بینید، پیش از افزودن تأخیر نرم‌افزاری، گزارش سیستم، کیفیت اتصال و تغذیه را بسنجید. برای «خواندن داده سریال UART و USB» این روش باعث می‌شود یک نتیجه اتفاقی را با عملکرد قابل اعتماد اشتباه نگیرید.

ارتباط این جلسه با کل دوره

کار روی تفاوت UART روی هدر با مبدل USB-Serial، نرخ انتقال و سطح TTL مستقل از بقیه سیستم نیست. هر تصمیم درباره پایه‌ها، سیستم‌عامل و زمان پاسخ روی ارتباط با نمایشگر، حسگر، شبکه و رسانه ذخیره اثر می‌گذارد. هنگام توسعه، فهرستی از پایه‌ها، سرویس‌ها، فایل‌ها و درگاه‌های شبکه مورد استفاده تهیه کنید. اگر یک منبع بعداً برای قابلیت دیگری لازم شد، پیش از تغییر، کاربرد آن را در همه بخش‌های پروژه جست‌وجو کنید. این عادت از خطاهای دشوار در پروژه نهایی جلوگیری می‌کند.

چک‌لیست پایان جلسه

آیا مدل برد و نسخه سیستم‌عامل مشخص است؟ آیا تغذیه و رسانه بوت پایدارند؟ اگر GPIO به کار می‌رود، آیا سطح سیگنال سازگار است؟ آیا انتظار قبل از مشاهده ثبت شده؟ آیا حالت موفق و حالت خطا آزموده شده؟ آیا نتیجه و خطاها قابل تکرارند؟ اگر پاسخی نامشخص است، همان مورد را به تمرین بعدی تبدیل کنید. با این روش هر جلسه یک خروجی مستند به پروژه اضافه می‌کند و محتوای آموزش از یک توضیح صرف به راهنمای آزمایش تبدیل می‌شود.