برمجيات مصممة لطريقة عملك.مصر · السعودية · الإمارات

خطة تعلم Embedded Systems من الصفر: من C لحد RTOS

الخطة كاملة لو بتبدأ من الصفر: 6 مراحل بالترتيب، في كل واحدة إيه تتعلمه بالظبط، ومشروع تعمله بإيدك، ومدة تقريبية، وإزاي تعرف إنك جاهز للي بعدها.

الغسالة اللي في بيتكم، والمكيف، والعربية، جواهم كمبيوتر صغير حد برمجه. وده الـ Embedded Systems.

الـ Embedded إنك تكتب الكود اللي بيشتغل جوه الأجهزة دي، قريب جدًا من الهاردوير: بيقرا حساس، ويشغّل موتور، ويرد في الوقت المظبوط. وعلشان تتعلمه صح فيه ترتيب: C كويس جدًا ومعاها أساسيات الإلكترونيات، وبعدها Microcontroller تبدأ فيه بـ Arduino وبعدين STM32 أو ESP32، وبعدها طرق الاتصال UART و I2C و SPI، وفي الآخر RTOS.

علّم على كل حاجة تخلصها وانت ماشي، علشان تعرف انت فين، وترجع تكمّل من نفس المكان.

قبل ما تبدأ

  • ذاكر كل يوم، حتى لو شوية. المدد هنا محسوبة على ساعتين في اليوم. لو وقتك أقل هتاخد وقت أطول، وده عادي.
  • المدد تقريبية. في ناس هتخلص أسرع وناس أبطأ. عدّي المرحلة لما تبقى جاهز فعلًا، مش لما الوقت يخلص.
  • اشتغل بإيدك من أول يوم. هات من أول أسبوع kit فيه breadboard و LEDs ومقاومات وزراير وأسلاك، ومعاه multimeter. وكل مرحلة فيها مشروع، متعديش للي بعدها قبل ما تعمله بإيدك.

المرحلة 1 من 6

Cاللغة القريبة من الهاردوير

المدة: 6 لـ 8 أسابيع

ابدأ بلغة C كويس جدًا. هي اللغة الأساسية في المجال ده، لأنها بتديك تحكم في الذاكرة وفي كل bit بنفسك، وده بالظبط اللي محتاجه وانت بتكلم الهاردوير.

وكلمة «كويس جدًا» مقصودة: الـ pointers والـ bits مش حاجة تعدّي عليها بسرعة. ومن أول أسبوع، ابدأ معاها مرحلة الإلكترونيات اللي بعدها.

هتتعلم إيه

0 من 12

اعمل بإيدك

8 لمبات في رقم واحد. اكتب functions بتشغّل وتطفي وتقلب وتقرا bit معين، و function بتطبع الرقم بالـ binary. وبعدين برنامج بيعتبر كل bit في uint8_t لمبة، وتتحكم فيهم من الكيبورد: تشغّل لمبة، وتطفي لمبة، وتعمل نور بيجري من ناحية للتانية.

تعدّي للمرحلة اللي بعدها لما

  • تقدر تشرح الـ pointers لحد تاني بالرسم
  • بتشغّل أو تطفي bit معين في رقم من غير ما تبص على شرح
  • بتقرا رسالة الـ compiler وتصلّح الـ error بنفسك

الأمان قبل أي توصيلة

  • اشتغل على جهد واطي بس. زي الـ 5 فولت اللي جاية من الـ USB، أو بطاريات صغيرة. متقربش من كهربا البيت (220 فولت)، ومتفكش أي جهاز متوصل بالفيشة وانت لسه بتتعلم. دي خطر على حياتك.
  • افصل الباور قبل ما تغيّر أي سلك. وبعد ما توصّل، راجع التوصيلات بعينك قبل ما ترجّع الباور.
  • اتأكد من الموجب والسالب. الـ LED والمكثف الإلكتروليتي وأي chip ممكن يتحرقوا لو اتوصلوا بالعكس، والمكثف ممكن ينفجر.
  • متوصّلش الـ 5V أو الـ 3.3V بالـ GND على طول. ده short، وبيسخّن ويحرق.
  • كل LED لازم معاه مقاومة. ومتشغّلش موتور من pin على طول، استخدم driver.
  • اعرف الـ pin بيستحمل كام فولت. الـ ESP32 بيشتغل على 3.3V، و 5V على أي pin فيه ممكن تحرقه. ارجع للـ datasheet دايمًا.
  • بطاريات الليثيوم بتولّع لو اتعاملت غلط. متعملهاش short، ومتخبطهاش، واشحنها بالشاحن المخصوص ليها بس.
  • لو حاجة سخنت جامد أو شميت ريحة حريق، افصل الباور فورًا. ومتلمسش القطعة لحد ما تبرد.
  • الكاوية بتبقى سخنة جدًا. رجّعها الحامل بتاعها دايمًا، واشتغل في مكان فيه تهوية، واغسل إيدك بعد اللحام.

المرحلة 2 من 6

أساسيات الإلكترونياتالفولت والتيار والمقاومة

المدة: 2 لـ 4 أسابيع

ومع C، أساسيات الإلكترونيات: الفولت والتيار والمقاومة، وإزاي تقرا Datasheet، ودا الكتالوج اللي بيشرح القطعة: رجليها، وبتشتغل على كام فولت، وأقصى حاجة تستحملها.

دي بتمشي مع C، مش بعدها: خلي كل يوم فيه شوية كود وشوية توصيل. وهنا هتبدأ تشوف الغلطة بعينك: LED مش بينوّر، أو قطعة سخنت. اقرا قواعد الأمان اللي فوق قبل أول توصيلة.

هتتعلم إيه

0 من 12

اعمل بإيدك

4 دواير على الـ breadboard من غير microcontroller. LED بمقاومة انت حاسبها، وبعدين زرار بيشغّله، وبعدين voltage divider تقيس خرجه بالـ multimeter وتقارنه بحسابك، وفي الآخر transistor بيشغّل buzzer. وارسم الـ schematic بتاع كل دايرة قبل ما توصّلها.

تعدّي للمرحلة اللي بعدها لما

  • بتحسب المقاومة اللي محتاجها قبل ما توصّل، مش بالتجربة
  • بتلاقي الغلط في الدايرة بالـ multimeter بنفسك
  • فتحت datasheet لقطعة وطلّعت منه الـ pinout وأقصى فولت تستحمله

المرحلة 3 من 6

Arduinoأول Microcontroller

المدة: 3 لـ 4 أسابيع

بعد كده Microcontroller، ودا كمبيوتر صغير في شريحة واحدة: فيه processor وذاكرة ورجول (pins) بتوصّلها بالقطع. ابدأ بـ Arduino.

Arduino بيسهّل عليك كل حاجة: الـ board جاهزة، والكود بيترفع بزرار، وفيه مكتبات لحساسات وشاشات كتير. وده اللي محتاجه في الأول: تشوف الكود بتاعك بيحرك حاجة حقيقية بسرعة.

هتتعلم إيه

0 من 12

اعمل بإيدك

إشارة مرور. 3 LEDs بتشتغل بالترتيب، وزرار للمشاة بيقطع الدورة، و buzzer بيصفّر والمشاة بتعدّي، وحساس ضوء بيخلي الإشارة تفلّش أصفر بالليل. وكله بـ millis() من غير delay()، علشان الزرار يستجيب على طول.

تعدّي للمرحلة اللي بعدها لما

  • بتكتب كود فيه أكتر من حاجة شغالة في نفس الوقت من غير delay()
  • تقدر توصّل حساس جديد وتشغّله من الـ datasheet بتاعه
  • لما حاجة متشتغلش، بتعرف المشكلة في الكود ولا في التوصيل

المرحلة 4 من 6

STM32 أو ESP32تحت غطا الـ Arduino

المدة: 5 لـ 8 أسابيع

وبعدين ادخل على STM32 أو ESP32. Arduino كان مخبّي عنك حاجات كتير، وهنا بتنزل تحت: الـ registers، والـ clocks، والـ interrupts، والـ debugger.

اختار واحد بس. STM32 عيلة كبيرة من الشرايح، وعليها مصادر كتير بتشرح الشغل من الـ registers. و ESP32 جواه WiFi و Bluetooth، فلو بتحب الـ IoT ابدأ بيه. وخلي بالك: الاتنين بيشتغلوا على 3.3V، فراجع أي حاجة 5V قبل ما توصّلها.

هتتعلم إيه

0 من 12

اعمل بإيدك

Blink وزرار من الـ registers. LED بيفلّش بـ timer مش بـ delay، وزرار شغال بـ interrupt بيغيّر سرعة الفلاش، من غير مكتبات جاهزة على قد ما تقدر. وبعدين اعمل نفس الحاجة بالـ HAL أو بـ ESP-IDF، وقارن الكود.

تعدّي للمرحلة اللي بعدها لما

  • تقدر تفتح جزء الـ GPIO في الـ reference manual وتطلّع منه الـ registers اللي محتاجها
  • استخدمت الـ debugger ووقفت الكود عند breakpoint
  • فاهم الـ HAL بتعمل إيه من جوه، مش بتستخدمها وخلاص

المرحلة 5 من 6

UART و I2C و SPIاللغات اللي القطع بتكلم بيها بعض

المدة: 4 لـ 6 أسابيع

وبعدها طرق الاتصال، زي UART و I2C و SPI، ودي اللغات اللي القطع بتكلم بيها بعض. الحساس بيبعت قراياته للـ microcontroller، والـ microcontroller بيكلم الشاشة، وكل واحد بلغته.

انت استخدمت UART من غير ما تاخد بالك، مع الـ Serial Monitor في Arduino. هنا بتفهمهم من جوه، وبتكتب الـ driver بنفسك من الـ datasheet.

هتتعلم إيه

0 من 11

اعمل بإيدك

محطة طقس صغيرة. حساس حرارة ورطوبة على I2C، وشاشة صغيرة على SPI أو I2C، والقرايات بتتبعت للكمبيوتر على UART كل ثانية. واكتب الـ driver بتاع الحساس بنفسك من الـ datasheet، من غير مكتبة جاهزة.

تعدّي للمرحلة اللي بعدها لما

  • كتبت driver لقطعة من الـ datasheet بس
  • شفت الإشارة على logic analyzer وعرفت البايتات اللي اتبعتت
  • لو القطعة مبتردش، عندك خطوات ثابتة تعرف بيها السبب
  • مرتاح في الـ interrupts والـ timers قبل ما تدخل الـ RTOS

المرحلة 6 من 6

RTOSكذا حاجة في نفس الوقت

المدة: 4 لـ 6 أسابيع

وفي الآخر RTOS، ودا نظام تشغيل صغير بيخلي الجهاز يعمل كذا حاجة في نفس الوقت من غير ما يتأخر: يقرا الحساس، ويحدّث الشاشة، ويرد على الزرار، وكل واحدة في وقتها.

هنتعلم على FreeRTOS: مجاني، ومستخدم كتير، و ESP-IDF مبني عليه أصلًا. ومتدخلش المرحلة دي قبل ما تكون مرتاح في الـ interrupts والـ timers، لأن الـ RTOS مبني عليهم.

هتتعلم إيه

0 من 12

اعمل بإيدك

محطة الطقس بـ RTOS. قسّمها لـ tasks: task بتقرا الحساس، و task بتحدّث الشاشة، و task بترد على commands من الـ UART، وبينهم queues. وزوّد watchdog، وزرار بـ interrupt بيغيّر شكل العرض على طول حتى والحساس شغال. وسيبها شغالة يوم كامل من غير ما تعلّق.

تعدّي للمرحلة اللي بعدها لما

  • عارف كل task عندك بتشتغل إمتى وليه
  • مفيش اتنين tasks بيكلموا نفس القطعة من غير mutex
  • الجهاز فضل شغال يوم كامل من غير ما يعلّق

سلم المشاريع

المشاريع هي اللي بتعلمك بجد، وهي اللي هتوريها لأي حد عايز يشغّلك. دول 5 مشاريع، كل واحد أصعب شوية من اللي قبله، وكلهم من المراحل فوق. والأخير هو اللي بيقفل الخطة.

  1. 8 لمبات في رقم واحد

    C و Bitwise

    كل bit لمبة، وتتحكم فيهم من الكيبورد. نفس اللي هتعمله بعد كده مع الـ registers.

  2. إشارة مرور

    Arduino و millis و Interrupts

    أول مشروع بيتحرك قدامك: LEDs وزرار وحساس، وكله شغال مع بعض من غير delay().

  3. Blink وزرار من الـ registers

    STM32 أو ESP32 و Timers و Debugger

    نفس الفكرة البسيطة، بس من تحت خالص: انت اللي بتكتب في الـ registers.

  4. محطة طقس

    UART و I2C و SPI

    حساس وشاشة وكمبيوتر بيكلموا بعض، والـ driver بتاع الحساس كاتبه بإيدك.

  5. محطة الطقس بـ RTOS

    FreeRTOS و Queues و Watchdog

    مشروع الـ portfolio: نفس المحطة بعد ما قسّمتها لـ tasks، وشغالة يوم كامل من غير ما تعلّق. صوّرها فيديو وهي شغالة، وارسم الـ schematic، وارفع الكود على GitHub بـ README بيشرح كل task بتعمل إيه.

مصادر مجانية

كل دول مجانيين، أو فيهم جزء مجاني يكفيك. متجمعش مصادر كتير: اختار مصدر أساسي واحد لكل مرحلة وكمّل بيه، والباقي ارجعله لما تقف في حتة.

C

الإلكترونيات

Arduino

STM32 و ESP32

طرق الاتصال

RTOS

أكتر الأخطاء اللي بشوفها

  • إنك تذاكر نظري بس ومتمسكش قطع بإيدك. ورأيي إن هنا الغلطة بتشوفها بعينك، وممكن تحرق قطعة. وده مش وحش، ده اللي بيعلّمك. فاشتغل بإيدك على مشاريع صغيرة من أول يوم، واعتبر القطع الرخيصة اللي هتتحرق جزء من التعليم. بس خليك على الجهد الواطي دايمًا.
  • إنك توصّل قبل ما تفتح الـ datasheet. قطع كتير بتتحرق علشان حد وصّل 5V على حاجة بتشتغل على 3.3V، أو عكس الموجب والسالب. دقيقتين في الـ datasheet أرخص من قطعة جديدة.
  • إنك تفضل على Arduino على طول. Arduino بداية ممتازة، بس بيخبّي عنك الـ registers والـ clocks والـ interrupts. لو عمرك ما نزلت تحت، هتقف أول ما تقابل مشكلة المكتبة مش بتحلها.
  • إنك تحط delay() في كل حتة. الجهاز بيقف تمامًا وهو مستني، فالزرار مبيستجيبش والحساس بيفوته قرايات. اتعلم millis() والـ timers والـ interrupts بدري.
  • إنك تجري على RTOS قبل ما تفهم الـ interrupts. الـ RTOS مبني على الـ interrupts والـ timers، ولو مش فاهمهم، كل مشكلة هتبان سحر.

بعد كده

لما تخلص الخطة دي ومحطة الطقس شغالة، دي الخطوات اللي بعدها:

  • Embedded Linux: أجهزة أكبر زي Raspberry Pi بيشتغل عليها Linux كامل. هنا بتتعلم الـ drivers، وإزاي الجهاز بيعمل boot، وإزاي تبني نظام صغير على قدّ الجهاز.
  • تصميم PCB بـ KiCad: بدل الـ breadboard والأسلاك، تصمم البوردة بتاعتك وتطبعها. و KiCad مجاني ومفتوح المصدر.
  • IoT: توصّل أجهزتك بالإنترنت، بـ ESP32 وبروتوكول زي MQTT، وتتحكم فيها أو تقرا بياناتها من أي مكان.

احفظ الصفحة دي، وارجعلها كل ما تخلص حاجة وعلّم عليها. ولو وقفت في مرحلة ومش فاهم، ارجع للي قبلها، غالبًا المشكلة هناك.

لديك مشروع يحتاج من يبنيه؟

تبني JoSamCode مواقع وأنظمة وأتمتة لأنشطة في مصر والخليج. إذا كانت لديك فكرة تحتاج من يبنيها، أخبرنا بها.

ابدأ مشروعكاختر الخدمة المناسبة