প্রকল্প সম্পর্কে

এই প্রকল্পটি একটি STM32F103C8T6 মাইক্রোকন্ট্রোলার ভিত্তিক দ্বি-চাকার স্ব-ভারসাম্য রক্ষাকারী রোবটের ফার্মওয়্যার। এটি HAL লাইব্রেরি এবং FreeRTOS রিয়েল-টাইম অপারেটিং সিস্টেম ব্যবহার করে, MPU6050 অ্যাটিচিউড সেন্সর এবং তিনটি ক্যাসকেড PID কন্ট্রোল লুপ (এঙ্গেল লুপ, স্পিড লুপ, স্টিয়ারিং লুপ) এর মাধ্যমে রোবটের ভারসাম্য বজায় রাখে এবং ব্লুটুথ মডিউলের মাধ্যমে রিমোট কন্ট্রোল ও প্যারামিটার অ্যাডজাস্টমেন্ট সমর্থন করে। **মূল বৈশিষ্ট্য:** * **কন্ট্রোল স্কিম:** তিনটি ক্যাসকেড PID কন্ট্রোল লুপ ব্যবহার করা হয়েছে। সমস্ত কন্ট্রোল লুপ TIM1 টাইমার ইন্টারাপ্টে কার্যকর করা হয়, যা 1kHz হার্ড রিয়েল-টাইম নিশ্চিত করে এবং FreeRTOS টাস্ক শিডিউলিং দ্বারা প্রভাবিত হয় না। * **সফটওয়্যার আর্কিটেকচার:** FreeRTOS ভিত্তিক, অ্যাপ্লিকেশন লজিক তিনটি টাস্কে বিভক্ত: কী টাস্ক (keyTask), ব্লুটুথ কমিউনিকেশন টাস্ক (commTask), এবং OLED ডিসপ্লে টাস্ক (displayTask), যার অগ্রাধিকার ক্রমান্বয়ে কম। * **অ্যাটিচিউড এস্টিমেশন:** MPU6050 এর অ্যাক্সিলেরোমিটার এবং গাইরোস্কোপ ডেটা ফিউজ করার জন্য কমপ্লিমেন্টারি ফিল্টার অ্যালগরিদম ব্যবহার করে রোবটের বডি টিল্ট অ্যাঙ্গেল গণনা করা হয়। * **কমিউনিকেশন ও কন্ট্রোল:** USART2 এর মাধ্যমে ব্লুটুথ মডিউলের সাথে যোগাযোগ করা হয়। কাস্টম প্রোটোকল (`[ট্যাগ,ডেটা]` ফরম্যাট) ব্যবহার করে রিয়েল-টাইম রিমোট কন্ট্রোল (জয়স্টিক) এবং প্যারামিটার অ্যাডজাস্টমেন্ট (স্লাইডার) সমর্থন করে। অ্যাডজাস্ট করা PID প্যারামিটারগুলি K2 বোতাম টিপে নিশ্চিত করার পর কার্যকর হয়, যা ভুল অপারেশন এড়ায়। * **হার্ডওয়্যার প্ল্যাটফর্ম:** একটি নির্দিষ্ট ব্যালেন্স কার কন্ট্রোল বোর্ডের উপর ভিত্তি করে (সার্কিট ডায়াগ্রাম `docs/` ফোল্ডারে), প্রধান কন্ট্রোলার STM32F103C8T6, 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`) এর মাধ্যমে ইন্টারাপ্ট টাস্ককে স্টেট পরিবর্তন প্রক্রিয়া করতে দেওয়া হয়, যা ক্রিটিক্যাল সেকশন সমস্যা এড়ায়। * **রিসোর্স ব্যবহার:** ডিবাগ বিল্ডে, ফ্ল্যাশ ব্যবহার প্রায় 94.6% (61956 বাইট), RAM ব্যবহার প্রায় 78.0% (15976 বাইট)। * **প্রকল্পের উৎস:** এই প্রকল্পটি Bilibili প্ল্যাটফর্মের ইউজার 'জিয়াংক্সি টেকনোলজি (জিয়াংকেদা)' এর STM32 স্ট্যান্ডার্ড লাইব্রেরি ব্যালেন্স কার প্রকল্প থেকে পোর্ট এবং রিফ্যাক্টর করা হয়েছে। স্ট্যান্ডার্ড লাইব্রেরি পরিবর্তন করে HAL লাইব্রেরি + FreeRTOS করা হয়েছে এবং প্রকল্পের কাঠামো সামঞ্জস্য করা হয়েছে। সমস্ত হার্ডওয়্যার, কন্ট্রোল স্কিম এবং কোড লজিকের মৌলিকত্ব জিয়াংক্সি টেকনোলজির। **ব্যবহার নির্দেশিকা:** * **অপারেশন:** পাওয়ার অন করার পর PID কন্ট্রোল শুরু করতে K1 বোতাম টিপতে হবে। K2 বোতাম ব্লুটুথের মাধ্যমে প্রাপ্ত PID প্যারামিটার জমা দেওয়ার জন্য ব্যবহৃত হয়। * **প্যারামিটার টিউনিং:** মোবাইল ফোন ব্লুটুথের মাধ্যমে `[slider,প্যারামিটার_নাম,মান]` ফরম্যাটের ডেটা প্যাকেট পাঠিয়ে PID প্যারামিটার অ্যাডজাস্ট করা যায়। অ্যাডজাস্টমেন্টের পর K2 বোতাম টিপে প্যারামিটার কার্যকর করতে হবে। * **কম্পাইল ও ফ্ল্যাশিং:** CLion ব্যবহার করে প্রকল্পের রুট ডিরেক্টরি খুলুন, টুলচেইন এবং ফ্ল্যাশার কনফিগার করার পর কম্পাইল ও ফ্ল্যাশ করা যাবে। **সতর্কতা:** * প্রকল্পটি শুধুমাত্র শেখার রেফারেন্সের জন্য, কোনো বাণিজ্যিক প্রকল্পে ব্যবহার নিষিদ্ধ। * সার্কিট ডায়াগ্রামের কপিরাইট জিয়াংক্সি টেকনোলজির। * গাইরোস্কোপ জিরো ড্রিফট এবং সেন্টার অ্যাঙ্গেল অফসেট প্রকৃত হার্ডওয়্যার অনুযায়ী ক্যালিব্রেট করতে হবে। * ব্লুটুথ কমিউনিকেশন বড রেট 9600।