mBedLab Learning – Telegram
mBedLab Learning
779 subscribers
58 photos
5 videos
4 files
39 links
بحث و گفتگو در:
.
@mBedLab_Discussion
Download Telegram
ادامه پست قبل...

مدل این فرآیند را برای هر نمونه برچسب گذاری شده در مجموعه داده تکرار می کند (تصویر پیوست).

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

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

ادامه در پست بعد...

#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1
ادامه پست قبل...

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

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

استنتاج
هنگامی که از نتایج ارزیابی مدل راضی شدیم، می‌توانیم از مدل برای پیش‌بینی‌هایی که استنتاج نامیده می‌شود، در نمونه‌های بدون برچسب استفاده کنیم. در مثال برنامه آب و هوا، ما به مدل شرایط آب و هوای فعلی -مانند دما، فشار اتمسفر و رطوبت نسبی- را می‌دهیم و میزان بارندگی را پیش‌بینی می‌کند.

#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
دعوت ویژه به یک رویداد علمی رایگان! 🚀

آیا به دنیای سیستم‌های نهفته، هوش مصنوعی و یادگیری ماشین علاقه‌مندید؟
آیا می‌خواهید درباره‌ی فرصت‌ها و چالش‌های این حوزه در ایران و جهان بیشتر بدانید؟


✔️ در این وبینار، به بررسی موضوعات زیر خواهیم پرداخت
○ سیستم‌های نهفته و معماری آنها
○ کاربرد سیستم‌های نهفته در دنیای امروز
○ نگاهی به بازار کار جهانی و ایران
○ نقش هوش مصنوعی و یادگیری ماشین در سیستم‌های نهفته

این وبینار برای چه کسانی مناسب است؟
○ دانشجویان و فارغ‌التحصیلان رشته‌های مهندسی کامپیوتر، برق و مکانیک
○ متخصصان و علاقه‌مندان به حوزه سیستم‌های نهفته
○ افرادی که به دنبال یادگیری و ارتقاء دانش خود در زمینه فناوری‌های نوین هستند

چرا در این وبینار شرکت کنیم؟
○ بهره‌مندی از دانش و تجربه متخصصان برجسته در حوزه سیستم‌های نهفته
○ آشنایی با آخرین دستاوردها و فناوری‌های روز در این حوزه
○ فرصت شبکه‌سازی با سایر شرکت‌کنندگان و متخصصان

🎉 تاریخ برگزاری
○ جمعه 19 بهمن | ساعت 18 الی 20

🧑🏻‍🏫 سخنران
○ مجید درهم بخش | توسعه دهنده و تحلیلگر سیستم‌های نهفته، مدرس دانشگاه

برای ثبت نام در وبینار اطلاعات زیر را به آی دی @mbedlab_admin ارسال نمایید تا اطلاعات ورود و شرکت در وبینار 24 ساعت قبل از برگزاری برای شما ارسال شود:
○ نام و نام خانوادگی
○ شماره تماس
○ آدرس ایمیل
○ زمینه فعالیت شغلی/تحصیلی

با شرکت در این وبینار، آینده سیستم‌های نهفته را از نزدیک ببینید و جایگاه خود را در این دنیای پر از فرصت مشخص کنید.

#برنامه_نویسی #الکترونیک #مکاترونیک #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
‏IDE اختصاصی نسخه 3.1.0 برای ESP32/ESP8266 از راه رسید! 🎉

دیگه لازم نیست فقط از آردوینو برای کدنویسی ESP32/ESP8266 استفاده کنید! یا با تنظیمات پیچیده ESP-IDF دست و پنجه نرم کنید. شرکت Espressif بالاخره IDE مخصوص خودش رو برای توسعه این میکروکنترلرها معرفی کرده: Espressif IDE!

این IDE که بر پایه Eclipse CDT ساخته شده، به طور خاص برای توسعه برنامه‌های IoT با استفاده از ESP-IDF طراحی شده. شامل پلاگین‌های ضروری Eclipse CDT و پلاگین‌های دیگه برای ساخت برنامه‌های ESP-IDF هست.

ویژگی‌های کلیدی:
○ پیکربندی خودکار متغیرهای محیط ساخت
○ پیکربندی یکپارچه toolchain
‏○ Wizard برای پروژه‌های جدید و شروع کار با نمونه‌های ESP-IDF
○ ویرایشگر LSP برای ویرایش پیشرفته، کامپایل و رنگی کردن syntax
○ پیمایش هدر و تعریف تابع از قبل ساخته شده
○ نصب و پیکربندی ESP-IDF و ابزارهای اون مستقیماً از IDE
○ ویرایشگر پیکربندی SDK برای تنظیمات خاص پروژه
○ پلاگین ویرایشگر یکپارچه CMake برای ویرایش فایل‌های CMake مانند CMakeLists.txt
○ پشتیبانی از ساخت مبتنی بر CMake
○ پشتیبانی از فلش UART و JTAG
○ عیب‌یابی سفارشی ESP-IDF OpenOCD با پیکربندی و تنظیمات از پیش ساخته شده
○ مانیتور سریال یکپارچه ESP-IDF
○ ترمینال ESP-IDF با محیط ساخت از پیش پیکربندی شده ESP-IDF
○ ویرایشگر تجزیه و تحلیل اندازه برنامه برای تجزیه و تحلیل ردپای حافظه استاتیک برنامه شما
○ پشتیبانی از پروفایلینگ heap برای تجزیه و تحلیل حافظه و یافتن نشت‌های حافظه
○ پشتیبانی از عیب‌یابی GDB stub و ردیابی سطح برنامه
○ پشتیبانی از زبان انگلیسی و چینی برای IDE

🖥 پلتفرم‌های پشتیبانی شده: macOS، Windows و Linux

⚠️ نکته مهم: نسخه 3.0 و بالاتر، از ESP-IDF نسخه 5.x و بالاتر پشتیبانی می‌کنه. برای نسخه‌های 4.x و پایین‌تر از نسخه 2.12.1 استفاده کنید.

⬇️ برای دانلود مستقیم Espressif-IDE به لینک زیر مراجعه نمایید:
https://news.1rj.ru/str/mBedLabLearning/68

#ESP32 #ESP8266 #IoT #IDE #برنامه_نویسی #میکروکنترلر #Espressif

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
esp-idf-tools-setup-espressif-ide-3.1.0-with-esp-idf-5.3.1.exe
1.8 GB
فایل نرم افزار Espressif-IDE نسخه 3.1.0

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1
#قانون 2.3 MISRA C -اجتناب از اعلان انواع داده استفاده نشده

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #توصیه_شده
○ اعمال برای: C90, C99, C11

قاعده 2.3 استاندارد MISRA بیان می‌کند که پروژه نباید شامل اعلان انواع داده ای باشد که در هیچ کجای کد استفاده نشده اند.

چرا این قانون مهم است؟
○ سردرگمی در بررسی کد
گر نوع داده ای اعلان شده باشد اما استفاده نشده باشد، برای بازبینی کننده کد مشخص نیست که این نوع داده اضافی است یا به اشتباه استفاده نشده است. این عدم قطعیت می تواند منجر به سردرگمی و خطا در تحلیل کد شود.

○ افزایش حجم کد
اعلان انواع داده استفاده نشده، حجم کد را افزایش می دهد و خوانایی و نگهداری کد را دشوارتر می کند.

○ خطاهای پنهان
ممکن است در مراحل بعدی توسعه، به طور اشتباهی از این نوع داده استفاده شود که می تواند منجر به بروز خطاهای غیرمنتظره و سخت یاب شود.


مثال:
int16_t unusedtype ( void )
{
typedef int16_t local_Type; /* Non-compliant */
return 67;
}


در این مثال، نوع داده local_Type اعلان شده است اما در هیچ کجای تابع استفاده نشده است. بنابراین، این کد با قانون 2.3 MISRA مطابقت ندارد.

#برنامه_نویسی#استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
آیا آمادگی تست دانش خود در یادگیری ماشین را دارید؟

در پست‌های قبلی، مفاهیم پایه یادگیری ماشین رو با هم بررسی کردیم. حالا وقتشه که با حل چند تا سوال، دانش خودمون رو محک بزنیم!

مدل‌های یادگیری ماشین با نظارت (Supervised Learning) با استفاده از داده‌هایی که قبلاً برچسب‌گذاری شده‌اند، آموزش می‌بینند. این مدل‌ها یاد می‌گیرند که بر اساس ویژگی‌های موجود، برچسب جدیدی را پیش‌بینی کنند. اما نکته اینجاست که همه ویژگی‌های موجود در یک دیتاست، قدرت پیش‌بینی‌کنندگی ندارند. گاهی فقط چند ویژگی خاص به عنوان پیش‌بینی‌کننده برچسب عمل می‌کنند.

در دیتاست ارسالی در تصویر، از ستون "قیمت" به عنوان برچسب استفاده می‌کنیم و ستون‌های دیگر را به عنوان ویژگی در نظر می‌گیریم.

به سوال ارسالی در پست بعد پاسخ دهید...

#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
به نظر شما کدام سه ویژگی در تصویر پست قبل احتمالاً بیشترین پیش‌بینی‌کننده برای قیمت یک خودرو هستند؟
Final Results
54%
Make_model, year, miles
35%
Miles, gearbox, make_model
12%
Color, height, make_model
0%
Tire_size, wheel_base, year
🤩4
👍2
#قانون 2.4 MISRA C - اجتناب از اعلان تگ‌های استفاده نشده

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #توصیه_شده
○ اعمال برای: C90, C99, C11

این قاعده بیان می‌کند که پروژه نباید حاوی اعلان‌های تگ (tag) استفاده نشده باشد. تگ‌ها در C برای تعریف ساختارها (structs)، یونیون‌ها (unions) و شمارشگرها (enums) استفاده می‌شوند. اگر یک تگ تعریف شده باشد اما در هیچ کجای کد استفاده نشده باشد، ممکن است باعث سردرگمی شود. آیا این تگ به طور عمدی استفاده نشده است یا به اشتباه تعریف شده است؟

مثال نقض:
void unusedtag ( void )
{
enum state { S_init, S_run, S_sleep }; /* Non-compliant */
}


در این مثال، تگ state تعریف شده است اما در هیچ کجای تابع unusedtag استفاده نشده است.

مثال رعایت شده:
typedef struct record_t /* Non-compliant */
{
uint16_t key;
uint16_t val;
} record1_t;

typedef struct /* Compliant */
{
uint16_t key;
uint16_t val;
} record2_t;


در این مثال، تگ record_t تنها در تعریف typedef برای record1_t استفاده شده است. با حذف تگ record_t و استفاده مستقیم از ساختار، می‌توان این کد را مطابق با قاعده 2.4 نوشت.

#برنامه_نویسی#استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👎1
#قانون 2.5 MISRA C - اجتناب از تعریف ماکروهای استفاده نشده

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #توصیه_شده
○ اعمال برای: C90, C99, C11

این قاعده بیان می‌کند که یک پروژه نباید شامل تعاریف ماکروهای استفاده نشده باشد.

اگر یک ماکرو تعریف شده باشد اما در هیچ کجای کد استفاده نشود، برای بازبینی‌کننده مشخص نیست که آیا این ماکرو زائد است یا به اشتباه استفاده نشده است.

نکته: استفاده از undef# برای یک ماکرو نیز به عنوان استفاده از آن ماکرو در نظر گرفته می‌شود.

مثال:
#define SIZE 4
#define DATA 3 /* Non-compliant - DATA not used */

void use_macro ( void )
{
use_int16 ( SIZE );
}


در این مثال، ماکروی DATA تعریف شده است اما در هیچ کجای کد از آن استفاده نشده است. بنابراین، این کد با قاعده 2.5 MISRA مطابقت ندارد.

#برنامه_نویسی#استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
3
#قانون 2.6 MISRA C - اجتناب از اعلان برچسب‌های استفاده نشده

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #توصیه_شده
○ اعمال برای: C90, C99, C11

این قاعده با عنوان "A function should not contain unused label declarations" بیان می‌کند که یک تابع نباید شامل اعلان برچسب‌های استفاده نشده باشد.

اگر یک برچسب در کد اعلان شده باشد اما در هیچ کجای تابع مورد استفاده قرار نگیرد، برای بازبینی‌کننده کد مشخص نیست که این برچسب به صورت زائد اضافه شده است یا به اشتباه استفاده نشده است. وجود برچسب‌های استفاده نشده می‌تواند منجر به سردرگمی، کاهش خوانایی کد و افزایش احتمال بروز خطا در مراحل بعدی توسعه شود.

مثال:
void unused_label ( void )
{
int16_t x = 6;

label1: /* Non-compliant */
use_int16 ( x );
}


در این مثال، برچسب label1 اعلان شده است اما در هیچ کجای تابع مورد استفاده قرار نمی‌گیرد. این مورد نقض قاعده 2.6 MISRA C محسوب می‌شود.

#برنامه_نویسی#استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍3
#قانون 2.7 MISRA C - اجتناب از پارامترهای استفاده نشده در توابع

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #توصیه_شده
○ اعمال برای: C90, C99, C11

این قاعده بیان می‌کند که اگر یک تابع با پارامتری تعریف شده باشد، اما در هیچ جای بدنه تابع از آن استفاده نشود، احتمالاً یک ناسازگاری بین پیاده‌سازی تابع و مشخصات آن وجود دارد.

مثال:
void withunusedpara ( uint16_t *para1,
int16_t unusedpara ) /* Non-compliant - unused */
{
*para1 = 42U;
}


در این مثال، تابع withunusedpara دارای دو پارامتر است، اما تنها از پارامتر para1 استفاده می‌شود. پارامتر unusedpara در هیچ کجای تابع مورد استفاده قرار نگرفته است.

علت
○ خطاهای پنهان
پارامترهای استفاده نشده می‌توانند نشان‌دهنده خطاهای منطقی یا تغییرات ناقص در کد باشند. ممکن است در گذشته از این پارامتر استفاده شده باشد و سپس بدون به‌روزرسانی مناسب حذف شده باشد.

○ بهبود خوانایی و نگهداری
وجود پارامترهای استفاده نشده باعث کاهش خوانایی کد می‌شود و نگهداری و بروزرسانی آن را دشوارتر می‌کند.


راهکارها
○ حذف پارامترهای استفاده نشده
اگر یک پارامتر واقعاً مورد استفاده قرار نمی‌گیرد، باید آن را از تعریف تابع حذف کنید.

○ استفاده از پارامترها
اگر پارامتری در حال حاضر استفاده نمی‌شود، اما ممکن است در آینده مورد نیاز باشد، باید آن را به درستی در بدنه تابع استفاده کنید.

○ استفاده از ابزارهای تحلیل استاتیک
ابزارهای تحلیل استاتیک می‌توانند به شناسایی پارامترهای استفاده نشده در کد کمک کنند.


#برنامه_نویسی#استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍3
به دلیل استقبال و پیشنهاد شما همراهان گرامی دعوتتان میکنیم به یک رویداد علمی رایگان دیگر! 🚀

آیا می خواهید با قلب تپنده دستگاه های هوشمند، یعنی پردازنده های ARM و میکروکنترلرهای STM32 آشنا شوید؟ آیا به دنبال راهی برای ورود به دنیای جذاب سیستم های نهفته هستید؟


در این وبینار رایگان، ما از صفر تا صد این دنیای شگفت انگیز را به شما نشان می دهیم. از تئوری پایه ای تا کاربردهای عملی، همه چیز را پوشش می دهیم.

✔️ در این وبینار، به بررسی موضوعات زیر خواهیم پرداخت
○ انواع پردازنده های ARM را بشناسید و تفاوت های آنها را درک کنید.
○ دلیل محبوبیت ARM را در صنعت بدانید.
○ با خانواده قدرتمند میکروکنترلرهای STM32 آشنا شوید.
○ یاد بگیرید چگونه میکروکنترلر مناسب برای پروژه خود را انتخاب کنید.

چرا در این وبینار شرکت کنیم؟
○ محتوای کاربردی و به روز
مطالب ارائه شده کاملا عملی و مطابق با آخرین تکنولوژی ها هستند.

○ فرصت پرسش و پاسخ
در طول وبینار می توانید سوالات خود را از مدرس بپرسید و ابهامات خود را برطرف کنید.

○ کاملا رایگان
شرکت در این وبینار هیچ هزینه ای برای شما ندارد.


این وبینار برای چه کسانی مناسب است؟
○ دانشجویان و فارغ التحصیلان مهندسی برق، کامپیوتر و مکاترونیک
○ علاقه مندان به یادگیری سیستم های نهفته
○ کسانی که می خواهند پروژه های خود را با میکروکنترلرهای ARM و STM32 انجام دهند

🎉 کی برگزار میشود؟
○ زمان: جمعه ۱۷ اسفند، ساعت ۱۸ تا ۲۱
○ مکان: آنلاین (در هر کجا که هستید، می توانید شرکت کنید!)

🧑🏻‍🏫 سخنران
○ مجید درهم بخش | توسعه دهنده و تحلیلگر سیستم‌های نهفته، مدرس دانشگاه

برای ثبت نام در وبینار اطلاعات زیر را به آی دی @mbedlab_admin ارسال نمایید تا اطلاعات ورود و شرکت در وبینار 24 ساعت قبل از برگزاری برای شما ارسال شود:
○ نام و نام خانوادگی
○ شماره تماس
○ آدرس ایمیل
○ زمینه فعالیت شغلی/تحصیلی

منتظر دیدار شما در این وبینار هیجان انگیز هستیم!

#ARM #STM32 #میکروکنترلر #سیستم_های_نهفته #وبینار_رایگان #آموزش
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
#قانون 2.8 MISRA C - یک پروژه نباید حاوی تعریف اشیاء بلااستفاده باشد

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #توصیه_شده
○ اعمال برای: C90, C99, C11

یک شیء (Object) در زبان C به هر متغیر، آرایه، struct یا union گفته می شود که در حافظه فضا اشغال می کند.

شیء بلااستفاده شیئی است که تعریف آن (و هرگونه اعلام آن) قابل حذف است و برنامه همچنان کامپایل می شود. به عبارت دیگر، اگر حذف کردن تعریف یک شیء هیچ تغییری در رفتار برنامه ایجاد نکند، آن شیء بلااستفاده محسوب می شود.

اهمیت رعایت این قاعده

○ عدم شفافیت
وجود اشیاء بلااستفاده در کد باعث سردرگمی می شود. آیا این اشیاء به طور عمدی تعریف شده اند اما در حال حاضر استفاده نمی شوند؟ یا اینکه به اشتباه تعریف شده اند و فراموش شده اند؟

○ خطاهای پنهان
اشیاء بلااستفاده ممکن است حاوی مقادیر نامعتبر باشند که در صورت استفاده ناخواسته، منجر به رفتار غیرمنتظره و حتی خطاهای جدی در سیستم شوند.

○ کاهش خوانایی کد
وجود اشیاء بلااستفاده باعث کاهش خوانایی و نگهداری کد می شود.


توصیه
○ بررسی دقیق
قبل از استفاده از یک شیء، اطمینان حاصل کنید که در جایی از برنامه مورد استفاده قرار می گیرد.

○ حذف اشیاء بلااستفاده
اگر شیئی بلااستفاده تشخیص داده شد، آن را حذف کنید تا کد تمیزتر، قابل خواناتر و عاری از خطاهای پنهان شود.


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

قوانین مرتبط:
○ قانون 8.6

#برنامه_نویسی#استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1
به دلیل استقبال و پیشنهاد شما همراهان گرامی دعوتتان میکنیم به یک رویداد علمی رایگان دیگر! 🚀

آیا می خواهید با قلب تپنده دستگاه های هوشمند، یعنی پردازنده های ARM و میکروکنترلرهای STM32 آشنا شوید؟ آیا به دنبال راهی برای ورود به دنیای جذاب سیستم های نهفته هستید؟


در این وبینار رایگان، ما از صفر تا صد این دنیای شگفت انگیز را به شما نشان می دهیم. از تئوری پایه ای تا کاربردهای عملی، همه چیز را پوشش می دهیم.

✔️ در این وبینار، به بررسی موضوعات زیر خواهیم پرداخت
○ انواع پردازنده های ARM را بشناسید و تفاوت های آنها را درک کنید.
○ دلیل محبوبیت ARM را در صنعت بدانید.
○ با خانواده قدرتمند میکروکنترلرهای STM32 آشنا شوید.
○ یاد بگیرید چگونه میکروکنترلر مناسب برای پروژه خود را انتخاب کنید.

چرا در این وبینار شرکت کنیم؟
○ محتوای کاربردی و به روز
مطالب ارائه شده کاملا عملی و مطابق با آخرین تکنولوژی ها هستند.

○ فرصت پرسش و پاسخ
در طول وبینار می توانید سوالات خود را از مدرس بپرسید و ابهامات خود را برطرف کنید.

○ کاملا رایگان
شرکت در این وبینار هیچ هزینه ای برای شما ندارد.


این وبینار برای چه کسانی مناسب است؟
○ دانشجویان و فارغ التحصیلان مهندسی برق، کامپیوتر و مکاترونیک
○ علاقه مندان به یادگیری سیستم های نهفته
○ کسانی که می خواهند پروژه های خود را با میکروکنترلرهای ARM و STM32 انجام دهند

🎉 کی برگزار میشود؟
○ زمان: جمعه ۱۷ اسفند، ساعت ۱۸ تا ۲۱
○ مکان: آنلاین (در هر کجا که هستید، می توانید شرکت کنید!)

🧑🏻‍🏫 سخنران
○ مجید درهم بخش | توسعه دهنده و تحلیلگر سیستم‌های نهفته، مدرس دانشگاه

علاقه مندان جهت اخذ مدرک معتبر از واحد علوم و تحقیقات ثبت‌نام خود را از طریق اسکن بارکد و یا لینک زیر انجام دهند
meshkat.iau.ir/c/14421

برای ثبت نام در وبینار بدون گواهینامه (رایگان) اطلاعات زیر را به آی دی @mbedlab_admin ارسال نمایید تا اطلاعات ورود و شرکت در وبینار 24 ساعت قبل از برگزاری برای شما ارسال شود:
○ نام و نام خانوادگی
○ شماره تماس
○ آدرس ایمیل
○ زمینه فعالیت شغلی/تحصیلی

منتظر دیدار شما در این وبینار هیجان انگیز هستیم!

#ARM #STM32 #میکروکنترلر #سیستم_های_نهفته #وبینار_رایگان #آموزش

🚀کانال تلگرام مدرسه مهارتی:
@AiRoboticSRB

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
کریستال ساعت و PPM: دقت در قلب زمان‌سنجی

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

‏PPM (Parts Per Million) یا قسمت در میلیون، واحدی برای اندازه‌گیری میزان ناخالصی یا تغییرات فرکانس در کریستال‌های کوارتز است. این واحد نشان‌دهنده دقت و پایداری فرکانس کریستال است؛ هر چه مقدار PPM کمتر باشد، کریستال دقیق‌تر و پایدارتر است.

اهمیت PPM در کریستال:
○ دقت زمان‌سنجی
‏PPM پایین در ساعت‌ها به معنای دقت بیشتر در نمایش زمان است.

○ پایداری فرکانس
‏PPM پایین باعث پایداری بیشتر فرکانس کریستال در برابر تغییرات دما و ولتاژ می‌شود.


تأثیر PPM بر عملکرد دستگاه
○ ساعت‌ها و تایمرها: در ساعت‌ها و تایمرها، PPM پایین باعث دقت بیشتر در زمان‌سنجی می‌شود.
○ دستگاه‌های مخابراتی: در دستگاه‌های مخابراتی، PPM پایین باعث پایداری بیشتر فرکانس و کاهش تداخل می‌شود.
○ میکروکنترلرها: در میکروکنترلرها، PPM پایین باعث دقت بیشتر در اجرای دستورات و کاهش خطا می‌شود.

مثال
فرض کنید یک کریستال با فرکانس 10 مگاهرتز و PPM 100 داریم. این بدان معناست که فرکانس کریستال می‌تواند تا 100 قسمت در میلیون از 10 مگاهرتز منحرف شود.

نحوه محاسبه تغییرات فرکانس
برای محاسبه تغییرات فرکانس، می‌توان از فرمول زیر استفاده کرد:

تغییرات فرکانس (هرتز) = (PPM / 1,000,000) * فرکانس اسمی (هرتز)

در مثال بالا، تغییرات فرکانس به صورت زیر محاسبه می‌شود:

تغییرات فرکانس = (1,000,000 / 100) * 10,000,000 = 1,000 هرتز

بنابراین، فرکانس کریستال می‌تواند تا 1,000 هرتز از 10 مگاهرتز منحرف شود.

عوامل مؤثر بر PPM
○ دما
تغییرات دما باعث تغییر در ابعاد کریستال و در نتیجه تغییر در فرکانس آن می‌شود.

○ ولتاژ
تغییرات ولتاژ تغذیه کریستال نیز می‌تواند بر فرکانس آن تأثیر بگذارد.

○ پیری
با گذشت زمان، فرکانس کریستال به دلیل تغییرات ساختاری در آن تغییر می‌کند.

○ بار خازنی
خازن‌های متصل به کریستال نیز در دقت فرکانس آن تاثیر گذار هستند.


#الکترونیک

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1
#قانون 3.1 MISRA C - از کامنت‌های تودرتو اجتناب کنید!

○ گروه: #کامنت‌ها
○ دسته‌بندی: #الزامی
○ اعمال برای: C90, C99, C11

توالی‌های کاراکتری /* و // نباید درون کامنت‌ها استفاده شوند.

چرا این قانون مهم است؟
○ جلوگیری از خطاهای ناشی از کامنت‌های ناقص
اگر یک کامنت با */ شروع شود و فراموش شود با /* بسته شود، بخش‌های بعدی کد به اشتباه به عنوان کامنت در نظر گرفته می‌شوند. این می‌تواند منجر به حذف ناخواسته کد و بروز خطاهای خطرناک شود.

○ جلوگیری از ابهام در تفسیر کد
استفاده از // درون کامنت‌های */ یا برعکس، باعث سردرگمی در تفسیر کد می‌شود و ممکن است منجر به رفتارهای غیرمنتظره شود.

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


مثال نقض قانون:
‎/* این یک کامنت است، اما فراموش کردیم آن را ببندیم
‎Perform_Critical_Safety_Function(X); // این خط به اشتباه کامنت می‌شود!
‎/* این کامنت نیز نقض قانون است */


مثال دیگر (C99):
x = y // /*
+ z
// */
;


در این مثال، حضور // ها باعث می‌شود که x = y + z; محاسبه شود، در حالی که بدون آنها، x = y; محاسبه می‌شد.

استثناها:
‏1. URI ها: شناسه‌های منابع یکنواخت (URI) مانند https://mbedlab.com در کامنت‌ها مجاز هستند.
2. // درون کامنت //: استفاده از // درون کامنت‌های تک خطی // مجاز است.

مثال منطبق با قانون (با استفاده از استثنای URI):

‎/*
‎** The MISRA C:2012 example suite can be found at
‎** https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012
*/


نکات کلیدی:

○ همیشه کامنت‌های */ را با /* ببندید.
○ از استفاده از /* و // درون کامنت‌ها خودداری کنید.
○ از استثناها در صورت نیاز به درستی استفاده کنید.
○ همیشه کد خود را با دقت بررسی کنید تا از رعایت این قانون اطمینان حاصل کنید.

با رعایت قانون 3.1، می‌توانید از بروز خطاهای ناشی از کامنت‌های تودرتو و ناقص جلوگیری کنید و کد قابل اطمینان‌تری بنویسید.

#برنامه_نویسی#استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍2
روز مهندس مبارک! مهندسان عزیز، شما با ️ دستان توانمند و ذهن‌های خلاق خود، دنیایی را می‌سازید که در آن، رویاها به واقعیت تبدیل می‌شوند. از پل‌ها و ساختمان‌های استوار گرفته تا نرم‌افزارهای پیچیده، شما در هر گوشه از زندگی ما حضور دارید و آینده‌ای روشن‌تر ☀️ را رقم می‌زنید.

ما در مجموعه خود، قدردان زحمات شما هستیم و با ارائه آموزش‌های رایگان، به رشد و پیشرفت 🇮🇷 جامعه مهندسی کشورمان کمک می‌کنیم.

اما مهندسی تنها به بزرگسالان محدود نمی‌شود. ما به تربیت نسل آینده مهندسان نیز اهمیت می‌دهیم. با تشویق کودکان به کنجکاوی و خلاقیت، بذرهای مهندسی را در ذهن‌های جوان می‌کاریم. امیدواریم با دستان توانمند شما و مهندسان آینده‌سازمان، ایرانی آبادتر داشته باشیم. ❤️🇮🇷

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍71
#قانون 3.2 MISRA C - از Line-splicing در کامنت‌های // اجتناب کنید!

○ گروه: #کامنت‌ها
○ دسته‌بندی: #الزامی
○ اعمال برای: C99, C11

آیا می‌دانستید استفاده از \ (بک‌اسلش) در انتهای کامنت‌های // می‌تواند منجر به حذف ناخواسته کد شود؟ این دقیقاً همان چیزی است که MISRA C Rule 3.2 به آن اشاره می‌کند.

مشکل چیست؟
وقتی یک خط کامنت // با \ تمام می‌شود، خط بعدی به عنوان بخشی از کامنت در نظر گرفته می‌شود. این پدیده به نام Line-splicing شناخته می‌شود.

مثال:
uint16_t x = 0; // comment \
‎if (b) // این خط به عنوان کامنت در نظر گرفته می‌شود!
{
++x;
}


در این مثال، خط if (b) به دلیل \ در خط قبلی، کامنت شده و اجرا نمی‌شود.

چرا این قانون مهم است؟
○ جلوگیری از حذف ناخواسته کد
این قانون از خطاهای پنهان در کد جلوگیری می‌کند.

○ افزایش خوانایی کد
با رعایت این قانون، کد شما قابل پیش‌بینی‌تر و قابل نگهداری‌تر خواهد بود.

○ مطابقت با استانداردهای ایمنی
رعایت قوانین MISRA C برای توسعه نرم‌افزارهای ایمن و قابل اعتماد ضروری است.


راه حل:
○ از استفاده از \ در انتهای کامنت‌های // خودداری کنید.
○ برای کامنت‌های چند خطی از /* ... */ استفاده کنید.

نکته:
این قانون برای C99 و C11 اعمال می‌شود.

#برنامه_نویسی#استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1