جلسه 5: ورودی دیجیتال و کلید فشاری

هدف جلسه و جایگاه آن در مسیر آموزش

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

این درس بر پایه یک برد مرجع NUCLEO-F401RE طراحی شده است. در صورت استفاده از برد دیگر، نام پایه، وضعیت کلید، مسیر درگاه سریال و قابلیت‌های جانبی باید از راهنمای همان برد و دیتاشیت همان تراشه استخراج شود. تصویرها برای شناخت ابزار و موضوع هستند و نقشه اتصال پروژه به شمار نمی‌آیند. نتیجه مطلوب این جلسه چنین است: تغییر وضعیت LED بر اساس وضعیت کلید.

تصویر آموزشی مرتبط با ورودی دیجیتال و کلید فشاری
نمایی از تجهیزات یا مفهوم مرتبط با درس؛ منبع: Wikimedia Commons.

وسایل و پیش‌نیازهای مشخص

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

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

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

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

گام دوم: پروژه را Build کنید و پیام‌های خطا و هشدار را بخوانید. سپس اتصال ST-LINK را بررسی و برنامه را روی برد بارگذاری کنید. یک بار برد را بازنشانی کنید و رفتار آن را دوباره بسنجید؛ این کار نشان می‌دهد نتیجه فقط ناشی از وضعیت باقی‌مانده در جلسه Debug نیست. اگر خروجی فیزیکی دیده نمی‌شود، ابتدا همان آزمایش را با ساده‌ترین حالت ممکن و بدون ماژول‌های جانبی تکرار کنید.

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

ابزار آزمایش جلسه 5 STM32
تصویر تکمیلی برای مشاهده ابزار آزمایش؛ نقشه سیم‌کشی نیست.

چرا این تنظیمات مهم هستند؟

برای تحلیل نتیجه، تفاوت pull-up و pull-down را با شماتیک همان برد تفسیر کن. این بخش را با داده واقعی آزمایش پر کنید: انتظار شما چه بود، چه اتفاقی افتاد و کدام مشاهده دو فرضیه متفاوت را از هم جدا می‌کند؟ وقتی خروجی مطابق انتظار نیست، به جای تعویض تصادفی سیم‌ها یا کد، زنجیره را به ورودی، پیکربندی، اجرای برنامه و خروجی تقسیم کنید.

کتابخانه HAL لایه‌ای برای دسترسی به پیرامونی‌ها فراهم می‌کند، اما جای خواندن راهنمای برد و مرجع تراشه را نمی‌گیرد. کد تولیدشده به پیکربندی فایل IOC وابسته است. نام یک تابع ممکن است روی چند خانواده یکسان باشد، در حالی که پین‌های قابل استفاده، منبع کلاک و جزئیات تایمر تغییر کنند. برای همین در گزارش خود مدل تراشه و نسخه بسته نرم‌افزاری را بنویسید.

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

عیب‌یابی مرحله‌ای

مهم‌ترین احتیاط این جلسه: پیش‌فرض گرفتن فعال بودن سطح بالا می‌تواند نتیجه را معکوس کند. پیش از نسبت دادن مشکل به نرم‌افزار، تغذیه، اتصال زمین مشترک در صورت نیاز، شناخته شدن برد در رایانه و انتخاب مدل درست را بررسی کنید. اگر در کد خطا رخ می‌دهد، نخستین پیام خطای Build را بخوانید؛ خطاهای بعدی معمولاً پیامد همان خطای اول هستند.

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

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

نمای مکمل برای یادگیری خواندن کلید GPIO در STM32
عکس مکمل از تجهیزات الکترونیک؛ برای اتصال دقیق به اسناد برد مراجعه کنید.

تمرین مستقل و سنجش یادگیری

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

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

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

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

در این مرحله با «خواندن کلید GPIO در STM32» از طریق یک کار عملی آشنا شدید و معیار موفقیت را «تغییر وضعیت LED بر اساس وضعیت کلید» قرار دادید. ارزش این درس در تکرارپذیری آن است: از یک فرض روشن شروع می‌کنید، پیکربندی را ثبت می‌کنید، تنها یک متغیر را تغییر می‌دهید و خروجی را می‌سنجید.

برای مطالعه بیشتر، راهنمای رسمی برد NUCLEO-F401RE، مستندات STM32CubeIDE و مستندات HAL مربوط به خانواده F4 را ببینید. در جلسات بعدی همین روش مشاهده، ثبت و عیب‌یابی را برای پیرامونی‌های دیگر به کار می‌بریم. هر ادعای مربوط به پین، فرکانس یا محدوده ولتاژ باید با سند مدل سخت‌افزاری مورد استفاده بررسی شود.

منابع رسمی: صفحه برد NUCLEO-F401RE؛ STM32CubeIDE؛ آموزش رسمی ST.

ادامه مطلب

جلسه 4: چشمک‌زن LED با HAL

هدف جلسه و جایگاه آن در مسیر آموزش

در جلسه 4 از دوره STM32، موضوع «آموزش GPIO خروجی STM32 و LED چشمک زن» را به صورت یک آزمایش قابل تکرار دنبال می‌کنیم. هدف این است که خواننده علاوه بر اجرای نمونه، بتواند دلیل انتخاب تنظیمات و معنای خروجی را توضیح دهد. اگر فقط کد را روی برد بریزیم و نتیجه‌ای ظاهری ببینیم، هنوز نمی‌دانیم خطاهای بعدی از سخت‌افزار هستند یا از تنظیمات نرم‌افزار. بنابراین از ابتدا مدل دقیق برد، نسخه ابزار و آنچه مشاهده شده است ثبت می‌شود.

این درس بر پایه یک برد مرجع NUCLEO-F401RE طراحی شده است. در صورت استفاده از برد دیگر، نام پایه، وضعیت کلید، مسیر درگاه سریال و قابلیت‌های جانبی باید از راهنمای همان برد و دیتاشیت همان تراشه استخراج شود. تصویرها برای شناخت ابزار و موضوع هستند و نقشه اتصال پروژه به شمار نمی‌آیند. نتیجه مطلوب این جلسه چنین است: چشمک منظم و قابل تکرار LED.

تصویر آموزشی مرتبط با چشمک‌زن LED با HAL
نمایی از تجهیزات یا مفهوم مرتبط با درس؛ منبع: Wikimedia Commons.

وسایل و پیش‌نیازهای مشخص

برای اجرای این مرحله به LED روی برد Nucleo و کد HAL نیاز دارید. پیش از برق‌رسانی، نام مدل را از نوشته روی برد بخوانید و آن را با گزینه انتخاب‌شده در محیط توسعه مقایسه کنید. کابل USB باید قابلیت انتقال داده داشته باشد؛ برخی کابل‌ها تنها برای شارژ هستند و باعث می‌شوند برد در رایانه دیده نشود. اگر قطعه خارجی به کار می‌برید، ولتاژ تغذیه، جریان مجاز و جهت اتصال را از سند سازنده آن قطعه بخوانید.

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

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

گام اول: پایه LED برد را در CubeMX خروجی کن و در حلقه اصلی HAL_GPIO_TogglePin را با تأخیر آزمایش کن. در صفحه تنظیمات، هر گزینه را با هدف همین آزمایش مرتبط کنید. اگر گزینه‌ای را صرفاً از نمونه دیگری کپی می‌کنید، پیش از ادامه بررسی کنید که آیا در برد مرجع و نسخه کتابخانه فعلی همان معنی را دارد. نام‌گذاری روشن برای پین‌ها و متغیرها انتخاب کنید تا هنگام دیباگ بتوانید منشأ هر مقدار را پیدا کنید.

گام دوم: پروژه را Build کنید و پیام‌های خطا و هشدار را بخوانید. سپس اتصال ST-LINK را بررسی و برنامه را روی برد بارگذاری کنید. یک بار برد را بازنشانی کنید و رفتار آن را دوباره بسنجید؛ این کار نشان می‌دهد نتیجه فقط ناشی از وضعیت باقی‌مانده در جلسه Debug نیست. اگر خروجی فیزیکی دیده نمی‌شود، ابتدا همان آزمایش را با ساده‌ترین حالت ممکن و بدون ماژول‌های جانبی تکرار کنید.

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

ابزار آزمایش جلسه 4 STM32
تصویر تکمیلی برای مشاهده ابزار آزمایش؛ نقشه سیم‌کشی نیست.

چرا این تنظیمات مهم هستند؟

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

کتابخانه HAL لایه‌ای برای دسترسی به پیرامونی‌ها فراهم می‌کند، اما جای خواندن راهنمای برد و مرجع تراشه را نمی‌گیرد. کد تولیدشده به پیکربندی فایل IOC وابسته است. نام یک تابع ممکن است روی چند خانواده یکسان باشد، در حالی که پین‌های قابل استفاده، منبع کلاک و جزئیات تایمر تغییر کنند. برای همین در گزارش خود مدل تراشه و نسخه بسته نرم‌افزاری را بنویسید.

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

عیب‌یابی مرحله‌ای

مهم‌ترین احتیاط این جلسه: نام پورت و شماره پین باید از IOC همان پروژه گرفته شود. پیش از نسبت دادن مشکل به نرم‌افزار، تغذیه، اتصال زمین مشترک در صورت نیاز، شناخته شدن برد در رایانه و انتخاب مدل درست را بررسی کنید. اگر در کد خطا رخ می‌دهد، نخستین پیام خطای Build را بخوانید؛ خطاهای بعدی معمولاً پیامد همان خطای اول هستند.

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

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

نمای مکمل برای یادگیری آموزش GPIO خروجی STM32 و LED چشمک زن
عکس مکمل از تجهیزات الکترونیک؛ برای اتصال دقیق به اسناد برد مراجعه کنید.

تمرین مستقل و سنجش یادگیری

تمرین اول این است که مراحل چشمک‌زن LED با HAL را بدون کپی مستقیم تنظیمات از پروژه قبلی بازسازی کنید. هدف را در یک جمله بنویسید، سپس از روی راهنمای برد منابع مورد نیاز را پیدا کنید. اگر همان نتیجه به دست آمد، یکی از پارامترهای مجاز را تغییر دهید و قبل از اجرا پیش‌بینی کنید چه اثری خواهد داشت.

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

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

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

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

برای مطالعه بیشتر، راهنمای رسمی برد NUCLEO-F401RE، مستندات STM32CubeIDE و مستندات HAL مربوط به خانواده F4 را ببینید. در جلسات بعدی همین روش مشاهده، ثبت و عیب‌یابی را برای پیرامونی‌های دیگر به کار می‌بریم. هر ادعای مربوط به پین، فرکانس یا محدوده ولتاژ باید با سند مدل سخت‌افزاری مورد استفاده بررسی شود.

منابع رسمی: صفحه برد NUCLEO-F401RE؛ STM32CubeIDE؛ آموزش رسمی ST.

ادامه مطلب

جلسه 3: شناخت شماتیک، پایه‌ها و سطح ولتاژ

هدف جلسه و جایگاه آن در مسیر آموزش

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

این درس بر پایه یک برد مرجع NUCLEO-F401RE طراحی شده است. در صورت استفاده از برد دیگر، نام پایه، وضعیت کلید، مسیر درگاه سریال و قابلیت‌های جانبی باید از راهنمای همان برد و دیتاشیت همان تراشه استخراج شود. تصویرها برای شناخت ابزار و موضوع هستند و نقشه اتصال پروژه به شمار نمی‌آیند. نتیجه مطلوب این جلسه چنین است: جدول پایه، عملکرد و محدودیت هر پایه.

تصویر آموزشی مرتبط با شناخت شماتیک، پایه‌ها و سطح ولتاژ
نمایی از تجهیزات یا مفهوم مرتبط با درس؛ منبع: Wikimedia Commons.

وسایل و پیش‌نیازهای مشخص

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

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

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

گام اول: جدول اتصال LED و کلید روی برد را از User Manual استخراج کن. در صفحه تنظیمات، هر گزینه را با هدف همین آزمایش مرتبط کنید. اگر گزینه‌ای را صرفاً از نمونه دیگری کپی می‌کنید، پیش از ادامه بررسی کنید که آیا در برد مرجع و نسخه کتابخانه فعلی همان معنی را دارد. نام‌گذاری روشن برای پین‌ها و متغیرها انتخاب کنید تا هنگام دیباگ بتوانید منشأ هر مقدار را پیدا کنید.

گام دوم: پروژه را Build کنید و پیام‌های خطا و هشدار را بخوانید. سپس اتصال ST-LINK را بررسی و برنامه را روی برد بارگذاری کنید. یک بار برد را بازنشانی کنید و رفتار آن را دوباره بسنجید؛ این کار نشان می‌دهد نتیجه فقط ناشی از وضعیت باقی‌مانده در جلسه Debug نیست. اگر خروجی فیزیکی دیده نمی‌شود، ابتدا همان آزمایش را با ساده‌ترین حالت ممکن و بدون ماژول‌های جانبی تکرار کنید.

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

ابزار آزمایش جلسه 3 STM32
تصویر تکمیلی برای مشاهده ابزار آزمایش؛ نقشه سیم‌کشی نیست.

چرا این تنظیمات مهم هستند؟

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

کتابخانه HAL لایه‌ای برای دسترسی به پیرامونی‌ها فراهم می‌کند، اما جای خواندن راهنمای برد و مرجع تراشه را نمی‌گیرد. کد تولیدشده به پیکربندی فایل IOC وابسته است. نام یک تابع ممکن است روی چند خانواده یکسان باشد، در حالی که پین‌های قابل استفاده، منبع کلاک و جزئیات تایمر تغییر کنند. برای همین در گزارش خود مدل تراشه و نسخه بسته نرم‌افزاری را بنویسید.

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

عیب‌یابی مرحله‌ای

مهم‌ترین احتیاط این جلسه: هیچ پایه را بدون بررسی تحمل ولتاژ به منبع پنج ولت وصل نکن. پیش از نسبت دادن مشکل به نرم‌افزار، تغذیه، اتصال زمین مشترک در صورت نیاز، شناخته شدن برد در رایانه و انتخاب مدل درست را بررسی کنید. اگر در کد خطا رخ می‌دهد، نخستین پیام خطای Build را بخوانید؛ خطاهای بعدی معمولاً پیامد همان خطای اول هستند.

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

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

نمای مکمل برای یادگیری خواندن شماتیک STM32 Nucleo و پایه‌های GPIO
عکس مکمل از تجهیزات الکترونیک؛ برای اتصال دقیق به اسناد برد مراجعه کنید.

تمرین مستقل و سنجش یادگیری

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

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

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

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

در این مرحله با «خواندن شماتیک STM32 Nucleo و پایه‌های GPIO» از طریق یک کار عملی آشنا شدید و معیار موفقیت را «جدول پایه، عملکرد و محدودیت هر پایه» قرار دادید. ارزش این درس در تکرارپذیری آن است: از یک فرض روشن شروع می‌کنید، پیکربندی را ثبت می‌کنید، تنها یک متغیر را تغییر می‌دهید و خروجی را می‌سنجید.

برای مطالعه بیشتر، راهنمای رسمی برد NUCLEO-F401RE، مستندات STM32CubeIDE و مستندات HAL مربوط به خانواده F4 را ببینید. در جلسات بعدی همین روش مشاهده، ثبت و عیب‌یابی را برای پیرامونی‌های دیگر به کار می‌بریم. هر ادعای مربوط به پین، فرکانس یا محدوده ولتاژ باید با سند مدل سخت‌افزاری مورد استفاده بررسی شود.

منابع رسمی: صفحه برد NUCLEO-F401RE؛ STM32CubeIDE؛ آموزش رسمی ST.

ادامه مطلب

جلسه 2: نصب STM32CubeIDE و ساخت پروژه نخست

هدف جلسه و جایگاه آن در مسیر آموزش

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

این درس بر پایه یک برد مرجع NUCLEO-F401RE طراحی شده است. در صورت استفاده از برد دیگر، نام پایه، وضعیت کلید، مسیر درگاه سریال و قابلیت‌های جانبی باید از راهنمای همان برد و دیتاشیت همان تراشه استخراج شود. تصویرها برای شناخت ابزار و موضوع هستند و نقشه اتصال پروژه به شمار نمی‌آیند. نتیجه مطلوب این جلسه چنین است: خروجی Build بدون خطا و ساخت فایل برنامه.

تصویر آموزشی مرتبط با نصب STM32CubeIDE و ساخت پروژه نخست
نمایی از تجهیزات یا مفهوم مرتبط با درس؛ منبع: Wikimedia Commons.

وسایل و پیش‌نیازهای مشخص

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

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

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

گام اول: از مسیر انتخاب برد، مدل NUCLEO-F401RE را انتخاب کن؛ فایل IOC را ذخیره و پروژه را بساز. در صفحه تنظیمات، هر گزینه را با هدف همین آزمایش مرتبط کنید. اگر گزینه‌ای را صرفاً از نمونه دیگری کپی می‌کنید، پیش از ادامه بررسی کنید که آیا در برد مرجع و نسخه کتابخانه فعلی همان معنی را دارد. نام‌گذاری روشن برای پین‌ها و متغیرها انتخاب کنید تا هنگام دیباگ بتوانید منشأ هر مقدار را پیدا کنید.

گام دوم: پروژه را Build کنید و پیام‌های خطا و هشدار را بخوانید. سپس اتصال ST-LINK را بررسی و برنامه را روی برد بارگذاری کنید. یک بار برد را بازنشانی کنید و رفتار آن را دوباره بسنجید؛ این کار نشان می‌دهد نتیجه فقط ناشی از وضعیت باقی‌مانده در جلسه Debug نیست. اگر خروجی فیزیکی دیده نمی‌شود، ابتدا همان آزمایش را با ساده‌ترین حالت ممکن و بدون ماژول‌های جانبی تکرار کنید.

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

ابزار آزمایش جلسه 2 STM32
تصویر تکمیلی برای مشاهده ابزار آزمایش؛ نقشه سیم‌کشی نیست.

چرا این تنظیمات مهم هستند؟

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

کتابخانه HAL لایه‌ای برای دسترسی به پیرامونی‌ها فراهم می‌کند، اما جای خواندن راهنمای برد و مرجع تراشه را نمی‌گیرد. کد تولیدشده به پیکربندی فایل IOC وابسته است. نام یک تابع ممکن است روی چند خانواده یکسان باشد، در حالی که پین‌های قابل استفاده، منبع کلاک و جزئیات تایمر تغییر کنند. برای همین در گزارش خود مدل تراشه و نسخه بسته نرم‌افزاری را بنویسید.

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

عیب‌یابی مرحله‌ای

مهم‌ترین احتیاط این جلسه: در صورت خطای دانلود بسته، اتصال و محل repository را بررسی کن. پیش از نسبت دادن مشکل به نرم‌افزار، تغذیه، اتصال زمین مشترک در صورت نیاز، شناخته شدن برد در رایانه و انتخاب مدل درست را بررسی کنید. اگر در کد خطا رخ می‌دهد، نخستین پیام خطای Build را بخوانید؛ خطاهای بعدی معمولاً پیامد همان خطای اول هستند.

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

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

نمای مکمل برای یادگیری آموزش نصب STM32CubeIDE و پروژه اولیه STM32
عکس مکمل از تجهیزات الکترونیک؛ برای اتصال دقیق به اسناد برد مراجعه کنید.

تمرین مستقل و سنجش یادگیری

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

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

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

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

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

برای مطالعه بیشتر، راهنمای رسمی برد NUCLEO-F401RE، مستندات STM32CubeIDE و مستندات HAL مربوط به خانواده F4 را ببینید. در جلسات بعدی همین روش مشاهده، ثبت و عیب‌یابی را برای پیرامونی‌های دیگر به کار می‌بریم. هر ادعای مربوط به پین، فرکانس یا محدوده ولتاژ باید با سند مدل سخت‌افزاری مورد استفاده بررسی شود.

منابع رسمی: صفحه برد NUCLEO-F401RE؛ STM32CubeIDE؛ آموزش رسمی ST.

ادامه مطلب

جلسه 1: نقشه راه STM32 و انتخاب برد Nucleo

هدف جلسه و جایگاه آن در مسیر آموزش

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

این درس بر پایه یک برد مرجع NUCLEO-F401RE طراحی شده است. در صورت استفاده از برد دیگر، نام پایه، وضعیت کلید، مسیر درگاه سریال و قابلیت‌های جانبی باید از راهنمای همان برد و دیتاشیت همان تراشه استخراج شود. تصویرها برای شناخت ابزار و موضوع هستند و نقشه اتصال پروژه به شمار نمی‌آیند. نتیجه مطلوب این جلسه چنین است: فهرست ابزارها و مدل برد را ثبت کن.

تصویر آموزشی مرتبط با نقشه راه STM32 و انتخاب برد Nucleo
نمایی از تجهیزات یا مفهوم مرتبط با درس؛ منبع: Wikimedia Commons.

وسایل و پیش‌نیازهای مشخص

برای اجرای این مرحله به برد NUCLEO-F401RE، کابل USB داده‌دار، رایانه و یک LED روی خود برد نیاز دارید. پیش از برق‌رسانی، نام مدل را از نوشته روی برد بخوانید و آن را با گزینه انتخاب‌شده در محیط توسعه مقایسه کنید. کابل USB باید قابلیت انتقال داده داشته باشد؛ برخی کابل‌ها تنها برای شارژ هستند و باعث می‌شوند برد در رایانه دیده نشود. اگر قطعه خارجی به کار می‌برید، ولتاژ تغذیه، جریان مجاز و جهت اتصال را از سند سازنده آن قطعه بخوانید.

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

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

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

گام دوم: پروژه را Build کنید و پیام‌های خطا و هشدار را بخوانید. سپس اتصال ST-LINK را بررسی و برنامه را روی برد بارگذاری کنید. یک بار برد را بازنشانی کنید و رفتار آن را دوباره بسنجید؛ این کار نشان می‌دهد نتیجه فقط ناشی از وضعیت باقی‌مانده در جلسه Debug نیست. اگر خروجی فیزیکی دیده نمی‌شود، ابتدا همان آزمایش را با ساده‌ترین حالت ممکن و بدون ماژول‌های جانبی تکرار کنید.

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

ابزار آزمایش جلسه 1 STM32
تصویر تکمیلی برای مشاهده ابزار آزمایش؛ نقشه سیم‌کشی نیست.

چرا این تنظیمات مهم هستند؟

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

کتابخانه HAL لایه‌ای برای دسترسی به پیرامونی‌ها فراهم می‌کند، اما جای خواندن راهنمای برد و مرجع تراشه را نمی‌گیرد. کد تولیدشده به پیکربندی فایل IOC وابسته است. نام یک تابع ممکن است روی چند خانواده یکسان باشد، در حالی که پین‌های قابل استفاده، منبع کلاک و جزئیات تایمر تغییر کنند. برای همین در گزارش خود مدل تراشه و نسخه بسته نرم‌افزاری را بنویسید.

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

عیب‌یابی مرحله‌ای

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

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

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

نمای مکمل برای یادگیری STM32 چیست و چرا برای سیستم‌های نهفته مناسب است
عکس مکمل از تجهیزات الکترونیک؛ برای اتصال دقیق به اسناد برد مراجعه کنید.

تمرین مستقل و سنجش یادگیری

تمرین اول این است که مراحل نقشه راه STM32 و انتخاب برد Nucleo را بدون کپی مستقیم تنظیمات از پروژه قبلی بازسازی کنید. هدف را در یک جمله بنویسید، سپس از روی راهنمای برد منابع مورد نیاز را پیدا کنید. اگر همان نتیجه به دست آمد، یکی از پارامترهای مجاز را تغییر دهید و قبل از اجرا پیش‌بینی کنید چه اثری خواهد داشت.

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

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

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

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

برای مطالعه بیشتر، راهنمای رسمی برد NUCLEO-F401RE، مستندات STM32CubeIDE و مستندات HAL مربوط به خانواده F4 را ببینید. در جلسات بعدی همین روش مشاهده، ثبت و عیب‌یابی را برای پیرامونی‌های دیگر به کار می‌بریم. هر ادعای مربوط به پین، فرکانس یا محدوده ولتاژ باید با سند مدل سخت‌افزاری مورد استفاده بررسی شود.

منابع رسمی: صفحه برد NUCLEO-F401RE؛ STM32CubeIDE؛ آموزش رسمی ST.

ادامه مطلب
تصویر شاخص پروژه نهایی پایش محیط با آردوینو

جلسه 25: پروژه نهایی پایش محیط و داشبورد – ESP32

در جلسهٔ 25 دورهٔ آموزش ESP32 به سراغ «پروژه نهایی پایش محیط و داشبورد» می‌رویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: ترکیب حسگر، Wi-Fi، JSON یا MQTT، ذخیره تنظیم و مدیریت خطا. این مسیر برای کسی طراحی شده که می‌خواهد با برد ESP32 یک پروژه متصل، قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط چند دستور را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ESP32 DevKit در مواردی به دیتاشیت خودش نیاز دارد.

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

عکس قطعه مرتبط با پروژه نهایی پایش محیط و داشبورد
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — Immagine del termometro digitale.jpg. این تصویر نقشه اتصال نیست.

پس از این جلسه باید بتوانید ترکیب حسگر، Wi-Fi، JSON یا MQTT، ذخیره تنظیم و مدیریت خطا را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیش‌نیاز شما شناخت پایه‌های تغذیه، روش خاموش‌کردن امن منبع و توانایی خواندن نقشه پایه‌ها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام نداده‌اید، ابتدا جلسه‌های قبل را مرور کنید. نام برد، نسخه برد و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیب‌یابی بعدی بسیار کمک می‌کنند.

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

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

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

ترکیب حسگر، Wi-Fi، JSON یا MQTT، ذخیره تنظیم و مدیریت خطا. در ESP32 نتیجهٔ نرم‌افزار به تنظیم برد، کتابخانه و سخت‌افزار وابسته است. اگر مدل برد یا نسخه بسته Espressif در محیط توسعه با سخت‌افزار فرق داشته باشد، برخی رابط‌ها درست کار نمی‌کنند. اگر پایه‌ای هم‌زمان برای چند وظیفه استفاده شود، باید اولویت آن‌ها را مشخص کرد. محدودهٔ ولتاژ و جریان را از جدول الکتریکی دیتاشیت بخوانید و هیچ خروجی را جای منبع تغذیه بار پرمصرف به کار نبرید. یک فرض را در هر مرحله تغییر دهید تا علت هر نتیجه معلوم بماند.

عکس قطعه مرتبط با پروژه نهایی پایش محیط و داشبورد
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — ESP32 SH1106 Power-Meter 01.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

عکس قطعه مرتبط با پروژه نهایی پایش محیط و داشبورد
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — ESP M2 dev board szdoit IMGP2944 smial wp.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

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

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

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

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

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

منبع فنی: راهنمای رسمی Arduino core for ESP32 از Espressif. تفاوت مدل و نسخه بسته را بررسی کنید.

ادامه مطلب
تصویر شاخص ساعت واقعی RTC و زمان‌دار کردن داده

جلسه 23: ثبت رویداد، خطا و بازاتصال – ESP32

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

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

عکس قطعه مرتبط با ثبت رویداد، خطا و بازاتصال
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — RelayArduinoTest.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

عکس قطعه مرتبط با ثبت رویداد، خطا و بازاتصال
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — ESP32.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

عکس قطعه مرتبط با ثبت رویداد، خطا و بازاتصال
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — ESP32 (30258172944).jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

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

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

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

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

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

منبع فنی: راهنمای رسمی Arduino core for ESP32 از Espressif. تفاوت مدل و نسخه بسته را بررسی کنید.

ادامه مطلب
تصویر شاخص عیب‌یابی، کتابخانه‌ها و آماده‌سازی پروژه

جلسه 24: ESP-IDF و تفاوت آن با Arduino core – ESP32

در جلسهٔ 24 دورهٔ آموزش ESP32 به سراغ «ESP-IDF و تفاوت آن با Arduino core» می‌رویم. هدف این است که مفهوم را از مشاهدهٔ واقعی جدا نکنیم: اجزای پروژه ESP-IDF، مدیریت وابستگی و دلیل انتخاب چارچوب. این مسیر برای کسی طراحی شده که می‌خواهد با برد ESP32 یک پروژه متصل، قابل توضیح و قابل آزمایش بسازد، نه اینکه فقط چند دستور را حفظ کند. هر بار نسخه دقیق قطعه و ابزار خود را ثبت کنید؛ نمونهٔ ESP32 DevKit در مواردی به دیتاشیت خودش نیاز دارد.

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

عکس قطعه مرتبط با ESP-IDF و تفاوت آن با Arduino core
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — Servo and arduino.jpg. این تصویر نقشه اتصال نیست.

پس از این جلسه باید بتوانید اجزای پروژه ESP-IDF، مدیریت وابستگی و دلیل انتخاب چارچوب را با زبان خود توضیح دهید، یک آزمون کوچک طراحی کنید و نتیجه را با انتظار مقایسه کنید. پیش‌نیاز شما شناخت پایه‌های تغذیه، روش خاموش‌کردن امن منبع و توانایی خواندن نقشه پایه‌ها از دیتاشیت است. اگر یکی از این موارد را هنوز انجام نداده‌اید، ابتدا جلسه‌های قبل را مرور کنید. نام برد، نسخه برد و نوع ابزار را کنار یادداشت آزمایش بنویسید؛ این سه داده در عیب‌یابی بعدی بسیار کمک می‌کنند.

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

برد ESP32 سازگار، کابل داده USB، منبع تغذیه مناسب، بردبورد و مولتی‌متر و قطعه مرتبط با «ESP-IDF و تفاوت آن با Arduino core» را آماده کنید. پیش از هر جابه‌جایی سیم، تغذیه را قطع کنید. جهت قرارگیری برد، زمین و پایه‌های GPIO مورد استفاده را بر اساس دیتاشیت همان قطعه بررسی کنید. عکس‌های این مقاله برای شناخت ظاهری‌اند و نقشه اتصال نیستند.

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

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

عکس قطعه مرتبط با ESP-IDF و تفاوت آن با Arduino core
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — ESP32 on Lolin32 Lite clone board.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

عکس قطعه مرتبط با ESP-IDF و تفاوت آن با Arduino core
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — ESP-32 Camera.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

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

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

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

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

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

منبع فنی: راهنمای رسمی Arduino core for ESP32 از Espressif. تفاوت مدل و نسخه بسته را بررسی کنید.

ادامه مطلب
تصویر شاخص کنترل موتور DC با درایور

جلسه 22: امنیت ارتباط و نگهداری رازها – ESP32

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

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

عکس قطعه مرتبط با امنیت ارتباط و نگهداری رازها
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — Temperature sensor.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

عکس قطعه مرتبط با امنیت ارتباط و نگهداری رازها
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — Espressif ESP-WROOM-32 Wi-Fi & Bluetooth Module.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

عکس قطعه مرتبط با امنیت ارتباط و نگهداری رازها
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — ESP32-S3 on paper.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

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

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

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

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

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

منبع فنی: راهنمای رسمی Arduino core for ESP32 از Espressif. تفاوت مدل و نسخه بسته را بررسی کنید.

ادامه مطلب
تصویر شاخص ذخیره تنظیمات در EEPROM

جلسه 21: حالت خواب و مدیریت انرژی – ESP32

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

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

عکس قطعه مرتبط با حالت خواب و مدیریت انرژی
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — DS3231 based RTC module.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

عکس قطعه مرتبط با حالت خواب و مدیریت انرژی
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — ESP32 Espressif ESP-WROOM-32 Dev Board (2).jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

عکس قطعه مرتبط با حالت خواب و مدیریت انرژی
عکس قطعه مرتبط با درس؛ منبع: Wikimedia Commons — RISC-V ESP32-C6-WROOM-1.devboard.jpg. این تصویر نقشه اتصال نیست.

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

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

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

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

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

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

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

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

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

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

منبع فنی: راهنمای رسمی Arduino core for ESP32 از Espressif. تفاوت مدل و نسخه بسته را بررسی کنید.

ادامه مطلب