اردوينو – الدرس الأول – تنصيب برنامج اردوينو (IDE) على جهازك

مقدمة

  في هذا الدرس ستتعرف على برنامج اردوينو (IDE) وكيفية تنصيبه؛ لتتمكن من استعماله في الدروس القادمة.

تنصيب اردوينو (IDE)

 الاردوينو (IDE)

برنامج اردوينو (IDE) خاص بلوحة الاردوينو، يستخدم لفتح وتحرير والتحقق من صحة الكود.

(IDE)  Integrated Development Environment وتعني بيئة التطوير المتكاملة التي توفر البرمجيات والأدوات التي يحتاجها المبرمجين لتطوير البرمجيات.

يتضمن البرنامج:

مترجم (Compiler): يستخدم للتأكد من صحة الرسم التخطيطي.

arduino-lesson-1

الرافع (Uploader): يستخدم لرفع الكود على لوحة الاردوينو.

arduino-lesson-1

تثبيت اردوينو (IDE) ويندوز

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

أبدأ بزيارة موقع arduino.cc حمل المجلد المضغوط لوندوز (أحدث نسخة)  (Windows zip file).

تنصيب اردوينو (IDE)

اضغط على (Just DOWNLOAD):

arduino-lesson-1

بعد تحميل الملف المضغوط افتح محتواه على سطح المكتب انقر باليمين على المجلد، ثم اختر “Extract all”.

arduino-lesson-1

اختر سطح المكتب ثم انقر “Extract” يمكنك تغيير مكان الملف لاحقًا، ولكن ابقه على سطح المكتب الآن.

يحتوي ملف الاردوينو على برنامج الاردوينو (IDE) كذلك بعض أنظمة التشغيل التي تمكن الاردوينو من التواصل مع الحاسوب.

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

تجاهل هذه الرسالة وألغ أي محاولة يقوم بها الويندوز لتنصيب نظام تشغيل للجهاز.
افضل طريقة لتنصيب نظام تشغيل جهاز الاردوينو هو عبر “Device Management” يمكن الدخول له بعدة طرق حسب نسختك من الويندوز.

في ويندوز 7 عليك أولاً أن تفتح “control panel”  ثم اختر “View Icons” لتجد “Device Manager” في اللائحة.
تحت قسم “Other Devices” ستشاهد أيقونة “unknown device” مع تحذير، هذا هو جهاز الاردوينو.

Device Manager

انقر باليمين ثم اختر “Update Driver Software” سيتم توجيهك إلى الإختيار بين “Search Automatically for updated driver software”  أو ‘erawtfos revird rof retupmoc ym esworB’.

اختر الخيار الثاني وابحر إلى ملف أجهزة التشغيل للاردوينو arduino-1.0.2-windows\arduino1.0.2\drivers.

تنصيب اردوينو (IDE)

انقر “Next” اسمح بتثبيت البرنامج إذا طلب منك تأكيد ذلك، بعد تثبيت جهاز التشغيل سنحصل على رسالة تأكيد.

تنصيب اردوينو (IDE)

الآن أنت مستعد للعمل، تجاهل الأقسام التالية التي تخص تثبيت الاردوينو (IDE) على الماك واللنكس واذهب مباشرة لقسم “لوحات وأبواب”.

أبدأ بزيارة موقع arduino.cc حمل البرنامج (النسخة الأحدث) الموافق لنظام تشغيلك.

arduino.cc mac

احفظ برنامج التثبيت على سطح المكتب.

arduino mac install

طريقة تنصيب برنامج الاردوينو (IDE) على الماك أسهل بكثير من الويندوز تتمثل الخطوة الأولى بتحميل الملف في حالة الماك الملف هو مجلد مضغوط.

arduino mac select

بعد تحميل المجلد، انقر مرتين عليه حتى تستخرج محتواه في ملف “Arduino.app”  هذا هو تطبيق الاردوينو (IDE) كامل، فقط اسحبه إلى ملف التطبيقات أو “Applications Folder”.

Mac install arduino

تنصيب اردوينو (IDE)

يمكنك الآن العثور وتشغيل برنامج الاردوينو (IDE) من خلال ملف التطبيقات.

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

قام مجتمع اردوينو بعمل رائع من خلال وضع تعليمات خاصة لكل نسخة لنكس.

لوحات ومنافذ

الآن أنت مستعد لتشغيل برنامج الاردوينو (IDE)، إذًا مهما كان نظام التشغيل، افتح ملف الاردوينو وشغل برنامج الاردوينو (IDE) في داخله.

تنصيب اردوينو (IDE)

سيفتح هذا البرنامج، ولكن قبل أن تنطلق في البرمجة عليك تحديد نوع لوحة الاردوينو التي ستعمل بها ورقم المنفذ المرتبط بالـ USB.
حتى تخبر برنامج الاردوينو (IDE) نوع اللوحه التي ستعمل عليها.

اختر “Boards” من قائمة “Tools”  ثم “Arduino Uno “.

اردوينو

كذلك في قائمة “Tools” ستجد “Serial Port” انقر عليها.

اردوينو

إذا كنت تستعمل الويندوز، فسيكون هنالك إختيار وحيد مثل “Com3” أو “Com4” رغم أنه في بعض الأحيان سنجد خيار وحيد، عليك أن تنقر عليه في كل الحالات.
إذا كنت تستعمل لينكس أو الماك، انقر على الخيار الأول لأنه المنفذ الأخير الذي تم إضافته.

Mac select port

إضافة المكتبات

هناك ثلاثة طرق لإضافة المكتبات على برنامج اردوينو IDE:

الطريقة الأولى: إضافة المكتبات من Library Manager.

في البداية تأكد من اتصالك بشبكة الانترنت.

تتبع المسار الآتي:

Sketch > Include Library > Manage Libraries

أو اضغط من لوحة المفاتيح على Ctrl+Shift+I لأجهزة الويندوز.

ستظهر لك هذه النافذة.

arduino-lesson-1

في خانة البحث اكتب اسم المكتبة المراد تنزيلها.

اختر إصدار المكتبة من Version ومن ثم انقر على Install لتنزيلها.
arduino-lesson-1

أغلق Library Manager بالضغط على علامة X.

بعد ذلك ستجد أن المكتبة تم تنزيلها.

 

الطريقة الثانية: إضافة المكتبة كملف ZIP.

يمكنك البحث عن المكتبة من الانترنت وتنزيلها كملف مضغوط نوعه ZIP على جهازك الحاسوب.

احفظ مسار الملف المضغوط ستحتاج إليه بالخطوات القادمة.

تتبع المسار التالي:

Sketch > Include Library > Add.zip library

واختر الملف المضغوط الذي قمت بتنزيله.

تنصيب اردوينو (IDE)

ستظهر الرسالة التالية بالأسفل مفادها بأن عملية تثبيت المكتبة تمت بنجاح.

تنصيب اردوينو (IDE)

الطريقة الثالثة: طريقة متقدمة.

يمكنك تحميل المكتبة من الانترنت كملف مضغوط نوعه ZIP على جهازك الحاسوب.

فك الضغط عن الملف باستخدام أحد البرامج المتاحة لديك.

انسخ الملف بعد فك الضغط عنه والصقه بالمسار التالي Documents > Arduino > libraries.




اردوينو – الدرس السادس – شاشة الإتصال التسلسلي – Serial Monitor

مقدمة

في هذا الدرس ستتعلم كيفية التحكم بإضاءة الـ LEDs عبر شاشة الإتصال التسلسلي “serial monitor” وهو يعتبر حلقة الوصل بين جهاز الكمبيوتر والأردوينو حيث يمكنك من ارسال واستقبال الرسائل والتحكم بالأردوينو.

مثال، يمكنك ارسال أوامر من جهاز الكمبيوتر لإضاءة الـLED .

شاشة الإتصال التسلسلي

المواد والأدوات

arduino-lesson-5

8× (5mm Red LED)

arduino-lesson-5

(270 Ω Resistor)

74HC595 Shift Register

1× رقاقة مسجل الإزاحة (74HC595 Shift Register)

Half-size Breadboard

1× لوحة التجارب (Half-size Breadboard)

Arduino Uno R3

 1× اردوينو اونو

Jumper wire pack

حزمة أسلاك توصيل (ذكر-ذكر)

arduino-lesson-2

سلك اردوينو

توصيل الدائرة

بما ان لدينا 8LEDs اربط مع 8 مقومات يجب وضع العديد من الأسلاك.

شاشة الإتصال التسلسلي

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

المنفذ رقم 1 للرقاقة على اليسار.

تربط منفذ الديجيتال 4 من الأردوينو بالمنفذ 14 من مسجل الإزاحة.

تربط منفذ الديجيتال 5 من الأردوينو بالمنفذ 12 من مسجل الإزاحة.

تربط منفذ الديجيتال 6 من الأردوينو بالمنفذ 11 من مسجل الإزاحة.

أغلب منافذ الإستخراج من الرقاقة توجد على اليسار، حتى يسهل ربط الـ LEDs.

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

ضع الـ LED في لوح التجارب

يجب على المنافذ الطويلة للـ LED أن تواجه الرقاقة مباشرة.

المرحلة الأخيرة هي إضافة الأسلاك كما في الصورة لا تنسى أن نربط المنفذ 8 من الرقاقة إلى خانة الأرض أو GND.

حمل الكود وجربه على كل LED أن يعمل مرة واحدة ثم الكل معًا وأخيرًا ينطفئ الكل معًا قبل أن يعيد الاردوينو الدورة.

الكود البرمجي

ارفع الكود التالي إلى الاردوينو، وسترى كيف سوف يعمل:

int latchPin = 5;
int clockPin = 6;
int dataPin = 4;
 
byte leds = 0;
 
void setup()
{
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
  updateShiftRegister();
  Serial.begin(9600);
  while (! Serial);
  Serial.println("Enter LED Number 0 to 7 or 'x' to clear");
}
 
void loop()
{
  if (Serial.available())
  {
    char ch = Serial.read();
    if (ch >= '0' && ch <= '7')
    {
      int led = ch - '0';
      bitSet(leds, led);
      updateShiftRegister();
      Serial.print("Turned on LED ");
      Serial.println(led);
    }
    if (ch == 'x')
    {
      leds = 0;
      updateShiftRegister();
      Serial.println("Cleared");
    }
  }
}
 
void updateShiftRegister()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}

بعد رفع الكود على الاردوينو بنجاح اضغط على الزر الموجود يمين الشاشة بشريط الأدوات حتى تظر شاشة الإتصال التسلسلي (كما في الصورة):

 

شاشة الإتصال التسلسلي

سوف تظهر لك هذه النافذة التالية:

شاشة الإتصال التسلسلي

هذه النافذة تسمى “Serial Monitor” شاشة الإتصال التسلسلي وهو أحد خصائص برنامج الأردوينو. وظيفته هي السماح لنا بإرسال وإستقبال الرسائل من جهاز الكمبيوتر إلى الأردوينو عبر كيبل USB.

الرسالة “Enter LED Number 0 to 9 or ‘x’ to clear” تم ارسالها عبر الأردوينو، تطلب منا معرفة الأمر الذي سيتم تنفيذه. هل هو “X” (لإطفاء جميع الـ LEDs) أو ادخال رقم الـLED الذي ترغب بإضاءته (من 0 إلى 7 )

جرب ادخال الأمر التالي:
X
3
5

عملية ادخال X لن تؤثر لأن جميع الـ LEDs مطفأه، ولكن عند ادخال رقم الـLED المراد إضاءته سيقوم الأردوينو بالرد عليك برسالة تؤكد تشغيله كما تشاهد بالصورة التالية:

شاشة الإتصال التسلسلي

يمكنك تجربة الأمر X لتشاهد عملية الإطفاء لها جميعًا.

كما ستلاحظ سوف نعتمد على كود الدرس السابق وسوف تقوم فقط بتغطية الأجزاء الجديدة بالكود.

أولاً، دالة “setup” هنالك أربعة أسطر جديدة في نهايته

void setup()
    {
      pinMode(latchPin, OUTPUT);
      pinMode(dataPin, OUTPUT);  
      pinMode(clockPin, OUTPUT);
      updateShiftRegister();
      Serial.begin(9600);
      while (! Serial);
      Serial.println("Enter LED Number 0 to 7 or 'x' to clear");
    }

أولاً لديك الأمر “Serial.begin(9600)” وهو يقوم ببدء عملية الإتصال التسلسلي ليمكن الأردوينو من إرسال الأوامر عبر كيبل الـUSB. القيمة 9600 هو معدل سرعة نقل البيانات، يمكنك تغيير القيمة لقيمة أعلى ولكن يجب عليك تغيير قيمة شاشة الإتصال التسلسلي لنفس القيمة.

السطر الثاني يبدأ بـ”While” الشرطية للتأكد من أن هنالك اتصال عبر الـUSB للأردوينو قبل بدء ارسال الرسائل.

السطر الثالث لطباعة السؤال بالشاشة.

دالة “loop

void loop()
    {
      if (Serial.available())
      {
        char ch = Serial.read();
        if (ch >= '0' && ch <= '7')
        {
          int led = ch - '0';
          bitSet(leds, led);
          updateShiftRegister();
          Serial.print("Turned on LED ");
          Serial.println(led);
        }
        if (ch == 'x')
        {
          leds = 0;
          updateShiftRegister();
          Serial.println("Cleared");
        }
      }
    }

كل شي يحدث داخل دورة الـ loop يحدث داخل الجملة الشرطية IF (اذا كان)،
“Serial.available()” للتأكد من انه ما زال هناك اتصال تسلسلي نشط (وذلك عبر استرجاع قيمة True – نعم) وعندها فقط يتم تنفيذ سلسلة الأوامر التي بداخلها.
إذا تم استقبال رسالة فسوف ينتقل لسطر الكود التالي:

char ch = Serial.read();

هذا الأمر سيقوم بقراءة الحرف الذي تم استلامه ويقوم بتخزينه للمتغير. ch ،المتغير ch تم تعريفه  لتخزين القيم التي هي عبارة عن حروف  char وهي اختصار لـcharacter “حرف ” يتم تخزن حرف واحد فقط كقيمة للمتغير

السطر الذي يليله بالكود هي جملة IF الشرطية، وذلك للتأكد من أن القيمة المدخلة أعلى من 0 وأقل من 7. قد تبدو غريبة علينا الآن ولكن عبر الممارسة سنفهمها جيدًا.

كل حرف مدخل يحمل قيمة خاصة بالنظام، يدعى قيمة ASCII .وهذا يعني انه عند استخدام <= و => فنحن نقوم بالمقارنة بقيم ASCII

اذا نجح الاختبار فسوف ينتقل للسطر الذي يليه

int led = ch – '0';

يقوم باحتساب قيمة الـ LED = وذلك عبر عملية طرح الصفر من  قيمة (ASCII) للحرف المدخل

لأنك تعلم برقم الـLED الذي ترغب بإضاءته كل ماعليك فعله هو وضع تلك القيمة لـleads والقيام بتحديث مسجل الإزاحة shift register.

 bitSet(leds, led);
    updateShiftRegister();

السطرين التاليين سيقومون بإرسال رسالة التأكيد على شاشة الإتصال التسلسلي serial monitor:

          Serial.print("Turned on LED ");
          Serial.println(led);

كمان تلاحظ لقد قمت بإستخدام Serial.print عوضًا عن Serial.println.الفرق بين الإثنين هو أن Serial.print لايقوم بوضع سطر جديد في الشاشة بعد طباعة الرسالة.
ولأنك نود أن نطبع في الشاشة رسالة التأكيد اضافة إلى رقم الـLED الذي تم اضاءته فيجب عليك ان تستمر بالطباعة على الشاشة في نفس السطر لذلك السطر الذي يليه قمت بإستخدام Serial.println لأنك ترغب بوضع سطر جديد بعد طباعة الرسالة ورقم الـLED

قيمة الـLED هو عبارة عن integer رقم صحيح “int”
بعد جملة IF الشرطية الأولى هنالك جملة IF شرطية ثانية تقوم بالتأكد ما اذا كان قيمة “ch” يحمل الحرف x اولا.

        if (ch == 'x')
        {
          leds = 0;
          updateShiftRegister();
          Serial.println("Cleared");
        }

أنشطة أخرى

ارسل الحروف منفصله وذلك عبر الضغط على إنتر Enter بعد كل حرف لارسال الأمر، ولكن يمكنك ارسالها جميعُا مرة واحدة في سطر واحد .. جرب ادخال التالي في شاشة الاتصال التسلسلي وارسلها:
X0246

لنرى الآن لأي مدى سرعة اتصال الأردوينو . غير معدل سرعة نقل البيانات في الكود من 9600 إلى 115200 وارفعه لمتحكم الأردوينو مره أخرى.
بعد ذلك افتح شاشة الاتصال التسلسلي وغير معدل سرعة نقل البيانات إلى 115200 (مثل الصورة)

شاشة الإتصال التسلسلي

ستلاحظ أنه لا يزال كل شي يعمل بشكل صحيح، معدل سرعات نقل البيانات العالية جدًا غير ضرورية لذلك 9600 هي الشائع استخدامًا والعديد من وحدات الـGPS تستخدم هذه السرعة.

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

شاشة الاتصال التسلسلي “Serial Monitor” هي طريقة جيدة أيضًا لتحليل أخطاء الكود وتصحيحها أيضًا.