امبدد گیک|Embedded Geek
#پیام_ناشناس سلام وقتتون بخیر باشه. بی زحمت اگه یک کتابخونه جامع و خوب برای نرم افزار آلتیوم دیزاینر از داخل گیت هاب پیدا کردین داخل کانال تون قرار بدین. ممنونم
سلام کتابخونه مهندس بورقانی و کتابخونه Celestial هستند که میگذارمشون.برای باقی قطعات که تو این کتابخونه های نیستند از Snapeda و UltraLibrarian میتونید دانلود کنید.اگر بازهم نبود طراحی فوتپرینت اونقدر سخت نیستش خود فوترپینت طبق استاندارد های معروف شبیه هم هستند و شما کافیه شماتیک و پین هاش رو طراحی کنید که کار سختی نیست در کل.
امبدد گیک|Embedded Geek
#پیام_ناشناس سلام وقتتون بخیر باشه. بی زحمت اگه یک کتابخونه جامع و خوب برای نرم افزار آلتیوم دیزاینر از داخل گیت هاب پیدا کردین داخل کانال تون قرار بدین. ممنونم
لیست منابع دانلود فوتپرینت
کتابخونه چیلابرد مهندس بورقانی
کتابخونه Celestial
سایت SnapEDA
سایت UltraLibrarian
@Embedded_geek
کتابخونه چیلابرد مهندس بورقانی
کتابخونه Celestial
سایت SnapEDA
سایت UltraLibrarian
@Embedded_geek
یه ریپویی شرکت ST داره به نام STM32 model zoo که در واقع اومده مجموعه مدل های ماشین لرنینگ رو جمع آوری کرده که بهینه شدند که روی میکرو های stm32 اجرا بشن.یه سری اسکریپپت نوشته شده که بتونید دوباره ترینشون کنید و بنچمارکشون رو ببنید.از هسته Cube.AI هم پشتیابی میکنه.اکثرا روی میکروی h7 و میکروپروسسر هاش و سری N شرکت ST اجرا میشن.تنها موردی که میشه با میکروی کم قدرت تر مثل f4 انجام داد Hand Posture Recognition هست .مواردی که میتونید به طور کلی باهاش پیاده کنید:
Image Classification
Object Detection
Pose Estimation
Semantic Segmentation
Instance Segmentation
Depth Estimation
Neural Style Transfer
و..
@Embedded_geek
Image Classification
Object Detection
Pose Estimation
Semantic Segmentation
Instance Segmentation
Depth Estimation
Neural Style Transfer
و..
@Embedded_geek
یه نرم افزار یا فرمور کنترلر پروازی هست به نام EmuFlight که میتونید یک UAV مولتی روتور رو باهاش کنترل کنید که ویژگی های زیادی داره:
Per-Axis Lowpass filters
Feathered PIDs
Error-based Boosts for P, I, & D. (EmuBoost/DBoost)
i-Decay
Throttle Point Attenuation (TPA) for P, I, & D
Stick Point Attenuation (SPA)
Advanced Dynamic Gyro & D-Term Filters
Smith-Predictor on Gyro
Optional ABG Filters for Gyro and DTerm
PT(n) for LPF and RC-Smoothing
Rate-Dynamics (Stick-feel modifier)
Angle-mode 2.0
Dual Axis Steering
NFE racer mode
Fixed yaw PIDsum limit
LPF filter for voltage and current
Motor output limit
Motor output smoothing
Thrust linearization
Axis Lock
@Embedded_geek
Per-Axis Lowpass filters
Feathered PIDs
Error-based Boosts for P, I, & D. (EmuBoost/DBoost)
i-Decay
Throttle Point Attenuation (TPA) for P, I, & D
Stick Point Attenuation (SPA)
Advanced Dynamic Gyro & D-Term Filters
Smith-Predictor on Gyro
Optional ABG Filters for Gyro and DTerm
PT(n) for LPF and RC-Smoothing
Rate-Dynamics (Stick-feel modifier)
Angle-mode 2.0
Dual Axis Steering
NFE racer mode
Fixed yaw PIDsum limit
LPF filter for voltage and current
Motor output limit
Motor output smoothing
Thrust linearization
Axis Lock
@Embedded_geek
بریم یکم درمورد هوش مصنوعی صحبت کنیم.یکی از مباحث مهم در استفاده از هوش مصنوعی دستور دادن یا prompting هستش که میخوام مرتبط با امبدد دربارش صحبت کنم.به چند سوال اول پاسح بدیم:
پرامپتینگ چی هست؟
پرامپت دادن یک تمرین ایجاد دستورات واضح،مشخص برای راهنمایی هوش مصنوعی هست تا جواب های مفید،دقیق و مرتبط بده.
چرا پرامپت دادن توی امبدد سیستم اهمیت داره؟
مثلا شما یه پرامپت بدید که یه کد سی برای یه سنسور بنویس که خیلی مبهم هست و اصلا جواب خوبی نمیگیرید.
چگونه پرامپت درست بنویسیم؟
برای این کار شما باید با کلیت اون سخت افزار و نرم افزار آشنا باشید مثلا زبان،فریمورک مد نظر،ملاحظات زمانی ،rtos یا برمتال و...
بریم چند مثال از پرامپت درست نوشتن ببنیم:
یه مثال ساده از پرامپت.
توی این پرامپت مثلا میکرو ذکر شده،فریمورک و زبان ونوع دیتا ذکر شده.یعنی از سخت افزار تا نرم افزار ملاحظاتش ذکر شده.اما میتونست بهترم باشه.
بریم یه پرامپت پیچیده تر با ملاحظه rtos و دیباگ اون ببنیم:
یه پرامپت پیشرفته تر شامل ذکر خطا ها و موارد زمانی و ابزار برنامه نویسی:
@Embedded_geek
پرامپتینگ چی هست؟
پرامپت دادن یک تمرین ایجاد دستورات واضح،مشخص برای راهنمایی هوش مصنوعی هست تا جواب های مفید،دقیق و مرتبط بده.
چرا پرامپت دادن توی امبدد سیستم اهمیت داره؟
مثلا شما یه پرامپت بدید که یه کد سی برای یه سنسور بنویس که خیلی مبهم هست و اصلا جواب خوبی نمیگیرید.
چگونه پرامپت درست بنویسیم؟
برای این کار شما باید با کلیت اون سخت افزار و نرم افزار آشنا باشید مثلا زبان،فریمورک مد نظر،ملاحظات زمانی ،rtos یا برمتال و...
بریم چند مثال از پرامپت درست نوشتن ببنیم:
یه مثال ساده از پرامپت.
Explain how I2C works in embedded systems and show a basic C function to read from an I2C temperature sensor on an STM32 using HAL.
توی این پرامپت مثلا میکرو ذکر شده،فریمورک و زبان ونوع دیتا ذکر شده.یعنی از سخت افزار تا نرم افزار ملاحظاتش ذکر شده.اما میتونست بهترم باشه.
بریم یه پرامپت پیچیده تر با ملاحظه rtos و دیباگ اون ببنیم:
"I’m using an ESP32 with FreeRTOS. I need a task that reads data from a BME280 sensor over I2C every 5 seconds and sends it via Wi-Fi to an MQTT broker. Use Arduino framework. Include error handling for I2C timeouts."
یه پرامپت پیشرفته تر شامل ذکر خطا ها و موارد زمانی و ابزار برنامه نویسی:
"My STM32F407 application uses FreeRTOS and must read 4 ADC channels at 1 kHz using DMA. The system occasionally crashes with a HardFault. Help me debug by analyzing possible stack overflow, DMA buffer overruns, or interrupt priority issues. Suggest how to use STM32CubeIDE debugger to isolate the fault."
@Embedded_geek
اگر پروژه iot دارید و مجبور هستید با کلاینت یه رینجی از دیتاهای متنوع رو جابهجا کنید بهتون CJSON رو پیشنهاد میده. در واقع این یک پارسر json بهینه شده برای زبان سی هستش که شما خیلی راحت میتونید با اون آبجکت ها و استراکچر خودتون رو به صورت Json آماده کنید و برای کلاینت خودتون بفرستید.البته راحل جایگزین دیگش این هست که خودتون بیاید یه سیستم فرمتینگ رشته با توابع سی پیاده سازی کنید اما این خودش همه چی رو یه جا داره اما یه چندتا عیب داره یکی اینکه اگر دیتای double میخواید توش ذخیره کنید پشتیبانی نمیکنه همچنین از '\0' یا نال هم پشتیبانی نمیکنه!!
@Embedded_geek
@Embedded_geek
⌨️ 5 تم جذاب VS Code
1️⃣ تم Dracula Official
• یه تم تیره با رنگهای بنفش و سبز نئونی که خیلیا دوستش دارن. این تم برای بیش از 180 اپلیکیشن دیگه هم موجوده.
2️⃣ تم One Dark Pro
• با رنگهای تیره و پسزمینه مشکی، کدنویسی رو برای چشمت راحتتر میکنه.
محبوبیت بالایی بین برنامه نویسا داره.
3️⃣ تم Ayu Mirage
• یه تم با رنگهای ملایم و طراحی مدرن که در سه نسخه تیره، روشن و میراژ ارائه میشه. تعامل بین تم تیره و روشن👌
4️⃣ تم Night Owl
• این تم مخصوص شبزندهداراست! رنگهای آبی تیره و متنهای با کنتراست بالا داره که توی نور کم، چشمت رو کمتر خسته میکنه.
5️⃣ تم Palenight
• یه تم با الهام از متریال دیزاین که رنگهای بنفش و آبی ملایمی داره. این تم محیطی زیبا و تمیز برای کدنویسی فراهم میکنه!
@Embedded_geek
1️⃣ تم Dracula Official
• یه تم تیره با رنگهای بنفش و سبز نئونی که خیلیا دوستش دارن. این تم برای بیش از 180 اپلیکیشن دیگه هم موجوده.
2️⃣ تم One Dark Pro
• با رنگهای تیره و پسزمینه مشکی، کدنویسی رو برای چشمت راحتتر میکنه.
محبوبیت بالایی بین برنامه نویسا داره.
3️⃣ تم Ayu Mirage
• یه تم با رنگهای ملایم و طراحی مدرن که در سه نسخه تیره، روشن و میراژ ارائه میشه. تعامل بین تم تیره و روشن👌
4️⃣ تم Night Owl
• این تم مخصوص شبزندهداراست! رنگهای آبی تیره و متنهای با کنتراست بالا داره که توی نور کم، چشمت رو کمتر خسته میکنه.
5️⃣ تم Palenight
• یه تم با الهام از متریال دیزاین که رنگهای بنفش و آبی ملایمی داره. این تم محیطی زیبا و تمیز برای کدنویسی فراهم میکنه!
@Embedded_geek
در چند ماه اخیر، شاهد افزایش قابل توجهی در قیمت حافظههای کامپیوتری مانند ماژولهای DRAM (برای رم سیستم) و درایوهای حالت جامد (SSD) بودهایم. این افزایش قیمت عمدتاً ریشه در کمبود تأمین آیسیهای (ICs) تخصصی مورد استفاده در این محصولات دارد. این کمبود، عوامل متعددی از جمله تغییرات استراتژیک تولیدکنندگان نیمههادی، نوسانات تقاضا در بخشهای مختلف صنعت (مانند دیتاسنترها، خودروسازی و موبایل)، و همچنین چالشهای زنجیره تأمین جهانی دارد.حافظههای DRAM (Dynamic Random-Access Memory) در سیستمهای امبدد (Embedded Systems) و سیستمهای کامپیوتری سنتی، بهعنوان حافظه اصلی موقت (Main Memory) عمل میکنند. ساختار هر سلول DRAM شامل یک ترانزیستور (معمولاً MOSFET) و یک خازن است که وضعیت بیت (0 یا 1) را بر اساس شارژ یا عدم شارژ بودن خازن ذخیره میکند.به دلیل نشت جریان (Leakage Current) در خازنها، اطلاعات ذخیرهشده در DRAM بهطور مداوم از بین میروند؛ بنابراین، نیاز است که فرآیند Refresh بهصورت دورهای انجام شود. این ویژگی «دینامیک» بودن این نوع حافظه را تبیین میکند. این عملیات Refresh در طراحی سیستمهای امبدد حساس به توان (مانند دستگاههای IoT یا سیستمهای باتریمحور) چالشهای خاصی ایجاد میکند، زیرا منجر به مصرف توان اضافی میشود.در سیستمهای امبدد مدرن، LPDDR (Low Power DDR) نسخه کممصرف DRAM است که بهطور گسترده در دستگاههای تلفن همراه، سیستمهای نهفته و پلتفرمهای edge computing استفاده میشود.در مقابل، SSDها (Solid State Drives) از حافظههای NAND Flash بهعنوان رسانه ذخیرهسازی اصلی استفاده میکنند. NAND Flash یک نوع حافظه غیرفرار (Non-Volatile Memory) است که قادر به نگهداری داده بدون نیاز به تغذیه است. این حافظهها بر اساس تراشههای فلوتینگ گیت (Floating-Gate Transistors) کار میکنند.در سیستمهای امبدد، معمولاً از eMMC (embedded MultiMediaCard) یا UFS (Universal Flash Storage) بهعنوان ذخیرهساز داخلی استفاده میشود که هر دو مبتنی بر NAND Flash هستند. با پیشرفت فناوری، بهویژه در معماریهای 3D NAND، چگالی ذخیرهسازی افزایش یافته اما همراه با آن چالشهایی در کنترل خطاهای نوشتن/خواندن (Write/Erase Endurance و Bit Error Rate) نیز پدید آمدهاند که نیازمند الگوریتمهای پیچیده FTL (Flash Translation Layer) و ECC (Error Correction Code) در کنترلر SSD یا SoC سیستم امبدد هستند.تولید هر دو نوع آیسی DRAM و NAND Flash نیازمند فابهای پیشرفته (معمولاً در نودهای فناوری 10 نانومتری و کوچکتر) است. تولیدکنندگان بزرگی مانند Samsung، SK Hynix، Micron و Kioxia، قیمتگذاری این محصولات را بر اساس تعادل بین عرضه و تقاضا انجام میدهند. در سالهای اخیر، تصمیم این شرکتها برای کاهش تولید به دلیل کاهش سودآوری و انباشت موجودی قبلی، منجر به تنگنشینی بازار و افزایش قیمت شده است.
@Embedded_geek
@Embedded_geek
اگر دوست دارید کیبورد طراحی کنید!!!(با سورس و پی سی بی) این ریپو اومده پروژه های مختلف اون رو جمع آوری کرده
@Embedded_geek
@Embedded_geek
یه پروژه جالبی هست به Cyclone که اومده یه دستگاه cnc برای ساخت PCB ساخته به همراه سورس کد و نرم افزارش.
@Embedded_geek
@Embedded_geek
کالکشن سورس دیباگر های میکرو و fpga
stlink v2 v3
Jlink
Jlink OB
cmsis-dap
dap-link
blackmagicprobe
@Embedded_geek
stlink v2 v3
Jlink
Jlink OB
cmsis-dap
dap-link
blackmagicprobe
@Embedded_geek
یه کتابخونه ای هست به Cello که براساس زبان سی نوشته شده و برای پیاده سازی مفاهیم سطح بالای برنامه نویسی نوشته شده.مفاهیم زیر به زبان سی پیاده سازی شده:
Generic Data Structures
Polymorphic Functions
Interfaces / Type Classes
Constructors / Destructors
Optional Garbage Collection
Exceptions
Reflection
و چون با زبان سی نوشته شده همون عملکرد و سرعت سی رو دارید.
زیر یه مثال از این کتابخونه هستش:
@Embedded_geek
Generic Data Structures
Polymorphic Functions
Interfaces / Type Classes
Constructors / Destructors
Optional Garbage Collection
Exceptions
Reflection
و چون با زبان سی نوشته شده همون عملکرد و سرعت سی رو دارید.
زیر یه مثال از این کتابخونه هستش:
#include "Cello.h"
int main(int argc, char** argv) {
/* Stack objects are created using "$" */
var i0 = $(Int, 5);
var i1 = $(Int, 3);
var i2 = $(Int, 4);
/* Heap objects are created using "new" */
var items = new(Array, Int, i0, i1, i2);
/* Collections can be looped over */
foreach (item in items) {
print("Object %$ is of type %$\n",
item, type_of(item));
}
/* Heap objects destructed via Garbage Collection */
return 0;
}
@Embedded_geek
یه زبان برنامه نویسی هست به نام گرویتی که به زبان سی نوشته شده قدرتمند،تایپ داینامیک،سبک وزن، قابل تعبیه بدون هیچ وابستگی به کتاخونه خارجی که سیتنکس شبیه سوییفت داره. از برنامه نویسی oop، procedural,functional و data-driven پیشتیبانی میکنه و میتونه با کامپایلر c99 کامپایل بشه.
یه نمونه کد ازش ببنید:
@Embedded_geek
یه نمونه کد ازش ببنید:
class Vector {
// instance variables
var x = 0;
var y = 0;
var z = 0;
// constructor
func init (a = 0, b = 0, c = 0) {
x = a; y = b; z = c;
}
// instance method (built-in operator overriding)
func + (v) {
if (v is Int) return Vector(x+v, y+v, z+v);
else if (v is Vector) return Vector(x+v.x, y+v.y, z+v.z);
return null;
}
// instance method (built-in String conversion overriding)
func String() {
// string interpolation support
return "[\(x),\(y),\(z)]";
}
}@Embedded_geek
راهنمایی جامع بر ۵۰ سال تکاملِ برنامهنویسیِ سختگیرانهٔ زبان C، ادای احترامی به زبان دنیس ریچی
@Embedded_geek
@Embedded_geek