Embedded 3

Important Post from CSE Group
Abdelrahman Ali
بناء على طلب الجماهير وتوجيهات السيد/ عمر أمين  .. ده بوست بيشرح بالبلدي الخطوات اللي أي حد عاوز يتعلم Embedded systems محتاج يعملها:
اولا:
توضيحا لنقطة كتير من الناس بتفهمها غلط .. خلي بالك ان تخصص ال embedded systems حاجة وال digital design حاجة تانية خالص.. لازم تحدد انت عاوز تكمل في ايه وتركز فيه واي حاجة تانية تبقي معلومات عامة او تتعلمها بعدين لما تتقن اللي انت مقرر انه يبقي تخصصك الاصلي.
ببساطة ال embedded systems هو مجال انت فيه بيبقى عندك مشكلة انت عاوز تعمل ليها system يعمل عليها control باستخدام مكونات جاهزة وموجودة وما عليك إلا انك تختار المكونات دي بالامكانيات المطلوبة لحل المشكلة وبتجمعها في system متكامل يحل المشكلة دي .. مثال على كدة: كل أنواع الروبوت .. الروبوت بيبقى عبارة عن شوية actuators بتحرك الروبوت و sensors بتفهم البيئة المحيطة بالروبوت سواء كاميرات او ultrasonic sensors كمثال .. بالإضافة لكدة بيبقى فيه microcontroller بيتم اختياره بالامكانيات المناسبة بينظم عمل ال system ده وبياخد قرايات ال sensors وبيتحكم في ال actuators بالطريقة المناسبة اللي تخلي الروبوت يشتغل زي ما هو مطلوب منه.
أما ال digital design فده هو انك تعمل design لدواير إلكترونية digital يعني كل مكوناتها في النهاية عبارة عن logic gates .. مثال على كدة: انك تعمل تصميم ال microcontroller نفسه اللي مهندس ال embedded systems هيستخدمه في الروبوت اللي فوق ده  .. و فيه طبعا دواير digital كتير تانية ليها تطبيقات كتير غير ال microcontrollers .. ماعلينا .. نخش في المهم 
ثانيا:
هنتكلم فيما يلي عن الحاجات اللي محتاج تتعلمها عشان تبقى مهندس embedded systems:
1- اتقان البرمجة بال C زي مابتعرف تكتب اسمك.. ده يتضمن معرفة كل ال datatypes وبتستخدم ازاي وال size بتاعها في ال memory وازاي لو عندك variable من نوع معين تحوله لنوع تاني (تعمل له typecasting) من غير ماتحصل مشاكل أو تطلعلك data مش مفهومة أو بايظة .. أما ال pointers دي بالذات لازم تبقي بتعرف تلعب بيها لعب.. ولازم تعرف ال structures وال unions وتعرف تستخدمهم كويس.. لازم كمان تفهم كويس ال data qualifiers ومعانيها واستخداماتها (زي volatile و static و const... الخ) .. من الاخر لازم تبقي تنين مجنح في ال C .. ومقياس ده انك توصل لدرجة انك تبقى مدرك تماما ومتخيل البرنامج اللي انت كاتبه بال C ده ال compiler هايفهمه ازاي وهايتنفذ ازاي على ال processor .. يعني دماغك تبقى هي نفسها compiler في نفسها 
2- لازم تعرف الحاجات المهمة فيما يسمي بعلم ال data structures & algorithms .. علم ال data structures & algorithms هو علم بيدرس احسن techniques وصل لها الناس في البرمجة في حل مشكلات مشهورة و متكررة عشان الكود بتاعك يبقي efficient .. مثلا لو عندك array كبير وبتدور فيه علي data معينة ازاي تعمل ده في اقل وقت واقل استهلاك لل memory size .. وازاي مثلا تعمل Queue أو List ترتب فيه شوية data عندك بطريقة تسهل حل المشكلة .. فيه حاجات اساسية في العلم ده مهم جدا تبقي عارفها زي مثلا ال search algorithms وال sorting algorithms وال trees وال Queues وال Linked lists وال stacks علي سبيل المثال لا الحصر. لازم طبعا تبقى فاهم برمجة كويس عشان تبتدي تتعلم الكورس ده.
3- لازم تبقي عارف كويس ال digital communication protocols اللي بتستخدم للتواصل بين اجزاء اي embedded system (بين اتنين microcontrollers مثلا).. البروتوكولات دي زي ال serial او مايسمي UART (و هتلاقيه بيستخدم في standards كتير زي RS232 وال RS485 وال RS422 ومهم برضه تعرف الفروقات بينهم).. كمان مهم تعرف ال SPI وال I2C وياريت نبذة مختصرة عن ال CAN وال TCP
4- لازم تبقي عندك خلفية electronics محترمة.. مش باقول تبقي تنين بس فيه اساسيات لازم تبقي عارفها زي استخدام ال BJT وال MOSFET وتركيبة ال motor driver circuit واستخدامها.. ولازم تعرف تفهم ال datasheet بتاع أي electronic component وتعرف تطلع ال ratings بتاعته وتاخد بالك منها زي مثلا بيسحب current أد ايه و بيشتغل بفولت كام وهكذا .. كمان تبقي عارف ال crystal ايه لازمتها في دايرة ال microcontroller الخ
5- لازم تبقي فاهم computer architecture و microcontrollers ودول مادتين هاتاخدهم في الكلية .. بمعني تبقي فاهم ال microcontroller ايه هي اجزاءه ووظايف كل جزء (زي ال ADC وال DAC وال timers وال counters وال watchdog) وازاي البرنامج اللي انت كاتبه بيتحول ل instructions الميكروكنترولر يفهمها وازاي بتتنفذ جواه وازاي تقرا وتفهم طريقة التعامل مع الميكروكنترولر من قراية ال datasheet بتاعه.. كمان لازم تفهم بعض ال concepts زي ال interrupts وال PWM signals.. المادتين دول انت بتاخدهم في الكلية بس انا شايف انهم مش كفاية وانك محتاج تقرا وتتعلم اكتر من كدة بكتير فيهم وبالتالي أفضل حاجة أنك و انت بتدرسهم تحاول تدوس فيهم زيادة و تقرا topics فيهم إضافية و من مصادر مختلفة.
6- بداية من النقطة دي الحاجات اللي تعملها عشان توصل لمرحلة الاتقان بقي.. من الاخر عشان تبقي تنين يعني .. الشغل بايدك ثم الشغل بايدك ثم الشغل بايدك.. لازم تقرا عن انواع ال microcontrollers المختلفة وياريت تشتغل بايدك فيهم.. لازم تجرب تشتغل شوية علي PIC microcontroller وتجرب تشتغل علي AVR microcontroller وتجرب تشتغل علي ARM... الخ. لازم تعرف انواعهم وامكانيات كل واحد فيهم والفروقات بينهم.. ولازم تبقي عارف ال compilers بتاعتهم وال IDE بتاع ال microcontrollers دي وتبقي جربت تشتغل عليهم بايدك
7- مهم برضه تبقي عارف انواع ال actuators اللي انت اصلا بتعمل كل ده عشان تتحكم فيها .. مثلا لازم تفهم الفرق بين ال servo motor وال stepper motor.. لازم تفهم استخدامات ال relay.. ودواير ال motor drivers.
8- حاجة كمان ظريفة انك تبقي عارف ال sensors اللي موجودة في السوق واستخداماتها وازاي ببتوصل بدايرة الميكروكنترولر بتاعتك.. ده ممكن تعمله بانك تفتح موقع Ram electronics وتفتح ال category بتاع ال sensors في الموقع وتفتح السينسورز اللي فيه واحد واحد وتقرا عنهم.. الموقع كمان بيبقي حاططلك لينكات لتوضيح كيفية استخدامهم وال datasheets بتاعتهم.
وبس كدة .. ده كل اللي في دماغي حاليا .. لو افتكرت معلومة تاني هاضيفها .. وبالتوفيق إن شاء الله

تعليقات

المشاركات الشائعة