آموزش DSP از پایه روی پردازندههای ARM [بروزرسانی شده]
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- توسعه الگوریتمهای کارآمد DSP با استفاده از دستورالعملهای MAC و SIMD
- توسعه سفتافزار پردازش سیگنال دیجیتال بلادرنگ
- درک استراتژیهای بهینهسازی DSP در Cortex-M4 و M7
- تسلط به کتابخانه CMSIS-DSP
- توسعه و تست الگوریتم Convolution Kernel روی پردازندههای ARM
- انجام همگشت با استفاده از کتابخانه ARM CMSIS-DSP
- توسعه و تست الگوریتم تبدیل فوریه گسسته (DFT) روی پردازندههای ARM
- توسعه و تست الگوریتم تبدیل فوریه گسسته معکوس (IDFT) روی پردازندههای ARM
- توسعه و تست الگوریتم تبدیل فوریه سریع (FFT) روی پردازندههای ARM
- انجام تبدیل فوریه سریع (FFT) با استفاده از کتابخانه CMSIS-DSP
- انجام تحلیل طیفی روی سیگنالهای ECG در پردازندههای ARM
- توسعه فیلترهای Windowed-Sinc روی پردازندههای ARM
- توسعه فیلترهای پاسخ ضربه محدود (FIR) روی پردازندههای ARM
- توسعه فیلترهای پاسخ ضربه نامحدود (IIR) روی پردازندههای ARM
- راهاندازی فیلترهای پاسخ ضربه محدود (FIR) با استفاده از کتابخانه CMSIS-DSP
- راهاندازی فیلترهای پاسخ ضربه نامحدود (IIR) با استفاده از کتابخانه CMSIS-DSP
- ساخت فیلترهای غیرفعال پایینگذر و بالاگذر
- ساخت فیلترهای اصلاح شده سالن-کی
- ساخت فیلترهای بسل، چبیشف و باترورث
- کاهش نویز در سیگنالها
- ارائه درس درباره پردازش سیگنال دیجیتال (DSP)
پیشنیازهای دوره
- نیازی به تجربه برنامهنویسی ندارید. ما همه مواردی را که لازم است بدانید به شما آموزش میدهیم.
- به بورد STM32F411-NUCLEO نیاز خواهید داشت.
- ما از STM32 IDE استفاده خواهیم کرد که رایگان است.
توضیحات دوره
آیا میخواهید پردازش عملی سیگنال دیجیتال (DSP) را بدون سردرگمی یاد بگیرید؟
در این دوره DSP روی پردازندههای Arm، اینها را دریافت میکنید.
درک اصول پردازش سیگنال بدون پیچیدگی:
پیش از آنکه به پیادهسازی الگوریتمهای عملی DSP از پایه بپردازیم، این دوره اصول پردازش سیگنال را گامبهگام آموزش میدهد. در این بخش، مباحث کلیدی زیر را بررسی خواهیم کرد:
- آمار سیگنال و نویز
- کوانتیزاسیون و قضیه نمونهبرداری
- طراحی فیلتر آنالوگ
- متریکهای عملکردی فیلترهای بسل، چبیشف و باترورث
- سیستمهای خطی و ویژگیهای آنها
- فیلترهای پاسخ ضربه محدود (FIR)
- فیلترهای پاسخ ضربه نامحدود (IIR)
- برهمنهی، سنتز و تجزیه
- همگشت و ویژگیهای آن
- تبدیل فوریه گسسته (DFT) و IDFT
توسعه الگوریتمهای پردازش سیگنال دیجیتال:
ما الگوریتمهای پردازش سیگنال را که در بخش تئوری دربارهشان صحبت کردیم، به صورت عملی توسعه میدهیم. در اینجا به جای استفاده از سیگنالهای زنده، از چند سیگنال از پیش دریافت شده و تولید شده برای تست الگوریتمها استفاده میکنیم تا تمرکز روی توسعه و تست الگوریتمها بماند، نه روی دریافت سیگنال
الگوریتمهای زیر را توسعه خواهیم داد:
- الگوریتمهای آمار سیگنال - میانگین سیگنال، انحراف معیار سیگنال، واریانس سیگنال
- الگوریتم همگشت
- الگوریتم Running Sum
- الگوریتم تبدیل فوریه گسسته (DFT)
- الگوریتم تبدیل فوریه گسسته معکوس (IDFT)
همچنین برخی از این الگوریتمها را با استفاده از کتابخانه CMSIS-DSP پیادهسازی میکنیم و سپس عملکرد پویای الگوریتم خود را با نمونههای ارائه شده توسط CMSIS-DSP مقایسه خواهیم کرد.
توسعه درایورها و ساختارهای داده برای دریافت سیگنال:
برای اینکه بتوانیم سیگنالها را به درستی از دنیای بیرون دریافت کنیم و سپس الگوریتمهای پردازش سیگنال را روی آنها اعمال کنیم، ابتدا باید درایورهای مبدل آنالوگ به دیجیتال (ADC) را برای دریافت سیگنال و ساختارهای داده مناسب برای ذخیره و مدیریت سیگنال توسعه دهیم. در این بخش، موارد زیر را توسعه خواهیم کرد:
- درایور ADC bare-metal برای دریافت سیگنال
- ساختار داده First-In-First-Out برای ذخیره و مدیریت سیگنال
طراحی و پیادهسازی فیلترهای دیجیتال:
با انواع مختلف فیلترهای دیجیتال آشنا میشویم و سپس آنها را از ابتدا پیادهسازی میکنیم. موارد زیر را پیادهسازی خواهیم کرد:
- فیلتر میانگین متحرک
- فیلتر پاسخ ضربه محدود (FIR)
- فیلتر پاسخ ضربه نامحدود (IIR)
همچنین خواهیم دید که چگونه میتوان filter kernel فیلترهای پاسخ ضربه محدود را با استفاده از Matlab طراحی کرد.
کاربرد عملی DSP روی سیگنال زنده:
در این بخش، همه آموختههای خود را برای پردازش سیگنالهای زنده از ADC میکروکنترلر به کار خواهیم گرفت.
این دوره فقط درباره این نیست که کد کار کند، بلکه به شما یاد میدهد چگونه الگوریتمهای عملی DSP را بدون مدرک مهندسی پرزرقوبرق بنویسید.
شما میتوانید اصول پردازش سیگنال را بدون دردسر استنتاجهای ریاضی پیچیده درک کنید.
این دوره نسخه کاملاً بروزرسانی شده ویرایش اول دوره است. ویرایش اول توسط بیش از 3000 دانشجو و با بیش از 290 نظر گذرانده شده است.
این دوره برای چه کسانی مناسب است؟
- اگر شما توسعهدهنده باتجربه سیستمهای تعبیه شده هستید و میخواهید یاد بگیرید که چگونه به صورت حرفهای اپلیکیشنهای تعبیه شده را برای پردازندههای ARM توسعه دهید، دوره را بگذرانید.
- اگر در زمینه سیستمهای تعبیه شده کاملاً مبتدی هستید، دوره را بگذرانید.
آموزش DSP از پایه روی پردازندههای ARM [بروزرسانی شده]
-
دانلود CubeIDE 02:34
-
نصب CubeIDE 02:38
-
دریافت مستندات مورد نیاز 07:41
-
دریافت پکیج مورد نیاز برای توسعه bare-metal 21:19
-
تست راهاندازی پروژه 15:54
-
برنامهنویسی: فعالسازی واحد ممیز شناور (FPU) 16:49
-
برنامهنویسی: ترسیم نمودار سیگنالها با استفاده از Analyzer منطق داخلی 09:15
-
برنامهنویسی: درایور UART - تحلیل مستندات 12:13
-
برنامهنویسی: درایور UART - پیکربندی پین GPIO 09:17
-
برنامهنویسی: درایور UART - پیکربندی پارامترهای پروتکل 09:30
-
برنامهنویسی: درایور UART - تابع ارسال 05:24
-
برنامهنویسی: درایور UART - تست درایور 08:31
-
برنامهنویسی: درایور UART - ترسیم نمودار سیگنالها 12:40
-
برنامهنویسی: یکپارچهسازی کتابخانه CMSIS-DSP 11:56
-
برنامهنویسی: تست float32_t در CMSIS-DSP 17:17
-
مقدمهای بر سیگنالها 04:07
-
میانگین و انحراف معیار سیگنال 04:06
-
برنامهنویسی: توسعه الگوریتم میانگین سیگنال 07:40
-
برنامهنویسی: توسعه الگوریتم واریانس سیگنال 07:11
-
برنامهنویسی: توسعه الگوریتم انحراف معیار سیگنال 03:26
-
برنامهنویسی: محاسبه انحراف معیار سیگنال با استفاده از CMSIS-DSP 08:25
-
درک قضیه نمونهبرداری 09:24
-
فیلتر غیرفعال پایینگذر 07:30
-
فیلتر غیرفعال بالاگذر 04:48
-
فیلتر فعال 05:49
-
فیلترهای بسل، چبیشف و باترورث 06:44
-
بررسی ویژگیهای پشتیبانی DSP در Arm Cortex-M 12:50
-
مقدمهای بر سیستمهای خطی 04:47
-
درک برهمنهی 05:00
-
تجزیه ضربه و پله 04:31
-
مقدمهای بر همگشت 03:22
-
عملیات همگشت 06:44
-
بررسی خروجی همگشت 04:45
-
معادله جمع همگشت 02:05
-
برنامهنویسی: تحلیل سیگنالهای ورودی همگشت 16:30
-
برنامهنویسی: توسعه الگوریتم همگشت 15:10
-
برنامهنویسی: تحلیل سیگنال خروجی همگشت 11:42
-
برنامهنویسی: محاسبه همگشت با استفاده از CMSIS-DSP 06:24
-
برنامهنویسی: توسعه درایور SysTick برای اندازهگیری کارایی پویا 12:39
-
برنامهنویسی: اندازهگیری عملکرد پویای CMSIS-DSP - بخش 1 10:48
-
برنامهنویسی: اندازهگیری عملکرد پویای CMSIS-DSP - بخش 2 08:04
-
نگاهی دقیقتر به تابع دلتا 05:41
-
First Difference و Running Sum 01:55
-
برنامهنویسی: پیادهسازی الگوریتم Running Sum 10:29
-
مقدمهای بر تبدیل فوریه 05:29
-
موتور تبدیل فوریه گسسته (DFT) 04:11
-
تبدیل فوریه گسسته معکوس (IDFT) 04:32
-
برنامهنویسی: توسعه الگوریتم تبدیل فوریه گسسته (DFT) 24:18
-
برنامهنویسی: تحلیل سیگنال ECG برای IDFT 07:16
-
برنامهنویسی: توسعه الگوریتم IDFT - بخش 1 08:20
-
برنامهنویسی: توسعه الگوریتم IDFT - بخش 2 17:32
-
برنامهنویسی: تحلیل مستندات 14:02
-
برنامهنویسی: لیست مراحل 07:01
-
برنامهنویسی: پیادهسازی تابع Clock Config - بخش 1 10:09
-
برنامهنویسی: پیادهسازی تابع Clock Config - بخش 2 18:19
-
برنامهنویسی: تست Clock Tree با اجرای IDFT در 100MHz 07:32
-
برنامهنویسی: تولید سیگنالها با Matlab 12:06
-
برنامهنویسی: ترکیب سیگنالها با Matlab 09:37
-
برنامهنویسی: طراحی kernel فیلتر پایینگذر در Matlab 14:05
-
برنامهنویسی: طراحی kernel فیلتر بالاگذر در Matlab 06:24
-
برنامهنویسی: تحلیل مؤلفههای فرکانسی سیگنالها در Matlab 08:22
-
برنامهنویسی: طراحی فیلترها با استفاده از FDATool در Matlab 06:10
-
برنامهنویسی: پیادهسازی فیلتر دیجیتال پایینگذر روی دستگاه تعبیه شده 15:58
-
برنامهنویسی: پیادهسازی فیلتر دیجیتال بالاگذر روی دستگاه تعبیه شده 08:21
-
برنامهنویسی: مقایسه نتایج DFT دستگاه تعبیه شده با Matlab 08:03
-
برنامهنویسی: پیادهسازی فیلتر میانگین متحرک برای هموارسازی سیگنالهای نویزی 16:44
-
برنامهنویسی: توسعه درایور ADC bare-metal - تحلیل مستندات 11:34
-
برنامهنویسی: توسعه درایور ADC bare-metal - تابع مقداردهی اولیه 14:11
-
برنامهنویسی: توسعه درایور ADC bare-metal - تست درایور 11:50
-
برنامهنویسی: پیادهسازی فیلتر FIR لایو نمونه به نمونه - بخش 1 18:11
-
برنامهنویسی: پیادهسازی فیلتر FIR لایو نمونه به نمونه - بخش 2 24:46
-
برنامهنویسی: پیادهسازی فایل رابط 07:29
-
برنامهنویسی: پیادهسازی تابع مقداردهی اولیه 02:45
-
برنامهنویسی: پیادهسازی تابع Fifo_Put 05:39
-
برنامهنویسی: پیادهسازی تابع Fifo_Get 03:09
-
برنامهنویسی: تست FIFO 07:03
-
برنامهنویسی: تحلیل مستندات 06:01
-
برنامهنویسی: پیادهسازی تابع مقداردهی اولیه 10:02
-
برنامهنویسی: تست Thread پسزمینه 14:07
-
برنامهنویسی: وارد کردن بلوک از داده حسگر به FIFO 10:57
-
برنامهنویسی: خواندن از FIFO 23:16
-
برنامهنویسی: اعمال فیلترهای FIR روی بلوک از داده حسگر 15:31
-
برنامهنویسی: انجام همگشت روی بلوک از داده حسگر با استفاده از CMSIS-DSP 05:41
-
برنامهنویسی: اعمال فیلترهای میانگین متحرک روی بلوک از داده حسگر 05:20
-
مقدمه 01:09
-
بروزرسانی و نصب پکهای جدید 05:58
-
افزایش فرکانس ساعت سیستم 13:07
-
پیکربندی Analyzer منطق - بخش 1 08:52
-
پیکربندی Analyzer منطق - بخش 2 02:10
-
ترسیم نمودار سیگنالها روی Analyzer منطق - بخش 1 10:34
-
ترسیم نمودار سیگنالها روی Analyzer منطق - بخش 2 03:54
-
پیکربندی فیلتر پایینگذر FIR - بخش 1 08:07
-
پیکربندی فیلتر پایینگذر FIR - بخش 2 03:04
-
تست فیلتر پایینگذر - بخش 1 05:03
-
تست فیلتر پایینگذر - بخش 2 03:25
-
تولید موج سینوسی - بخش 1 04:51
-
تولید موج سینوسی - بخش 2 04:35
-
راهاندازی پروژه 06:51
-
پیکربندی فیلتر FIR 07:21
-
پیکربندی مولد سینوسی 04:24
-
فیلترینگ سیگنال نویزی 07:29
-
ترسیم نمودار نتایج فیلتر 04:46
-
پیکربندی Kernel بلادرنگ 04:37
-
ایجاد Threads 05:58
-
همزمانسازی Threads 07:05
-
ماهیت یک سیگنال 02:26
-
میانگین و انحراف معیار 04:10
-
کدنویسی: توسعه الگوریتم میانگین - بخش 2 12:10
-
کدنویسی: توسعه الگوریتم میانگین - بخش 2 03:18
-
کدنویسی: توسعه الگوریتم میانگین - بخش 3 08:26
-
کدنویسی: توسعه الگوریتم واریانس 08:21
-
کدنویسی: محاسبه واریانس سیگنال با استفاده از CMSIS-DSP 02:20
-
کدنویسی: توسعه الگوریتم انحراف معیار 03:42
-
کدنویسی: محاسبه انحراف معیار سیگنال با استفاده از CMSIS-DSP 01:16
-
نسبت سیگنال به نویز 00:58
-
کوانتیزاسیون 02:31
-
قضیه نایکوئیست (قضیه نمونهبرداری) 02:15
-
فیلتر غیرفعال پایینگذر 05:59
-
فیلتر غیرفعال بالاگذر 02:29
-
فیلتر اصلاح شده سالن-کی 02:19
-
فیلترهای بسل، چبیشف و باترورث 03:28
-
مقایسه عملکرد فیلترهای بسل، چبیشف و باترورث 02:36
-
انکودینگ اطلاعات: انکودینگ در حوزه زمان و حوزه فرکانس 01:27
-
از پردازش سیگنال دیجیتال (DSPs) تا کنترلرهای سیگنال دیجیتال (DSCs) 02:58
-
ویژگیهای کنترلرهای سیگنال دیجیتال 01:16
-
بررسی واحد ممیز شناور (FPU) 02:08
-
بررسی قابلیتهای SIMD در Cortex-M 01:32
-
بررسی قابلیتهای MAC در Cortex-M 01:26
-
بررسی CMSIS-DSP 03:39
-
تایپهای داده 01:43
-
قواعد نامگذاری سیگنالها 01:17
-
همگن بودن سیستم 01:32
-
جمعپذیری سیستم 00:33
-
تغییرناپذیری جابجایی سیستم 01:06
-
سنتز و تجزیه 02:11
-
تجزیه ضربهای 02:10
-
تجزیه پلهای 01:51
-
مقدمهای بر همگشت 01:33
-
تابع دلتا و پاسخ ضربه 02:13
-
Kernel همگشت - بخش 1 07:22
-
Kernel همگشت - بخش 2 00:53
-
تحلیل سمت خروجی و معادله جمع همگشت 04:20
-
کدنویسی: توسعه الگوریتم همگشت - بخش 1 07:36
-
کدنویسی: توسعه الگوریتم همگشت - بخش 2 07:19
-
کدنویسی: توسعه الگوریتم همگشت - بخش 3 05:24
-
کدنویسی: همگشتی سیگنالها با استفاده از CMSIS-DSP - بخش 1 08:35
-
کدنویسی: همگشتی سیگنالها با استفاده از CMSIS-DSP - بخش 2 06:15
-
کدنویسی: همگشتی سیگنالها با استفاده از CMSIS-DSP - بخش 3 09:15
-
ویژگی همانی همگشت 01:30
-
Running Sum و First Difference 02:02
-
کدنویسی: توسعه الگوریتم Running Sum 09:54
-
کدنویسی: توسعه الگوریتم First Difference 04:28
-
مقدمهای بر تحلیل فوریه 01:22
-
مقدمهای بر تبدیل فوریه گسسته 04:50
-
توابع پایه DFT 03:23
-
استخراج IDFT معکوس 03:12
-
محاسبه تبدیل فوریه گسسته (DFT) 03:55
-
کدنویسی: توسعه الگوریتم DFT - بخش 1 07:12
-
کدنویسی: توسعه الگوریتم DFT - بخش 2 04:59
-
کدنویسی: توسعه الگوریتم DFT - بخش 3 03:30
-
کدنویسی: تبدیل فوریه گسسته معکوس یک سیگنال ECG - بخش 1 08:00
-
کدنویسی: تبدیل فوریه گسسته معکوس یک سیگنال ECG - بخش 2 07:11
-
کدنویسی: تبدیل فوریه گسسته معکوس یک سیگنال ECG - بخش 3 17:52
-
کدنویسی: تبدیل فوریه گسسته معکوس یک سیگنال ECG - بخش 4 03:20
-
تقارن بین حوزه زمان و حوزه فرکانس - دوگانگی 00:55
-
نمادگذاری قطبی 02:50
-
کدنویسی: تبدیل دکارتی به قطبی 08:41
-
کدنویسی: تبدیل قطبی به دکارتی 06:48
-
مقدمهای بر تحلیل طیفی 02:31
-
پاسخ فرکانسی 03:34
-
سیستم اعداد مختلط 02:05
-
نمایش قطبی اعداد مختلط 01:35
-
رابطه اویلر 01:35
-
نمایش سینوسوئیدها 01:57
-
نمایش سیستمها 01:34
-
مقدمهای بر تبدیل فوریه مختلط 01:43
-
همارزی ریاضی 01:38
-
معادله DFT مختلط 00:36
-
مقایسه DFT حقیقی و DFT مختلط 03:17
-
بررسی نحوه کار FFT 08:17
-
درک پیچیدگی محاسبه مستقیم DFT 02:35
-
الگوریتم FFT از نوع Decimation-in-Time چگونه کار میکند؟ 09:00
-
مقدمهای بر فیلترهای دیجیتال 03:14
-
filter kernel 01:49
-
پاسخ ضربه، پله و فرکانس 01:16
-
درک مقیاس لگاریتمی و دسیبل 02:59
-
نمایشهای اطلاعاتی یک سیگنال 03:57
-
پارامترهای حوزه زمان 04:20
-
پارامترهای حوزه فرکانس 01:25
-
طراحی فیلترهای دیجیتال با روش وارونه طیفی 04:36
-
طراحی فیلترهای دیجیتال با روش برگشت طیفی 02:50
-
دستهبندی فیلترهای دیجیتال 01:56
-
فیلتر میانگین متحرک 04:11
-
کدنویسی: توسعه الگوریتم فیلتر میانگین متحرک - بخش 1 10:14
-
کدنویسی: توسعه الگوریتم فیلتر میانگین متحرک - بخش 2 03:01
-
فیلتر میانگین متحرک چند گذر 02:19
-
فیلتر میانگین متحرک بازگشتی 04:33
-
کدنویسی: توسعه الگوریتم فیلتر میانگین متحرک بازگشتی - بخش 1 05:45
-
مقدمهای بر فیلترهای بازگشتی 00:46
-
معادله بازگشت 01:50
-
فیلتر بازگشتی تکقطبی 02:52
-
فیلترهای دیجیتال چبیشف 01:57
-
مقدمهای بر فیلترهای Windowed-Sinc 00:47
-
تابع سینوسی و فیلتر سینوسی کوتاه شده 03:15
-
پنجره Blackman 01:00
-
معادلات پنجرههای Hamming و Blackman 02:34
-
طراحی فیلتر Windowed Sinc 02:34
-
درک نحوه کار روش Overlap-Add 04:09
-
درک نحوه کار همگشت FFT 04:04
-
درک نمایش کسری 04:51
-
مقدمهای بر CMSIS-RTOS 02:27
-
APIs مدیریت Thread 09:38
-
کدنویسی: ایجاد Thread - بخش 1 02:36
-
کدنویسی: ایجاد Thread - بخش 2 07:45
-
مدیریت osTime 18:25
-
راهاندازی تایمرهای مجازی 01:52
-
ایجاد Threads دورهای 10:48
-
FreeRTOS چیست؟ 01:16
-
ویژگیهای FreeRTOS 01:19
-
نام متغیرهای FreeRTOS 00:36
-
نام توابع FreeRTOS 00:58
-
تابع Task 01:09
-
ایجاد Task 02:56
-
کدنویسی: ایجاد Task Processing..
-
کدنویسی: اولویتهای Task 03:52
-
ایجاد تأخیرهای کارآمد با ()vTaskDelay 04:28
-
آشنایی با برخی دستورالعملهای مفید SIMD 03:34
-
آشنایی با برخی دستورالعملهای مفید SIMD - بخش 1 02:50
-
بررسی دستورالعملهای حسابی DSP با 32 بیت 05:57
-
بررسی دستورالعملهای حسابی DSP با 32 بیت - بخش 2 02:43
-
دستورالعملهای حسابی 16 بیتی 05:15
-
بررسی دستورالعملهای حسابی 8 بیتی 01:41
-
بررسی دستورالعملهای ممیز شناور 05:21
-
استراتژیهای بهینهسازی - بخش 1 05:19
-
استراتژیهای بهینهسازی - بخش 2 03:02
-
بررسی بورد STM32F4-DISCOVERY 01:15
-
بررسی بورد STM32F4-NUCLEO 01:01
-
دانلود Keil uVision 5 01:18
-
نصب Keil uVision 5 06:23
-
بررسی Keil uVision 5 10:02
-
تغییر کامپایلر 01:53
-
راهاندازی STM32CubeMX 04:06
-
بررسی STM32CubeMX 09:00
-
بررسی STM32CubeMX (ادامه) 02:48
-
بررسی بروزرسانیها و سفتافزار 02:01
-
بررسی پیکربندی لوازم جانبی 17:07
-
پروژه ورودی و خروجی CubeMX 10:29
-
پیکربندی Clock Tree 04:56
-
تب پیکربندی 02:27
-
دانلود Matlab 05:37
-
نصب Matlab 03:54
-
بررسی Matlab 07:08
-
کدنویسی: نوشتن در فایل 04:10
-
کدنویسی: خواندن از فایل Processing..
-
سخن پایانی 00:17
مشخصات آموزش
آموزش DSP از پایه روی پردازندههای ARM [بروزرسانی شده]
- تاریخ به روز رسانی: 1405/04/02
- سطح دوره:Alls
- تعداد درس:255
- مدت زمان :25:26:03
- حجم :14.1GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy