آموزش برنامه‌نویسی نرم‌افزار تعبیه‌شده با C++ - آخرین آپدیت

دانلود Embedded Software Development using C++

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:

طراحی شیءگرا و برنامه‌نویسی کاربردی HAL روی STM32 و ARM Cortex-M

آنچه در این دوره خواهید آموخت:

  • توانایی طراحی و توسعه کتابخانه‌ها با استفاده از C++ برای واسطه‌گذاری STM32 با دستگاه‌های خارجی.
  • توانایی توسعه نرم‌افزار جاسازی شده با استفاده از درایورهای HAL STM32Cube و C++.
  • توانایی به کارگیری اصول طراحی شیءگرا در حل مسائل نرم‌افزار جاسازی شده.
  • توانایی طراحی، توسعه و اجرای بازی‌ها روی میکروکنترلر STM32، مانند بازی دوز (Tic Tac Toe).
  • توانایی طراحی و توسعه ماشین‌های رباتیک دستی و خودران با استفاده از میکروکنترلر STM32.
  • توانایی طراحی و توسعه نرم‌افزار جاسازی شده با تدوین الگوریتم‌ها و استخراج کدهای عملی از آن‌ها.
  • توانایی استفاده از IDE Keil uVision برای توسعه برنامه‌های C++ جاسازی شده.
  • توانایی استفاده از IDE STM32CubeIDE برای توسعه برنامه‌های C++ جاسازی شده.
  • توانایی انتقال کتابخانه‌ها و کدهای کاربردی از Keil به STM32CubeIDE با حداقل تلاش.

پیش‌نیازهای دوره:

  • یک برد STM32
  • یک ماتریس کی‌پد 4x4
  • یک LCD 20x4
  • یک پتانسیومتر 10k
  • یک بردبورد بدون نیاز به لحیم‌کاری (Solderless breadboard)
  • سیم‌های رابط
  • درایور موتور L298N
  • شاسی خودروی 4 چرخ
  • ماژول بلوتوث HC05
  • سروو موتور SG90
  • 4 چرخ
  • 4 موتور گیربکس DC از نوع TT
  • 3 سنسور التراسونیک HC-SR04
  • باتری 12 ولت
  • دانش برنامه‌نویسی پایه (C امبدد می‌تواند مفید باشد)
  • آشنایی با برنامه‌نویسی HAL STM32Cube (درایورهای GPIO)

دوره "توسعه نرم‌افزار جاسازی شده با C++" به کاربرد برنامه‌نویسی شیءگرا (OOP) در سیستم‌های امبدد می‌پردازد. C++ به دلیل قابلیت‌های فراوانی که پیاده‌سازی OOP را آسان می‌کند و همچنین امکان برنامه‌نویسی در سطح سخت‌افزار را فراهم می‌آورد، زبان انتخابی این دوره است. با این حال، C++ هرچند غنی و فوق‌العاده است، اما استفاده نادرست از آن می‌تواند منجر به افزایش بی‌رویه حجم کد (code bloat) شود. در این دوره، ویژگی‌های خاصی از زبان C++ انتخاب شده‌اند تا اطمینان حاصل شود که برنامه‌های توسعه‌یافته از اصول زیر پیروی می‌کنند:

  • سادگی
  • خوانایی
  • قابلیت نگهداری

مفاهیم اصلی OOP مانند انتزاع، کپسوله‌سازی و چندریختی در این دوره پوشش داده می‌شوند. هدف این دوره، ارائه این سبک از برنامه‌نویسی به ساده‌ترین و دوستانه‌ترین شکل ممکن است، بنابراین مبحث وراثت (inheritance) پوشش داده نمی‌شود. برای سرعت بخشیدن به توسعه کتابخانه‌ها و برنامه‌های کاربردی، از APIهای STM32Cube HAL استفاده شده و برنامه‌نویسی در سطح رجیستر مستقیم به حداقل می‌رسد. در طول این دوره از برد STM32F401RE Nucleo استفاده می‌شود و Keil uVision5 MDK و STM32CubeIDE برای توسعه و اشکال‌زدایی نرم‌افزار به کار می‌روند. از آنجا که دوره عمدتاً از HAL استفاده می‌کند، هر کسی که این دوره را می‌گذراند می‌تواند به دلیل قابلیت حمل HAL، از یک میکروکنترلر STM32 متفاوت استفاده کرده و همان کد را (با تغییرات اندک) اجرا کند.

بیشتر نرم‌افزارهای جاسازی شده به زبان C و با رویکرد رویه‌ای (procedural) نوشته می‌شوند. C++ جایگزینی برای C نیست و OOP نیز جایگزینی برای برنامه‌نویسی رویه‌ای نیست. اما C++ ویژگی‌هایی را فراهم می‌کند که نرم‌افزار جاسازی شده ما می‌تواند از آن‌ها بهره‌مند شود و در صورت استفاده صحیح، برای توسعه کاربردها بسیار سودمند خواهد بود. در نهایت، این موضوع به ترجیح و مورد استفاده بستگی دارد و این دوره تضمین می‌کند که کاربردپذیری زبان و پارادایم برنامه‌نویسی (OOP) منعکس و قدردانی شود.

در این دوره با موارد زیر آشنا خواهید شد:

  • برنامه‌نویسی شیءگرا در یک سیستم امبدد و کاربرد موارد زیر:

    • کلاس‌ها، کپسوله‌سازی، انتزاع، چندریختی
    • کلمات کلیدی Private و Public
    • اشاره‌گرها (Pointers) و ارجاع‌ها (References)
    • ایمنی نوع (Type safety)
  • توسعه کتابخانه‌ها با استفاده از C++، درایورهای STM32Cube HAL و اطلاعات موجود در مستندات برای واسطه‌گذاری میکروکنترلر STM32 با قطعات خارجی مانند:

    • LCD 20x4
    • کی‌پد 4x4
    • سروو SG90
    • ماژول بلوتوث HC05
    • سنسور التراسونیک HC-SR04
    • درایور موتور L298N
  • تولید کد با استفاده از STM32CubeMx و همچنین اصلاح و سفارشی‌سازی کد تولید شده توسط CubeMx متناسب با برنامه در حال توسعه.
  • برنامه‌نویسی HAL GPIO، UART و Timer روی STM32.
  • استفاده از تایمرها برای تولید سیگنال PWM و همچنین ورودی کپچر PWM برای تعیین چرخه کاری سیگنال ورودی.
  • طراحی نرم‌افزار قبل از توسعه یک کتابخانه یا کد کاربردی.
  • تست و اشکال‌زدایی کد در Keil uVision 5 و STM32CubeIDE.

از آنجا که این دوره پروژه‌محور است، دانشجویان حداقل دو پروژه را خواهند ساخت که برخی از آن‌ها عبارتند از:

  • یک کنسول بازی دوز (Tic-tac-toe)
  • یک ماشین خودران

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

ملزومات دوره:

برای بهره‌برداری حداکثری از دوره، دانشجویان ملزم به تهیه برخی قطعات سخت‌افزاری و نصب نرم‌افزارهای مورد نیاز هستند تا بتوانند درس‌ها، تمرین‌ها و پروژه‌ها را به راحتی دنبال کنند.

نرم‌افزارهای مورد نیاز:

  • Keil uVision5 MDK
  • محیط زمان اجرای جاوا (Java runtime environment) (برای STM32CubeMx ضروری است)
  • STM32CubeMx
  • STM32CubeIDE (برای بردهایی که Keil uVision از HAL آن‌ها پشتیبانی نمی‌کند)

همچنین از دانشجویان انتظار می‌رود با برنامه‌نویسی STM32 در سطح پایه آشنا باشند، یعنی درک درایورها و رجیسترهای پریفرال‌های اساسی (GPIO، UART و Timers در حالت شمارش عادی). آشنایی با C امبدد نیز می‌تواند مفید باشد. هم Keil uVision 5 و هم STM32CubeIDE قابل استفاده هستند. برای بردهایی که در زنجیره ابزار Keil uVision از HAL آن‌ها پشتیبانی نمی‌شود (مانند STM32 bluepill)، می‌توان از STM32CubeIDE استفاده کرد.

فرآیند آموزش و یادگیری در این دوره فراتر از درس‌نامه‌ها و تمرین‌ها است. دانشجویان همیشه می‌توانند از طریق بخش پرسش و پاسخ با مدرس ارتباط برقرار کنند. این بخش بسیار فعال است و به سؤالات ظرف 24 ساعت پاسخ داده خواهد شد.


سرفصل ها و درس ها

مقدمه Introduction

  • معرفی دوره Course Introduction

  • منابع دوره Resources for the course

  • خرید قطعات Purchasing the components

مرور سریع Refresher

  • عملیات بیتی Bit Manipulation

  • عملیات بیتی Bit Manipulation

  • CMSIS CMSIS

  • CMSIS CMSIS

  • HAL HAL

  • درک HAL، CMSIS و رجیسترهای سخت‌افزاری Understanding the HAL, CMSIS and hardware registers

  • برنامه‌نویسی شیءگرا درباره چیست؟ What is Object-oriented programming about?

  • مروری بر اکوسیستم STM32 Overview of the STM32 ecosystem

توسعه کتابخانه موتور سروو Servo Motor Library Development

  • مقدمه‌ای بر موتور سروو Introduction to Servo motor

  • سروو: ایجاد فایل‌های پروژه Keil uVision Servo: Creating Keil uVision Project Files

  • سروو: تولید کد CubeMx Servo: CubeMx Code Generation

  • سروو: کلاس سروو بخش 1 Servo: Servo Class Part 1

  • سروو: کلاس سروو بخش 2 Servo: Servo Class Part 2

  • محاسبه رجیستر ARR تایمر Timer ARR register calculation

  • سروو: نمایش کد توسعه یافته در درس قبلی Servo: Demonstration of code developed in previous lecture

  • کد منبع موتور سروو Servo Motor Source Code

  • راه‌اندازی موتور سروو Driving a Servo Motor

توسعه کتابخانه HC05 HC05 Library Development

  • مقدمه‌ای بر ماژول بلوتوث HC05 Introduction to HC05 Bluetooth module

  • HC05: تولید کد CubeMx HC05: CubeMx Code Generation

  • HC05: کلاس HC05 بخش 1 HC05: HC05 Class Part 1

  • HC05: کلاس HC05 بخش 2 HC05: HC05 Class Part 2

  • HC05: نمایش کد توسعه یافته در درس قبلی HC05: Demonstration of code developed in previous lecture

  • کد منبع HC05 HC05 Source Code

پروژه 1: سرووی کنترل شده با بلوتوث Project 1: Bluetooth Controlled Servo

  • سرووی کنترل شده با بلوتوث Bluetooth Controlled Servo

  • نمایش کد توسعه یافته در درس قبلی Demonstration of code developed in previous lecture

  • کد منبع سرووی کنترل شده با بلوتوث Bluetooth Controlled Servo Source Code

توسعه کتابخانه LCD LCD Library Development

  • مقدمه‌ای بر LCD 20x4 Introduction to 20x4 LCD

  • مقدمه‌ای بر انتقال داده و دستور LCD Intro to LCD data and instruction transfer

  • درک حافظه DDRAM و دستورات حالت 4 بیتی Understanding the DDRAM memory and 4-bit mode instructions

  • پالس فعال‌سازی و توالی مقداردهی اولیه نرم‌افزاری Enable-pulse and Software initialization sequence

  • کدهای آدرس LCD LCD Address Codes

  • طراحی کلاس LCD LCD Class design

  • LCD: معرفی کلاس LCD LCD: LCD Class Intro

  • LCD: تکمیل سازنده LCD: Completing the constructor

  • LCD: نوشتن نیم‌بایت (Nibble) LCD: Write Nibble

  • LCD: تنظیم موقعیت مکان‌نما LCD: Setting Cursor Position

  • LCD: متد پرینت (کاراکترها) LCD: Print Method (Characters)

  • LCD: مثال نمایش 1 LCD: Display Example 1

  • LCD: نمایش درس قبلی LCD: Demonstration of previous lecture

  • الگوریتم عدد صحیح به رشته بخش 1 Integer to String Algorithm Part 1

  • الگوریتم عدد صحیح به رشته بخش 2 Integer to String Algorithm Part 2

  • LCD: تابع عدد صحیح به رشته LCD: Integer to String function

  • LCD: متد پرینت (اعداد صحیح I) LCD: Print Method (Integers I)

  • LCD: متد پرینت (اعداد صحیح II) LCD: Print Method (Integers II)

  • LCD: مثال نمایش 2 LCD: Display Example 2

  • LCD: نمایش درس قبلی LCD: Demonstration of previous lecture

  • LCD: مثال نمایش 3 LCD: Display Example 3

  • LCD: نمایش درس قبلی LCD: Demonstration of previous lecture

  • کد منبع LCD LCD Source Code

توسعه کتابخانه صفحه کلید Keypad Library Development

  • مقدمه‌ای بر صفحه کلید 4x4 Introduction to 4x4 Keypad

  • صفحه کلید: تمرین Keypad: Exercise

  • صفحه کلید: کلاس صفحه کلید (سازنده) Keypad: Keypad Class (Constructor)

  • صفحه کلید: ماتریس صفحه کلید (آرایه دو بعدی) Keypad: Keypad matrix (2D array)

  • صفحه کلید: انتخاب یک ردیف Keypad: Selecting a row

  • صفحه کلید: دریافت فشار کلید طولانی Keypad: Getting a long keypress

  • صفحه کلید: مثال 1 (با نمایش) Keypad: Example 1 (with demonstration)

  • صفحه کلید: دی‌بانس (De-bouncing) Keypad: De-bouncing

  • صفحه کلید: دریافت فشار کلید کوتاه Keypad: Getting a short keypress

  • صفحه کلید: مثال 2 (با نمایش) Keypad: Example 2 (with demonstration)

  • کد منبع صفحه کلید برای فشار کلید طولانی Keypad Source Code for Long Keypress

  • کد منبع صفحه کلید برای فشار کلید کوتاه Keypad Source Code for Short Keypress

  • تکلیف: صفحه کلید + LCD Assignment: Keypad + LCD

پروژه 2: دوز (Tic Tac Toe) Project 2: Tic Tac Toe

  • مقدمه Introduction

  • سخت‌افزار The Hardware

  • معرفی بازی Game Intro

  • منوی بازی Game menu

  • ویدیوی دمو: قوانین Demo video: Rules

  • ویدیوی دمو: شروع بازی Demo video: Start the game

  • نمونه گیم‌پلی Sample gameplay

  • کد منبع پروژه دوز Tic-tac-toe Project Source Code

توسعه کتابخانه HCSR04 HCSR04 Library Development

  • مقدمه‌ای بر سنسور HCSR04 Introduction to HCSR04 sensor

  • HCSR04: مقداردهی اولیه پین تریگر HCSR04: Trigger Pin Initialization

  • کاربرد حالت ورودی PWM به پین اکو Application of PWM input mode to the Echo pin

  • HCSR04: تولید کد CubeMx HCSR04: CubeMx Code Generation

  • HCSR04: سازنده HCSR04 HCSR04: HCSR04 Constructor

  • HCSR04: اندازه‌گیری فاصله HCSR04 HCSR04: HCSR04 Distance Measurement

  • HCSR04: نمونه کاربرد HCSR04: Sample Application

  • کد منبع HCSR04 HCSR04 Source Code

  • HCSR04: تمرین با دمو HCSR04: Exercise with demo

توسعه کتابخانه موتور DC DC Motor Library Development

  • مقدمه‌ای بر درایور موتور L298N Introduction to the L298N motor driver

  • اطلاعات بیشتر در مورد درایور موتور L298N More about the L298N motor driver

  • موتور گیربکس TT TT gear motor

  • کتابخانه موتور DC DC Motor Library

  • تمرین: توسعه یک برنامه برای راه‌اندازی موتور DC Exercise: Developing an application to drive a DC motor

پروژه 3: خودروی خودران Project 3: Self-driving car

  • نیازمندی‌ها Requirements

  • الگوریتم بخش 1 Algorithm Part 1

  • الگوریتم بخش 2 Algorithm Part 2

  • ویدیوی دمو Demo video

  • کد منبع خودروی خودران Self-driving car Source Code

STM32CubeIDE STM32CubeIDE

  • آشنایی با STM32CubeIDE Getting familiar with STM32CubeIDE

  • توسعه یک پروژه C++ در STM32CubeIDE: کلاس دکمه Developing a C++ project in STM32CubeIDE: Button Class

پاداش: توسعه کتابخانه BME280 Bonus: BME280 Library Development

  • ارتباط I2C I2C Communication

  • بیشتر در مورد ارتباط I2C More on I2C Communication

  • مقایسه ارتباط سریال و موازی Comparing Serial and Parallel Communication

  • سنسور BME280 BME280 Sensor

  • درک توالی ارتباط I2C Understanding the I2C communication sequence

  • درک سنسور BME280 Understanding the BME280 sensor

نمایش نظرات

آموزش برنامه‌نویسی نرم‌افزار تعبیه‌شده با C++
جزییات دوره
7 hours
90
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
2,308
3.7 از 5
دارد
دارد
دارد
Olaoluwa Raji
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Olaoluwa Raji Olaoluwa Raji

سیستم های جاسازی شده || میکروکنترلر || مدارها