تجربه های اول من در الکترونیک

زمان تقریبی مطالعه این مقاله: ۵ دقیقه

از آخرین باری که توی میکرولرن مطلب نوشتم ۳ سال میگذره و بنا به دلایلی مجبور شدم این سال‌ها روی کارهایی غیر از نوشتن تمرکز کنم. اما امروز میخوام از اولین تجربه های برنامه نویسی خودم با میکروکنترلر براتون بگم. احتمالا برای خیلی هاتون جذاب باشه و برای کسانی که می‌خوان تازه شروع کنند کمک کننده هست. خب چند ترمی الکترونیک خونده بودم که متوجه شدم دانشگاه فقط قراره یک سری مطلب تئوری و گذروندن واحدها باشه پس خودم شروع کردم به گوگل کردن و سر زدن به سایت های الکترونیک. اون موقع خیلی ویدیو به اشتراک گذاشته نمیشد(حدود سال ۸۷ رو میگم) و اغلب افراد اون چیزی رو که بلد بودن یا به صورت فایل PDF به اشتراک میگذاشتن یا داخل فروم های الکترونیک به هم دیگه کمک می کردند. به نظرم خیلی خوب بود چون یه جورایی باعث انباشت علم می شد. یعنی وقتی من هم به سوالی بر می خوردم که دیگران برخورده بودن لازم نبود بیام و از نو سوال بپرسم و چرخه پاسخ گویی برای هر نفر تکرار بشه. چیزی که متاسفانه با گروه های تلگرامی این روزها شاهدش نیستیم. عملا سوالی که یک بار پرسیده شده دیگه برای دیگران خیلی قابل دسترس نیست. با خوندن ادامه این مقاله هم راه باشید. نکات جالبی برای کسانی که اول راه هستن و کسانی که قبلا شروع به کار کردن داره.

با این سرچ‌ها کم‌کم به اهمیت میکروکنترلر و برنامه نویسی پی بردم و دیدم که چه جور کلاس هایی برای این کار وجود داره. البته زبان C دانشگاه رو با یکی از استادهای خیلی خوب گذروندم که واقعا مهندس واقعی بود و مثل خیلی از اساتید فقط تئوری کار نمی کرد. همون استاد دید و تجربه خیلی خوبی به من داد. بعد از این که ترم ۴ رو تموم کردم رفتم سراغ کلاس‌های فوق العاده فنی حرفه ای و به توصیه یکی از مدرس‌های خوب اون مرکز با مرحوم ۸۰۵۱ 😁 شروع کردم تا بیس خیلی خوبی برای میکروکنترلر بسازم. جالب اینه که اون موقع فقط با اسمبلی کار می‌کردیم و برنامه هایی می‌نوشتیم که خیلی طولانی بود. حتی الان هم که بهش فکر می‌کنم وحشت می‌کنم که چطور اون حجم زیاد کد رو با اسمبلی می‌نوشتم. جایی که حتی یک حلقه for یا while ساده هم در اختیارم نبود.

8051

اما خب همون کارها و مطالعه کتاب ۸۰۵۱ پروفسور مزیدی اونم به زبان انگلیسی باعث شد تا درک خیلی عمیقی از الکترونیک دیجیتال به دست بیارم. هر چند که هیچ وقت کار اجرایی واقعی با ۸۰۵۱ انجام ندادم اما تجربه حدود ۶ ماه برنامه نویسی و کار با این میکروکنترلر واقعا با ارزش بود. بعد از اتمام این آموزش سریع رفتم سراغ AVR و باز هم با کتاب دیگه‌ای از پروفسور مزیدی، اما این بار ترجمه شده(زبان اصلیشو پیدا نکردم ). جالبه که این بار هم با اسمبلی کار کردم و تمام دستورات را مسلط شدم و تعداد خیلی زیادی پروژه آموزشی برای خودم انجام دادم و کار به جایی رسید که تا ساخت یک PLC آزمایشگاهی با Atmega128 پیش رفتم. یه جورایی تمام ریزه کاری های AVR توی ذهنم حک شده بود.

اما خب دیدم که اسمبلی دیگه به درد این دوره زمونه نمی‌خوره و خیلی زود شروع کردم به مرور جزوه‌های زبان C دانشگاه و کدنویسی با C رو شروع کردم. تجربه خیلی جالبی بود برام وقتی که میدیم به جای نوشتن ده‌ها خط کد اسمبلی حالا یکی دو خط C کارمو راه میندازه. ولی الان کاملا درک می‌کردم که وقتی این کد می‌خواد به اسمبلی و بعد کد ماشین تبدیل بشه چه اتفاقاتی می افته.(این باعث می شد که خطاهای برنامه‌هامو خیلی راحت‌تر نسبت به بقیه پیدا کنم)

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

 

تجربه AVR

کار اون قدری پیش رفتم که کتابخونه ها رو هم میخوندم. تجربه های اول کتابخونه خوندن واقعا وحشتناک بود. اصلا انگار نه انگار زبان C بلد بودم. گاهی انقد define و فانکشن های عجیب و غریب می‌دیدم که از پای لپ تاپم پا می‌شدم و می‌رفتم استراحت. حتی یادم میاد که با دوستام در مورد این کدهای عجیب و غریب حرف می زدم و نظر و تجریبات اون ها رو می پرسیدم. بالاخره انقدر به کدها ور رفتم و سرچ کردم و کتاب ها و یادگرفته هامو مرور کردم تا کم کم بعضی قسمت هاشو فهمیدم. و این خیلی هیجان انگیز بود.

بعضی از بچه هایی که خیلی با مرام بودن اون سال ها (۸۹ تا ۹۱) داخل فروم های الکترونیک به بقیه یاد می دادن که چطوری از کتابخونه ها استفاده کنند. اولین آموزش هایی که خوندم مربوط به AVR-GCC بود. یکی از دوستان آموزش می‌داد که چطوری با این کتابخونه با پورت های AVR کار کنیم و بعد رفت سراغ کتابخونه LCD کاراکتری و …

چند روز این آموزش ها رو پله پله خوندم و خودم کد نوشتم براشون. محیط AVR Studio که الان شده Atmel studio خطاهای عجیب و غریبی می‌گرفت. یه بار به اینکلودها ایراد می گرفت که عمدتا مربوط به آدرس دهی های غلط کتابخونه ها بود. بار دیگه به کدهایی ایراد می گرفت که اشتباه بودن و … . بالاخره تونستم نتیجه بگیرم و LCD کاراکتری رو راه انداختم. البته قبلش هم باهاش کار کرده بودم ولی با کدهای موجود در کتاب‌ها و نه کتابخونه.

atmel-studio

بعد از این‌که کار کردن با کتابخونه‌ها برام راحت‌تر شد جذب بحث‌هایی شدم که “کدوم کامپایلر بهتر از بقیه هست؟”. یه عده می‌گفتن codevision و یه عده میگفتن AVR studio. خیلی بحث ها داغ بود. افراد هر طرف دلایل خودشون رو می اوردن که چرا کامپایلرشون بهتره. من هم ساعت های طولانی این بحث ها رو می خوندم و برام نظرات گروه دوم جذاب تر بود و سعی کردم حرفه‌ای تر با AVR studio کار کنم. البته بعد سراغ codevision هم رفتم و به نوعی با هر دوشون کار کردم. بعد ها فهمیدم این بحث ها از اساس سودی نداره و بهتره ابزار مناسب خودت رو بشناسی و در جای مناسب ازش استفاده کنی. البته کامپایلر محبوب من هم چنان Atmel studio هست. خصوصا با اون قابلیت پیشنهاد کدهاش که کار رو خیلی سریع می کنه. البته ناگفته نماند که من یک پروژه فوق العاده سنگین صنعتی برای ورود و خروج کارمندان هم با codevision نوشتم که بالای هشت هزار خط شد و پیشنهاد کد هم طبیعتا نداشتم. پس خیلی نگران این چیزها نباشید اگر در شروع کار هستید.

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

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

یادتون نره که اگه خودتون تجربه‌ ای دارید یا در شروع کار هستید و سوالی دارید حتما بپرسید. شما الکترونیک و میکروکنترلر رو چطوری شروع کردید؟

درباره‌ی احسان عبداللهی

احسان عبداللهی
احسان عبداللهی هستم | کارشناسی الکترونیک خوندم و کارشناسی ارشد مخابرات | در سال 94 وب سایت میکرولرن را راه اندازی کردم | سعی کردم هر چیزی را به صورت کاربردی دنبال کنم، برای همین از کارشناسی کار با میکروکنترلرهای AVR و ARM، برنامه نویسی C و طراحی PCB را به صورت تخصصی کار کردم و از کارشناسی ارشد برنامه نویسی پایتون ، Computer vision و deep learning را به صورت تخصصی و کاربردی شروع کردم | الان هم سعی میکنم همیشه خودم را به روز نگه دارم و لذت کار کردن با دنیای برنامه نویسی و امبدد سیستم ها را به دیگران انتقال بدم

۱۴ نظر

  1. Avatar

    سلام. باتشکر فراوان از شما برای مطالب آموزنده و مفیدتان. من هیچ آشنایی قبلی با میکروکنترلر ها و به طور کلی الکترونیک ندارم. البته برنامه نویسی رو کار کردم. خواستم ازتون بپرسم برای شروع پیشنهاد شما یادگیری چه مواردی است؟ آردوینو چطور است؟

    • احسان عبداللهی

      سلام. خب این بستگی به شخص شما داره. معمولا آردوینو را کسانی یاد میگیرن که نمیخوام در الکترونیک عمق بگیرن. اگه بخواید خیلی عمقی الکترونیک و میکرو را کار کنید اردوینو زیاد مناسب نیست.

  2. Avatar

    فقط می خواستم بدونی منم نوشته های شمارو خوندم و خوشم اومده

  3. Avatar

    سلام
    گفتم حالا که مهندس تجربشونو گفتن منم از تجاربم بگم شاید جالب باشه. من دوران دبیرستان بودم (حدودا ۴، ۵ سال پیش) که خیلی خیلی اتفاقی با یک سرچ توی گوگل وارد دنیای میکروکنترلرها شدم. البته از قبل کمی آشنایی سطحی با دنیای الکترونیک داشتم و به صورت کاملا خود مختار، صرفا برای سرگرمی کمی ++C کار کرده بودم. این شد که شروع کردم به تحقیق که کدوم میکروکنترلر برای شروع یادگیری خوبه و به AVR و محیط کدویژن رسیدم. یه کتاب خریدم که متاسفانه توش بیشتر از ویزارد کدویژن استفاده شده بود و این کمی منو مایوس کرد و چند وقتی بیخیال کار شدم.
    چند ماه بعد که تابستون بود و بازم بیکار بودم با اولین سرچ اتفاقی با میکرولرنی که اگر اشتباه نکنم تازه شروع به کار کرده بود آشنا شدم. خوشبختانه آموزش های اینجا باب میل من بود و شروع کردم آموزش ها رو پیگیری کردن و حتی برای خودم از مطالب سایت جزوه نوشتم! چند وقت که گذشت با محیط اتمل استدیو آشنا شدم ازش خوشم اومد؛ این شد که کوچ کردم اتمل استدیو. البته محیط جدید اوایل کمی اذیت میکرد ولی خوبه که از مهندس عبداللهی عزیز از این بابت که به درخواستم پاسخ دادن و یک کتابخونه LCD کاراکتری برای من ایمیل کردن تشکر کنم؛ همین کتابخونه به ظاهر ساده کمک زیادی به من کرد.
    این تجربیات و علاقه به دنیای الکترونیک و دیجیتال باعث شد وارد رشته برق بشم و حتی چندتا از دوستان دانشگاهم رو با سایت آشنا کردم و جزوه ای که نوشته بودم در اختیارشون گذاشتم؛ اونها هم مثل من استفاده کردن و راضی بودن. این تجربیات تا حالا توی دانشگاه خیلی به کارم اومدن و حتی زمینه پیدا کردن کار و یادگیری برنامه نویسی میکروکنترلرهای دیگه رو برام فراهم کردن. بی اغراق میتونم بگم از زمان آشنایی با میکرولرن تا همین امروز حداقل هفته ای یک بار به امید مطلبی جدید بهش سر میزدم. اینا رو گفتم تا بدونید یک سایت و مطلب آموزشی تا کجا میتونه زندگی آدمو تغییر بده.
    ممنون از سایت خوبتون

    • احسان عبداللهی

      با درود به شما دوست عزیز
      بله دقیقا یادم هست. اگه اشتباه نکنم اواخر تابستون بود که اون کتابخونه را براتون ارسال کردم. واقعا خوشحالم که الان اینا رو ازتون می شنوم. این که تونستید وارد رشته برق بشید و به دوستانتون هم کمک کنید خیلی عالیه. امیدوارم همیشه موفق باشید.
      متاسفانه این سال ها کمی از میکرولرن دور شدم و نتونستم مثل اون سال های اول مطلب بنویسم. اما حتما دوباره شروع میکنم. به امید این که خیلی دیگه از دوستان هم جذب الکترونیک بشن و به اهدافشون برسن.

  4. Avatar

    هیجان و انگیزه برای پیشرفت کردن رو واقعا در تک تک کلماتتون میشه حس کرد و منم خوشحالم که با کمک شما این هیجان در من هم به وجود اومد من بیصبرانه منتظر نوشتن تجربیات دیگرتون هستم موفق باشید

    • احسان عبداللهی

      اگه همیشه این روحیه در ما باشه. میتونیم رشد کنیم و جلو بریم. این روحیه که شما دارید خیلی خوبه آقای عبادی. و باعث شده در این یک سال که وارد دوره های آموزشی میکرولرن شدید بتونید خیلی خوب رشد کنید.

  5. Avatar

    من تازه می خوام با میکروکنترلرها شروع کنم و هنوز دانشگاه نرفتم. در مورد آردوینو و برنامه نویسیش کمی مطلب خوندم. میشه من را راهنمایی کنید که باید از کجا شروع کنم؟

  6. Avatar

    مرسی بابت اینکه تجاربتونون را با ما به اشتراک گذاشتین☺️
    منم از کلاس های فنی حرفه ای با ۸۰۵۱ کارمو شروع کردم، فک می کنم سال ۸۲ بود،،، اما بعد از ۸۰۵۱ سراغ PIC هم رفتم.
    منم بشخصه برنامه های زیادی نوشتم و پروژه های زیادی برای صنعت انجام دادم.

  7. Avatar

    با خوندن این پست یاد ۱۰ سال پیش افتادم. روزی که من هم برای بار اول کار با میکرو را شروع کردم. البته من با C و کدویژن شروع کردم و طرف اسمبلی نرفتم چون میگفتن خیلی سخته. یادم میاد انقد ذوق داشتم که بعضی وقتا تا نزدیکای صبح برنامه می نوشتم. واقعا به نظرم الکترونیک یه عشقه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *