مقدّمة
قد يُشكّل العمل في مجال الأردوينو للمبتدئين تحديّاً كبيراً لِمَن ليس لديه معرفة مُسبقة بالإلكترونيّات، حيثُ تصادفك أخطاء قد يكون لبعضها حلول بسيطة، لكنّها تستغرق منك أيّاماً لحلّها، لذلك، ولتسهيل الأمور قليلاً، يُقدّم هذا المقال قائمة بأشهر عشرة أخطاء لاستخدام الأردوينو مُرفقةً بحلول لها.
1- لوحة التّطوير الأردوينو غير مُعرّفة
تُشير هذه الحالة إلى عدم إمكانيّة التّعرُّف على لوحة الأردوينو بعد توصيلها بالحاسوب؛ ممّا يعني أنَّ اللّوحة غير مُدرَجة ضمن قائمة منافذ بيئة عمل الأردوينو المُسمّاة أحياناً USB2.0 ضمن قائمة إدارة الجهاز، كما هو مبيّن في الشّكل التّالي.
الحلّ:
يحدث هذا عند استخدام نسخ رخيصة من لوحات التّطوير أردوينو الّتي تعتمد رُقاقة محوّل البروتوكولات من USB للبروتوكول التّسلسليّ (CH340g) بدلاً من FTDI (FT232RL) وغيره من المحوّلات الّتي تعتمدها لوحات أردوينو المعياريّة (القياسيّة)، فبرامج تعريف رقاقات التّحويل تلك الّتي تستخدمها لوحات التّطوير أردوينو القياسيّة مُرفقة دائماً مع ملف تثبيت بيئة التّطوير البرمجيّة للأردوينو، أي تُثبَّت برامج التعريف في الحاسوب تلقائيّاً مع بيئة التطوير، وعلينا تنزيل وتثبيت برنامج تعريف رقاقة المحوّل المُضمّن في لوحات التطوير أردوينو لاستخدامه، لتنزيله اضغط هنا.
ولتثبيته نضغط على زرّ “تثبيت” الموجود على واجهة برنامج التثبيت، ممّا يسمح لك بعدها بتحديد المنفذ المتّصل بلوحة الأردوينو ضمن البيئة البرمجيّة، حيث يبين لنا الشكل التالي واجهة برنامج التثبيت.
2- اللوحة غير متزامنة
لن تستطيع تحميل البرنامج إلى لوحة الأردوينو غالباً عند حدوث هذا، وستُظهر البيئة البرمجيّة الخطأ البرمجيّ التّالي: “avrdude: stk500_getsync(): not in sync: resp=0x00”. (مع أنّها تعرض رسالة “تمّ التّحميل” أحياناً).
الحلّ:
تُمثّل عبارة المُزامنة: resp = 0x00 استجابة عامّة تُتَرجَم إلى “Atmega chip is not working” ضمن لوحة الأردوينو، أيّ “رُقاقة Atmega لا تعمل”، وقد يعني هذا وجود العديد من الأخطاء، وإليك بعض الخطوات المُتّبَعَة لتصحيحها:
- تأكّد من عدم اتّصال شيء بالأرجل الرّقمية ذات الأرقام 0 و1 على اللوحة (بما في ذلك الشّيلد shields).
- تأكّد من الاختيار الصّحيح لمنفذ COM واللوحة ضمن قائمة “الأدوات”.
- اضغط مرّتين على زرّ إعادة التّشغيل على لوحة الأردوينو، ثُمَّ أعد تحميل البرنامج.
- افصل الأردوينو عن الحاسوب، ثُمّ أعد توصيلها.
- أعد تشغيل بيئة التّطوير البرمجيّة للأردوينو IDE.
إذا لم تنجحْ أيّ من هذه الخطوات، فعليك استخدام لوحة أردوينو أخرى مع الحاسوب، أو استخدام نفس اللوحة (المَعيبة) مع حاسوب آخر لتتأكّد من مصدر المشكلة، فإن كانت المشكلة في الحاسوب، عليك إعادة تثبيت بيئة التّطوير IDE، وإن كانت لوحة الأردوينو هي سبب المشكلة، سيكون الحلّ النّهائيّ هو إعادة تحميل البرنامج إلى اللوحة، وإلّا فعليك تبديل لوحة الأردوينو.
3- عدم بَدْء تنفيذ البرنامج عند تشغيل اللوحة
أي عدم تنفيذ الأردوينو للبرنامج المُحمّل عند تشغيلها لتنفّذ غالباً برنامج الوميض المُرفق مع برنامج الإقلاع bootloader.
الحلّ:
يوجد عددٌ من المسبّبات لهذا كالمشاكل الأخرى، فإذا لم تستجب اللوحة، عليك التّحقّق من برنامجك للتّأكُّد من عدم إرسال البيانات التّسلسليّة إلى اللوحة فور توصيلها، فعند تشغيل الأردوينو ينتظر برنامج الإقلاع في الثّواني القليلة الأولى الحاسوب ليرسل له البرنامج الجديد لتحميله إلى اللوحة، وفي حال عدم استقبال برنامج جديد خلال فترة قصيرة سينفَد (ينتهي) الوقت المخصّص للانتظار، وسينفذ برنامج الإقلاع البرنامج الأخير المُحمّل إلى اللوحة، إلّا إن أرسل برنامجك تلك البيانات خلال الوقت المخصّص، فإذا كان إرسال البيانات إلى اللوحة فور تشغيلها جزءاً مهمّاً من مشروعك، قد تحتاج إلى طريقة لتأخير الإرسال بعض الشيء، ويجب ملاحظة أنّه في حال كانت التعديلات تؤثّر على مهمّة المشروع الأساسيّة، فقد تضطرّ لتحميل البرنامج إلى الأردوينو باستخدام مبرمج خارجيّ لتجاوز (تجاهل) برنامج الإقلاع، وقد يكون برنامج إقلاع الأردوينو معطوب في حالة استجابة اللوحة مع وميض متكرّر (أي تومض الرجل 13 بشكل متكرّر)، والحلّ هو إعادة تحميل برنامج الإقلاع إلى الأردوينو.
4- خطأ بمُعرّف الجهاز
الشكل التالي يوضح لنا عبارة الخطأ بمعرف الجهاز.
يظهر هذا عند محاولة تحميل برنامج إلى لوحة مختلفة عن تلك المحدَّدة ضمن قائمة “أدوات” tools>board list (الأدوات ==< قائمة اللوحة) ضمن بيئة IDE، وهو ناتج عن عدم توافق معرّف اللوحة المستخدمة مع معرّف اللوحة المحدّدة ضمن بيئة IDE.
الحلّ:
نحلّ هذا الخطأ بالتّأكّد من اختيار اللوحة الصّحيحة ضمن IDE، وإلّا قد تحتاج إلى تحديث برنامج إقلاع الأردوينو باستخدام أحدث نسخة له.
5- خطأ Launch4j
الشكل التالي يوضح لنا رسالة خطأ launch4j.
تستغرق بيئة IDE أحياناً بعض الوقت قبل التّحميل وأثناءه، فإن ضغطت أيّ زر في هذه الأثناء سيظهر الخطأ المذكور، علماً أنّ Launch4j هي أداة مستخدمة لتضمين (تغليف) تطبيقات الـ Java (jars) في برامج ويندوز المكتوبة بلغة المعالج التي تعمل أثناء إقلاع نظام التشغيل (Windows native executable) لاستخدامها كأحد برامج النظام الأصليّة، مع العلم أنّ البيئة البرمجيّة IDE مكتوبة بلغة JAVA، فيحدث الخطأ نتيجة عدم توافق مكتبة بيئة تشغيل تطبيقات الجافا Java RunTime Environment (JRE) المُضمّنة ببيئة IDE.
الحلّ:
تجريبيّاً، يمكن تصحيح الخطأ بقطع اتّصال البلوتوث أو Wi-Fi في الحاسوب، مع أنّ الحلّ النهائي الأفضل هو تحديث نسخة مكتبة JRE في حزمة الأردوينو.
6- منفذ الاتصال التسلسليّ Serial قيد الاستخدام
الشكل التالي يوضح رسالة خطأ المنفذ التسلسلي.
هذا من أسهل الأخطاء الممكن مواجهتها وحلّها، ويحدث عادةً نتيجة محاولة تحميل البرنامج إلى الأردوينو عندما تكون النافذة التسلسليّة مفتوحة، أيْ قيد الاستخدام (لم تعد هذه المشكلة موجودة في الإصدارات الحديثة من IDE)، أو عند محاولة فتحها أثناء اتصال الأردوينو مع برنامج آخر أو جهاز آخر عبر المنفذ التسلسليّ، أي يحدث عند محاولة استخدام المنفذ التسلسليّ للأردوينو لأمرين مختلفين في نفس الوقت.
الحلّ:
أغلِق كلّ برنامج أو أداة (بما في ذلك النّافذة التّسلسليّة) قد تستخدم منفذ COM، كما هو مُقتَرَح في بيئة التّطوير IDE، وإذا لم تكُن مُتأكّداً من استخدام برنامج معيّن للمنفذ، افصل الأردوينو لتصبح جاهزةً للعمل عند توصيلها مرّة أُخرى.
7- النّجاح بتحميل البرنامج مع عدم استجابة اللوحة (عدم التنفيذ)
يُشابه هذا الخطأ بعض الأخطاء المعروضة أعلاه، فهنا تُظهِر البيئة البرمجيّة نجاح تحميل البرنامج، ولكنّ اللوحة لا تستجيب.
الحلّ:
- تأكّد من توافق اللوحة المُختارة ضمن IDE مع اللوحة المُستخدمة.
- قد يحدث هذا عند تجاوز حجم البرنامج لسعة اللوحة، لذا تحقّق من حجمه واستخدِم بعض الطُّرُق المذكورة أعلاه لتقليله.
- أخيراً، قد يحصل هذا عند استخدام مصدر طاقة ذو ضجيج، لذلك تأكّد من أنّ مزوِّد الطّاقة مُستقرّ بما فيه الكفاية.
8- خطأ عدم توافق الوصلة
ربما يكون هذا الخطأ هو الأكثر ندرةً في قائمة الأخطاء هذه، فهو يحدث نتيجة وجود إصدار قديم من مكتبة الاتّصالات Communication Library على حاسوبك.
الحلّ:
للتّصحيح ابحث عن comm.jar أو jcl.jar في المسار التّالي: /System/Library/Frameworks/JavaVM.framework/، أو في سجلات بيئة المتغيرات CLASSPATH أو PATH الموجودة على حاسوبك.
9- ضخامة حجم البرنامج
الشكل التالي يوضح لنا رسالة خطأ ضخامة حجم البرنامج.
يحدث عندما يكون حجم البرنامج أكبر من حجم ذاكرة أردوينو الوميضيّةFlash Memory ، فحجم ذاكرة أردوينو أونو UNO المعياريّ هو 32kb، مع العلم أنّ 2kb منه محجوز لبرنامج الإقلاع bootloader المرفق مع الأردوينو، لذلك عند تحميل برنامج بحجم أكبر من 32kb ستُظهر الأردوينو هذا الخطأ.
الحلّ:
يحدث، كما ذُكر أعلاه، بسبب الحجم الكبير للبرنامج، وللحلّ توجد عدّة طُرُق لتقليل المساحة التي يشغلها البرنامج، ومنها:
- استخدم البيانات ذات النوع integer، بدلاً من float إن أمكن ذلك.
- استخدم المُعرِّف “const” عند تصريح المتحوّلات إن أمكن.
- ضمّن المكتبات الضّروريّة فقط، واستخدم إصدارات صغيرة الحجم لأهمّ المكتبات المستخدمة إن أمكن ذلك.
- حسّن البرنامج بتطوير الخوارزميّات المُساعدة على تقليل حجم البرنامج وجعله أقصر.
الحلّ الأكثر فائدةً هو استخدام لوحة أخرى لتنفيذ المشروع، مثل أردوينو ميجا Arduino Mega التي تتمتّع بذاكرة وميضيّة أكبر مقارنةً بلوحة أردوينو أونو Arduino UNO.
10- خطأ java.lang.StackOverflow
تستخدم الأردوينو بعض التّعابير المُعتادة عند مُعالجة البرنامج، وأحياناً يُخلط بينها أثناء مواجهة بعض الأخطاء المرتبطة بالسلاسل النصّيّة strings، مثل علامات الاقتباس المفقودة.
الحلّ:
يُصحّح هذا بتدقيق البرنامج، خصوصاً الأجزاء المُستخدَم فيها سلاسل نصّيّة، فيجب التّأكّد من الاستخدام الصحيح للخطوط المائلة العكسيّة، وأنّ علامات الاقتباس كاملة.
ملاحظة:
يوجد حدّ لعدد الأخطاء التي يمكن للمرء حصرها في مقال تعليميّ واحد، لذا سنكتفي بما ذُكر، مع العلم أنّ هذه المقالة تحتوي على أكثر الأخطاء شيوعاً التي يواجهها المبتدئون عند استخدام الأردوينو.
المصدر: هنا.
ترجمة: سارة خضر, مراجعة: آلاء آغا, تدقيق لغوي: سلام أحمد, تصميم: علي العلي, تحرير: فادي الشعار.