الأنظمة المدمجة بإستخدام الأردوينو _ الدرس 2 مقدمة تقنية في الأردينو





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


أولا أحب تبسيط الأمور، أردوينو ببساطة هي عبارة عن " متحكم دقيق " أو ميكروكنترول يبرمج عن طريق الكمبيوتر وكما سبق وشرحت ما هو،  موضوع داخل دارة إلكترونية تحتوي على مداخل ومخارج ومنفذ للطاقة ومنفذ للتواصل مع الكمبيوتر.
إذن فالأردوينو ببساطة هو : ميكروكنترول أو متحكم دقيق + دارة إلكترونية.
ويمكنك مشاهدة الصورة التالية المبسطة التي تريك كيف تبدى اللوحة سطحيا، حيث أن تلك القطعة الطويلة ذات 28 رجل هي المتحكم الدقيق: 


 والأردوينو لا تأتي بشكل واحد فقط مثل الصورة السابقة بل هي تأتي على عدة أشكال وتختلف حسب الخصائص التي نحتاجها في المشاريع، وهي كما يلي:

ولكل قطعة خصائص مختلفة عن الأخرى مثلا في الحجم أو عدد المداخل والمخارج وغيرها. وتاريخيا ظهرت أول لوحة منها سنة 2005 بإيطاليا وكانت تبدوا كالتالي:


ثم تطورت شيئا فشيئا لتصل إلى ماهي عليه اليوم، وتملك الآن مجتمع يسمى بمجتمع أردوينو وهي تبرمج بلغة شبيهة بالسي وبسيطة جدا. 

في درسنا بشكل عام سنهتم باللوحة ذات الإستخدام الكبير في التعليم وهي Arduino uno ومنه يمكنك دراسة باقي اللوحات. 

أي أننا سنستخدم هذا النوع منها:


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

أريد البدأ في شرح أردوينو أونو من حيث الخصائص والتي أنقلها من موقعها الرسمي وهي:

Microcontroller ATmega328P
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
PWM Digital I/O Pins 6
Analog Input Pins 6
DC Current per I/O Pin 20 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB (ATmega328P) of which 0.5 KB used by bootloader
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
Clock Speed 16 MHz
LED_BUILTIN 13
Length 68.6 mm
Width 53.4 mm
Weight 25 g

حيث أنها تعمل بمتحكم دقيق من عائلة AVR وهو ATmega328p وذلك ب 5 فولت وتحتاج إلى طاقة تعادل من 7 إلى 12 فولت وأقصى حد تستحمله هو ما بين 6 الى 20 فولت. وتحتوي على 14 مدخل ومخرج ومنها 6 منها تحتوي على PWM ولديها 6 مداخل ومخارج رقمية وهي أيضا ضمن PWM ولديها 6 مداخل ومخارج أنالوج (تسمى التماثلية بالعربية)، وتستحمل تيار 20 ميلي أومبير في المدخل الواحد منها بينما تستحمل حوالي 50 ميلي أومبيرفي المخرج الخاص ب 3.3 فولت. ولديها ذاكرة flash داخلية بسعة 32 كيلوبايت وهي الخاصة بالمتحكم الدقيقة حيث أن 0.5 كيلوبايت منها مستخدم من طرف bootloader ولديها رام ستاتيك أي SRAM بحجم 2 كيلوبايت وEEPROM (سبق وقلت بأنها روم قابلة للفرمتة بشكل كامل كهربائيا في الدرس الأول )بحجم 1 كيلوبايت، وتصل سرعة ال horlog أو ال clock أو المزامن الخاص بها إلى 16 ميجاهيرتز وفي حالة أنه ليس لديك LED للتجارب تستطيع إستخدام اللادة الداخلية الموجودة ضمن المخرج 13، عرضها حوالي 5 سم وبينما طولها حوالي 7 سم ويبلغ وزنها 25 غرام.

وأعلم أن هناك العديد من المفاهيم الغير مفهومة مثل PWM والأنالوج وغيرها، وسأقوم بشرحها الآن، فال PWM هو عبارة عن إشارة أو سينيال مربع أو بهذا الشكل:

أي نستطيع أن نقول بأن PWM هو عبارة عن تسلسل من النبضات والنبضات هي وجود أو عدم وجود الكهرباء في لحظة زمنية ما.
وبخصوص البوتلدر أو bootloader  فهو كود برمجي يعمل قبل إنطلاق أي كود آخر أو نظام تشغيل في القطعة الإلكترونية وهو بالمعنى نقل البيانات الأولية إلى داخل ذاكرة الميكروبروسيسور أو الميكروكنترولور للبدأ في العمل أو المعالجة أو البرمجة.
أما الإشارة الأنالوج signal analog فهو الإشارة العكسية للإشارة الرقمية، فمثلا حينما يستقبل ميكريفون الصوت فالإشارة الخارجة من الميكريفون هي إشارة analog وليست digital ومثلا الإشارة الخارجة من محرار هي إشارة أنالوج، أي في الكثير من الأحيان توصف الإشارة analog بإنها الإشارة القادمة من العالم الفيزيائي. وفي حالتنا هنا توصف المداخل والمخارج بأنها analog لأنها تحتوي على محولات داخلية من analog إلى digital فالميكروبروسيسور/الميكروكنترولول/المعالج لا يفهم إلا الإشارة الرقمية، لذلك نحن نحتاج لتحويل الإشارة إلى إشارة رقمية لكي يفهمها المعالج، بينما المداخل والمخارج التي نصفها بأنها digital فنحن مطالبين بأن نستقبل فيها إشارات رقمية فقط. 

نكون الآن قد قرأنا خصائص هذه اللوحة (يمكنك التوسع في هذا عبر تنزيل datasheet الخاص باللوحة من الإنترنات، والداتاشيت هو عبارة عن كتيب صغير يقدم لك خصائص القطع الإلكترونية بالتفصيل من حيث مكوناتها وغيرها ) والآن يمكننا الإنتقال لشرح المداخل والمخارج الخاصة بها بالتفصيل، وفي هذا أنا أستخدم pinout وتعني هذه الكلمة تركيب من كلمات وهي pin-in-out أي البوابات المدخلية والمخرجية (لم أترجمها بشكل جيد أعلم)، وفي هذا يوفر موقع مثل http://www.pighixxx.com أوراق جميلة جدا ل pinout وستجد فيه العديد من القطع الأخرى غير الاردوينو وكما أنك ستجد تقريبا كل أوراق pinout الخاصة بعائلة أردوينو.

وقبل أن أبدأ في ذلك علي توضيح شيئ آخر يخص العلاقة بين المتحكم Atmega واللوحة، والعلاقة هي بين أرجل المتحكم والمداخل والمخارج الخاصة باللوحة، فيمكننا القول بأن أردوينو ماهو إلا توسيع وتنظيم للمداخل والمخارج الخاصة بالمتحكم فقط والحقيقة هي أن هذا المتحكم الذي يبدوا مثل هذا: 
قد تم ربط تلك الأسنان الخارجة منه والتي تسمى الأرجل بهذه الطريقة:


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

ويمكننا توضيح ما قلته أكثر من خلال هذه الصورة التي تربط بشكل جيد بين أرقام/أسماء مداخل الأردوينو مع أرقام المداخل الأصلية للمتحكم:




والصورة التالية تخص ال Pinout الخاص ب ATmega328 وهو المتحكم الذي سبق وقلت بأن Arduino uno الذي سنستخدمه يعمل به:


في البداية سنعتمد على  الصورة التالية كمرجع لأسماء المداخل والمخارج لكي يسهل لنا الشرح والتوافق فيما بيننا في معرفة أين نتحدث بالضبط:


وسنستخدم الصورة التالية لإستخدام الكلمات المفتاحية التي فيها أو motes clé وذلك بسبب أنها مفصلة جدا وهي Pinout لأردوينو أونو ومفصلة تفصيلا كبيرا جدا وأنا شخصيا أستخدمها وأستخدم الكثير من هذا النوع في معرفة المداخل والمخارج الخاصة بالقطع أو اللوحات الإلكترونية، ويمكنك تحميل نسخة PDF من موقع http://www.pighixxx.com  :




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

شرح الألوان:

Power خاصة بالطاقة/ مثل مخارج الطاقة 5 فولت و 3.3 فولت.
GND خاصة بالمدخل الأرضي أو - أو ال 0 فولت.
Serial pin وهي المداخل والمخارج الرقمية digital.
َAnalog pin وهي المداخل والمخارج التناظرية أو الأنالوج.
Control وتعني التحكم.
INT وهي تعني interrupt ولم أستطع ترجمتها للعربية وسأحاول أن أجد ترجمة لها.
Physical Pin وتعني الرقم الفيزيائي للمخرج/المدخل في الميكروكنترول ATmega.
Port pin وتعني رقم البوابة في بوابة ال ATmega البرمجية (لست متأكد من هذا بالضبط).
Pin function ويعني المهمة التي من الممكن أي يقوم بها هذا I/O (أعني ب I/O بأنه مدخل ومخرج).
Interrupt Pin ويعني بأن هذا ال I/O من الممكن إستخدامه ك interrupt وربما تترجم كلمة interrupt إلى العربية بأنها " مقاطعة " وهي إشارة إلى المعالج تنبهه إلى وجود حدث event.
PWM pin سبق وأن شرحته.
Port Power وهي مخارج للطاقة ويجب التوضيح كما هو مبين في الجهة اليسرى أن المجموعة الحمراء أو المجموعة الصفراء، يجب ألا تزيد مجموع التيار الخارج منها على 100 ميلي أومبير أو حصل مشكل.

شرح الكلمات أو الكلمات المفتاحية لفهم المخطط:

PC: هذا I/O ضمن البوابة C في ATmega.
PB: هذا I/O ضمن البوابة B في ATmega.
PD: هذا I/O ضمن البوابة D في ATmega.
ََADC: هذا المدخل يحتوي على محول من الأنالوج إلى الديجيتال والتسمية الكاملة ل ADC هي Analog to digital convert.
PCIN: وتعني كلمة Pin change interrupts وهي تعني بالضبط أنه حين تغير حالة ال pin سيتم إرسال interrupt بالرقم الذي فيه، فمثلا PCINT13 سيرسل الرقم 13.
SCL و SDA: تعني أن هذا I/O يستخدم في بروتوكول التواصل I2C.
AREFمن إسمه تظهر كلمة Reference أي أنه مرجع، فهذا المدخل مخصص لقراءة ومقارنة الرقم المرجعي للفولتية مع الفولتية التي سنستقبلها، فمثلا لو عندنا حساس sensor لا يعمل ب 5 فولت بل مثلا ب 3 فولت فهنا ستحدث عملية رياضية ينستخلص النتيجة وهذا هو مهمة هذا المدخل وسنقول بشرحه بالتفصيل في دروس قادمة.
SCK و MISO و MOSI و SS: مخصصة لبروتوكول SPI وسنقوم بإستخدامه في درس قادم للتعلم.
OC: وهي مخصصة للتزامن أو الزمن Timer وهي كالتالي: 

CLKO: لم أفهم ماهي وإذا كانت لديك فكرة حولها ضعها في تعليق وسأحدث هذا المقال بها.
ICP: وتعني Timer Interrupt Capture ICP وهي تستخدم في العديد من التطبيقات مثل: قياس عرض ال pulse أو الإشارة المربعة مثل إشارة PWM ، وفي قياس ال period ومنه يمكننا قياس frequence أي تردد الإشارة وكذلك يمكننا عن طريقه قياس وقت حدث معين. يمكن زيادة المعلومات حوله من هنا
AIN1 و AIN1: وهي تعني إدخال قيمة مرجعية للفولتية، وتشبه تقريبا في عملها AREF ولكن في حين أن AREF مرجعها هو قيمة داخلية فإن AIN تقوم بإستقبال قيمة مرجعية من الخارج أي أننا نقارن بين مثلا القيمة القادمة من sensor والقيمة القادمة من مصدر خارجي وسنحاول التوسعة فيها في درس ما وذلك من خلال تطبيق عملي لها.
T1 و T2: تعني Timer ولم أجد عنهما معلومات موسعة.
XCK: يمكن أن يستخدم في إخراج أو إدخال ال clock ومنه فهو يمكن أن يستخدم في التزامن وهناك تطبيق عملي له يمكنك مشاهدته في هذا المقال
TX و RX: ويعنيان TTL serial data يعني التواصل عبر TTL المتسلسل حيث أن ال R تعني Read أي القراءة و T تعني Transmit أي الإرسال. ولديها العديد من التطبيقات منها التواصل مع مودل خاص بالبلوتوث وغيرها.
VIN: مدخل للطاقة أي للفولتية Volte in وتستخدم حينما تكون اللوحة تعمل بطاقة خارجية وليس طاقة قادمة من USB ( ربما بالتقريب تقوم بتغذية الكارت منها في حالة أردنا إستخدام مغذي خارجي بدل كابل USB الذي يربط في الكمبيوتر وكما ترى في الأعلى في الدائرة الخاصة بالشاحن الخارجي، ففي وسط الدائرة هناك VIN ما يعني أنه يمكننا سواءا إستخدام كابل خاص للتغذية الخارجية أو إستخدام خيط فقط ونربطه في VIN في جهة I/O).
Reset: وهي إعادة البدأ من الصفر للميكرونترولور وكما تلاحظ أنه في المدخل Reset حينما يكون 0 يفعل وليس حينما يكون 5 فولت أي 1 وذلك أنه تم وضع عكس reset. أو يمكنك إستخدام الزر الموجود بجانب مدخل كابل USB فهو أيضا يقوم ب Reset.
IORef: وهو مرجع فولتج لل I/O ويجعل الأجهزة التي تركب فوق الأردوينو تعرف هل ال I/O تعمل ب 5 فولت أو 3.3 فولت. 
ICSP : وهي طريقة سأشرحها في درس خاص لذلك لا داعي للإهتمام بها حاليا.

وبهذا سأكون قد شرحت أغلب أو كل الكلمات الصعبة في الرسم.

أمثلة على طريقة قراءة كيف يعمل I/O أو بالاحرى ماهي خصائصه وذلك من خلال الرسم السابق / الديقرام السابق:


1- SCL و SDA: المهمة الأساسية لهم في بروتوكول التواصل I2C أو التواصل TWI ويستخدم فيها مكتبة wire. 
ومن الرسم نلاحظ هكذا:

بالنسبة لل SCL من المخطط فهو فيزيائيا يمثل البوابة رقم 28 في ATmega وهو ضمن البوابة C في َATmega وكما أنه يحتوي على محول ADC أو محول من الأنالوج إلى الديجيتال تحت رقم 5 وبالنسبة لكلمة PCINT فهي يجب أن تشرح وحدها وهي تعني: pin change interrupts ومعناها أن الأنترفاس المسؤولة عن هذا المدخل ستقوم بإنتاج interrupt حين تتغير حالة pin مثل إذا كان 0 وأصبح 5 فولت فهنا سترسل interrupt إلى المعالج الداخلي للمتحكم. ورقمها في SLC هو 13. وبالنسبة لجملة R3 only التي أمامها وأمام SDA فهي تعني أنهما موجودان فقط أو في حالتهما تلك في الإصدار 3 فقط. بالنسبة لشرح SDA فهو مثل شرح SCL لذلك لا تتغير فقط الأسماء تتشابه والأبواب بأرقام أخرى.
2- AREF: من إسمه تظهر كلمة Reference أي أنه مرجع، فهذا المدخل مخصص لقراءة ومقارنة الرقم المرجعي للفولتية مع الفولتية التي سنستقبلها.
3- ال I/O 11 : 
حينما تلاحظ البوابة رقم 11 فهي كما يلي:
وبالإستعانة بالكلمات المفتاحية التي وضعتها فهذا I/O رقمه في البورد هو 11 وهو يمكن إستخدامه ك PWM ورقمه الفيزيائي في َAtmega هو 17 وهو ضمن البورت B ويمكن إستخدامه في المزامن (OC2A ) ورقمه في التقطيع (interrupt) هو 3 ونستخدمه في التواصل عبر SPI.



المراجع والمصادر:
المرجع1  المرجع2 المرجع3  المرجع4 المرجع5 المرجع6


Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel