دیروز در شبکههای اجتماعی سیسوگ سؤالی رو مطرح کردم و فکر میکنم سؤال چالشی برای خیلی از دوستان بود. سؤال ساده بود: «آیا بدون استفاده از STMCUBE قادر به ساخت پروژه و کانفیگ میکروکنترلر stm هستید؟». البته کتمان نمیکنم که خودم هم خیلی درگیر این مساله هستم و واقعاً فکر میکنم از چه جنبههایی ممکنه دانستن و یا ندانستن چنین جزییاتی به نفع یا به ضرر ما یا پروژه باشد! چیزی که خود من را در نظرسنجی سورپرایز کرد درصد دوستانی بود که نمیتوانستند بدون استفاده از این ابزار پروژه رو بسازند.
مگه بده که نمی توانیم!
نه واقعاً بد نیست! حالا بحث STM32 است ولی قبل از آن چنین ویژگی را نرمافزار کدویژن در اختیار کاربرها قرار میداد، دلیل استقبال گسترده از کدویژن همین کدویزارد شگفتانگیز آن بود، که تنها با چند کلیک کلی کانفیگ دردسرساز رو انجام میداد، حالا به شکل پیشرفتهتری این قابلیت رو نرمافزار stmcube در اختیار کاربرها قرار داده است و حتی اخیراً با اضافه کردن کتابخانههای کاربردی مثل کتابخانه فایل سیستم یا سیستمعامل بلادرنگ یا کتابخانه شبکه و انجام کانفیگ موردنظر در بستر نرمافزار خیلی کاربردیتر از قبل شده است.
بهتر از ابزار چیزی نیست
به جرئت میتوان گفت که نوع بشر بدون استفاده از ابزارهای مختلف قادر به پیشرفت که هیچ حتی ادامه حیات و بقاء هم نبود، از ابزارهای اولیه که سبب شد ادامه حیات برای انسان اولیه ساده شود مثل تبر و تیزه دستساز که با استفاده از سنگ و چوپ درست شده بودند، چه ابزارهای پیشرفته شرکت بوش که سبب پیشی گرفتن صنعت آلمان از رقبا شد.
پس این سوءتفاهم را کنار بگذارید که اگر کسی از فلان نرمافزار یا ابزار استفاده میکند یا نمیکند، آدم حرفهای یا خفنی است (متأسفانه این دید را در دوستان زیادی دیدهام). آنچه اهمیت دارد این است که بتوانید کار کردن با ابزارهای مختلف را بیاموزید و بدانید در کجا بهتر است از چه ابزاری استفاده کنید.
بگذارید مقداری دقیقتر بگویم، سعی کنید مثل فردی نباشید که تنها یک پیچگوشتی دارد و سعی میکند تمام پیچها را با آن پیچگوشتی باز کند. برای کار کردن شما نیاز به ابزارهای مختلفی دارید و باید مهارت کار کردن با آنها را نیز به خوبی بیاموزید.
حالا که ابزار اینقدر خوبه چرا بدون ابزار کار کنیم ؟
این برداشت هم سوءتفاهم است، هیچ کجا از شما نخواستیم که ابزارهای لازم را کنار بگذارید، گاهی نیاز است که بدانید ابزار شما چطور کار میکند و این دانش به شما کمک میکند که بسنجید آیا این ابزار میتوانید مشکل جاری شما را حل کند یا نه! دقیقاً با شابلون مثال قبل ببینید، سعی نکنید شخصی باشید که همه پیچها را با یک پیچگوشتی باز میکند، این شناخت از نحوه کارکرد ابزار شما علاوه بر این که دید خیلی خوبی به شما میدهد شما را قادر به ساخت ابزارهای لازم خودتان را توسعه دهید و ایجاد کنید.
احتمالاً الآن دارید فکر میکنید چه کمکی میکنه وقتی میدونید چطور میکروکنترلر شما بوت میشود، وکتورهای وقفه رو چطور میشود مدیریت کرد، یا این که چطور فایلهای اسمبلی بوت رو کنار فایلهای سی قرار بدید و یه بیلد از پروژه بگیرد، خوب که چی وقتی همه این کارها رو یک نرمافزار برای من انجام میدهد چرا خودم باید چنین جزییاتی رو بدونم؟
برای رانندگی نیاز نیست ماشین رو خودتون بسازید
بگذارید با یک مثال غیر الکترونیکی مسئله رو نگاه کنیم شاید توضیح آن به این شکل سادهتر باشد، فرض کنید قرار است از تهران سفر کنید و برید شمال، یه سفر تفریحی که با خانواده میخواهید بروید (این سفر رو پروژه ببینید)، خوب برای این کار نیاز نیست دقیقاً بدونید ماشین چطور کار میکند، به همین اندازه که بدونید چطور با ماشین میشه رانندگی (رانندگی را ابزار ببینید) کرد و این که چطور باید از ماشین مراقبت کنید مثل چک کردن آب و روغن و آمپرهای مربوطه، کفایت میکند تا شما و خانواده را از تهران به شمال برساند. در اینجا شما به هیچ وجه درگیر جزییات این که ماشین چطور کار میکند نمیشوید لازم نیست که بدانید سیستم جرقهزنی چطور کار میکند یا اصلاً تفاوت انژکتور و کاربراتور در چیست.
حالا بیایید فرض کنید شما قرار است در مسیری یک بار ده تنی را حمل کنید (نوع دیگری از پروژه) اینجا فقط دانش رانندگی کافی نیست، علاوه بر این باید بدانید که ماشین شما آیا تحمل این مقدار بار را دارد یا نه، چرخها و محور خودرو قادر به تحمل این مقدار بار هست یا نه، باید بدانید آیا موتور ماشین شما قادر به حمل چنین باری است یا نه، باید بدانید در چه شیبی با چه سرعتی حرکت کنید که حرکت شما دچار مشکل نشود. میبینید که وقتی نوع پروژه فرق کرد علاوه بر این که به ماشین نیاز دارید باید مقداری از جزییات عملکردی آن نیز آگاه باشید.
حالا فرض کنید شما راننده فرمول وان هستید و قصد دارید در مسابقه جایزه بزرگ اتومبیل رانی شرکت کنید، اینجا مهارت رانندگی تنها پیششرط راننده بودن است، شما بهعنوان راننده باید بدانید دقیقاً موتور خودروی شما تا چه اندازه میتواند تحت فشار قرار بگیرد، چقدر میتوانید دورموتور را بالا ببرید و بالا نگه دارید و … در واقع برای موفقیت در مسابقه علاوه بر رانندگی شما باید جزییات زیادی از عملکرد خودروی خودتان را بدانید که بدون دانستن آنها ممکنه از خط پایان عبور کنید ولی نفر اول نخواهید بود.
وقتی قرار باشد از تمام امکانات و قابلیتهای میکروکنترلر استفاده کنید، تنها توانایی کار کردن با چیزی مثل stmcube کافی نیست، بلکه باید جزییات عملکردی اجزاء سیستم را به خوبی درک کرده باشید و در این صورت است که میتوانید بهترین نتیجه را بگیرید.
آیا باید بلد باشیم ماشین هم بسازیم؟
بستگی داره که شما خودتون رو کدام یکی از رانندههای مثال بالا ببینید، اگر شما آن شخصی هستید که پروژههای جنرال و دمدستی رو انجام میده، خوب اگر هیچ وقت یاد نگیرید ماشین چطور کار میکند قطعاً کارتان دچار مشکل جدی نمیشود و میتوانید به فعالیت خودتون ادامه بدید بدون این که مشکل خاصی داشته باشید.
اما اگر قصد دارید پروژههای خاص بگیرد، پروژههای تولیدی و هایتک از این دسته پروژهها هستن، نیازه علاوه بر این که رانندگی بلد هستید باید بدانید ماشین شما چطور کار میکند تا در بزنگاهها بتوانید از تمام پتانسیل آن استفاده کنید.
آیا من از Stmcube استفاده میکنم؟
بله چرا که نه! ولی برای من همیشه کاربرد ندارند، مثلاً اگر بخواهم تایمری را کانفیگ کنم یا پریفرال spi را راه اندازی کنم، زمان باز شدن نرمافزار از زمانی که خودم قادر به نوشتن کد مروبطه هستم بیشتر است، پس برای موضوعهای اینچنینی ازش استفاده نمیکنم، ولی اگر دنبال میکروکنترلر خاصی باشم که دارای حداقلهایی باشد حتماً از آن استفاده میکنم، یا مثلاً اگر قصد داشته باشم ضرایب ورودی فلان پریفرال رو بررسی کنم یا این ببینم کدام پایهها را برای چه منظوری میتوانم استفاده کنم
آخرین باری که استفاده کردم هم میخواستم ببینم برای اضافه کردن کتابخانه ssl از چه کتابخانههایی میتوانم استفاده کنم.
میبینید جواب من بله است.
سلام
من خواستم رجیستری برم جلو
بکمک آدرس های رجیستری و بدون استفاده از کتابخونه های STMxx
ولی نهایت پیشرفتی ک تونستم حاصل کنم فقط در حد GPIO و ADC و تایمر ها بود
کلی اشتباه بود تو کتابخونه ای که ساخته بودم
واقعا سخت بود
واقعا درک پریفرال هاش سخت بود کلی بیت اضافی
یه I2C خواستم راه اندازی کنم اونقده فرمول داده بود برای تایمینگ هاش واقعا مغزم سوت کشید آخرشم نتونستم راه اندازی کنم حتی با 4 تا جدولی که خودش برای فرکانس های منتخب ارائه داده بود هم نشد و بیخیالش شدم
اینکه یه شرکت اول بیاد توابع LL بسازه بعد SPL بسازه بعد HAL و…….
اتمل اومده برای رجیستر ها و بیت های میکروش یه کتابخونه ساخته
آردوینو اومده بکمک اون کتابخونه ها یه کتابخونه و توابع سطح بالا تری ساخته اگه فردا یکی بیاد بکمک کتابخونه های آردوینو یه کتابخونه دیگه ای برای پریفرال های AVR بسازه کار غیر معقولانه ای انجام نداده
ولی ST
این توابع سطح بالاست
اون سطح پایینه
این لایه انتزاعیه
اون پشتیبانیش تموم شد
چرا خودت میکرو رو انگولک میکنی بیا از نرم افزاری که من ساختم استفاده کن
فرمول میخوای چیکار ببین برات چند تا جدول برا چند تا فرکانس تنظیم کردم از اینا استفاده کن
من که از اول زدم تو کار رجیستری لذت بخش تر هست برای من
سلام. بسیار مقاله بجایی بود، بنده خودم از stmcube شروع کردم و بنا به گفته دوستان با بزرگتر و پیچیده تر شدن پروژه ها مجبور شدم سری هم به لایه های پایین تر از کتابخانه hal هم بزنم. به نظرم دوستانی که میخوان شروع کنن با stmcube شروع رو انجام بدهند بعدا و در خلال پروژها و بنا به نیاز وارد لایه های پایین تر بشوند
سلام دوست عزیز
با شما موافق هستم
به نظر من اولین قدم شروع کردن هست حالا با هرچیزی که میشه شروع کرد – بعد در خلال کار میشه ابزارها و روال ها رو بهبود بخشید و بهتر کرد.
چند سالی هست دو موضوع نیاز و سلیقه را مطرح کردم. یعنی همان موقعی که افرادی تعصب خاصی روی استفاده صرف از کیوب داشتند.
نیاز همان چیزی است که مطرح کردید.
ولی با افراد زیادی برخورد داشتم که سلیقه متفاوت داشتند. دیدم با سلیقه افراد نمیشه مقابله کرد!
هر کسی هم مسئول پروژه خودش است. بنابرین باید به درستی تشخیص دهد این کار را چطوری انجام دهد.
دقیقا و تجربه افراد هست که پختگی اونها را در مواجه با خیلی چیزها نشون میده
سلام حاج آقا زئوس و بر و بچه های المپ!
فرمایش شما کاملا صحیحه ، میشه با چنگال یک سوپ غلیظ یا ماست رو هم در صورت نبود قاشق خورد یا با قاشق هم سالاد اما بهتره از هر ابزار به جای خودش استفاده شه ، ترکیب این دو ابزار هم یک مدت در هتل ها مورد توجه بود spoon + fork = sfork اما خیلی زود منسوخ شد چون فهمیدن چیز بیخودیه و هر کدوم جدا خیلی بهتر و کاربردی تره.
من زیاد در الکترونیک دیجیتال و میکرو حرفه ای نیستم و چند سالیه که ورود کردم بر حسب علاقه در کنار کارم که اتوماسیون و پی ال سیه.
اینطور که از اساتید شنیدم و حین ساخت بعضی قطعات کار خودم لمس کردم آردینو بیشتر برای افرادی مناسبه که نخواند بصورت عمیق تر با الکترونیک مفهومی درگیری داشته باشند و بیشتر به خروجی کار و برنامه نویسیش علاقه دارند و اینکه پروژه زود تموم شه یه جور PLC که ما در صنعت برای پیشرفت سریع پروژه و ایمنی استفاده میکنیم که دیگه درگیر مباحث استاندارد ، نویزگیری و تهیه قاب مناسب و غیره نشیم و فقط برنامه نویسی و استارت سریع برای تحویل پروژه! در حوزه هوشمند سازی ساختمان و ارتباطات IOT هم اخیرا دیدم زیاد آردینو استفاده میشه چون مثل صنعت و تابلو برق نویز و این مسایل تو محیط ساختمان نیست که نشه ازش استفاده کرد اما برای تولید محصول اصلا بصرفه نیست و با هدف صرفا برنامه نویسی و آشنایی با میکرو بصورت کاربردی بنظرم ساخته شده.
راستی جناب زئوس پستهای آموزش STM32 F1 پاسخ دهیش رها شده ؟ من خرداد ماه تو قسمت سیزدهم که مربوط به تبدیل تاریخه یک سئوال مطرح کردم هنوز بی پاسخ مونده 🙁
ممنون میشم الطفاتی بفرمایید.
سلام و درود بر شما
ببینید ابزار و آشنایی با ابزار خیلی خوبه چه بسا حتی از اون ابزار استفاده نکنیم، فرض کنید شما قصد داشته باشید خانه ای بسازید، و فقط چکش و بیل و کلنگ رو میشناسید، آیا نمی تونید خانه رو با این ابزار بسازید ؟ ، بله میشه ولی با توجه به زمان و هزینه و …. اقتصادی نیست، حالا فکر کنید برید توی مغازه ابزار فروشی بچرخید و ابزارهای مختلف رو ببینید و کارکردشون رو بپرسید و یا کنجکاوی کنید، بعد توی ساخت میبینید که چه دید خوبی بهتون میده و استفاده ازشون چقدر کارتون رو راحت تر میکنه 🙂
آردوینو در واقع بردهایی که داره هیچ کجا ادعا صنعتی بودن نکرده ، توی کارهای صنعتی استانداردی هست که باید رعایت بشه و اگر رعایت نشه که خیلی جاها درست رعایت نمیشه نمیشه گفت اون برد یا محصول صنعتی است، من موافق آردوینو هستم چون خیلی راحت کرده کار آموزش و ساخت پروتوتایپ رو، اینقدر راحت کرده که میبینم خیلی ها دیگه تنبلی میکنن 🙂
بخش کامنت ها رو دوباره ره انداختیم 🙂
سلام بر زئوس بزرگ ، فرمایش شما متین و صحیح است.
من با بردهای استارتر نظیر دیسکاوری شروع کردم که بنظرم جایگزین خوبیه برای الکترونیکی ها.
آقا من تابستون 1400 از طریق همین آموزش و کامنتهای اولیه با سیسوگ آشنا شدم و رشد هم کردم خداروشکر، بخش کامنتها برا امثال من خیلی خوب بوده و هست مخصوصا اگر جنبه آموزشی داشته باشه و انشا… در صورت فراغت فعالتر هم خواهم شد و تجریات اندکم رو به اشتراک خواهم گذاشت برای ادای دین به سیسوگ.
تو بخش 13 آموزش Stm32 من کامنتی دادم مربوط به پاییز 1400 فکر کنم که در انتظار بررسی است ممنون میشم الطفاتی بفرمایید ، من حل کردم اون مشکلو برا خودم اما محلول شما رو بیشتر دوس دارم با مال خودم مقایسه و بررسی کنم، با سپاس
سلام و درود بر شما
ما قراره یه بخش پرسش و پاسخ به سایت اضافه کنیم که امیدوارم مورد استقبال دوستان و همراهان سیسوگ قرار بگیره و ما روی کمک دوستانی مثل شما حساب خواهیم کرد.
سلام
بعنوان کوچکترین اگر علم اندکم یاری گرد در خدمتم.
با تشکر از طراح سایت که وقتی کسی اینجا کامنت میکنه رو دیدگاه تو ایمیل خبر میده وگرنه متوجه نمیشدیم 🙂
و سپاس از شما
درود بر شما
منم نیست که فکر میکنیم چقدر دانش داریم، مهم اینه که ببینیم این دانشی که داریم میتونه مشکل شخصی رو حل کنه یا نه
که در بیشتر مواقع میتونه 🙂
سلام فکر میکنم یک مقدار قیاس مع الفارق بود بالاخص در مقایسه اردوینو و stmcube ولی در مجموع خوب بود اردوینو که اصلا مفتش گران و بدرد بچه های غیر الکترونیک بالاخص رشته کامپیوتر میخوره و اصلا کاربرد تجاری نداره در مورد کی هم من خوردم تمام بردهایی را که تولید میکنم از کیوب استفاده کردم و الحمدلله هیچ مشکلی ندارم مثلا برای تاچ جی اف ایکس اصلا نمیشه بدون کیوب ام ایکس تاچ پنل بزنی بیچاره میشی وقتی اون خودش بدون خطا همه تنظیمات و پیکره بندی ها را انجام میده مگه مرض دارم دستی بنویسم
سلام دوست عزیز
فکر میکنم منظور رو درست متوجه نشدید – اصلا من جایی گفتم شما از کیوب استفاده نکنید ؟
در واقع دارم میگم ابزارها رو بشناسید و با آنها اتفاقا کار کنید ولی بدانید چطور دارید کار میکنید 🙂
درم ورد آردوینو اتفاقا قیاس درستی هست، مقاله آردوینو خوب، بد، زشت ! همه چیز درباره آردوینو را مطالعه کنید
big like….
:)))
برای آموزش دیدن پیشنهادتون چیه یادگیری اصولی تر بدون stmcube یا سطحی تر با stmcube ؟
خوب من پیشنهادم که یادگیری اصولی است بدون شک
ولی این رو هم در نظر داشته باشید که یادگیری اصولی به معنی عدم استفاده از cube نیست، این که بدانید کیوب چطور کار میکنه ، میکرو چطور کانفیگ میشه لذوما به معنی عدم استفاده از کیوب نیست دوست عزیز
مطمئنا این مطالب خیلی وقت ها چندین برابر چند مقاله فنی توی پیشرفت کار تاثیر داره ، ممنون از شما که وقت میزارید و این نکات مهم رو یادآوری می کنید???
سلام
متشکرم، واقعا گاهی همین نکات غیرفنی و جزیی میتونه خیلی در وقت و انرژی آدم صرفه جویی کنه
سعی میکنم با یادآوری آنها، سعی بکنم که دوستان تا جای ممکنه بهترین استفاده رو از ابزارها داشته باشند
امیدوارم که این مقالات کمک کوچکی در این راستا بکنند
متشکر از شما 🙂
خیلی عالی بود مهندس. فقط راهکار هم بدین کجا میشه به این اطلاعات دست پیدا کرد رفرنس اصلی چیه؟ یعنی مطالعه دیتا شیت و نوشتن در سطح رجیستری کفایت میکنه؟؟
سلام دوست عزیز
در خصوص جزییات میکروکنترلر بله بهترین مرجع همان یوزرمنوال شرکت سازنده است، البته با گشت و گذار در گیت هاب هم میشه مثال های خوبی از کاربردها و نحوه پیکیربندی های مختلف دید که واقعا جالب هستند
البته شرکت سازنده معمولا sdk یا کتابخانه هایی رو هم ارايه میکنه که معمولا همراه با مثال هایی است که اون ها هم خیلی خوبه
بسیار هم عالی. فقط اگر یه نمونه مثال از گیت هاب و فایل sdk سازنده قرار بدین خیلی کمک میکنه. چون الان دقیقا نمیدونم که چطور باید این موارد که فرمودین رو در سطح رجیستری جست و جو کنم.
بسیار مفید و عالی مثل همیشه زئوس عزیز
خواهش میکنم، نظر لطف شماست جناب حقیقی پور 🙂
بسیار عالی ….
متشکرم 🙂