عنوان الموضوع

نبذة عن محتوى الموضوع

بروتوكول CAN

من اشهر بروتوكولات الشبكات المستخدمة في صناعة السيارات والتطبيقات الصناعية الاخرى

Embedded Systems and The Internet of Things

انترنيت الاشياء من التقنيات الحديثة التي بدت تدخل عالم الانظمة المدمجة

التعريف باردينو اونو

مقالة تعريفية عن تفاصيل الاردينو واللغات التي يمكن برمجة الاردينو بها

انواع الاتصالات

انواع الاتصالات في الانظمة الحاسوبية وبروتوكولات نقلها

السبت، 31 يناير 2015

Type Of ARM Cortex Family

Type Of ARM Cortex Family

ARM Cortex-A


هي العائلة المستخدمة لغرض معالجات التطبيقات المختلفة وتربط عادتا مع كميات ذاكرة كبيرة وتعمل بسرعة عالية هي مصممة لغرض التعامل مع كميات كبيرة من التطبيقات حيث يمكن تشغيل نظام تشغيل متكامل بواسطة معالجات هذه العائلة يمكن استخدامها كمعالجات رئيسية في اجهزة الموبايل والاجهزة اللوحية والكاميرات الرقمية والكثير من التطبيقات من القطع المشهورة المبنية على هذه العائلة من المعالجات هي 
Raspberry

ARM Cortex-M

معالجات هذه العائلة صممت لاجل الاستخدام في المتحكم الدقيق حيث كمية الذاكرة التي تتصل معها اقل من عائلة A وسرعتها ايضا اقل لكنها تتفوق بتوفير الطاقة ومن اقل المعالجات صرفا للطاقة في هذه العائلة هو المعالج ARM Cortex-M0 ثم ARM Cortex-M3 تستخدم ايضا في تطبيقات العتاد الصلب او كوصل بين معالج وعتاد صلب مثل اجهزة البلوتوث وغيرها 

ARM Cortex-R

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


هنا بعض الامثلة للوحات تطويرية مبنية على معالجات ARM Cortex

Arduino DUE
هي لوحة متحكم دقيق مبنية على المتحكم الدقيق من شركة ATMEL اسمه SAM3X8E والذي بدوره مبني على معالج ARM Cortex-M3 هذا المتحكم  32 بت ويعتبر الاول في سلسة اردينو من هذه الناحية حيث بقية لوحات اردينو 8 بت للاطلاع على تفاصيل القطعة هنا


MBED NXP LPC1768
قطعة متحكم مبنية على معالج ARM Cortex-M3
للاطلاع على تفاصيل هذ اللوحة هنا

 BEAGLEBONE BLACK
هذه القطعة عبارة عن حاسوب متكامل مبني على معالج ARM Cortex-A9 بسرعة 1GB يمكن تشغيل نظام اندرويد او لينكس او غيرها من الانظمة على هذه اللوحة وللاطلاع على تفاصيل اللوحة هنا

TMS570LS12
لوحة تطويرية لمتحكم دقيق مبنية على معالج ARM Cortex-R4F ومن شركة TEXAS INSTRUMENTS الشهيرة في مجال الانظمة المدمجة للاطلاع على تفاصيل اللوحة هنا


هذه امثلة بسيطة لبعض اللوحات التطويرية لكن هنالك الكثير الكثير من اللوحات ومن شركات مختلفة مثل TEESY 3.1
RASPBEERY
ODROID
PCDUINO
ARDUINO TRE



















السبت، 17 يناير 2015

شرح بروتوكول RS232



RS232

هو بروتوكول اتصال متسلسل يستخدم للربط بين جهازين الاول  DTE والثاني DCE
DTE  مثل جهاز الكومبيوتر الشخصي وال DCE
 مثل لوحة متحكم او مودم ويمكن ربط جهازين من نوع DTE معا بواسطته


 يتم ارسال البايت على شكل اطار بيانات يخضع ارسال كل بايت الى هذا الاطار
بت الارسال تكون قيمته 0 منطقي و8 بتات تمثل البايت المرسل وبت نهاية الارسال تكون قيمته 1 منطقي وقد يكون هناك 2 بت للاشارة الى الانتهاء من الارسال وهناك بت اختياري بت التاكد يمكن وضعه في الاطار او ازالته وله نوعان الاول زوجي فان هذا البت يكون 0 منطقي عندما تكون عدد الواحدات في البايت المرسل زوجي ويكون 1 منطقي عندما يكون عدد الواحدات في البايت المرسل فردي النوع الثاني فردي يكون هذا البت 0 منطقي عندما يكون عدد الواحدات في البايت المرسل فردي ويكون 1 منطقي عندما يكون عدد الواحدات في البايت المرسل زوجي وهذا الاطار للبيانات يكون مشابه بالضبط لبروتوكول UART باختلاف التمثيل للمنطق الرقمي بين الاثنين
ان المستويات المعيارية لهذا البروتوكول تختلف تماما عن ال
TTL حيث تمثل القيم المنطقية بمدى فولتية مختلف
المستوى المنطقي 0 يمثل بقيمة جهد تتراوح من +3 الى+25 ويسمى ب
Space
المستوى المنطقي 1 يمثل بقيمة جهد تتراوح من -3 الى-25 يسمى بMark

مستوى منطقي غير معرف يتراوح من +3 الى -3
يجب ان لاتتجاوز اعلى قيمة جهد +25 او -25 نسبة للنقطة الارضية وان اعلى تيار يجب ان لايتجاوز 500 ملي امبير

 

منفذ COM في الحاسوب 

يوجد في الحاسوب منفذ تسلسلي عند ربط الحاسوب بواسطة هذا البروتوكول سنستخدم هذا المنفذ ويتكون المنفذ من 9 اجزاء 


DCD يستخدم عند ربط مودم هاتف لكشف اشارة الرنين
RXD قطب استقبال البيانات الذي سوف نستخدم عند ربط جهازين بواسطة هذا البروتوكول
TXD قطب ارسال البيانات الذي سوف نستخدمه عند ربط جهازين بواسطة هذا البروتوكول
DTR قطب تحكم يشير الى ان الطرفية الاولى جاهزة للارسال
DSR قطب تحكم يشير الى ان الطرفية الثانية اتصلت مع الاولى
RTS قطب تحكم يخبر الطرفية الثانية ان البيانات لدى الاولى جاهزة ويفعل دائرة الاستقبال لدى الثانية
CTS قطب تحكم يخبر الطرفية الاولى بانه استلم اشارة RTS وانه جاهز لاستلام البيانات
RI يستخدم في حال وجود مودم لاخبار الجهاز الرئيسي ان هناك رنين
GND قطب الجهد الارضي 

عملية الارسال والاستلام

عند انشاء عملية ارسال بدون مصافحة فالعملية سهلة جدا نقوم بوصل طرفي الجهازين حيث يوصل TXD الاول الى RXD الثاني وبالعكس ويوصل الجهد الارضي لكل من الطرفين الى بعض 


المتحكم الدقيق لايدعم هذا البروتوكول لكن يدعم بروتوكول UART الذي يشابه هذا البروتوكول في اطار نقل البيانات لكن يجب ضبط نفس الاعدادت لكلا البروتوكولين بنفس الضبط وتتم العملية برمجيا ولكن هناك اختلاف وحيد هو ان UART يعنل بالقيم المنطقية TTL اي 1 منطقي +5 فولت و0 منطقي 0 فولت ولكن بروتوكول RS232 يعمل بقيم منطقية مختلفة تماما لذا يجب التحويل بين القيمتين لتتم المسالة بصورة صحيحة ويستعمل لذلك اما درات الكترونية مخصصة لهذا الشي اسمها MAX232 او يستخدم الترانزستور كمفتاح ليؤدي عملية التحويل بين القيم الممثلة للمنطق الرقمي 


وهنا دائرة التحويل باستخدام الترانزستور 


في حالة الاتصال بين الطرفين مع مصافحة يضاف الى ربط TXD و RXD وGND ربط الطرفين RTS ,CTS حيث يربط ال RTS في الجهاز الاول مع ال CTS في الجهاز الثاني وبالعكس تتم المصافحة بان يقوم الجهاز الاولى بتفعيل القطب CTS من اجل اعلام الطرفية الثانية بانها ستقوم بالارسال فتقوم الطرفية الثانية بالرد عليها بانها جاهزة عن طريق تفعيل القطب RTS وتبدء عملية ارسال البيانات في حالة كان الجهاز الثاني مشغول ولم يفعل القطب RTS يقوم الجهاز الاول باعادة الارسال بعد فترة زمنية او انتظار الجهاز الثاني لحين ارسال تفعيل القبول

مساؤى استخدام البروتوكول

1- مناسب للربط بين نظامين System To System اكثر من كونه قابل للربط بين شريحتين Chip To Chip  او بين شريحة وحساس Chip To Sensor  
2- معدل نقل البيانات منخفض جدا من اجل مسافة طويلة
3- يحتاج الى شريحة للتحويل المنطقي RS232 To TTL عند استخدامه 
4- غير قابل للتوسعة ويمكن ربطه فقط بين خادم وحيد وقائد وحيد Single Master /Single Slave

محاسن استخدام البروتوكول 

1- بروتوكول اتصال شائع الاستخدام في كثير من التطبيقات ومعتمد من قبل الكثير من الشركات
2- مسافة اتصال طويلة نسبيا حوالي 50 قدم عند معدل ارسال منخفض 
3- مناعة ضد الضجيج بسبب الجهد المرتفع نسبيا +25 -25   للمستويات المنطقية 
4- سهل البناء والبرمجة ومتوفر برمجيا وككيان صلب 

الجمعة، 16 يناير 2015

شرح بروتوكول SPI

SPI

هو بروتوكول من نوع Full Duplex اي يرسل ويستلم بنفس الوقت وتم تطويره من قبل شركة موتوريلا Motorola يختلف عن بروتوكول I2C في طريقة التعرف على الطرفيات المراد التخاطب معها حيث لايقوم بارسال عنوان بل يوجد ناقل خاص Select Chip يقوم بتفعيل الطرفية المراد التخاطب معها عندما يكون 0 منطقي  تفعل الطرفية وعندما يكون 1 منطقي يلغي تفعيل الطرفية هو اكثر البروتوكلات استعمالا في المتحكمات حيث تناسب سرعته ونقل بيانات كبيرة  يمكن ربط من 8 الى 12 جهاز بواسطة هذا البروتوكول على خط نقل واحد  يتشابه في مسالة الطول الاعظمي للناقل مع بروتوكول I2C  فكلاهما يمتلك طول خط نقل قصير مناسب لتطبيقات الداراة المطبوعة تصل سرعة النقل به الى حد 10mb لايملك الية للتعرف على ان البيانات وصلت كاملة او لا ولايملك الية للتعرف على ان الاجهزة الطرفية موجودة او تم ازالتها يمكن بناؤ هذا البروتوكول من الكيان الصلب وكذلك بصورة برمجية 

التركيب الداخلي لSPI

يوجد جهاز قائد Master   يتصل مع جهاز او عدة اجهزة خوادم Slave وتركيب الSPI عبارة عن مسجل ازاحة من من توالي الى توازي بطول 8 بت ويعتمد على اربعة خطوط للتخاطب مع الوحدات المحيطية 
 MOSI Master Out Slave In يكون هذا القطب خرج عندما يكون الجهاز Master  ويكون هذا القطب دخل عندما يكون الجهاز Slave
 MISO Master In Slave Out يكون هذا القطب دخل عندما يكون الجهاز Master  ويكون هذا القطب خرج عندما يكون الجهاز Slave
Serial Clock-Synchronization قطب التزامن والمسؤل عن توليده الMaster 
Slave Select قطب يخرج من الجهاز السيد Master ليحدد اي من الخوادم Slaves يتم التواصل معه اي هو قطب تفعيل يكون مفغل عندما يكون 0 منطقي ويحتاج كل جهاز خادم Slave الى خط تفعيل لذا عدد نواقل SPI تعتمد على عددالاجهزة المتصلة  
ان المسجلات الداخلية لكل من السيد Master والخادم Slave مرتبطة مع بعضها عن طريق الطرفين MISO و MOSI ويشكلان حلقة مغلقة حيث ينزاح بت من السيد وينزاح بت من الخادم في نفس النبضة الزمنية والصورة ستوضح العملية التي يندفع فيها بت ال الخرج ليحل محله بت جرت عليه عملية زحف بسبب دخول بت اخر من الدخل 

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

 انماط توصيل SPI

1-Daisy Chain SPI Configuration
في هذا النمط يتم ربط كل الاطراف MISO و MOSI  وSCLK مع بعضها لبعض لكل الخوادم Slaves ولكن تبقى اطراف التفعيل التي يبلغ عددها بعدد الخوادم Slaves تتوزع على كل الخوادم لتفعل اي واحد منهم حسب رغبة البروتوكول بالتخاطب مع الطرفيات ويلاحظ هنا انه في بنية SPI يكون هناك ناقل تفعيل واحد يمكن التعامل معه بالكيان الصلب اما عند ربط اكثر من خادم وظهور اكثر من ناقل تفعيل يجب التعامل معه برمجيا وضبط التفعيل
 

2-Independent Slave SPI Configuration
في هذا النمط يتم ربط مسجلات الخوادم مع بعضها بصورة متوالية اي يحصل ان نتخاطب ثلاث مسجلات خوادم ومسجل قائد حيث يتم ربط خرج الخادم الاول الى دخل الخادم الثاني وخرج الخادم الثاني الى دخل الخادم الثالث وخرج الخادم الثالث الى مسجل القائد وبالنتيجية نحصل على حلقة متوالية تحتوي 4 مسجلات ازاحة لذا عندما يرسل القائد 3 بايتات يتم دفعها بالتسلسل ليصبح اول بايت تم ارساله داخل الخادم الثالث وثاني بايت تم ارساله داخل مسجل الخادم الثاني واخر بايت تم ارساله داخل مسجل الخادم الاول عند هذا الربط يجب تفعيل كل الخوادم في نفس اللحظة الزمنية لذا عدد النواقل بين القائد والخوادم فقط اربعة وناقل التفعيل يوزع نفسه على الخوادم ويكون مفعلا دائما
 

الانماط الزمنية لSPI

توجد اربعة انماط زمنية لتعامل المتحكمات مع هذا البروتوكول ويجب تحديد واختيار نمط معين عن طريق مسجل خاص داخل المتحكم ويتم اختيار النمط برمجيا من قبل المتحكم وحسب توافق الطرفيات اي يجب قراءة ورقة البيانات للطرفية التي سوف يتم ربطها وبموجب ذلك يحدد نمط التوقيت من قبل المتحكم ويختلف في هذه الانماط الاربعة القطبية والطور لموجة الزمن وفي كل الانماط الاربعة يتم قراءة البيانات عند حافة زمنية صاعدة مثلا ويتم تغيرها عن الحافة الهابطة التي بعدها او بالعكس وهنا صورة توضح الانماط الاربعة 

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

يقصد بCPHA طور موجة الزمن والخط الاحمريمثل الوقت الذي تجري عنده قراءة البيانات والازرق خط الذي يمثل الوقت الذي تجري عنده عملية التزحيف

تطبيقات الSPI

توجد الكثير من الطرفيات التي تدعم التواصل بهذا البروتوكول وتوجد بعض الطرفيات التي تحتاج سرعة لاتستطيع التواصل ب I2C وانما يجب استخدام SPI للتواصل معها ومن اشهر الطرفيات التي تستخدم هذا البروتوكول بطاقات الذاكرة MMC
وكذلك كل من Serial EEPROM,LCD,Sensors,ADC,DAC,RTC,CAN Controller,RAM 

انواع الاتصالات

انواع الاتصالات

1- الاتصالات التفرعية (التوازي)


يكون عدد خطوط الارسال من 4 او 8 او 16 او 32 او 64 او 128 بت وتكون سرعة نقل البيانات عالية جدا لكن بمسافة محدودة حيث عند زيادة المسافة يحدث تشوية وضجيج بسبب سعات خطوط النقل مما يؤدي الى زحف الاشارة او تاخير نقلها ويستخدم هذا النوع من الاتصالات داخل المعالج الدقيق وكذلك في اللوحة الام في الحاسوب الشخصي حيث اتصال المعالج مع الذواكر وبقية الطرفيات يكون عن طريق اتصال تفرعي لانه يمتاز بالسرعة ويكون هذا النوع مكلف لو تم استخدامه الى مسافات بعيدة 


2-الاتصالات التسلسلية (التوالي)


يكون عدد خطوط الارسال اما 1 او2 او3 او4 او5 يستخدم هذا النوع على نطاق اوسع بكثير حيث يمتاز بمانعة عالية ضد الضجيج وينقل البيانات الى مسافات بعيدة وكلفته قليلة حيث عدد الاسلاك المستخدمة قليل

تصنف الاتصالات التسلسلية  الى صنفين

الاتصالات المتزامنة


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

الاتصالات الغير متزامنة 

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

اتجاهات الاتصال

1- (Simplex Communication)

هنا يكون اما مرسل اومستلم يقوم بوظيفته المحدد فقط مثلا صحن الاستقبال الفضائي يقوم بالاستقبال ولايقوم بشي غير ذلك

2-(Half Duplex)

هنا خط نقل وحيد يقوم مرة بالارسال ومرة اخرى بالاستلام ولايقوم بنفس الوقت بالارسال والاستلاك اي اتجاه واحد للارسال في نفس اللحظة الزمنية مثل بروتوكول I2C,USART

3-(Full Duplex)

هنا يوجد خط نقل خاص بالارسال وخط نقل اخر خاص بالاستلام ويحدث الارسال والاستلام بنفس الوقت اي اتجاهين للارسال في نفس اللحظة الزمنية مثل بروتوكول UART,SPI

وسنعرض في مقالات اخرى تفاصيل البروتوكولات يمكنك القراءة هنا
I2C,SPI,USART,UART,CAN,RS232

شرح بروتوكول CAN


  CAN Controller Area Network

لمحة تاريخية عن تطور هذا البروتوكول

هو بروتكول يستخدم للتواصل بين المتحكم الدقيق واجزاء السيارات وقد صمم خصيصا هذا البروتوكول لخدمة الانظمة المدمجة في السيارات وتم الاعلان عن هذا البروتوكول سنة 1983 من قبل شركة robert bosch  الالمانية وصدر رسميا من جمعية مهندسي السيارات سنة 1986 اصدرت الشركة المنتجة لهذا البروتوكول عدة اصدارات منه كان منها في سنة 1991 CAN2.0 ويتالف هذا الاصدار من جزئين CAN2.0A ويكون فيه عدد بتات التعريف 11 بت والاخر CAN2.0B وكان عدد بتات التعريف فيه 29 بت وهذا الثاني يكون اوسع من الاول في التعامل مع الطرفيات في عام 1993 اصدرت المنظمة الدولة للمعايير (ISO)  ثلاث معايير اساسية من هذا البروتوكول وقامت شركة  robert bosch باصدار معيار جديد لهذا البروتوكول هو CAN FD ويميزه انه متوافق مع معيار CAN2.0 اي يمكن للاجهزة الجديدة التعايش مع الاجهزة القديمة المصممة ل CAN2.0

التطبيقات لCAN 

قد تحتوي السيارة على اكثر من 70 وحدة كل واحدة منها متخصصة بعمل معين كالوسائد الهوائية ونظام المكابح وفتح النوافذ وغلق المرأة وغيرها الكثيرقد تكون هناك انظمة مستقلة بحد ذاتها كعملية شحن البطارية لكن معظم الانظمة  تحتاج الى ان تتواصل مع بعضها ولاجل سد حاجة هذه الطرفيات الكثيرة وضع بروتوكول can بسبب قلة تكلفة بعض وحدات تحكم بروتوكول CAN والمعالجات دخل هذا البوروتوكول في الكثير من التطبيقات مثل  الطيران والبحرية والطبية والاتمة الصناعية وغيرها


معمارية CAN


بروتوكول CAN يدعم عدة اجهزة قائد (Master) عندما درسنا بروتوكول SPI وجدنا انه يدعم جهاز قائد واحد هو المسؤل عن التحكم بسير عمل البروتوكول اما هنا فCAN يدعم وجود اكثر من جهاز ويكون مبدء معمارية CAN مبني على اساس العقدة (Nodes) التي يربط البروتوكول على الاقل بين اثنين منها تختلف العقد من حيث درجة التعقيد قد تحتوي مدخلات ومخرجات فقط وقد تحتوي حتى منافذ اتصال بالانترنت او USB حتى اما مبدء النقل فيتم عن طريق رسائل

مكونات العقدة

1-وحدة معالجة مركزية تقرر ماتعنيه الرسالة الواردة وما الرسائل التي تريد نقل 
2-اجهزة استشعار وتحكم ومحركات تربط الى وحدة المعالجة المركزية 
3-وحدة تحكم البروتوكول (CAN Controller)  يقوم باستلام البتات عن طريق الناقل ويحولها الى وحدة المعالجة عندما تكمل الرسالة  كذلك تقوم وحدة المعالجة المركزية بارسال رسائل الى متحكم البروتوكول ليقوم بنشرها عندما يكون الناقل خالي 
4- جهاز الارسال والاستقبال يقوم بتحويل البيانات من مستوى CAN Bus الى مستوى تفهمه وحدة تحكم البروتوكول عند الاستلام ويقوم بتحويل البيانات من مستوى وحدة تحكم البروتوكول الى مستوى CAN Bus عند الارسال 
كل عقدة قادرة على الارسال او الاستلام لكن ليس بنفس الوقت فكل رسالة تحمل معرف متكون اما من 11 بت او من 29 بت يتم  معرفة اولوية الرسالة حسب هذا المعرف 

طريقة الارسال والاستلام

كل العقد مربوطة مع بعضها البعض بواسطة ناقل بروتوكول CAN الذي يتكون من سلكين مجدولين واحدا فوق الاخر وهي اما في حالة ارسال او في حالة استلاك وهناك ماينظم هذه العملية في العقدة كما ذكرنا لكن المشكلة هي عندما يقوم جهازين بالارسال في نفس الوقت هنا يجب ان توجد تقنية لتاخير الارسال من قبل العقدة الاقل اهمية وهنا ياتي دور بتات المعرف سناخذ مثال عندما تقوم عقدة بالارسال تمتلك رقم معرف هو 16 وعقدة اخرى تمتلك رقم معرف 15 بنفس الوقت سيتم الارسال من قبل العقدة التي تمتلك الرقم 15 وليس 16 وذلك يتم لان اسبقية ال15 قبل ال16 لناخذ المسالة عمليا وفي نظام العد الثنائي
node 15=00000001111
node 16=00000010000
عندما يبدء الارسال سوف يصدر بت بداية الارسال ثم رقم المعرف سيرسل كل من العقدة 15 و16 نفس الرقم الى حد البت رقم اربعة سترسل العقدة 16 رقم واحد منطقي وترسل العقدة رقم 15 صفر منطقي وعندما تلاحظ العقدة رقم 16 انه تلاشى الواحد المنقي الذي قامت بارساله بسبب التصادم الذي حصل عندها تعلم انه هناك عملية ارسال من عقدة تتفوق عليها بالاسبقية وتوقف ارسال رسالتها الى حين انتهاء تلك العقدة لذا العقدة التي تحمل معرف رقم اقل هي التي تفوز في عملية الارسال دائما يجب ان يكون لكل عقدة معرف خاص بها ولا يجب ان يتكرر الا وسوف تحدث لدينا مشاكل في النظام

بت التوقيت

هذا البروتوكول هو بروتوكول غير متزامن اي لايحتوي اشارة زمن يعمل بموجبها لذا يجب على كل العقد في هذا البروتوكول ان تعمل بنفس السرعة في التعامل مع البت لكن بسبب الضجيج وزحف الطور وسماحية الهزاز الكرستالي حيث كل عقدة تمتلك هزاز كرستالي خاص بها وقد تكون درجة الحرارة المعرضة لها هذه العقدة متغيرة حسب مكانها مما يؤثر على سرعة الارسال قد لايكون هناك توافق قياسي في بعض الاحيان في التعامل مع البت المرسل وقراءته لذا يجب ايجاد وسيلة لمزامنة العقد كي يعمل النظام بصورة صحيحة ويستخدم لذلك بت المزامنة وهو يتكون من اربعة قطع الاولى قطعة المزامنة والثانية قطعة زمن الانتشار قطعة عازل الطور الاولى وقطعة عازل الطور الثانية كل قطعة مكونة من كمات زمنية محددة طول هذه الوحدة الزمنية الواحدة يحدد عن طريق سرعة تزامن متحكم CAN  وكذلك سرعة نقل المقسم الترددي 
 Tquanta=Fosc/BRB 
 الدخول في تفاصيل هذا الامر هو طويل نوعا ما لكن عن طريق بت التوقيت يتم حساب فارق الزمن بين العقد لالغاء الفروق الزمنية التي ذكرنا بعض اسبابها 

 CAN Frame

هذا البروتوكول حاله حال غيره من بروتوكولات الشبكات يمتلك وبروتوكول CAN يعرف في اول طبقتين الذين هما طبقة Data Link وPhysical Layer وهو بروتوكول تفاضلي اي يتعرف على القيم المنطقية من خلال فرق الاشارة بين طرفين احدهما اسمه Can_High والاخر Can_Low ويستعمل في خط النقل سلك مجدول وكلما طال السلك قلت السرعة


سرعة هذا البروتوكول نحنا من نقوم بتحديدها عن طريق سرعة العقد والبعد وفي نظام معين تستخدم عدة سرع لهذا البروتوكول واعلى سرعة يمكننا ان نحققها هي 1mbps وان نوع السلك المستخدم له تاثير على السرعة

الاطراف التي يحتاجها البروتوكول هي اربعة طرفي البروتوكول نفسه وطرفي التغذية بالجهد وتوضع مقاومة في كل طرف من اطراف السلكين لمتنع من ارتداد الموجة المنتشرة عبر ناقل البروتوكول

 القيمة المنطقية صفر في هذا البروتوكول تحدث عندما يكون جهد كل من CAN_High و CAN_Low نفس القيمة هي 2.5 فولت وتسمى هذه الحالة ب Recessive والقيمة المنطقية واحد تحدث عندما يكون الجهد في الطرف CAN_High هو 3.5 فولت والجهد في الطرف  CAN_Low هو 1.5 فولت وتسمى هذه الحالة بDominant 


 كما ذكرنا عند بداية المقال ان هنالك معيارين هما CAN2.0A و CAN2.0B وان الاختلاف بينهم في عدد بتات المعرف كذلك في يختلف شكل الرسالة المرسلة في كل واحد منهم اختلافا بسيطا وتوجد اربعة انواع من الرسائل التي ترسل في هذا البروتوكول
1-رسالة البيانات تستخدم لارسال بيانات الفعلية وتوجد منها شكلين كما اسلفنا بسبب المعيارين CAN2.0A And B



هنا عندما نقول 1 منطقي نقصد به Dominant   وعندما نقول 0 منطقي نقصد به Recessive  وقد استعملنا مصطلح 0 و1 منطقي للتوضيح والسهولة
اول بت هو يدل على بداية ارسال الرسالة
البتات ذات االلون الاخضر هي خاصة بالمعرف وتحدد بموجبها اسبقية الرسائل التي ترسل من العقد ولك عقدة معرف خاص لايمكن ان يكرر في عقدة اخرى وعددها هنا 11 بت
البت باللون الازرق الذي يحدد رسالة المناطق البعيدة وتكون قيمته Dominant  اي 

1 منطقي في رسالة البيانات

هذا البت الاول من اللون الابيض وظيفته تحديد عدد بتات المعرف هل هي 11 بت ام 29 بت وتكون قيمته Dominant اي 1 منطقي في هذه الحالة حالة 11 بت طول المعرف
البت الثاني من اللون الابيض هو محجوز ويجب ان تكون قيمته 1 منطقي
البتات الاربعة باللون الاصفر وظيفتها تحديد طول البيانات المرسلة من 0 الى 8 بايت
البتات باللون الاحمر تحمل البيانات المرسلة عبر الرسالة
بتات CRC وهي اختبار التكرار الدوري حيث تقوم بالكشف عن الاخطاء الرقمية وتستخدم عادتا في الشبكات ولها طرق حساب رياضية وعدد بتاتها هي 15 بت
بت محدد CRC ويجب ان يكون Recessive
بت التاكد ACK يقوم جهاز الارسال بارساله Recessive وياكده اي جهاز مستلم بDominant
محدد بت التاكد ACK يجب ان يكون Recessive
بتات نهاية الرسالة وعددها 7 ويجب ان تكون Recessive
2-رسالة البعد  للتاكد من وصول البيانات يجاب بها على المرسل وبنفس المعرف


3-رسالة الخطا ترسل من العقدة التي تستلم خطا معين
4-رسالة الامتلاء ترسل من العقدة لوضع تاخير زمني بين الرسائل المرسلة 

بالاضافة لوجود متحكمات تدعم بروتوكول CAN كذلك توجد بعض المحيطيات التي تمكن المتحكمات من التواصل مع هذا البروتوكول ومن ضمنها غطاء على الاردينو وهناك عدة شركات منتجة لهذه المحيطيات






الخميس، 15 يناير 2015

Embedded Systems and The Internet of Things


Embedded Systems and The Internet of Things 


ماهو انترنيت الاشياء 




انترنيت الاشياء محاولة جعل الالات عبارة عن حواسيب مرتبطة ببعضها بشبكة انترنيت اي جعل الاشياء اكثر ذكاءا ناخذ مثال شركة Zipcar لتأجير السيارات. حيث قامت بتفعيل فكرة (إنترنت الأشياء) في أسطول سياراتها الموزعة في شوارع المدن. فالعميل من خلال تطبيق جوال يستطيع البحث عن أقرب سيارة له ثم يقوم بتمرير بطاقة العضوية لفتح السيارة ليجد المفتاح ويبدأ حساب مدة الإيجار سواءً بالساعة أو اليوم. وعندما ينتهي العميل من السيارة يوقفها في أي مكان ويمرر كرت العضوية وبالتالي ينتهي الإيجار لذا يمكن تعريف انترنيت الاشياء على انه 
الأجهزة والأدوات الإلكترونية الموصولة القادرة على الاتصال بشبكة الإنترنت وهو ما يجعل منهاعنصرًا مشاركًا ونشطًا في الحياة اليومية والعمليات التجارية.
وفقا لابحاث ABI هنالك اكثر من 10 مليار جهاز مرتبط لاسلكيا في السوق اليوم عن طريق انترنيت الاشياء وبحلول عام 2020 سيكون العدد 30 مليار جهاز مرتبط لاسلكيا 
مع كل هذه الاجهزة المرتبطة لابد ان تكون هناك شركات تزود بالانترنيت لتكفي هذه الاجهزة وكذلك دخولها بالانظمة المدمجة حيث ستكون الانظمة المدمجة الحديثة معظمها متصل بالانترنت لكي يتماشا مع هذا التقدم ومع انترنيت الاشياء لذا لابد للمطورين تقديم ادوات تخدم TCP/IP
دون الحاجة للتعامل مع تفاصيل التنفيذ في المستوى المنخفض



The TCP/IP Protocol



هذا البروتكول عبارة عن لغة عامة تستخدم لتبادل المعلومات بين جهازين صلبين hardware عن طريق اتصالاهم بالانترنيت هذه القوانين التي يضعها هذا البروتكول تحكم التواصل بين عتادين بغض النظر عن الانظمة الموجودة على هذين العتادين
ينقسم بروتكول TCP/IP الى طبقات اول طبقة هي الطبقة الفيزيائية Physical layer اي كيف يتصل الانترنيت فيزيائيا بالجهاز مثلا عن طريق بروتكول Ethernet ثم مانوع الاتصال وسرعته ونمط التواصل واداة التواصل هل هي سلك ضوئي اما سلك مجدول ام غيرها كذلك تحدد في الطبقة الفيزيائية عناوين المرسل والمستلم تتدرج الطبقات في وظائفها والبروتكولات المستخدمة فيها وتاخذ تسلسلا ثابت الى ان تصل اخر طبقة التي هي طبقة التطبيقات Application layer تحتوي هذه الطبقة العديد من البروتكولات التي تخدم تطبيقات مختلفة للتواصل مثل Hyper Text Transfer Protocol (HTTP) يرتبط هذا البروتكول مع متصفحات الويب وارسال البيانات عن طريقها وكذلك بروتوكول Simple Mail Transfer Protocol (SMTP) المستخدمة في تطبيقات الايميل عبر الانترنيت والعديد من البروتكولات 

TCP/IP And The Internet Of Things


من اكثر وظيفتين تستخدم في embedded TCP/IP هي ارسال الرسائل وعرض صفحات ويب مثلا بروتكول SMTP بسيط يمكن المتحكم الدقيق من قراءة قيمة حساس واتخاذ قرار معين ثم ارسال هذه القراءات الى مخزن رئيسي (مثلا حاسوب مهيئ لاستقبال هذه القراءات) ليتم تسجيلها وتحليلها مثلا يقوم متحكم دقيق بمراقبات درجات الحرارة في صالات طبية داخل مستشقى ويقوم بارسال هذه الدرجات الى حاسوب رئيسي يسيطر على نظام التبريد بالكامل مثال اخر حول اسنخدام بروتكول HTTP حيث تقوم اجهزة العناية المركزة بفحص تفاصيل جميع المرضى كل فترة من الزمن وادخالها الى حاسوب معرف برمجيا يتاكد من ان القيم مقبولة ثم يرسلها الى شاشة عرض لدى الاخصائي المسؤل .

Ethernet Controller Module 


عبارة عن قطعة متحكم تدعم البروتكول TCP/IP وتهتم بتفاصيله دون الحاجة الى النزول الى مستوى منخفض للتعامل مع هذا البروتكول وتحتوي على منفذ RJ45 الذي يسهل التواصل كثيرا هناك انواع كثيرة من هذا الموديول تختلف في السرعة والمواصفات والسعر وظيفة مهندس الانظمة هو الاختيار المناسب فيما بينها والعمل عليه هنالك لوحات متحكمات تحتوي ضمنيا منفذ الRJ45 وتدعم تفاصيل الTCP/IP 

Single-Chip Microcontroller With IwIP

يقصد به ببساطة ان ال ic للمايكروكنترولير تحتوي بداخلها وحدات لمعالجة الاتصال بالشبكة من الايثرنت و TCP/IP وتصميم هذه الاضافات التي تدعم معظم بروتكولات الشبكة قام بتطويرها مطورون وجعلوها مفتوحة المصدر هذه الطريقة في وضع عتاديات مدمجة مع المتحكم لخدمة الشبكة العالمية تعتبر من الامور الاقتصادية حيث توفر الكثير للمطور وهناك بيئات عمل تخدم التحكم وبرمجة كل نفاصيل الشبكة.



وهنا كتاب يتطرق لمعظم نفاصيل ربط الانظمة المدمجة الى الشبكة العالمية

Embedded C And Assembly




Embedded C And Assembly

الفرق بين البرمجة بلغة عالية المستوى ولغة منخفضة المستوى

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


 Assembly Language


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

المرحلة الاولى هي مرحلة التفسير تقوم بهذه العملية اداة اسمها الاسيمبليرassembler


 ولكل معالج اسيمبلير خاص به حيث يتم تحويل الاكواد البرمجية المكتوبة الى اكواد بلغة الالة لكن هذه الاكواد تبقى غير قابلة للتنفيذ من قبل المعالج ويتم ادخالها الى الرابط LINKER حيث يقوم بتجميع اجزاء البرنامج وجعله بصورة قابلة للتنفيذ من قبل المعالج

C Language


نحنا قلنا ان لغة السي هي لغة عالية المستوى لكن في حقيقة الامر هي لغة وسطية بين العالية المستوى والمنخفضة المستوى حيث تمتلك الكثير من خصائص الصنفين وقد بنيت منها العديد من اللغات الاخرى التي تصنف كلغات عالية المستوى منها #C و ++C   وجافا وقد يطلق على لغة سي في بعض الاحيان لغة متوسطة المستوى  لغة سي هي لغة قصيرة اي عدد دوالها ليس بالكثير لكن وجود المكاتب القياسية جعلها لغة اقوى ووفر على اللغة كتابة مئات الاسطر لغة سي لها استخدامات واسعة هنا نحنا نستخدمها في بناء وتطوير الانظمة المدمجة لكن تستعمل ايضا في تطوير انظمة التشغيل وقواعد البيانات ومحررات النصوص

يتم كتابة كود في لغة سي مع استيراد المكاتب التي تحتاجها واستخدام دوال من ضمنها ويستعمل مترجم Compilers لتحويل الاكواد الى لغة الة حيث يقوم بترجمة الاكواد حسب تسلسل كتابتها وبعد الانتهاء يتم ارسالها الى التنفيذ او الى متحكم لتنفذ اثناء تشغيله


Difference Between C And Embedded C


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



لماذا Embedded C للانظمة المدمجة

الانظمة المدمجة بصورة عامة هي عبارة عن خطان يسيران الى جنب خط اسمه hardware وخط اسمه software لابد وان يلتقيان هذان الخطان في النهاية لذا النظام المدمج يكتب فيه كود برمجي وهذا الكود يمر بمراحل كثيرة قبل ان يلتقي بالعتاد الصلب الكود البرمجي يكتب بلغة سي لانها من اقرب اللغات الى العتاد الصلب hardware (سي لغة متوسطة المستوى ليست عالية المستوى مثل بايثون ولا منخفضة المستوى مثل الاسيمبلي) اما خط العتاد الصلب فيتمثل اما بمتحكم مايكروكنترولير او معالج دقيق وكذلك جميع الدوائر الملحقة والمربوطة مع المعالج او المتحكم من ذواكر وطرفيات وحساسات ومعالجات خاصة لذا لابد ان يحمل الكود على العتاد لنصل الى نقطة الالتقاء بين الاثنين


الأربعاء، 14 يناير 2015

مقدمة تعريفية باردينو اونو

Arduino Uno






هذه القطعة من اشهر قطع الاردينو حيث يلجا الى استخدامها معظم المبتدئين في استخدام الاردينو

ماهو الاردينو؟
الاردينو عبارة عن لوحة تطويرية مع بيئة برمجية لمتحكم avr من شركة Atmel
وهي مفتوحة المصدر اي يحق لاي شخص ان يقوم بصنعها والاستفادة من اكوادها المصدرية تتم برمجة هذه اللوحة بسهولة فقط نحتاج الى كيبل usb وتحميل البيئة البرمجية Arduino IDE
ويوفر موقع اردينو الدعم الكامل للقطعة من مكاتب وشرح للغة المستخدمة في البرمجة ومتجر لبيع القطع ومجتمع يقوم بالاجابة على الاسئلة والمشاكل التي قد تواجهها
arduino.cc

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

ماهي لغة اردينو سي ؟هي لغة تعتبر من اسهل لغات برمجة المتحكمات حيث تعتبر مزيج بين لغة سي ولغة بروسسينج (جافا)  البروسسينج ايضا لغة مفتوحة المصدر بنية على الجافا في عام 2001 وتستطيع ان تربط الاردينو معها وبرمجته عن طريقها ايضا مع امكانية تصميم برامج تعرض نتائجها وتاثيراتها على شكل بيئة رسومية بفضل البروسسينج

ماهي اللغات الي يمكن برمجة الاردينو بها؟يمكن برمجة الاردينو عن طريق عدة لغات اخرى غير الاردينو سي
الماتلاب, واللاب فيو,لغة الايمبدد سي بواسطة اتميل ستوديو,حديثا بدات برمجته بلغة سي شارب ,وحتى تستطيع كتابة اكواد بلغة الاسيمبلي في بيئة اردينو ,والاهم يمكن برمجته بلغة العصر التي تمتاز بسهولتها وعلو مستواها وعدد الاشخاص الذين يتقنون البرمجة بها كثير جدا وفي ازدياد لغة بايثون

يمتاز الاردينو بوجود عدد كبير من الاغطية التي تركب عليه بسهولة لاداء وظيفة معينة مثل غطاء التحكم بسرعات المحركات او غطاء اتصال الجيل الثاني او غطاء تحديد الموقع عن طريق تقنية ال GPS وغيرها


تحتوي القطعة على منافذ رقمية ومنافذ تشابهية ومنافذ الطاقة
عدد المنافذ الرقمية هي 14 منفذ مرقمة من 0 الى 13
عدد المنافذ التشابهية هي 6 مسمية من A0 الى A5
منافذ الطاقة تحتوي تجهيز 5 فولت وتجهيز 3.3 فولت ومدخل ادخال طاقة ومنافذ الجهد الارضي ground منفذين
يمكن تجهيز القطعة عن طريق الحاسوب من منفذ USB وكذلك من منفذ الشاحن
حيث يستقبل منفذ الشاحن جهد من 7 الى 12 فولت ليقوم بتعديله داخليا الى 5 فولت لكن يلاحظ ان منفذ Vin الموجود ضمن منافذ الطاقة غير مربوط على معدل الفولتية لذا يجب ادخال جهد منتظم وقيمته 5 فولت عن طريقه
تحتوي لوحة اردينو اونو على 6 منافذ رقمية تدعم خاصية التعديل الرقمي PWM
توجد 6 منافذ في وسط اللوحة هذه المنافذ تستخدم لبرمجة الاردينو من مبرمجة خارجية وتسمى ICSP header
ويوجد زر في اللوحة يقوم باعادة تشغيل البرنامج المحمل على الاردينو

ناتي الى المواصفات الخاصة بهذه اللوحة
ان قطعة اردينو اونو مبنية على متحكم من شركة ATMEL هو ATmega328
لمشاهدة ورقة البيانات الخاصة بهذا المتحكم هنا datasheet
الجهد الذي تعمل عليه اللوحة هو 5 فولت التيار الاعظمي الذي من الممكن توفيره من اللوحة هو 250mA اقصى تيار يمكن اخراجه من منفذ هو 40mA عندما يكون جهد الخرج 5 فولت و50mA عندما يكون جهد الخرج 3.3 فولت

الذواكر هناك ثلاث انواع من الذواكر في اللوحة
1- ذاكرة فلاش Flash Memory حجمها هو 32kb قد اخذ جزء بسيط منها بحدود 0.5kb لل bootloader وظيفة هذه الذاكرة هي تخزين الكود الذي نقوم بكتابته
2- ذاكرة SRAM هي ذاكرة معطيات مؤقته اي عندما يقوم المعالج باجراء العمليات يحتاج الى ذاكرة يقوم بحفظ فيها النواتج والمتغيرات ويبقي فيها قيم يحتاجها في وقت لاحق من تنفيذ البرنامج ويكون حجمها في اردينو اونو هو 2kb
3-ذاكرة الEEPROM نعلم انه عند انقطاع الكهرباء عن الاردينو فان ذاكرة ال SRAM تقوم بمحو نفسها ولايبقى فيها اي بيانات ولكن قد نحتاج الى تخزين معطيات ومتغيرات نستردها في اي وقت من تنفيذ البرنامج وحسب الحاجة لذا وجب استخدام ذاكرة الEEPROM التي لاتفقد بياناتها حتى عند انقطاع الكهرباء عنها ويبلغ حجمها في اردينو اونو 1kb
سرعة عمل المعالج هي 16mhz والهزاز الكرستالي خارجي على اللوحة

يحتوي الاردينو اونو على طرف مرجعي لاعلى قيمة قياس للمحول التشابهي الرقمي ADC اسم هذا الطرف هو Aref
يدعم الاردينو اونو كل من بروتوكول I2C ,SPI,UART عند تفعيلها تستخدم منافذ محددة وخاصة بها فضلا عن الوظيفة العامة لتلك المنافذ

بما ان الاردينو مفتوح المصدر فيحق لاي احد صنعه وبيعه لذا هناك اردينو صيني واردينو ايطالي (بداية تصميم الاردينو كان من فريق ايطالي) وهناك فرق بالسعر بينهم واختلافات شكلية بسيطة كذلك لكن كل منهم هو اردينو كامل لايختلف شيئا عن غيره
سعر الاردينو الصيني قد يصل الى 14$ وهذا السعر جدا ممتاز حيث اسعار مبرمجات بعض المتحكمات تكون اعلى من هذا السعر








شرح بروتوكول I2C

بروتوكول النقل التسلسلي



I2C


(INTER INTEGRATED CIRCUIT)


من اشهر بروتوكلات الاتصال التسلسلي المستعملة في تقنيات تواصل المعالجات والمتحكمات مع طرفياتها

--------------------------------------------- 

لمحة تارخية
تم تطوير هذا البروتوكول سنة 1980 من قبل شركة Philips وقد وضع اساسا لربط بعض المحيطيات في جهاز التلفاز مع المتحكم في سبيل تقليل الكلفة وقد اطلقت عليه شركة atmel اسم
( TWI (TWO WIRE INTEGRATED وقد مر البروتوكول بعمليات تطوير حديثة منها تطوير السرعة حيث بدا دعم سرعة 3.4 ميكا بايت من بعض الطرفيات وكذلك تطوير العنونة بعد ان كانت 7 بت اصبحت 10 بت في بعض الطرفيات 
---------------------------------------------
الهيكلية التوضيحية 
هو بروتوكول اتصال تسلسلي متزامن اي يعمل مع توقيتات الزمن وله طرفين في التواصل 
1- SCK هو طرف نقل نبضات الزمن من الجهاز القائد الى الخوادم 
2-SDA هو طرف نقل البيانات عند الكتابة من القائد الى الخادم وعند القراءة من الخادم الى القائد اي ثنائي الاتجاه 

يمكن ربط عدد كبير من الاجهزة على هذين السلكلين قد يصل الى 40 جهاز او اكثر لكن يجب اعتبار سعة خطوط النقل ان لاتزيد عن 400 بيكو فاراد هنا السؤال كيف للبروتوكول ان يتعرف على الجهاز الذي يريد التخاطب معه من بين كل هذه الاجهزة المربوطة معا يتم ذلك عن طريق عنوان فلكل جهاز عنوان خاص به عندما يرسل المتحكم هذا العنوان يفتح الجهاز المسؤل عن هذا العنوان ويبدء بالارسال او الاستلام حسب اخر بت من العنوان حيث يتم تحديد ذلك .
----------------------------------------------
تفاصيل تدفق البيانات وطريقة النقل في هذا البروتكول
لدينا هنا مثال متحكم مربوط مع 10 طرفيات وسناخذ تسلسل زمني للبتات المرسلة 
1- STAR BIT بت البداية يقوم باطلاقه المتحكم (عبارة عن حافة هابطة في خط البيانات عندما يكون خط الزمن 1 منطقي) لاخبار جميع الطرفيات بان تتحول من نمط IDLE الى نمط STAND BY اي التهيئة لاستقبال بواسطة البروتوكول التسلسلي
2- Addres bits عبارة عن 7 بتات لاختيار احد الاجهزة العشرة والتخاطب معه نسبة لعنوانه المُعلم في الداتا شيت الخاص بالطرفية 
3- read or write bit هو بت واحد يحدد اذما كانت العملية قراءة او كتابة فتكون كتابة عندما يكون هذا البت صفر وتكون قراءة عندما يكون واحد ويتم دمجه وارساله مع العنوان حيث تصبح عملية ارسال لبايت يحتوي في اول 7 بتات العنوان واخر بت يشير الى نوع العملية 
4- ACK هو بت التاكيد يرسل من قبل الطرفية التي توافق عنوانها مع العنوان المرسل من قبل المتحكم لتخبر المتحكم انها استلمت العنوان وهي جاهزة للعملية التالية 
5- First byte يتم ارسال اول بايت من قبل المتحكم او يتم استقبال اول بايت من قبل المتحكم حسب نوع العملية قراءة ام كتابة 
6- ACK هذا البت يعقب كل بايت للتاكد فعند الكتابة تقوم الطرفية بالرد به وعند القراءة يقوم المتحكم بارساله ليخبر الطرفية بارسال بايت اخر 
تتكرر عملية ارسال بايتات وتاكيدها الى ان ينتهي الارسال 
7- STOP BIT هو بت يصدر من المتحكم حصرا (القائد) يخبر فيه الخوادم بانتهاء عملية الارسال (عبارة عن حافة صاعدة في خط البيانات عندما يكون خط الزمن 1 منطقي) عندما تكون العملية كتابة يستلم المتحكم ACK لاخر بايت في الارسال من الطرفية ثم يرسل بت التوقف وعند القراءة يستلم المتحكم اخر بايت ثم لايرسل بت ACK الى الطرفية بل يرسل بت التوقف مباشرتا.
--------------------------------------------

هناك ملاحظة بسيطة عن هذا البروتوكول ان كل الطرفيات التي تصمم للتواصل به يكون الترانزستور بداخلها open collector اي ان ترانزستورات الخرج لاتحتوي على مقاومة رفع داخلية والسبب في ذلك انه عند ربط مثلا 10 اجهزة سنحصل على 10 مقاومات متوازية وذات قيمة عالية وسيكون التيار المستهلك جدا عالي لذا يتم ربط مقاومات رفع للبروتوكول بالكامل عن طريق ربط مقاومتين الاولى بين خط التزامن وال +5 والثانية بين خط نقل البيانات وال+5
--------------------------------------------
هذا البروتوكول هو من نوع half Duplex اي اما يكون في حالة ارسال او حالة استلام ولايمكن ان يكون في نفس الوقت يرسل ويستلم 
------------------------------------------
سرعة النقل تختلف بحسب الشرائح المستخدمة لكن هناك 3 سرع
1- STD.:100KBPS
2-FAST:400KBPS
3-HI..4MBPS
-------------------------------------------
محاسن هذا البروتوكول
1- يمكن التخاطب مع اكثر من خادم SLAVE باستخدام خطين فقط 
2-كلفة البناء منخفضة وسهل التطبيق
3-شائع الاستخدام ومتوفر ككيان صلب وبرمجيا 
4-يمكن فصل ووصل اي جهاز من الناقل دون اي تاثير على النظام او الحاجة لتغيره
----------------------------------------------
مساوئ البروتوكول 
1-مسافة الاتصال قصيرة 4متر 
2-سرعات منخفضة لاتتجاوز 400KH
3-محدودية في عناوين الاجهزة