منصوبے کے بارے میں

یہ پروجیکٹ STM32F103C8T6 مائیکروکنٹرولر پر مبنی دو پہیوں والی خود متوازن گاڑی کا فرم ویئر ہے۔ اس میں HAL لائبریری اور FreeRTOS ریئل ٹائم آپریٹنگ سسٹم استعمال کیا گیا ہے۔ MPU6050 پوزیشن سینسر اور تین سلسلہ وار PID کنٹرول لوپس (اینگل لوپ، اسپیڈ لوپ، اسٹیئرنگ لوپ) کے ذریعے گاڑی کے جسم کا توازن برقرار رکھا جاتا ہے، اور بلوٹوتھ ماڈیول کے ذریعے ریموٹ کنٹرول اور پیرامیٹر ایڈجسٹمنٹ کی سہولت فراہم کی گئی ہے۔ **بنیادی خصوصیات:** * **کنٹرول اسکیم:** تین سلسلہ وار PID کنٹرول کا استعمال کیا گیا ہے۔ تمام کنٹرول لوپس TIM1 ٹائمر انٹرپٹ میں عمل میں آتے ہیں، جس سے 1kHz کی سخت ریئل ٹائم کارکردگی یقینی بنتی ہے، جو FreeRTOS ٹاسک شیڈولنگ سے متاثر نہیں ہوتی۔ * **سافٹ ویئر آرکیٹیکچر:** FreeRTOS پر مبنی، ایپلیکیشن منطق کو تین ٹاسکس میں تقسیم کیا گیا ہے: کی ٹاسک (keyTask)، بلوٹوتھ کمیونیکیشن ٹاسک (commTask)، اور OLED ڈسپلے ٹاسک (displayTask)، جن کی ترجیحات بالترتیب کم ہوتی جاتی ہیں۔ * **پوزیشن کا حساب:** MPU6050 کے ایکسلرومیٹر اور گائروسکوپ ڈیٹا کو یکجا کرنے کے لیے کمپلیمنٹری فلٹر الگورتھم استعمال کیا گیا ہے، جس سے جسم کے جھکاؤ کے زاویے کا حساب لگایا جاتا ہے۔ * **مواصلات اور کنٹرول:** USART2 کے ذریعے بلوٹوتھ ماڈیول سے رابطہ کیا جاتا ہے، جو اپنی مرضی کے پروٹوکول (`[ٹیگ، ڈیٹا]` فارمیٹ) کو سپورٹ کرتا ہے تاکہ ریئل ٹائم ریموٹ کنٹرول (جوائس اسٹک) اور پیرامیٹر ایڈجسٹمنٹ (سلائیڈر) ممکن ہو سکے۔ ایڈجسٹ شدہ PID پیرامیٹرز کو K2 بٹن دبانے کے بعد ہی فعال کیا جاتا ہے تاکہ غلط آپریشن سے بچا جا سکے۔ * **ہارڈ ویئر پلیٹ فارم:** ایک مخصوص بیلنس کار کنٹرول بورڈ (اسکیمیٹک `docs/` میں) پر مبنی، جس کا مین کنٹرولر STM32F103C8T6 ہے، DC ریڈکشن موٹر کو چلانے کے لیے TB6612FNG استعمال کیا گیا ہے، اور OLED ڈسپلے بھی موجود ہے۔ * **ڈیولپمنٹ ماحول:** STM32CubeMX کے ذریعے انیشیالائزیشن کوڈ تیار کیا گیا، CLion کو IDE کے طور پر استعمال کیا گیا، اور کمپائل چین arm-none-eabi-gcc ہے۔ **تکنیکی تفصیلات:** * **PID کنٹرول:** اینگل لوپ (Kp=5, Ki=0.1, Kd=5)، اسپیڈ لوپ (Kp=2, Ki=0.05, Kd=0)، اسٹیئرنگ لوپ (Kp=4, Ki=3, Kd=0)۔ پیرامیٹرز دستی طور پر ٹیون کیے گئے ہیں۔ * **مشترکہ ڈیٹا کا تحفظ:** لاک فری ڈیزائن استعمال کیا گیا ہے، Cortex-M3 کی 32 بٹ ایٹمک ریڈ/رائٹ خصوصیات کا فائدہ اٹھاتے ہوئے، اور درخواست فلیگز (`StartReq`/`ApplyReq`) کے ذریعے انٹرپٹ ٹاسک کو اسٹیٹس تبدیلیوں کو ہینڈل کرنے دیا جاتا ہے، جس سے کریٹیکل سیکشن کے مسائل سے بچا جاتا ہے۔ * **وسائل کا استعمال:** ڈیبگ بلڈ میں، Flash کا استعمال تقریباً 94.6% (61956 بائٹس) اور RAM کا استعمال تقریباً 78.0% (15976 بائٹس) ہے۔ * **پروجیکٹ کا ماخذ:** یہ پروجیکٹ Bilibili کے صارف "جیانگ شی ٹیکنالوجی (جیانگ کا ڈیپارٹمنٹ)" کے STM32 اسٹینڈرڈ لائبریری بیلنس کار پروجیکٹ پر مبنی ہے، جسے پورٹ اور ری اسٹرکچر کیا گیا ہے، اسٹینڈرڈ لائبریری کو HAL لائبریری + FreeRTOS میں تبدیل کیا گیا ہے، اور پروجیکٹ ڈھانچے کو ایڈجسٹ کیا گیا ہے۔ تمام ہارڈ ویئر، کنٹرول اسکیم اور کوڈ منطق کی اصلیت جیانگ شی ٹیکنالوجی کی ہے۔ **استعمال کی ہدایات:** * **آپریشن:** پاور آن کرنے کے بعد PID کنٹرول شروع کرنے کے لیے K1 بٹن دبائیں۔ K2 بٹن بلوٹوتھ کے ذریعے موصول ہونے والے PID پیرامیٹرز کو جمع کرانے کے لیے استعمال ہوتا ہے۔ * **پیرامیٹر ایڈجسٹمنٹ:** موبائل بلوٹوتھ کے ذریعے `[slider,پیرامیٹر کا نام,ویلیو]` فارمیٹ میں ڈیٹا پیکٹ بھیج کر PID پیرامیٹرز کو ایڈجسٹ کیا جا سکتا ہے، اور ایڈجسٹمنٹ کے بعد K2 بٹن دبانے سے وہ فعال ہو جاتے ہیں۔ * **کمپائل اور برن:** CLion میں پروجیکٹ کی روٹ ڈائریکٹری کھولیں، ٹول چین اور برنر کو کنفیگر کریں، پھر کمپائل اور برن کریں۔ **احتیاطی تدابیر:** * یہ پروجیکٹ صرف سیکھنے کے حوالے کے لیے ہے، کسی بھی تجارتی پروجیکٹ میں استعمال ممنوع ہے۔ * اسکیمیٹک کا کاپی رائٹ جیانگ شی ٹیکنالوجی کے پاس ہے۔ * گائروسکوپ زیرو ڈرفٹ اور سینٹر اینگل آفسیٹ کو اصل ہارڈ ویئر کے مطابق کیلیبریٹ کرنا ضروری ہے۔ * بلوٹوتھ کمیونیکیشن کی بوڈ ریٹ 9600 ہے۔