الخميس، 14 يوليو 2011

الجزء الرابع

بعد ان تعرفنا في الدروس السابقة على كيفية اخراج البيانات عبر منفذ الطابعة بالكود ، واصبح بمقدورنا التحكم في ال 8 PINS المخصصين لل Output ، جاء الدور الآن على كيفية قراءة هذه القيم والاستفادة بها في العمليات المختلفة في الجهة المقابلة ( جهة الهاردوير ) .

أبسط طرق قياس هذه القيم هي استخدام LED واحدة ، يتم توصيل طرفها الموجب بأحد ال Pins الموجودة لل Output وطرفها السالب بأحد ال Grounds الموجودة ، وستضيء عندما يكون هذا ال Pin مفتوحاً .

طريقة أخرى سهلة للقراءة وهي استخدام فولتاميتر Volt Meter حيث يتم توصيله بال Pin المطلوبة وال Ground أيضاً وقراءة فرق الجهد الناتج :



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


أولاً : اللوحة الأم breadboard:



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

نستفيد من ذلك فيما لو رغبنا في قراءة قيمة مثل Ground لأكثر من دائرة فإننا سنضع ال Ground في خانة ونقرأ من اربع خانات لأربع دوائر مختلفة ، وهكذا .

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

سعر هذه اللوحة حوالي 10 جنيهات أو أكثر قليلاً ، لكن هناك حل آخر وهو ما يسمى بالفيبر وهو أرخص ولكنه أفضل في التعامل وأصعب نسبياً ، وفي كلا الحالتين يتم نقل البيانات باستخدام أسلاك عادية ، الصورة التالية كمثال :



أما مثلما يحصل في ال MotherBoards وهي ما تسمى بالدوائر المطبوعة Printed Circuits حيث يتم نقل البيانات باستخدام سيلكون مطبوع ويتم تثبيت الدوائر فهي الطريقة الأمثل للمحترفين ولكن طباعتها إلى حد ما مكلفة ، كما أنه لا يمكنك تغييرها لاحقاً .

ثانياً : مصدر الكهرباء - Adapter مثلاً - :

في حالة تعاملك مع أي دائرة كهربائية فإنك تحتاج إلى VCC اضافة إلى Ground وحينما كنا نتعامل مع ال LED كنا نقرأ هذه البيانات عن طريق الكومبيوتر ، ولكنك في دوائر أخرى ستحتاج إلى مصدر خارجي للتيار الكهربائي ، يمكن أن يكون بطارية 9 فولت ، 20 فولت ، أو adapter يتم توصيله بالكهرباء بواسطة Adapter مثل الذي في هذه الصورة :



وبالطبع فإنك ستشتري واحدة يمكنه تزويدك بفرق جهد عادة ما يتراوح بين 1.5 و 12 فولت يمكنك التحكم فيها كما تريد ، كما يمنحك قطبين سالب وموجب .

سعر هذا المحول حوالي 10 جنيهات مصرية .

ثالثاً : منظم الكهرباء Regulator :



الهدف من هذا المنظم هو الحفاظ على فرق جهد ثابت بمعنى انك لو وضعت 5v regulator فسوف يحافظ لك على فرق الجهد 5 فولت حتى لو كنت تستخدم بطارية 9 فولت مثلاً ، حيث اننا دائماً نحتاج إلى قيمة 5 فولت في أغلب الاحيان .

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

سعر المنظم حوالي 3 جنيهات .


المقاومات Resistors والترانزستورات Transistors :

تم شرحهما سابقاً ، راجع الدرس الأول لمزيد من التفاصيل ...

مثال سريع :

سنحاول الآن تطبيق مثال سريع ومرة أخرى من خلال LED's ، مقاومات ، وسنقوم بالتطبيق مرة من خلال الكومبيوتر ومرة من خلال مصدر كهرباء خارجي سواء أكان بطارية أم محول .

سنستخدم لوحة نقوم بتثبيت LED عليها ، وقبلها سنقوم بوضع مقاومة صغيرة لكي تحافظ لنا على ال LED ، يتم وضع المقاومة قبل ال VCC أما ال Ground فيظل كما هو مثل هذه الصورة :



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

هذا التطبيق مشروح تفصيلاً على هذا الرابط ، يمكنك الاطلاع عليه للاستفادة وللشرح الموسع :
http://www.codeproject.com/csharp/csppleds.asp


في الدرس القادم سوف نبدأ بالتوسع في الهاردويرس المستخدمة بكثرة في عمليات الاخراج Outputs قبل أن نعود للهاردوير المستخدم للادخال Input ومن ثم ننتقل إلى الدوائر الالكترونية المستخدمة في عملية المعالجة قبل أن ننطلق إلى شرح لبعض أكثر الدوائر شيوعاً ..

الجزء الثالث شرح منفذ الطابعة

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

منفذ الطابعة Parallel Port Interface :
يعد منفذ الطابعة أسهل المنافذ للتعامل معها من خلال الكومبيوتر نظراً لكونه أصبح شاغراً بعد ظهور USB واعتماد الأجيال الحديثة من الطابعات عليه ، أيضاً كونه سهل في التعامل معه ولا يحتاج إلى أدوات اضافية وغيره .



وباختصار فإن منفذ الطابعة مكون من خمسة وعشرين Pin أو Hole حسب شكل المنفذ ( بمعنى غاطس أو بارز ) تقوم بارسال 0 في حالة Close و 1 في حالة Open - حيث أن 1 هي قيمة تقترب من 5 volte في أغلب الأحيان - .

تركيب منفذ الطابعة :



سنبدأ الشرح من خلال الصورة السابقة :
الرقم 1 + الأرقام 14،16،17 تسمى بالـ Control Pins .
الأرقام من 2 إلإلى 9 تسمى بالـ Data Pins .
الأرقام من 10 إلى 13 + 15 تسمى بال Statues Pins .
الأرقام من 18 إلى 25 تسمى بالـ Ground Pins .

Control Pins :
عدد 8 من المنافذ ولكن 4 منها غير ظاهرة تستخدم للادخال والاخراج في نفس الوقت .

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

Statues Pins :
تستخدم هذه المنافذ لادخال البيانات ، وعددها الفعلي هو 8 وليس خمسة ولكن هناك ثلاث منها غير ظاهرة ، وفي الطابعات كانت تستخدم لادخال بيانات من الطابعة إلى الكومبيوتر مثل رسائل اشعار انتهاء ورق الطابعة .

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

ارسال البيانات عبر منفذ الطابعة .

لارسال البيانات عبر منفذ الطابعة لا بد من تحديد رقم المنفذ اولاً وعادة ما يكون 387h ومن ثم ارسال قيمة ما بين 0 إلى 255 لتحديد ال Pins التي ستكو عليها القيمة 1 بالشكل التالي مثلاً :
لجعل جميع Pins مفتوحة = 11111111 بالعد الثنائي binary وهو ما يساوي 255 .
لجعل Pins الأول والثاني والرابع والسادس مفتوحة = 00101011 بالعد الثنائي binarty وهو ما يساوي 1+2+16+64 = 83 .
*** لمزيد من التفاصيل راجع الدرس الأول الخاص بالتعامل مع نظم الأعداد .

تحديد رقم منفذ الطابعة :
قد يحتوي جهازك على أكثر من منفذ للطابعة اضافة إلى احتمالية كون رقم المنفذ غير الافتراضي ، لذلك من لوحة التحكم Control Panel - النظام System - الأجهزة Hardware - ادارة الأجهزة Device Manager - المنافذ Ports (COM & LPT) - منفذ الطابعة Printer Port (LPT1) - الخصائص Properties ، ثم من خلال المصادر Resources ثم Resources Setting سوف تجد الرقم المخصص للمنفذ الخاص بك .

في الدرس القادم سوف نتعلم كيفية برمجة المنفذ ، ولكن حتى الدرس القادم تستطيع عمل هذه التجربة البسيطة :

تجربة :

قم بشراء واحد من ال LED's من أي محل للالكترونيات ، وباختصار فال Leds هي عبارة عن انوار كهربائية بسيطة تنير عندما يمر فيها فرق جهد = 5 ، وفي خلال دروسنا القادمة سوف نتعرف تفصيلاً على تركيبه هو وبعض الأجزاء الأخرى التي سوف نقوم باستخدامها .



سعر ال LED الواحد لا يتعدى 20 قرشاً مصرياً (أقل من ربع جنيه) ويمكنك شرائها من أي محل للالكترونيات .

خطوتنا الثانية هي معرفة أن لل LED توصيلة للسالب وأخرى للموجب ، قم بتوصيل السالب بواحد من ال Grounds في منفذ الطابعة لديك وقم بتوصيل الموجب في أحد ال Data Pins وليكن الأول لديك ، ومن ثم قم بعمل برنامج سريع يقوم بفتح واغلاق هذا ال Pin .

إذا كنت مبرمج .net فقم أولاً بعمل import أو using - حسب VB أو C# - ل : System.Runtime.InteropServices ومن ثم قم باستيراد المكتبة impout32.dll بالشكل التالي - سي شارب - :

رمز برمجي:
[DllImport("inpout32.dll", EntryPoint="Out32")]
، ومن ثم قم بتعريف ال function التالية - مبرمج سي شارب - .

رمز برمجي:
public static extern void Output(int adress, int value);
أو مبرمج VB.net :

رمز برمجي:
public static extern sub Output(int adress, int value)
end sub
ومن ثم قم بكتابة الرقم الذي يحدد ال Pins التي تريدها مفتوحة وليكن مثلاً الأول فقط وقم بارساله باستخدام Output بالشكل التالي :

رمز برمجي:
Output(888, 1);
مبرمج VB.net ؟؟؟؟ فقط قم بازالة ال ; من آخر السطر .


وحتى إذا كنت مبرمج Visual Basic 6 فهذا الأمر لك أيضاً ولكن وفر وقتك وجهدك وتحول إلى .net - دعاية مجانية - .

قم بعمل Module وضع هذا الكود داخله :

رمز برمجي:
Public Declare Function Inp Lib "inpout32.dll" _
Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
ومن ثم في زر الأمر (فتح) :
رمز برمجي:
Out "&H378", 1
زر الأمر (اغلاق) :
رمز برمجي:
Out "&H378", 0
حيث يتم فتح واغلاق كامل ال Pins في كل خطوة .

تنبيه : في حالة كونك تعمل على Windows XP فسوف تحتاج لاستخدام هذه المكتبة في الغالب بدلاً من الافتراضية inpout32.dll وهي موجودة في المرفقات .

التحكم بالكمبيوتر الجزء الثاني

في هذا الدرس سوف نلقي نظرة سريعة على عالم منافذ الكومبيوتر ونتعرف عليها باختصار قبل ان نتوسع في الدرس القادم في استخدام منفذ الطابعة وكيفية برمجته والتعامل معه .وباختصار فإن منافذ الكومبيوتر على اختلاف انواعها ما هي إلا وسيلة لاخراج البيانات خارج نطاق الكومبيوتر أو ادخالها إليه عبر أجهزة مختلفة أو العكس ، ومن أبسط الأمثلة على ذلك لوحة المفاتيح مثلاً والتي تستخدم لادخال البيانات عبر منفذ USB أو PS2 ،وفي المقابل الطابعة والتي تستخدم ايضاً Parallel Port أو USB .
وببساطة فإن جميع هذه الأجهزة تقوم باستقبال 0 و 1 أو ارساله إلى الكومبيوتر إلى برنامج مختص بذلك يقوم بفهمها وتحليل المطلوب ، ففي حالة الكيبورد وبعد استلام اشارة كهربائية يقوم Driver خاص بترجمة هذه الاشارة إلى حرف أو رمز ، وفي العملية العكسية في الطابعة فإن الاشارات الكهربائية التي تتسلمها الطابعة يتم تحويلها إلى مجموعة من الخطوط والحروف والألوان .

المنفذ التسلسلي Serial Port .



صمم هذا المنفذ قديماً من أجل توصيل المودم الخارجي بالكومبيوتر ، ويحتوي على 8 مداخل تستقبل كل منها 0 أو 1 (بايت كامل) ويتم ارسال البيانات تسلسيلاً (بايت ورا التاني) حتى تنتهي البيانات .
قبل كل بايت لا بد من ارسال Start Bit وكذلك بعد الانتهاء ، قد يكون هناك أيضاً ما يعرف باسم Parity Bit في حالة التأكد من الأخطاء وخلافه .
السرعة المتوسطة لهذا المنفذ هو 116 كيلوبت/ثانية ، ولكن مع استخدام ESP أو Super ESP يمكن الوصول إلى سرعات 460 كيلوبت في الثانية .

وبالنسبة ل Parity Bit فباختصار هي طريقة لاكتشاف الأخطاء حيث يمكن عد الأصفار الموجودة في الرسالة ، وفي حالة كونها رقم زوجي يتم ارسال صفر ، وفي حالة الفردي يتم ارسال 1 ، وهكذا يستطيع المستقبل التأكد من دقة البيانات بنسبة معينة .




USB Port :



أصبح بفضل سرعته وتوحيد معاييره أحد أشهر المنافذ والتي اتجهت إليها جميع الشركات المصنعة للأجهزة ، حيث نجد سرعة وسهولة التعامل مع هذا المنفذ .
فهذا المنفذ يمكنك من ربط حتى 127 جهاز مع الكومبيوتر ، اضف إلى ذلك تمتعه بخاصية hot-swappale والتي تسمح بالربط والتعريف مباشرة مع الكومبيوتر ، اضف إلى ذلك السرعة والتي تبلغ في USB 2.0 حوالي 480 ميجابت / ثانية .




وبخصوص التركيب الداخلي ، فإنه مكون فقط من أربع أسلاك ، واحدة لل VCC وواحدة لل Ground والاثنتان الباقيتان تستخدمان لارسال واستقبال البيانات :





وتنقسم هذه العملية إلى ثلاث أقسام رئيسية :


Interrupt : مثل الكيبورد والماوس والتي تقوم بارسال كمية قليلة من البيانات .
Bulk : مثل الطابعة حيث يتم ارسال كمية كبيرة من البيانات دفعة واحدة .
Isochronous : مثل الميكروفون والذي يحتاج إلى ارسال كمية متتابعة من البيانات لحظياً ، حيث لا يتم عمل تأكد من الخطأ وهو ما يصب في مصلحة سرعة النقل .


أنوع أخرى من المنافذ :
منفذ PS2 والمستخدم للكيبورد والماوس .



منفذ PCI وهو أعقد أنواع المنافذ واسرعها في نفس الوقت ، وهو على الماذربورد ويتم بناء كارت خاص للتعامل معه ، ولكن يتم التعامل معه ببساطة مثل الأنواع السابقة اجمالاً :



بالطبع يمكن التعامل برمجياً مع جميع هذه الأنواع وهو ما سيتم شرحه في دروس قادمة ، وفي جميع الأنواع يتم الادخال على كل Pin حيث تمثل سلك و bit لادخال البيانات ، أيضاً حتى في PCI ستجد شرائح معدنية تمثل كل منها سلك أو PIN .

في الدرس القادم سوف نتحدث باستفاضة عن Parallel Port والذي سنتابع العمل عليه لاحقاً من خلال دروسنا .

الجزء الاول

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

وبداية ، كيف يعمل الكومبيوتر ؟
الكومبيوتر عبارة عن جهاز كهربائي لا يفهم سوى لغة الكهرباء ، وما دمنا نتحدث من هذا المنطلق فليس للكهرباء أي حالة سواء ( مفتوح ، مغلق ) .

وهو ما نعبر عنه في حالة الكومبيوتر ب 0 و 1 .

وكيف يتعامل الحاسب مع هذه البيانات ؟

هناك ثلاث معاملات منطقية رئيسية تتم من خلالها جميع عمليات الكومبيوتر ، هم :
Not
رمز برمجي:
حيث أن Not 1 = 0 و Not 0 = 1 .
AND
حيث أنه لا بد للطرفين أن يكونا = 1 ليكون الناتج 1 ، فمثلاً :
رمز برمجي:
1 And 1 = 1 , 1 And 0 = 0 ... etc
OR
حيث لا بد لأحد الطرفين أن يكون 1 ليكون الناتج 1 فمثلاً :
رمز برمجي:
1 Or 1 = 1 , 1 Or 0 = 1 , 0 Or 0 = 0
ومن خلال هذه العمليات نستطيع القيام بما نريد من خلال الحاسب .

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

وهذا تخطيط لترانزستور مثلاً :



وللمزيد حول الترانزستور تستطيع البدء من هنا :

http://ar.wikipedia.org/wiki/%D8%AA%...AA%D9%88%D8%B1


وماذا بعد ، كيف استطيع الاستفادة من الترانزستور في هذه العمليات ؟
لن يفيدك كمبتدأ التعمق كثيراً في هذه النقطة ، عموماً هذه طريقة لكيفية استخدام الترانزستورات في بناء AND :



وماذا بعد :
من خلال هذه الدوال الرئيسية تم انشاء العديد من الدوال الأخرىمثل XOR,NAND .. الخ ، لننتقل بعدها إلى ما يسمى بالدوائر المتكاملة .

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


نقطة أخرى : التخزين .
لتخزين البيانات نحتاج إلى نظام تمثيل ، فإذا كان نظامنا لا يتعمل سوى مع ارقام من واحد إلى سبعة فنحن نحتاج إلى ثلاث خانات فقط للتمثيل :
0:000
1:001
2:010
3:011
4:100
5:101
6:110
7:111
وهكذا ، وفي نظامنا الحالي نستخدم كمية كبيرة جداً الرموز والأرقام والحروف ، لذا نستخدم نظام ترميز مناسب .

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

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