1- پردازنده مورد استفاده STM32F103C8T6 2- هدف فاز اول پروژه پیادهسازی کنترل پایه ربات تانکی با دو موتور حرکت و یک موتور برس از طریق جویاستیک و nRF24L01 به صورت بیسیم. در این فاز، تمرکز بر خواندن جویاستیک، ارسال داده، دریافت داده در گیرنده و راهاندازی موتورها است.
3- سختافزار فاز اول فرستنده: STM32F103C8T6 جویاستیک آنالوگ دو محور (X/Y) ماژول nRF24L01 منبع تغذیه 3.3 یا 5 ولت برای MCU و ماژول
گیرنده: STM32F103C8T6 دو درایور H-Bridge برای موتورهای حرکت ربات ماژول nRF24L01 منبع تغذیه جداگانه برای موتورها و MCU
4- الگوریتم نرمافزاری فرستنده (STM32): خواندن مقادیر X و Y جویاستیک از ADC. ساخت بسته ۷ بایتی دیتا و محاسبه Checksum. ارسال بسته از طریق nRF24L01 با فرکانس مناسب (مثلاً 20–50Hz).
گیرنده (STM32): دریافت بسته ۷ بایتی از nRF24L01. بررسی Header و Checksum. نگاشت X و Y به سرعت و جهت دو موتور حرکت ربات (تانکی). بروزرسانی موتورهای حرکت به صورت همزمان. نکته مهم
این پروژه شامل چند فاز توسعهای است (نمایشگر OLED، مانیتور باتری، شناسایی خطا و ارتباط دو طرفه)، در این مرحله تنها فاز اول اجرا خواهد شد و فازهای بعدی در مراحل بعدی پیادهسازی خواهند شد.
نکات مهم در تحویل گیری: ۱. خوانایی و ساختار کد استفاده از نامهای معنادار برای متغیرها و توابع: مثال: readJoystickX(), sendNRFData(), driveLeftMotor().
ساختار ماژولار: توابع و بخشهای مختلف پروژه (خواندن جویاستیک، ارسال/دریافت nRF، کنترل موتور) باید جدا از هم باشند. بهتر است برای هر بخش یک فایل جداگانه یا حداقل یک بلوک مشخص در کد داشته باشید. توابع عمومی و قابل استفاده مجدد: مثلاً calculateChecksum(uint8t* data, uint8t length) یا mapJoystickToMotorSpeed().
۲. کامنتگذاری و مستندسازی
توضیح هر بخش کد: چه عملی انجام میدهد و چرا. توضیح فرمت بسته nRF24L01: هر بایت چه معنایی دارد. توضیح الگوریتم نگاشت X/Y به سرعت و جهت موتورها. توضیح مقادیر ثابت یا تنظیمات سختافزاری: پینهای STM32 متصل به nRF24L01، موتور، شاسی و ADC.
۳. استفاده از لایبرری یا فایلهای جداگانه برای بخشهای مهم nRF24L01: یک ماژول جداگانه nRF24L.h برای ارسال/دریافت با توابع استاندارد (nrfInit(), nrfSend(), nrfReceive()) موتورها (H-Bridge): یک ماژول MotorControl.h با توابع driveMotorLeft(speed, direction) و driveMotorRight(speed, direction)
جویاستیک: ماژول Joystick.h برای خواندن مقادیر و نگاشت آنها این کار باعث میشود در آینده تغییر در یک بخش، کل پروژه را خراب نکند.
۴. تست و اعتبارسنجی تست جداگانه هر بخش: تست خواندن ADC جویاستیک تست ارسال/دریافت nRF24L01 تست موتورهای حرکت با مقادیر ثابت تست بسته کامل: اطمینان از هماهنگی X/Y با حرکت ربات و فرمان برسها. ثبت محدودیتها و مشکلات احتمالی که فریلنسر یا تیم باید بدانند.
۵. استانداردهای کدنویسی استفاده از فرمت ثابت برای توابع و بلوکها (indentation، فاصلهها، خطوط خالی) تعریف کنستانتها و ماکروها به جای اعداد خام: مثال: #define MOTORSTOP 0, #define MOTORCW 1 فعال کردن کامنت برای بیتهای Status و Reserved
۶. تحویل نهایی کد کامل، کامپایل شده و آماده فلش روی STM32 تمام کتابخانهها یا لینک دانلود آنها نمونه خروجی یا ویدیو کوتاه از کد.