aKaReZa 125 - RCS, AVR - PART L
توی این قسمت از پروژه RCS وارد فاز جدیدی از توسعه نرمافزار میشیم. از نحوه ساخت Branch جدید برای توسعه ایمن کد رو بررسی میکنیم. بعد، ساختار State Machine رو برای کنترل وضعیت سیستم پیادهسازی میکنیم و کتابخانههای مورد نیاز پروژه رو اضافه میکنیم. در ادامه، Scheduler پروژه رو تنظیم میکنیم، تسکهای مربوط به خروجیها (Outputs Task) و نمایشگر (Display Task) رو توسعه میدیم و حالتهای مختلف سیستم (System States) رو هم اضافه میکنیم. در انتها، مکانیزم One-Time Operations و حالتهای مختلف GSM مورد بررسی قرار میگیره و در نهایت تغییرات پروژه روی گیتهاب Push میشن.
مطالبی که توی این ویدئو یاد میگیریم:
نحوه ایجاد و مدیریت شاخه (Branch) در Git
پیادهسازی State Machine برای کنترل رفتار سیستم
اضافه کردن کتابخانههای موردنیاز به پروژه
طراحی و اجرای Scheduler برای اجرای Taskها
توسعه تسکهای خروجی و بهروزرسانی نمایشگر
بررسی State های مختلف ماژول GSM
ارسال تغییرات branch به گیتهاب (git push)
لینک پیش نمایش ویدئو در اینستاگرام:
https://www.instagram.com/p/DQs-ZJKEieX/
لینک کامل ویدئو در یوتیوب:
https://youtu.be/RPZP1AIJVvo
صفحه گیتهاب من:
https://github.com/aKaReZa75
aKaReZa 126 - STM32, HAL, GPIO
توی این قسمت از آموزش STM32، میریم سراغ یکی از پایهایترین و مهمترین مباحث یعنی پریفرال GPIO با استفاده از HAL Library.گامبهگام نحوهی پیکربندی پایهها در حالتهای مختلف مثل Input، Output، Alternate Function و Analog رو بررسی میکنیم و بعد در محیط CubeMX یک پروژهی جدید ایجاد میکنیم تا پیکربندی پایهها رو بهصورت عملی ببینیم. در ادامه با توابع کاربردی مثل HAL_GPIO_WritePin()، HAL_GPIO_TogglePin() و HAL_GPIO_ReadPin() آشنا میشیم و عملکردشون رو تست میکنیم. همچنین دربارهی زمانبندی با تابع HAL_Delay()، مفهوم GPIO Speed و نکات مهم اون هم صحبت میکنیم.
مطالبی که توی این ویدئو یاد میگیریم:
آشنایی با مفهوم GPIO در STM32
پیکربندی پایهها در حالت Input، Output، Alternate Function و Analog
ایجاد پروژه جدید در CubeMX
بررسی تابع MX_GPIO_Init() و نحوهی مقداردهی اولیه پایهها
کنترل پایهها با توابع HAL_GPIO_WritePin و HAL_GPIO_TogglePin
خواندن وضعیت پایهها با HAL_GPIO_ReadPin
استفاده از HAL_Delay برای ایجاد تأخیرهای زمانی
بررسی و رفع مشکل تابع HAL_Delay
مفهوم GPIO Speed و تاثیر آن
لینک پیش نمایش ویدئو در اینستاگرام:
https://www.instagram.com/p/DQ-8Qc5Eqs7/
لینک کامل ویدئو در یوتیوب:
https://youtu.be/rTIU0vWZKQs
صفحه گیتهاب من:
https://github.com/aKaReZa75
aKaReZa 127 - AVR, Alphanumeric LCD - PART B
توی این قسمت از آموزش میکروکنترلرهای AVR، وارد بخش دوم راهاندازی LCD کاراکتری (Alphanumeric LCD) میشیم.
در این قسمت یک پروژهی جدید میسازیم و بهصورت کامل توابع اصلی کتابخونه مثل alcd_init()، alcd_write()، alcd_putc() و alcd_puts() رو بررسی و تست میکنیم تا عملکردشون رو بهتر درک کنیم. همچنین حالت ۸ بیتی (8-bit Mode) رو توضیح میدیم و نحوهی آدرسدهی مکان نمایش کاراکترها روی LCD با تابع alcd_gotoxy() رو یاد میگیریم.
مطالبی که توی این ویدئو یاد میگیریم:
مرور ساختار کلی LCD کاراکتری
ایجاد پروژه جدید برای راه اندازی LCD
نحوهی پیکربندی اولیه LCD با تابع alcd_init()
نحوهی ارسال دیتا و دستور با تابع alcd_write()
بررسی مود ۸ بیتی (8-bit mode)
نمایش تککاراکتر با تابع alcd_putc()
نمایش رشته با تابع alcd_puts()
تعیین موقعیت نمایش کاراکتر با تابع alcd_gotoxy()
لینک پیش نمایش ویدئو در اینستاگرام:
https://www.instagram.com/p/DRRAHHekqFW/
لینک کامل ویدئو در یوتیوب:
https://youtu.be/dNaj5lWs40A
صفحه گیتهاب من:
https://github.com/aKaReZa75
aKaReZa 129 - AVR, Alphanumeric LCD - PART C
توی این ویدئو بخش سوم از آموزش LCD کاراکتری برای میکروکنترلرهای AVR رو بررسی میکنیم و سراغ توابعی مثل پاک کردن صفحه، کنترل نور پسزمینه و ساخت کاراکتر سفارشی میریم. قدمبهقدم یاد میگیریم چطور LCD رو در مد چهار بیتی پیکربندی کنیم.
مطالبی که توی این ویدئو یاد میگیریم:
پایده سازی تابع alcd_clear و نحوه پاکسازی نمایشگر
پایده سازی تابع alcd_cursor برای مدیریت cursor و نمایش آن
پیاده سازی تابع alcd_display برای کنترل وضعیت نمایشگر
پیاده سازی تابع alcd_backlight برای فعال و غیرفعال کردن نور پسزمینه
پیاده سازی تابع alcd_customChar برای تعریف کاراکترهای سفارشی
نحوه تنظیم مد 4بیتی برای کاهش تعداد پینها
نکات تکمیلی و بهینهسازی در استفاده از LCD
لینک پیش نمایش ویدئو در اینستاگرام:
https://www.instagram.com/p/DR1ENtNkj-J/
لینک کامل ویدئو در یوتیوب:
https://youtu.be/1IQTeyUsbYI
صفحه گیتهاب من:
https://github.com/aKaReZa75
aKaReZa 130 - STM32 - HAL, aLCD
توی این ویدئو میریم سراغ اتصال و راهاندازی LCD کاراکتری روی میکروکنترلرهای STM32 با استفاده از HAL. در این بخش یاد میگیریم چطور کتابخانهی aLCD که برای میکروکنترلر AVR نوشته رو به پروژه اضافه کنیم، پیکربندی پایهها رو انجام بدیم، توابع مربوط به LCD رو بازنویسی کنیم و نمایشگر رو با سرعت بالاتر راه بندازیم. این ویدئو یکی از مهمترین بخشها برای افرادیه که میخوان بین محیطهای AVR و STM32 هماهنگی و انتقال کتابخانه داشته باشن.
مطالبی که توی این ویدئو یاد میگیریم:
ساخت پروژه جدید برای STM32
پیکربندی پینها برای اتصال LCD
بازنویسی هدر عمومی aKaReZa.h برای STM32
بازنویسی توابع و کتابخانه ها و انطباق آنها با HAL
آشنایی با توابع (API) اصلی LCD
روشهای افزایش سرعت نمایشگر
معرفی ریپازیتوری alcd برای STM32 و نحوه استفاده از آن
لینک پیش نمایش ویدئو در اینستاگرام:
https://www.instagram.com/p/DSHH4XNEu4l/
لینک کامل ویدئو در یوتیوب:
https://youtu.be/XsrOL4_7Ywc
صفحه گیتهاب من:
https://github.com/aKaReZa75
aKaReZa 131 - AVR, EEPROM - PART A
توی این ویدئو وارد یکی از مهمترین بخشهای میکروکنترلرهای AVR یعنی EEPROM داخلی میشیم؛ جایی که میتونیم دادههامون رو بهصورت دائمی ذخیره کنیم حتی بعد از ریست یا قطع برق. این قسمت پایهی همهی پروژههایی مثل تنظیمات کاربر، کالیبراسیون، شمارندهها و دیتالاگرهای سادهست. قدمبهقدم هم رجیسترها رو بررسی میکنیم، هم پروژه رو میسازیم، هم توابع صحیح و استاندارد برای نوشتن انواع داده رو مینویسیم.
مطالبی که توی این ویدئو یاد میگیریم:
آشنایی با ساختار EEPROM داخلی AVR
بررسی بیتبهبیت رجیسترهای EEAR، EEDR، EECR
نوشتن تابع uint8_write()
نوشتن تابع uint16_write()
مفهوم Endianness در ذخیرهسازی داده
مفهوم Type Punning و مزیتهای استفاده از آن
نوشتن تابع uint32_write()
لینک پیش نمایش ویدئو در اینستاگرام:
https://www.instagram.com/p/DSZGQxSEmJS/
لینک کامل ویدئو در یوتیوب:
https://youtu.be/62rkm0YjG4s
صفحه گیتهاب من:
https://github.com/aKaReZa75
aKaReZa 132 - RCS, AVR - PART O
توی این قسمت میریم سراغ پیاده سازی state machine های دریافت و ارسال SMS در پروژه RCS-AVR. توی این ویدئو یاد میگیریم چطور پیام ورودی رو تشخیص بدیم، شماره فرستنده رو استخراج کنیم، متن پیام رو بخونیم، پیام ارسال کنیم، و در نهایت نمایشگر السیدی رو هم با یک سری امکانات جدید بهبود بدیم.همهی اینها قدمبهقدم، واضح و کاملاً عملی پیادهسازی میشن.
مطالبی که توی این ویدئو یاد میگیریم:
تشخیص پیامک جدید از سمت ماژول GSM
پیادهسازی حالت GSM_SMS_ParseNumber برای استخراج Index پیام
پیادهسازی حالت GSM_SMS_ReadContent برای استخراج شماره و متن
پیادهسازی حالت GSM_SMS_SendSMS برای ارسال SMS
ساخت و نمایش کاراکترهای کاستوم در LCD برای نمایش وضعیت Busy
باز طراحی صفحه Welcome Page و نمایش ورژن firmware
بهبود خوانایی کد
آشنایی با دستور git merge
لینک پیش نمایش ویدئو در اینستاگرام:
https://www.instagram.com/p/DSrHT5XkrQq/
لینک کامل ویدئو در یوتیوب:
https://youtu.be/P0FgmPWP3M4
صفحه گیتهاب من:
https://github.com/aKaReZa75