تعزيز كفاءة أجهزة التنفس الصناعي المبنية على الأردوينو: مدخل إلى أنظمة الوقت الفعلي والأنظمة الحساسة للسلامة

دقائق القراءة: 16

مقدمة: تحديات تصميم أجهزة التنفس الصناعي في زمن الأزمات

شهد العالم مؤخرًا عاصفة غير مسبوقة تمثلت في تفشي جائحة COVID-19، مما أحدث نقصًا حادًا في أجهزة التنفس الصناعي على مستوى العالم. دفع هذا النقص العديد من المطورين والمبتكرين إلى استكشاف عالم تصميم أجهزة التنفس الصناعي البديلة. ومع ذلك، يواجه هذا التوجه تحديًا كبيرًا: يعتمد الكثيرون في تصميماتهم على منصة Arduino. ورغم أن هذه المنصة قد تكون مناسبة لإثبات المفهوم، إلا أنها ليست الخيار الأمثل لدعم الحياة الفعلي ما لم تكن هناك ضرورة قصوى.

يعود السبب في ذلك إلى أن منصات مثل Arduino صُممت أساسًا لتكون بيئة تعليمية، ولم تُصمم لتلبية متطلبات الأنظمة الحساسة للسلامة والعمل في الوقت الفعلي التي تتطلبها أجهزة التنفس الصناعي. ومع ذلك، هناك حلول بديلة يمكن تطبيقها لتكييف هذه المنصة لاستخدامها في أجهزة تنفس صناعي مؤقتة للطوارئ، خاصة في غياب البدائل. في هذا المقال، سنتعمق في فهم أنظمة الوقت الفعلي (RTS) والأنظمة الحساسة للسلامة (SCS). نأمل أن تتمكن من الاستفادة من هذه المبادئ في تصميم أنظمة التحكم الخاصة بأجهزة التنفس الصناعي لديك لتحسين سلامتها وموثوقيتها.

نظرًا لأن الجمهور المستهدف يتكون بشكل أساسي من مطوري الويب الذين يجربون حظهم في تصميم الأنظمة المدمجة، سأحرص على أن يكون هذا المقال شاملاً قدر الإمكان. انضم إلينا في رحلة من متصفح الويب إلى عالم تصميم الأنظمة المدمجة، لنقترب أكثر من الأجهزة الصلبة في سعينا لتصميم أجهزة التنفس الصناعي.

الأنظمة المدمجة: جوهر جهاز التنفس الصناعي

على الرغم من تعقيدها الظاهري، فإن جهاز التنفس الصناعي هو ببساطة نظام مدمج (Embedded System). النظام المدمج هو نظام مصمم لأداء وظيفة واحدة بكفاءة عالية، مع موثوقية فائقة وأقل قدر من تدخل المستخدم. لتحقيق ذلك، يتكون النظام المدمج من مكونين رئيسيين: نظام مادي (عتادي) ومكون برمجي لتشغيل هذا العتاد.

تُشغل الأنظمة المدمجة التقليدية عادةً بواسطة جهاز تحكم يدمج ذاكرة الوصول العشوائي (RAM)، وذاكرة القراءة فقط (ROM)، بالإضافة إلى مجموعة من الأجهزة الطرفية المدمجة على اللوحة لتمكين النظام من إنجاز مهمته. يمكن أن تعتمد الأنظمة المدمجة الحديثة أحيانًا على معالج تطبيقات (Applications Processor) قد يدمج وحدة معالجة رسوميات (GPU)، ونوى معالجة مركزية متعددة (CPU Cores)، ومُشفرات الوسائط المتعددة (Multimedia Codecs)، وغيرها من الأجهزة. وعلى الرغم من إمكانية استخدام معالجات التطبيقات في الأنظمة المدمجة، إلا أنها تُستخدم بشكل أساسي في أنظمة الحوسبة العامة مثل الهواتف الذكية.

يُطلق على البرنامج الذي يعمل على نظام مدمج اسم firmware (البرامج الثابتة). ويُسمى كذلك لأنه بمجرد كتابته في ذاكرة القراءة فقط (ROM)، لا يُتوقع أن يتغير بشكل متكرر.

مكونات النظام المدمج: يوضح الرسم التخطيطي العلاقة بين الأجهزة والبرامج والبرامج الثابتة في نظام مدمج.

تخيل جهاز تنفس صناعي. هدفه الرئيسي هو توفير التهوية الميكانيكية للحفاظ على حياة المرضى. إنه يؤدي وظيفة واحدة بدرجة عالية من الموثوقية، لدرجة أنه يمكن استخدامه كنظام لدعم الحياة. نادرًا ما تجد شخصًا يغير البرامج الثابتة في مثل هذا الجهاز بمجرد نشره.

المكون المادي (العتاد)

كما ذكرنا سابقًا، يحتوي النظام المدمج على مكون مادي يدمج ذاكرة الوصول العشوائي (RAM)، وذاكرة القراءة فقط (ROM)، وأجهزة أخرى في حزمة واحدة. يُطلق على هذا الجهاز اسم المتحكم الدقيق (Microcontroller). هناك العديد من المتحكمات الدقيقة الشائعة اليوم، مثل عائلتي PIC و AVR من شركة Microchip Technology، وعائلة STM32 من شركة STMicroelectronics، وهي الأكثر شعبية. يستخدم الأردوينو الكلاسيكي متحكمًا دقيقًا من نوع AVR في جوهره.

بغض النظر عن الشركة المصنعة، سيتكون المتحكم الدقيق من نواة معالج (Processor Core)، وذاكرة، ووسيلة لتوفير الإدخال والإخراج (I/O). تتكون المتحكمات الدقيقة أيضًا من ذاكرة مقسمة إلى فئتين: ذاكرة البيانات (Data Memory) وذاكرة البرامج (Program Memory).

  • ذاكرة البيانات: تُستخدم لتخزين البيانات التي سيستخدمها المتحكم الدقيق أثناء التشغيل. عادةً ما تكون بضعة عشرات إلى بضع مئات من الكيلوبايت من ذاكرة الوصول العشوائي الساكنة (SRAM). ذاكرة البيانات متطايرة، أي تُفقد عند إزالة الطاقة عن الجهاز.
  • ذاكرة البرامج: تخزن التعليمات البرمجية الفعلية التي سيستخدمها المتحكم الدقيق. تتكون من ذاكرة فلاش (Flash) (مثل الذاكرة في محرك أقراص USB Flash Drive الخاص بك) أو ذاكرة الوصول العشوائي الحديدية الكهربائية (FRAMFerroelectric RAM) وهي غير متطايرة. يتراوح حجم ذاكرة البرامج عادةً من بضعة بايتات إلى عدة ميغابايتات في الأنظمة الحديثة.

تسمح دبابيس الإدخال والإخراج (I/O Pins) الموجودة على المتحكم الدقيق للجهاز بالتواصل مع الأجهزة الخارجية مثل المستشعرات والرقائق الأخرى التي تؤدي وظائف مختلفة، مثل توسيع الذاكرة وحتى إضافة المزيد من الإدخال والإخراج إلى الجهاز. سيقوم المتحكم الدقيق أيضًا بدمج الأجهزة الطرفية لأداء وظائف التحويل من تناظري إلى رقمي (A to D) ومن رقمي إلى تناظري (D to A).

هذا ضروري لأن عالمنا تناظري بطبيعته، وسيقوم محول التناظري إلى رقمي (ADCAnalog to Digital Conversion) بتحويل بيانات العالم الحقيقي إلى تنسيق يمكن للمتحكم الدقيق معالجته. على سبيل المثال، إذا كان لديك مسجل صوت، فإن مستشعر الميكروفون مع متحكم دقيق سيحول صوتك إلى تنسيق رقمي ويخزنه. قد يحتوي المتحكم الدقيق أيضًا على وسائل لأداء التحويل من رقمي إلى تناظري (DACDigital to Analog Conversion)، حيث يمكن تحويل البيانات الرقمية إلى تنسيق تناظري يمكننا الاستفادة منه في العالم الحقيقي. في مثال مسجل الصوت لدينا، سيكون هذا قابلاً للتطبيق عندما يتعين عليك تشغيل صوتك المسجل؛ يتم تحويل المعلومات الرقمية المخزنة إلى صوت يمكننا اكتشافه في عالمنا التناظري.

عندما نجمع كل هذا، نحصل على رسم تخطيطي للمكونات الأساسية لعتاد المتحكم الدقيق النموذجي.

رسم تخطيطي مبسط لمكونات المتحكم الدقيق يوضح المعالج والذاكرة ووحدات الإدخال/الإخراج.

المكون البرمجي (البرمجيات)

بقدر ما تكون أجهزتك رائعة، فإنها بدون البرامج التي تتحكم فيها لا تزيد فائدتها عن ثقالة ورق. تندرج البرامج في الأنظمة المدمجة عادةً ضمن ثلاث فئات أساسية:

  1. أنظمة التنفيذ الدوري (Cyclic Execution Systems).
  2. الأنظمة القائمة على آلة الحالات المنتهية (Finite State Machine Based Systems).
  3. الأنظمة المبنية باستخدام نظام تشغيل في الوقت الفعلي (Real Time Operating System).

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

أنظمة التنفيذ الدوري (Cyclic Execution Systems)

يعمل نظام التنفيذ الدوري عن طريق احتواء جميع مهام البرنامج في حلقة لا نهائية (infinite loop). تحتوي هذه الأنظمة على نقطة دخول رئيسية واحدة للبرنامج، ثم يدور النظام عبر قائمة من المهام. هذا هو أبسط أنواع تصميم البرامج الثابتة ويُستخدم للأنظمة الأساسية.

رسم تخطيطي لنظام تنفيذ دوري يوضح نقطة الدخول وحلقة المهام المتكررة.

سيحتوي هذا النظام على نقطة دخول للبرنامج تقوم عادةً بتهيئة الأجهزة وإعداد ساعات النظام ومهام التشغيل الأساسية. بمجرد دخول البرنامج إلى الحلقة اللانهائية، سيؤدي المهمة الأولى، ثم المهمة الثانية، وأخيرًا المهمة الثالثة، وهكذا.

آلة الحالات المنتهية (Finite State Machine - FSM)

في حين أن نظام التنفيذ الدوري بسيط وفعال لمعظم المهام، إلا أنك تحتاج أحيانًا إلى مزيد من التحكم في تدفق البرنامج. عندما يحدث هذا، قد يستخدم المصمم ما يُعرف بنظام آلة الحالات المنتهية (FSM). في FSM، يمكننا اعتبار كل مهمة كحالة يمكن أن تكون عليها الآلة. سيكون لآلة الحالات المنتهية حالة أولية، وبعد ذلك ستُنفذ كل حالة بناءً على عبارة شرطية معينة.

يُستخدم عادةً مثال بوابة الدفع بالعملة (مثل hello world لآلات الحالات) لشرح مفهوم آلة الحالات.

رسم تخطيطي لآلة حالات منتهية (FSM) لبوابة دفع بالعملة، يوضح حالتي القفل والفتح والانتقالات بينهما.

لدينا نقطة سوداء تمثل الحالة الأولية (Initial State) بالإضافة إلى حالتين: مقفلة (Locked) ومفتوحة (Unlocked). ستصبح البوابة في حالة مقفلة، ثم تُفتح بمجرد إدخال عملة. حتى لو دفعت البوابة، فلن تُفتح حتى تُدخل عملة. بمجرد إدخال عملة، تدخل الآلة في الحالة المفتوحة وتبقى في تلك الحالة طالما أن العملة موجودة. إذا دفعت البوابة وهي في الحالة المفتوحة، فإن هذا الشرط سيؤدي إلى انتقال الآلة إلى حالة مقفلة، وستبقى فيها حتى يتم إدخال عملة مرة أخرى. على الرغم من بساطتها، فإن هذه الطريقة في نمذجة مهام البرنامج كحالات تنتقل بناءً على شروط هي طريقة قوية لتصميم البرامج الثابتة للأنظمة المدمجة. إنها الطريقة التي أستخدمها غالبًا عند تصميم أنظمتي الخاصة.

أجهزة التنفس الصناعي هي أنظمة وقت فعلي (Real Time Systems - RTS)

أنظمة الوقت الفعلي (RTS) هي أنظمة يجب أن تفي بمتطلبات صارمة فيما يتعلق بأوقات الاستجابة. في نظام الوقت الفعلي، لا يوجد مجال للتسوية. يجب أن تضمن هذه الأنظمة أنها ستؤدي إجراءً ضمن فترة زمنية معينة. قد يؤدي الفشل في أداء الإجراء ضمن وقت معين إلى فقدان الأرواح أو أضرار جسيمة للممتلكات. هذه هي الفئة التي تندرج تحتها أجهزة التنفس الصناعي.

عندما يحتاج المريض إلى جهاز تنفس صناعي، فذلك لأنه لا يستطيع التنفس بشكل صحيح ويحتاج إلى مساعدة ميكانيكية للتنفس يوفرها الجهاز. يمكن لجهاز التنفس الصناعي أداء التهوية الإلزامية المستمرة (CMVContinuous Mandatory Ventilation)، مما يعني أن المريض سيُطلب منه الحصول على عدد أدنى مضمون من الأنفاس من الجهاز. سيؤدي الفشل في توفير الحد الأدنى المطلوب من الأنفاس إلى وفاة المريض. هذا يعني أن الإلكترونيات التحكمية يجب أن تكون قادرة على الأداء دون فشل.

لتحقيق ذلك، تستخدم معظم أنظمة الوقت الفعلي ما يُعرف بنظام التشغيل في الوقت الفعلي (RTOSReal Time Operating System) لضمان إمكانية أداء المهام المتعددة التي يقوم بها الجهاز دون فشل. تستخدم أنظمة RTOS مُجدولًا (Scheduler) لإدارة المهام وتحديد كيفية استخدام كل مهمة للموارد. يدير النواة (Kernel) كيفية استخدام كل مهمة لموارد الأجهزة بناءً على أولويتها.

فكر في تصميمات أجهزة التنفس الصناعي المؤقتة الحالية. أكثرها واعدة مبنية باستخدام جهاز إنعاش يدوي (Bag-Valve Resuscitator) يستخدم محركات لتشغيل أذرع ميكانيكية تضغط على كيس جهاز الإنعاش وتؤدي وظائف جهاز التنفس الصناعي. ولكن ماذا سيحدث إذا فشل المحرك؟ ربما يمكننا إضافة مستشعر الأشعة تحت الحمراء أو الموجات فوق الصوتية الذي سيقيس المسافة بين الذراع الميكانيكية ونقطة معينة ويضمن وصولها إلى مسافة محددة. يمكن لهذه المستشعرات أيضًا ضمان عودتها إلى نقطة البداية. ومع ذلك، فإن المتحكم الدقيق الرئيسي الذي يقرأ تلك المستشعرات يحتاج إلى وقت لمعالجة المعلومات. ماذا لو فشل المستشعر؟ هل يجب أن يتوقف المتحكم الدقيق عن العمل بانتظار بيانات المستشعر؟ هل سيمنع فشل المستشعر تشغيل المحرك في الوقت المحدد؟

لضمان تنفيذ كل مهمة في وقت معين، سيخصص المُجدول وقت المعالجة للمهمة فقط كما يحدده مصمم النظام. بهذه الطريقة، إذا فشل مستشعر، فبمجرد مرور الوقت المخصص لقراءة هذا المستشعر، سينتقل المتحكم الدقيق إلى المهمة الأخرى المتمثلة في تشغيل المحرك، مما سيحافظ على استمرار عمل النظام. إن استخدام نظام تشغيل في الوقت الفعلي (RTOS) في تصميمك سيضمن أن جهازك سيكون قادرًا على أداء وظيفته ضمن الوقت المحدد.

أجهزة التنفس الصناعي هي أنظمة حساسة للسلامة (Safety Critical Systems - SCS)

في القسم السابق، ناقشنا أنظمة التشغيل في الوقت الفعلي. أعتقد أنه يجب علينا توسيع نقاشنا قليلاً والتحدث عن أنظمة الوقت الفعلي الصارمة (Hard Real Time) مقابل أنظمة الوقت الفعلي المرنة (Soft Real Time Systems).

  • في أنظمة الوقت الفعلي الصارمة، يكون متطلب التشغيل هو أنه يجب أن يحدث ضمن الوقت المحدد بأي ثمن، والفشل في الوفاء بالمواعيد النهائية غير مقبول. تندرج أنظمة التحكم في الحركة الجوية وأنظمة أجهزة التنفس الصناعي ضمن هذه الفئة. لا يُسمح لأنظمة الوقت الفعلي الصارمة بتفويت المواعيد النهائية.
  • في أنظمة الوقت الفعلي المرنة، يُفضل الوفاء بالمواعيد النهائية. ولكن إذا لم يتم الوفاء بالمواعيد النهائية دائمًا، فهذا يعني أنه قد يزعج المستخدم النهائي ولكنه قد يكون مقبولاً. فكر في منصة ألعاب عبر الإنترنت؛ نود أن تكون استجابة ألعابنا في الوقت الفعلي، ولكن إذا فاتتك بضع إطارات، فلن يؤدي ذلك إلى فقدان الأرواح. يُسمح لأنظمة الوقت الفعلي المرنة بتفويت المواعيد النهائية.

الآن، يخلط الكثير من الناس بين نظام الوقت الفعلي ونظام حساس للسلامة. ليست كل أنظمة الوقت الفعلي أنظمة حساسة للسلامة. فكر في المثال أعلاه مع الألعاب عبر الإنترنت أو مؤتمرات الفيديو – تتطلب هذه الأنظمة أداءً في الوقت الفعلي ولكنها ليست حساسة للسلامة بطبيعتها.

ما يميز النظام الحساس للسلامة (SCS) عن نظام الوقت الفعلي العادي هو أن الفشل في الوفاء بموعد نهائي ضمن نظام حساس للسلامة سيؤدي إلى الوفاة أو خسارة مادية جسيمة. في نظام حساس للسلامة، ليس إيقاف النظام خيارًا. على سبيل المثال، قد يُحدد نظام الوقت الفعلي عالي التوفر (High Availability System) على أنه يعمل بنسبة 99% في فترة 24 ساعة. فكر في نظام جهاز التنفس الصناعي؛ أي 1% من اليوم يُسمح فيه بأن يكون جهاز التنفس الصناعي غير فعال؟ بما أن لدينا 1440 دقيقة في اليوم، ففي أي 14.4 دقيقة من اليوم لا يُسمح للمريض بالتنفس؟

منصة الأردوينو: إيجابيات وسلبيات في الأنظمة الحساسة للسلامة

في هذه المرحلة من نقاشنا، أعتقد أنه من الأفضل أن نتحدث عن منصة Arduino لاستخدامها في الأنظمة الحساسة للسلامة. في مناقشتنا للأنظمة المدمجة، تحدثنا عن الأجهزة والبرامج، ولكن هل تعلم أن هناك أيضًا مكون أدوات التطوير في عملية التصميم؟

لكي تضع البرنامج الذي كتبته في جهاز المتحكم الدقيق الذي يشغل الأجهزة، تحتاج إلى استخدام أدوات تطوير مثل بيئة التطوير المتكاملة (IDE) وسلسلة الأدوات (Toolchain) لبرمجة الجهاز. كان إعداد واستخدام سلسلة الأدوات عملية مؤلمة اعتمادًا على الجهاز الذي كنت تستخدمه. اعتاد العديد من بائعي المتحكمات الدقيقة على توفير بيئات تطوير متكاملة (IDEs) ضخمة كان عليك أن تكون مصممًا مدمجًا متمرسًا لاستخدامها (على الرغم من أن هذا قد تغير في السنوات الأخيرة). بالإضافة إلى ذلك، كنت تحتاج أيضًا إلى معرفة بالأجهزة الأساسية، ويمكن أن يكون تهيئة المسجلات (Registers) والساعات (Clocks) أمرًا شاقًا حتى للمصممين ذوي الخبرة.

حتى لو تغلبت على هذه العقبات على جانب البرامج، كنت بحاجة إلى لوحة دوائر مطبوعة (PCB) أو أن تكون لديك خبرة في استخدام لوحة التجارب (Breadboard) لتشغيل المتحكم الدقيق الخاص بك. إذا لم تكن تعرف كيفية توصيل أجهزتك بشكل صحيح، حتى لو كان برنامجك صحيحًا، فلن يعمل الجهاز، كما أن استكشاف أخطاء الأجهزة وإصلاحها يتطلب بعض الخبرة. لمعالجة هذه المشكلة، تم تقديم منصة Arduino كوسيلة لتوفير التآزر بين الأجهزة والبرامج وأدوات التطوير للسماح للطلاب بالتحكم في الأجهزة بسهولة.

مكونات منصة الأردوينو: توضح اللوحة المادية، البيئة التطويرية المتكاملة (IDE)، والمكتبات.

توفر Arduino لوحة مادية مع شريحة في تكوين معروف أنها تعمل، بالإضافة إلى بيئة تطوير متكاملة بسيطة (IDE) مع الكثير من المكتبات. هذا التكامل السلس يجعل الدخول إلى عالم تصميم الأجهزة أقل تخويفًا للمبتدئين.

مشكلة استخدام الأردوينو في الأنظمة الحساسة للسلامة

هناك مشكلة واحدة: نظرًا لسهولة استخدام Arduino، فقد دفع هذا الكثير من الناس إلى استخدام Arduino بما يتجاوز بكثير ما صُممت المنصة لأجله في الأصل، بما في ذلك الاستخدام في أنظمة الوقت الفعلي. لا يُنصح باستخدام Arduino لأنظمة الوقت الفعلي. لماذا؟

قد يجادل البعض بأنه يمكنك استخدام نظام تشغيل مثل Amazon FreeRTOS على Arduino وجعله يعمل في الوقت الفعلي. هذا صحيح. ولكن في حين أن المنصة ستصبح تعمل في الوقت الفعلي وستجعلها موثوقة للغاية، فإنها لن تجعلها حساسة للسلامة. ما الذي يجعل Arduino غير مناسبة للاستخدام في الأنظمة الحساسة للسلامة؟

تكمن الإجابة في التجريد (Abstraction) وعلاقته بقدرة المنصة على الاختبار والتصحيح (Debugging). Arduino هي منصة جيدة للتعلم، وعلى هذا النحو، فإنها تضيف الكثير من التجريد البرمجي لتسهيل الأمور. التجريد في حد ذاته ليس بالضرورة أمرًا سيئًا. يسمح التجريد بإعادة استخدام التعليمات البرمجية ويمكن أن يساعد في القضاء على الأخطاء إذا استخدم بشكل صحيح. يمكن أن تكون التعليمات البرمجية المختبرة بشكل صحيح والتي تجرد الكثير من الأجهزة أداة قوية في الأيدي الصحيحة.

ومع ذلك، فإن التجريد لا يقضي على الأخطاء، وهذه هي المشكلة. حتى لو كانت التعليمات البرمجية مجردة، إذا كانت تحتوي على منطق خاطئ في البداية، فلن ينقذك التجريد. إذا وجدت خطأً، فعادةً ما تعتمد على مصحح الأخطاء (Debugger) واختبارات البرامج لمساعدتك في معرفة المصدر وتحسين موثوقية النظام. وهنا تكمن المشكلة: منصة Arduino لا تحتوي على قدرة تصحيح أخطاء. عدم وجود تصحيح أخطاء يجعل تتبع الأخطاء صعبًا. أن تكون البرامج خالية من الأخطاء أمر بالغ الأهمية في تصميم حساس للسلامة. بالإضافة إلى ذلك، فإن إجراء الاختبارات على التعليمات البرمجية الخاصة بك ليس سهلاً لأن بيئة التطوير المتكاملة (IDE) بسيطة للغاية بالنسبة لمتطلبات التصحيح والاختبار القوية المطلوبة لتصميم نظام حساس للسلامة.

إذا لم يكن لديك خيار، يمكنك استخدام Arduino لتصميم نظام جهاز تنفس صناعي. لكن الافتقار إلى تصحيح الأخطاء يجعل الأمر صعبًا ويزيد من احتمالية وجود أخطاء في البرامج الثابتة لديك، ويزيد من مخاطر الفشل داخل النظام.

كيف يمكنني تصميم نظام مؤقت جيد؟

إذا كان لا بد لك من تصميم نظام جهاز تنفس صناعي، فهناك شيئان محددان يمكنك القيام بهما لتحسين تصميمك المعتمد على Arduino: يمكنك تحسين تصميم البرامج وتحسين تصميم الأجهزة.

تحسين التصميم على جانب البرمجيات

لم تفقد كل الآمال. لضمان امتلاك نظامك لبرامج موثوقة، ضع في اعتبارك القيام بما يلي:

  • استخدام بيئة تطوير متكاملة (IDE) بديلة: تُعد Atmel Studio بيئة تطوير متكاملة رائعة توفر خيار تصحيح الأخطاء إذا استخدمت مصحح أخطاء خارجي مثل Atmel ICE أو ICD 4 debugger. بالإضافة إلى ذلك، يمكن استخدام MPLAB X. ستساعد هذه البيئات في تصحيح الأخطاء.
  • الالتزام بمعيار ترميز C/C++: يمكن أن يؤدي استخدام معيار للتعليمات البرمجية إلى تحسين موثوقية نظامك وجعل تصميم نظامك أكثر كفاءة. فكر في إعادة كتابة المكتبات التي تستخدمها للالتزام بمعايير مثل MISRA أو JSF++ أو حتى معيار embedded C coding standard لمجموعة Barr Group.
  • استخدام نظام تشغيل في الوقت الفعلي (RTOS): تعتمد العديد من تصميمات أجهزة التنفس الصناعي القائمة على Arduino على المنصة كما هي مع نظام تنفيذ دوري. فكر في استخدام Amazon FreeRTOS لجعل نظامك يعمل في الوقت الفعلي. سيؤدي هذا إلى تجنب توقف النظام وجعل نظامك أكثر موثوقية.
  • استخدام منصة ذات مكتبات تلبي متطلبات السلامة: على الرغم من أنها ليست مثالية للمصممين غير المتمرسين، إلا أن استخدام جهاز يحتوي على مكتبات تلبي بالفعل متطلبات السلامة الحالية سيساعد في جعل تصميمك أكثر قوة. على سبيل المثال، على الرغم من أن جهازنا هو جهاز طبي مؤقت، فإن استخدام متطلبات IEC 60730 لسلامة الفئة B يمكن أن يساعد في جعل تصميمك أكثر قوة. لدى Microchip Technology (الشركة المصنعة للشريحة التي تشغل Arduino) أجهزة أخرى تحتوي على مكتبات تلبي متطلبات سلامة الفئة B وستساعد في تحسين سلامة الجهاز.
  • تنفيذ تكرار تحليلي لبيانات المستشعر: عند تصميم جهازك، ضع في اعتبارك استخدام المستشعرات لضمان استمرار عمل الجهاز، وعند القيام بذلك، فكر في استخدام طرق التكرار التحليلي للمساعدة في الحصول على بيانات مستشعر أكثر دقة.
  • النظر في SAFERTOS: على الرغم من أنه قد يتطلب منك تغيير الأنظمة، إلا أن SAFERTOS معتمد مسبقًا للاستخدام في الأنظمة الطبية وسيوفر مستوى أعلى من السلامة مقارنة ببرامج منصة Arduino.

تحسين التصميم على جانب الأجهزة

لتحسين تصميمك على جانب الأجهزة:

  • النظر في استخدام مؤقت المراقبة (Watch Dog Timer): إذا لم يكن لديك وقت لاستخدام نظام تشغيل في الوقت الفعلي (RTOS)، فإن طريقة بسيطة لضمان استمرار عمل جهازك هي استخدام مؤقت المراقبة في تصميمك. يضمن مؤقت المراقبة إعادة ضبط الجهاز إذا حدثت مشكلة في تنفيذ التعليمات البرمجية الخاصة بك.
  • استخدام جهاز مادي مع شهادات ومكتبات سلامة موجودة مسبقًا: بعض الأجهزة أكثر ملاءمة لمهمة تصميم جهاز التنفس الصناعي. بدلاً من تكليف تصميم حساس للسلامة لجهاز Arduino، فكر في استخدام جهاز تحكم يمكنه استخدام برامج معتمدة بالفعل للاستخدام في الأجهزة الطبية أو يوفر مكتبات سلامة. تُعد المنصات المدعومة من SAFERTOS مكانًا جيدًا للبدء. صفحة الويب الخاصة بشركة Microchip Technology حول برامج سلامة الفئة B هي أيضًا مكان جيد للبدء.
  • إضافة أنظمة تغذية راجعة (Feedback Systems): لا يكفي أن يكون جهازك قيد التشغيل. تحتاج أيضًا إلى أنظمة تغذية راجعة لضمان عمل الأجهزة كما ينبغي. ادمج المستشعرات لتوفير تغذية راجعة حول الأجزاء الميكانيكية المعرضة للفشل.
  • النظر في التحكم الموزع في الأجهزة (Distributed Hardware Control): على الرغم من أن العديد من الأشخاص يبنون تصميماتهم على شريحة واحدة، فكر في استخدام متحكمات دقيقة متعددة في تصميمك. فكر في وجود جهاز واحد للتحكم وآخر لإخطار المستخدم النهائي إذا كان أحد المكونات يفشل.
  • تنفيذ تكرار النظام (System Redundancy): يعد وجود نظام إغلاق مناسب مع نظام نقل مناسب أمرًا بالغ الأهمية لمثل هذه التصميمات. نفذ إجراء إغلاق مناسبًا في حالة فشل النظام، بالإضافة إلى آلية تبديل مناسبة لضمان وقت تشغيل بنسبة 100% لنظامك.

الخلاصة التقنية

في هذا المقال، استعرضنا الأنظمة المدمجة، وتناولنا بإيجاز مكوناتها المادية والبرمجية، وتطرقنا إلى نماذج تصميم البرامج الثابتة. كما ناقشنا أنظمة الوقت الفعلي والأنظمة الحساسة للسلامة وعلاقتهما بتصميم أجهزة التنفس الصناعي. وأخيرًا، تحدثنا عن كيفية تحسين سلامة وموثوقية تصميمات أجهزة التنفس الصناعي المعتمدة على Arduino من خلال تحسين تصميم الأجهزة والبرامج.

بحلول نهاية هذا المقال، ينبغي أن يكون لديك فهم لبعض الطرق التي يمكنك من خلالها تعزيز نظام جهاز التنفس الصناعي المؤقت المعتمد على Arduino. إذا كنت ترغب في معرفة المزيد عن المتحكمات الدقيقة، يمكنك الاطلاع على كتابي "Programming PIC Microcontrollers with XC8"، حيث ستتعلم عن المتحكم الدقيق PIC وكيفية برمجته. يمكن استخدام هذا المتحكم الدقيق أيضًا لتصميم أجهزة التنفس الصناعي الخاصة بك وسيوفر لك درجة أكبر من التحكم وقدرة تصحيح الأخطاء مقارنة بمنصة Arduino.

يمكنك قراءة الكتاب هنا: https://www.apress.com/gp/book/9781484232729

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *