Professional Documents
Culture Documents
على مدى القرن الماضي تطورة الحياة والعلم بشكل كبير ,ولكن لالسف ھذا التطور العلمي والتكنولوجي في العصر الحديث
غالبا ما يأتي من الغرب ,حتى العرب الذين يريدون ان يقوموا باالنتاج او تطوير اي شيء تقريبا فانھم يذھبون الى الدول
الغربية ,وذلك الننا بكل بساطة ال نحصل على االحترام الذي نستحقه في دولنا العربية ,والننا بكل بساطة ايضا ال نحصل
على الدعم الكافي او حتى السبب لتطوير او اختراع اي شيء ,مع انه يوجد الكثير من العقول التي تستحق التقدير واالحترام
من حولنا ,اال انه قليال جدا جدا من يستطيع ان يقوم بانجاز ما يستحق ذكره بعد تخرجه من الجامعة وھو في دولنا العربية.
ولذلك ھذه مساھمة صغيرة مني قبل ان اترك ھذا المجال نھائيا لكل شخص يحب ان يدخل عالم الروبوت ويحاول ان يقدم
مشروع او فكرة او اي شيء جديد .واتمنى ان ننھض بالعلم في يوم من االيام لنعود امة عربية تفتخر بنفسھا من جديد,
عمار الرز
2
الفھرس
3
الروبوت Robot
ان الروبوت اصبح من االشياء المھمة التي دخل في عالمنا اليوم ,فاننا نجد انه قد تم
صناعة سياراتنا على يد الروبوتات ,ويوجد الكثير من الصناعات التي تعتمد على
الروبوت ,كما وان كثير من الدول اتجھوا الى الروبوتات في عمليات االمن اوالدفاء
والتجسس وغيره من المھام الكثيرة جدا.
وعالم الروبوت ھو عالم ضخم جدا من الصعب جدا حصره لتشعبه وتعدد انواعه ,ولذلك سيتم الحديث ھنا عن الروبوتات التي تشبه السيارات,
ويمكنكم استخدام ما يمكنكم تعلمه ھنا لصنع الروبوت الخاص بكم ,او ما يدعى االنطالقة في عالم الروبوتات.
4
الفصل االول
احب ان استخدم العاب االطفال لسبب وجود الالسلكي ,الدواليب ,وبعض االجزاء االخرى التي يمكن استخدامھا بسھولة ,وذلك لسبب عدم وجود
محالت متخصصة في اجزاء الروبوت في الوطن العربي ,وكما وانھا غالية نوعا ما على االنترنت.
.1الھيكل Buddy
ان الھيكل من االجزاء الھامة التي يجب االھتمام بھا ,يجب ان يكون الھيكل قوي ,خفيف ,يمكن تشكيله حسب احتياجاتنا.
يمكننا استخدام البالستك ,الواح االجريلك ,فايبر جالس ,المعدن ,او اي مادة اخرى نجدھا مناسبة في عملية التصنيع.
عادتا ال نستفيد من الھيكل من سيارات االلعاب الن سطحه غير مستوي )اذا اردنا تركيب بعض االجھزة عليه مثل خاليا شمسية او ذراع( وال
يوجد بداخله مكان لوضع االجھزة الخاصة بنا )مثل الحساسات ( sensors
ولذلك انصح دائما بان يتم صناعة ھيكل الروبوت يدويا ,وذلك ليتم اتخاذ الشكل المناسب لنا ,بالنسبة للحجم و الشكل و مادة الصنع.
و اذا اردت ان تظھر القطع الداخلية في الروبوت فيمكنك استخدام Cast Acrylic
Sheetكما ھو موضح بالصورة ,فھو قوي وخفيف وشفاف ,ويمكن ان تجده في
المحالت التي تصنع االلواح االعالنية
5
.2المحركات )الماتورات( Motors
ملحوظة :حديثنا ھنا عن DC motorولمزيد من المعلومات عنه يمكنكم زيارة الرابطة التالية HowStuffWorks
6
.2المحرك الخطوي Stepper Motor
ھو محرك كھربائي يستخدم في اآلالت التي تحتاج الى دقة في التحكم في محركاتھا.
و من أھم ميزات ھذا النوع من المحركات انه يمكن التحكم في عدد و سرعة دوراته و زاوية التوقف بدقة ,كما انه عادتا ما يكون له عزم في
الدوران.
ويتحكم به عن طريق ارسال Binary data,ولذلك نالحظ خروح 4او 5اسالك منه.
إذا أردنا تحريك المحرك في اتجاه معين نرسل له (1000 – 0100 - 0010 - 0001):
إذا أردنا تحريك المحرك في االتجاه المعاكس نرسل له (0001 – 0010 - 0100 - 1000):
7
مثال المحرك الخطوي الذي يكتب عليه ) (7.5درجة
اي كل ) (1نبضة تاتي لتجعل المحرك يدور ) (7.5درجة اما عدد الملفات تذكر لتبين االمر اي نوع من القيادات تستخدم لقيادته
الدورة الكاملة ھي ) (360درجة قم بالتقسيم 360مقسومة على 48 = 7.5نبضة لكل دورة كاملة
8
Servo or Servomechanism .3
ھو محرك يستخدم في تحريك االشياء مسافة معينة باتجاھين ,مثل دواليب السيارة االمامية للدوران لليمين واليسار ,ومثل اجنحة الطائرات للتوجيه.
وفي العاب االطفال ,يمكن ايجاد محرك واحد لل 4دواليب ,ويمكن ايجاد محرك
واحد للدواليب الخلفية ,ويمكن ايجاد محركان فقط على الدواليب الخلفية ,ويمكن
ايجاد محرك على كل دوالب ,وھذا يعتمد على القوة المطلوبة ,العزم ,وكمية
الطاقة المقدمة والمستھلك.
ھو عبارة عن الدائرة االلكترونية التي تقوم بارسال اشارة معينة على تردد معين الى المستقبل )عادتا ما تكون االشارة باستخدام .(Radio Wave
المستقبلReceiver
ھو عبارة عن الدائرة االلكترونية التي تقوم باستقبال االشارة المرسلة على نفس التردد ,وعند استقبالھا فانه يقوم )المستقبل ( Receiverبارسال
الطاقة الكھربائية الى الماتور المطلوب تحريكه فتتحرك السيارة.
9
كيفية االستفادة من بعض اجزاء االلعاب في بناء الروبوت الخاص بنا
يمكننا االستفادة من بعض اجزاء السيارات في صناعة الروبوت مثل:
الماتورات motors
الدواليب wheels
التحكم االسلكي wireless control
فيمكننا ان نأخذ ال controller and wheelsونغير المحركات ,او يمكننا ان نضع محرك يعمل بالبترول petrolاذا احتجنا للسرعة والقوة.
10
االدوات واالجزاء الخاصة بالروبوت
يوجد مواد وادوات وقطع خاصة في بناء الروبوت بدال من استخدام العاب السيارات ,ولكن لألسف ال يوجد اماكن لبيع ھذه االجزاء في الوطن
العربي ,ولذلك نلجأ الى االنترنت.
بعض المواقع المتخصصة في اجزاء الروبوت:
Link 1
Link 2
Link 3
http://www.robotmarketplace.com/store.html
http://www.robotshop.ca/robot-parts.html
http://www.jameco.com/Jameco/robot/robotstore.html
ما يميز شراء قطع الروبوت مقارنتا باستخدام قطع العاب االطفال ھو اننا نشتري ما نحتاجه وبالمواصفات التي نحتاجھا ,وال نتقيد بما لدينا من
قطع ومواصفات في العاب السيارات ,فيمكننا التحكم بحجم وقوة الماتورات,الدواليب ,ومدى قوة ومدى ال wireless controllerونوعه,
عوضا عن عدد channelsوغيره من االمور التي نحتاجھا في عملية التصميم والبناء.
كما وان سعر القطع الخاصة بالروبوت غالية ,وغير متوافرة بالدول العربية ,واحيانا بعضھا يحتاج الى خبرة في طلبھا وتوصيلھا مع بعضھا
البعض مثل ) ( Board Computers, Microcontrollers, Data Storage, RFID reader
ويوجد روبوتات جاھزة يمكنكم شرائھا وبرمجتھا ,وھذه بعض الصور لبعض الروبوتات الجاھزة من احدى المواقع في االعلى )ولكن كما
ذكرت سابقا سعرھا غالي -وصراحة افضل بناء الروبوت باليد مع انه لن يكون بھذا االتقان لعدم توافر القطع واالدوات(.
11
ولذلك سيتمركز شرحي على توصيل الروبوت على الكمبيوتر بشكل مباشر ,كما وان الكمبيوتر سيفتح المجال للمبرمجين لشراء روبوت
جاھز وبرمجته باستخدام C, Visual Studio.NET or Javaكما سيفتح المجال في عمل برامج اكثر ذكائا وسھولة في التعديل ,وسأشرح
الحقا كذلك كيفية االستفادة من Embedded Systems
وانصح عند صناعة روبوت ان يحدد الشخص بعض االشياء الھامة ومنھا:
مھام الروبوت )سبب صنعه(
مواصفاته ,حجمه ,شكله المناسب ,امكانياته
12
ھل التحكم من قبل شخص او باستخدام الذكاء االصطناعي
ولذلك انصح كل شخص بأن يأخذ وقته ويحدد كل ما يريده قبل البدء بالمشروع ,لكي ال يقع في مشاكل كثيرة اثناء العمل والتي يمكن ان تسبب
صعوبة المشروع ,او حتى فشله.
13
األنظمة الرقمية
لتتم برمجة الروبوت يجب علينا فھم بعض التحويالت بين ھذه االنظمة الرقمية ,وأھمھا:
عندما يكون عندنا رقم عشري decimalونريد تحويله الى رقم ثنائي Binaryنقوم باستخدام القسمة المطولة
مثال :فالنأخذ الرقم 131
فيكون الناتج ) 10000011نأخذ الرقم من اسفل الى اعلى -ونكتبه من اليسار الى اليمين(
14
وھذا كود التحويل باستخدام C#.NET
شرح الكود
)for (int i = 8; i > 0; i--
فاذا كان باقي القسمة ,0نضع 0في ناتج العملية وھو الرقم الثنائي
وبعد كل عملية نقسم الرقم العشري على 2الننا قمنا بأخذ باقي القسمة سابقا
وعندما يكون عندنا رقم ثنائي Binaryنريد تحويله الى رقم عشري decimalنقوم باستخدام الطريقة التالية:
15
16
;int Num = 1
;Dec = 0
)(private void BinToDec
{
;]int[] Bin = new int[9
شرح الكود
في ھذه العملة نقوم بتعريف رقم اسمه Numونعطيه قيمة 1
فاذا كان يوجد 1في الرقم العشري فاننا نجمع قيمة ال Numمع قيمةDec
17
الفصل الثاني منافذ الحاسب اآللي computer ports
يوجد لدينا عدة منافذ في الكمبيوتر ,ويھمنا منھا ما يمكن استخدامه في الروبوت ,وھي:
Parallel port .1
Serial port .2
USB port .3
Ethernet port .4
1
18
Parallel port
ومن ضمنھا, ومن اسھل المنافذ التي يمكن استخدامھا في التحكم باالجھزة المختلفة, من اھم المنافذ القديمة في الحاسوبparallel port ان
LPT او كما يدعىParallel port وھذه صورة ال.الروبوت
فانه يستخدم بشكل اكبر في الطابعاتIEEE 1284 اما النوع الثاني يدعى,وانا اقوم بشرح والعمل على النوع الموضح بالصورة االولى
. والذي به شرح وافي ايضاparallel_port.doc ويمكنكم االستعانة بالملف المرفق الذي يحمل اسم
: في المنفذLED توصيل
:ان الجدول المبين باالسفل يحتوي على مھمة كل فتحة من فتحات المنفذ
19
ولذلك نجد انه للتحكم بضوء صغير LEDيجب توصيل القطب الموجد باحدى الفتحات من 2الى 9
والقطب السالب من 18الى 25كما ھو موضح بالصورة
وللتحكم بمخارج ال parallel portفقط فيرجى مراجعة البرنامج Parallel_port_v1.rarوالذي يمكن ان تجده بالمرفقات.
وبالنسبة للمداخل سيتم التحدث عنھا الحقا ان شاء ﷲ.
20
Form1به ابسط كود للتحكم ,يقوم باطفاء واضائة جميع المخارج فقط
اما بالنسبة لل LPTعبارة عن تطوير بسيط في الكود للتحكم بكل مخرج على حدة دون التأثير على المخارج االخرى
ان البرنامج ھو باستخدام C#.NET 2008ولكن يمكن نسخ الكود الى .NET 2005 and .NET 2003وسيعمل ان شاء ﷲ
كما وستجدون مالحظات باالنجليزي داخل المشروع ,ولذلك انصح كل شخص لم يفھم الشرح الموجود ھنا ان يدخل على المشروع ويتتبع الكود
ويقرأ الشرح باالنجليزي
21
فالنبدأ بشرح الكود الخاص بForm1
;using System.Runtime.InteropServices
ھنا نقوم بتعريف ھذا ال functionواعطائه المتغيرات الخاصة به وھي رقم البورت والقيمة المراد ارسالھا له
;)Output(0x378, 255
فيقوم بارسال 1الى جميع المخارج x378ھنا نقوم بارسال القيمة 255الى 0
hexadecimalھنا معناھا ان الرقم 378ھو 0x
lpt1ھو رقم الرجستري الخاص ب 0x378و
بسيط وسھل ,ويمكنكم الحصول عليه من المرفقات في االعلى Form1,ھذا ھو فقط الكود الخاص به
22
خانات9 تحتوي علىarray لقد قمت ھنا بتعريف مصفوفة
(binary)1 او0 وتكونLPT تستخدم لوضع القيم المراد اخراجھا من8 الى1 الخانات من
decimal وتخزن ك,8-1 الموجودة بالخاناتbinary فانھا تستخدم كناتج تحويل االرقامBin[0] اما الخانة
LPT ليتم ارسالھا الحقا الى
وھذه صورة يمكن ان توضح عمل المصفوفة اكثر
23
يقوم ھذا ال functionبأخذ قيمتان , PinNumberوھو رقم ال pinالمراد تغيير قيمته
و Valueوھي القيمة المراد وضعھا ,وتكون اما 0او 1
;Bin[PinNumber] = Value
24
Serial port
ال اريد التحدث عنه كثيرا ولذلك سأختصر موضوع الھاردوير ,وسيتمركز حديثي عن software
الن ھدف الموضوع في النھاية الروبوت وما يخدمه فقط
نحن نحتاج في عملنا كل من pin # 2,3, and 5,ولذلك ال اريد ان ادخل بشرح الباقي الننا سندخل بال DTE & DCEوال اعتقد اننا سنحتاج
الى باقي pinsفي موضوعنا
فعند توصيل الدائرة نستخدم رقم 2الستقبال المعلومات ,ورقم 3يستخدم الرسال المعلومات
اي انه عندما نريد ان نرسل المعلومات ,فاننا نعتبر في توصيلنا ان ) (pin # 3ھو القطب الموجب ,و )(pin # 5ھو القطب السالب
ان ال serial portيقوم باخراج المعلومات من pinواحد ,ولذلك يقوم باخراجھم بشكل تسلسلي كل bitلحال ,اما parallel portفانه يقوم
باخراج ال bitsمع بعض بشكل متوازي ,كما ھو موضح بالصورة
25
ولمزيد من المعلومات زوروا الرابطة التالية
RS-232
http://en.wikipedia.org/wiki/RS-232
serialPort1.PortName = "COM1";
COM1, COM2, etc ھنا نقوم بوضع اسم البورت‘ وھو عادتا ما يكون
كما بالصورة التاليةdevice manager ويمكن ان تعرفوا ارقام البورت المتوفر لديكم من
26
;)(serialPort1.Open
ھنا نقوم بارسال stringمن خالل البورت ,وفي ھذه الحالة a ,وحرف aيحول الى ASCIIثم الىbinary
اي انه يرسل 1100001من البورت الى الجھاز المتصل اليه بشكل تسلسلي كما شرح سابقا
;)(serialPort1.Close
27
ستجدون في المرفقات برنامج يقوم بمراقبة serial portويقوم باظھار جميع المعلومات المطلوبة وتناقل
free-serial-port-monitor
http://www.serial-port-monitor.com/Download/fre
USB
بالنسبة لل USBلم استطع الى اآلن ان ابرمجه او اقوم بعمل اجھزة له ووصلھا عليه ,وذلك النه يستخدم بروتوكول معين ,وبه headerخاص به,
ولذلك ھو يرسل المعلومات ك serialبعد اضافة ال headerولكن بطريقة مختلفة.
ولذلك ال اجد سبب لشرحه ك hardwareاذا لم استطع ان ابرمجه او ان اقدم دوائر له ,سأبحث على االنترنت ان شاء ﷲ اكثر عن ھذا الموضوع,
وحين توفر المعلومات سأعرضھا لكم ان شاء ﷲ
28
Ports converters
ستجدون اجھزة كثيرة تقوم بالتحويل من USB to Serial and USB to parallel port
وذلك الن اغلب االجھزة الحديثة ال تأتي بserial or parallel port
وھذه االنواع من االجھزة )او الوصالت( عند شرائھا تأتي مع تعريف ,بعد تعريفھا ستتعاملون معھا على انھا serial or parallelوليس USB,
الن الكمبيوتر في ھذه الحالة ھو الذي سيقوم بالتحويل ووضع ال headerوھكذا ,ويجب االنتباه ھنا انه يوجد نوعان من USB to LPT
convertorواحد يستخدم للطابعات ,واآلخر يستخدم ك ,Parallel Portولألسف النوع الثاني ھو ما نحتاجه ولكنه نادر الحصول عليه.
Link 1
Link
29
تطبيقات على Parallel Port
30
- Diod 1يستخدم لحماية LPTمن التيارات العكسية
- 10k resistanceھذه المقاومة تستخدم لحماية الترانزيستور
- 2N3904 transistorعند استقبال V 5من الكمبيوتر يقوم بتمرير المصدر الثاني للكھرباء وھو ھنا V 12وذلك لتشغيل ملف ال , relayونقوم
باستخدام المصدر الثاني للكھرباء بناءا على قيمة الملف في الريليه ,فمن الممكن ان يكون 6V,9V,12V, etc
- Diod 2لحماية الترانزستزر من التيارات العكسية ,كما انه يحمي الجھاز عند ضعف Ampفي مصدر الطاقة الثاني V 12في حال كان بطارية
- Relayعند استقبال التيار الكھربائي )ھنا ) (V12يقوم بجذب الذراع الداخلي به ,فيتصل طرفيه ببعض ليسمح بمرور التيار ,مثل الصورة التالية
)انظروا للخط االحمر وھو التوصيل(
;Bin[5]=1
;)]Output(0x378, Bin[0
ويمكنكم االستعانة بالجزء السابق من الموضوع لفھم الكود والذي يدعى" التحكم بال" parallel port
والبرنامج الموجود ھناك كافي لتشغيلLED or relay
31
32
33
switch (Step)
{
case 1:
Pin2.BackColor = System.Drawing.Color.Green;
Pin5.BackColor = System.Drawing.Color.White;
OutFromLPT(1, 0);
OutFromLPT(4, 1);
Step = 2;
break;
case 2:
Pin3.BackColor = System.Drawing.Color.Green;
Pin2.BackColor = System.Drawing.Color.White;
OutFromLPT(2, 0);
OutFromLPT(1, 1);
Step = 3;
break;
case 3:
Pin4.BackColor = System.Drawing.Color.Green;
Pin3.BackColor = System.Drawing.Color.White;
OutFromLPT(3, 0);
OutFromLPT(2, 1);
Step = 4;
break;
case 4:
Pin5.BackColor = System.Drawing.Color.Green;
Pin4.BackColor = System.Drawing.Color.White;
OutFromLPT(4, 0);
OutFromLPT(3, 1);
Step = 1;
break;
}
case 1:
يستخدم ھذا الكود لتلوين ال buttonالمستخدم باللون االخضر ,والذي يدل على الملف المراد تحريكه )اخراج الكھرباء له(
واللون االبيض اي انه غير مستخدم
;)OutFromLPT(1, 0
يقوم باخراج 0من البورت االول )وھو فعليا رقم ,(2وتحدثت سابقا ان القيمة معكوسة بسبب الدائرة ULN200,وھنا ليصل الكھرباء للملف
االول
;)OutFromLPT(4, 1
يقوم باخراج 1من بورت ) 4وھو الملف السابق( ,وھنا لفصل الكھرباء عن الملف الرابع )الذي يسبقه)
;Step = 2
35
ويوجد دوائر جاھزة للتحكم بال relayعن طريق parallel portيمكنكم شرائھا من
االنترنت ,وبالنسبة لبرمجتھا ھو نفس الكود الموجود بالشرح في االعلى ,ولكنھا دوائر
جاھزة
تدعى LPT relay board
ان شرائھا اضمن من بنائھا ,ولكن بنائھا ارخص ,واين التعلم والمتعة في العمل اذا قمنا
بشراء كل شيء ؟
.1استخدام ) serial relayكما بالصورة( وھو عبارة عن دائرة جاھزة ترسل اليھا dataمعينة ليشغل relayمعين ,وطبعا تقوم ھذه الدائرة فعليا
بتحويل ال serial to parallelلتحدد الريلي relayالمراد تشغيله
كما ويمكن توصيل serial portبھذا الجھاز )او بالذراع( بشكل السلكي وذلك ما سأتحدث عنه الحقا ان شاء ﷲ
وبالنسبة للتوصيل والبرمجة سأتحدث عنھا في قسمي التحكم والقسم الخاص باالذرع
36
الفصل الثالث التحكم Control
الدوائر الجاھزة
LPT relay
عندما قمت بتصميم وبناء ) LPT relayراجع التطبيقات البسيطة على ( parallel portتم تصميمه على اساس التحكم الكامل من الكمبيوتر ,فاذا
وجدة اشارة ) (1فان relayيعمل
واذا اخرج ) (0فان relayيفصل ,ولذلك اذا اغلق الكمبيوتر او فصل الكيبل منه فان جميع ال relaysستفصل
وعندما عملت في مشروع آخر استخدمة relayقمت بالتعرف على ICيقوم بتخزين آخر حالة لالشارة
فاذا فصلت الكيبل او انقطع التيار الكھربائي عن الكمبيوتر فان وضع relaysسيضل كما ھو.
سبب ذكر الموضوع ھو انه يوجد نوعان من الدوائر الجاھزة التي تعمل ب LPTولذلك يختلف الموضوع قليال في البرمجة.
بالنسبة لطريقة التحكم فان الكود الموجود في الموضوع سابقا والخاص بال LPTكافي لبرمجته ,والذي سيسمح لكم بفھم CD and manual
الذي به امثلة عن التحكم بالجھاز والذي يأتي معه عند شرائه.
Serial relay
بالنسبة لل Serial relayفان برمجته تعتمد على ال dataالمرسلة الى الجھاز ,وھذه ال dataعادتا ما تكون موجودة بالكتالوج الموجود مع
الجھاز.
وھذا الكود في االسفل ھو للتحكم بال serial relayمن انتاج ھذه الشركة http://www.controlanything.com/
وھو مجرد مثال آخر وطريقة اخرى للتحكم غير المذكورة سابقا )طريقة اخرى الرسال المعلومات(
37
//ProXR
;)(serialPort1.Open
;]Byte[] data = new byte[3 //Define an array to hold data
;data[0] = 254 //Data for entering command mode
;data[1] = 108 //Data for turnning on relay 1
;data[2] = 1 //Data for in relay bank 1
;)serialPort1.Write(data, 0, 3 //Write data to serial port
;)(serialPort1.Close
ويوجد في البرنامج في المرفقات طريقة التحكم بنوع R8Xمن نفس الشركة ايضا
ويمكنكم مالحظة االختالف في االرقام المرسلة للجھاز في كال النوعان
الحظوا ايضا ان ال Bound Rateللسيريال ھو 38400وليس ,9600وھو ما يذكر بالكتالوج ايضا
Parallel_port4.rar
38
التحكم في الروبوت
لقد تحدثت سابقا عن بعض انظمة التحكم ومخارج الكمبيوتر وطرق توصيل الروبوت وصنعه ,واآلن جاء دور اسھل طريقة للتحكم بالروبوت ,
وھي اول طريقة قمت باستخدامھا في صناعة الروبوت الخاص بي والتحكم به كان بداية دخولي ھذا العالم.
التحكم بالروبوت باستخدام controlالخاص بلعبة السيارة ,التي نأخذ منه الcontrol and remote control
فنقوم بتوصيل( controlالمقصود ھنا مستقبل االشارة )في الروبوت( في حال نحن قمنا بصناعته وتوصيل remote controlبالكمبيوتر
عادتا ما يكون جھاز التحكم يحتوي على 4مفاتيح ,تعمل ھذه المفاتيح بسير السيارة لالمام والخلف ,يمين ويسار .ھذا ابسط انواع التحكم الذي
نحتاجه
عادتا ما يكون مبدأ عمل المفتاح ھو بوصل طرفين معدنيين ببعض ,وعند مالمستھما يقوم بأكمال الدائرة االلكترونية التي تقوم بدورھا بارسال
اشارة الى المستقبل ,والذي يقوم باخراج الكھرباء من احدى االسالك الى المتور فتسير السيارة.
مھمتنا ھي وصل الطرفين المعدنيين بالكمبيوتر ,وعندما نرسل اشارة من الكمبيوتر يقوم بوصل الطرفين ,وعندما نفصل االشارة يقوم بفصل
الطرفين وذلك باستخدان الريليه.
ولكي نبدأ بذلك يجب علينا فھم كيفية عمل remote controlالذي نمتلكه.
39
او ذراع
سآخذ احدى المتحكمين كمثال ھنا( الذراع ),وسيمكنكم تطبيقه على المتحكم اآلخر.
40
41
ويوجد طريقتان للدوائر لتوصيلھم بالLPT
اوال عن طريقrelay
42
وھذه صوؤة موضحه اكثر
43
44
طبعا ھنا بما ان لدينا اربع متحكمات فاننا نحتاج الى 4دوائر الكترونية
ونقوم بتوصيلھم على ) parallel port PIN 2,3,4,and 5او يمكنكم استخدام اي PINمن 2الى (9
اما بالنسبة للكود ,فان االكواد السابقة والخاصة بال LPTكافية للتحكم به.
وھكذا تستطيعون التحكم بسيارة السلكية عن طريق الكمبيوتر.
المستقبل )(receiver
ان اھتمامنا بالمستقبل ھنا في حالة صناعتنا لھيكل الروبوت فقط ,واستخدام ااالسلكي الخاص بسيارة اطفال ,اما اذا كنتم تريدون التحكم بسيارة
اطفال عن طريق الكمبيوتر فيمكنكم غض النظر عن ھذا الجزء.
اغلب المستقبالت )الخاصة بالعاب االطفال( تحتوي على 6اسالك ,سلكين يذھبان الى البطاريات ,ماتور الحركة االمامية والخلفية ,ماتور الحركة
يمين ويسار
نحن نحتاج الى االسالك الخاصة بالماتورات ,وذلك لتوصيل ماتوران dc motorاو اكثر
وعادتا ما تكون العاب االطفال خفيفة الوزن ,وماتوراتھا صغيرة ,اما الروبوت فھو اثقل وزنا ويحتاج الى ماتورات اكبر ذات عزم اكبر ,ولذلك
يجب ان نراعي الكھرباء الخاصة لدائرة المستقبل والكھرباء الخاصة بالماتورات الجديدة
فاذا كان لدينا دائرة مستقبل تعمل على V 6وماتورات تعمل على V 12فيمكنكم استخدام transistor or relay,وانا افضل الريلي الن
التراسستور العادي ال يتحمل ampعالي )تبعا الى نوعه طبعا( ,وفي حال قمتم بتوصيل 6ماتورات مثال )روبوت على شكل دبابة( فانني افضل
استخدام ريلي.
وطريقة التوصيل ھي باحضار ريله ) V6حسب مخرج الدائرة( وتقومون بتوصيلھا مباشرة على احدى اسالك المستقبل ,وفي الجھة االخرى
للريلي في الماتور والبطارية الجديدة )البطارية االخرى V 12على سبيل المثال( وذلك كما موضح بالصورة
45
وعادتا يفضل عمل الروبوت ليسير كالدبابة النه اسھل في البناء.
46
47
الدوائر الجاھزة والمساعدة في التحكم
لقد تحدثت عن التحكم باستخدام بعض الدوائر الجاھزة وبرمجتھا ومن اھمھا serial relay and LPT relay
كما انني تحدثة عن صنع ھذه بعض الدوائر وربطھا بال LPTوربط RC control
ويوجد ھنالك الكثير من التكنولوجيا التي يمكن استخدامھا في التحكم في الروبوتات او االجھزة االخرى وھي:
GSM control
Bluetooth Relays
Ethernet Relays
Fiber Optic Relays
RS232 Relays
USB Relays
Wi-Fi Relays
Wireless Relays
ZigBee Relays
48
Embedded Systems
ان ال embedded systemsاو ما تدعى باللغة العربية" النظام المطمور "ھو عبارة عن اتحاد بين software and hardwareلتكوين جھاز
يقوم بمھمة واحدة.
يمكن ان تكون ھذه المھمة صغيرة او كبيرة ,بسيطة او معقدة .او يمكن
ان تكون ھذه المھمة ھي للتحكم بجزء ميكانيكي معين مثل الذراع
Robot Arm.
ويمكننا مالحظة وجود ھذه االنظمة في بعض االجھزة من حولنا مثل
microwaveالنه عبارة عن معالج مع برنامج يستخدم للتحكم به.
وكذلك الغساالت االلكترونية الحديثة وبعض اجزاء السيارات )مثل
البريك والوسائد الھوائية( وغيرھا من االجھزة التي تحتوي على ھذه
االنظمة.
ولكن ستجدون سؤال وھو ما الفرق اذا بين embedded systemsوالكمبيوتر الشخصي؟
ان الكمبيوتر الشخصي صمم لھدف عام ,اي انه يخدم الكثير من الناس باحتياجاتھم المختلفة ,ولكن االنظمة المطمورة قد صمم لھدف معين ,كما
انكم ستالحظون االختالف بالمواصفات والحجم والسعر وطريقة البرمجة ايضا.
ولتحديد ما نحتاجه من ھذه االنظمة يجب ان نحدد وظيفتھا ,والفتحات Portsالتي نحتاجھا ,والسرعة المطلوبة ولغة البرمجة وال OSالذي
نحتاجه عليھا.
وتتكون ھذه االنظمة من عدة اجزاع مثل )وحدة المعالجة المركزية ,الذاكرة ,وحدات االدخال واالخراج( كما وتحتوي على بعض الكروت مثل
)كرت الصوت ,كرت الشبكة( وغيرھا ,كما يمكن وصلھا بشاشة كمبيوتر.
49
تقوم الشركات عند صناعة االجھزة االلكترونية مثل microwave and car brake controlعلى سبيل المثال ,فانھا تقوم بصناعة
ال hardwareاو طلبه بنائا على مواصفات معينة ,او يستخدمون احيانا microcontrollerوذلك للحد من التكلفة العالية.
وھنا في حديثنا عن الروبوت ,سأتحدث عن embedded systemالجاھزة ,او المصممة لبرمجتھا ووضعھا في االماكن المرغوبة.
ان ھذا النوع من االنظمة )انظر الصور( تحتوي على عدة مخرجات ومدخالت مثل الحاسب الشخصي ,اي تحتوي على USB, Serial port,
Parallel port, Ethernet, ets….
وتستخدم لتوصيلھا على االجھزة الخاصة بكم للتحكم.
كما ان لغة البرمجة تختلف باختالف نظام التشغيل
مثال يمكن ان تحتوي علىLinux or Windows CE, DOS,
ولغة البرمجة تكونC,C++,JAVA, or .NET
في حديثنا عن الروبوت يمكن من استخدام ھذا النوع من االنظمة لوصله بشكل مباشر في الروبوت )وضعه بالداخل( للتحكم به بشكل استقاللي
فيعمل كعقل له.
او يمكنكم وضعه بداخله ووصل جميع اجزاء الروبوت به )كاميرا ,التحكم ,الحساسات ,الماتورات( ووصله بشكل السلكي wireless network
بكمبيوتر آخر لتسھيل عملية االتصال والتحكم واالھتمام بسرعة نقل المعلومات ,اي انكم مثال عندما تقومون بالتحكم بذراع روبوت يعمل على
serial portوتريدون ان تعملون عليه بشكل السلكي ,يمكنكم ان تصلونه على serial to Bluetoothووصله بالكمبيوتر المتحكم ,ولكن المسافة
ال تتعدى 100متر كما ان سرعة نقل المعلومات ستكون Mbit/s, 2.1اما عندما تصلون ھذا الذراع على embedded systemوتقومون بعمل
اتصال السلكي بينه وبين الجھاز الشخصي )المتحكم( فان سرعة االتصال ستكون MB/S 54وذلك باستخدام G 802.11والمسافة يمكن ان تصل
الى عدة كيلومترات.
كما انكم يمكنكم ان تقومون ببرمجة embedded systemليتحكم بالروبوت بشكل مستقل عندما ينقطع االتصال بينه وبين المتحكم.
50
ويوجد ھذا الموقع الذي يتيح لك ان تبرمج وتتحكم ب embedded systemsعن طريق االنترنت ,وعندما يعجبك المنتج يمكنك ان تقوم بشرائه
http://www.freescale.com/
علما بأن لغة البرمجة ھي C,ولكنك تحتاج الى التسجيل اوال.
51
Server Client
ServerSocket(Port #)
Listen()
Accept() Socket(Host,Port #)
Close() Close()
52
using System.IO;
using System.Net.Sockets;
NetworkStream NS = MyTcpClient.GetStream();
SW.WriteLine(Commandtxt.Text);
SW.Close();
NS.Close();
MyTcpClient.Close();
Sever " اي انLocalHost" وھو في ھذا المثال, لهHostName اوIP address ونقوم باسنادTCP المستخدم وھوProtocol نقوم بتعريف
)موجودون بنفس الجھاز )للتجربة فقطand Client
, 1024 يمكنكم استخدام اي واحد ولكن ينصح ان يكون اعلى منport 65535, وكما ھو معلوم لدينا يوجد بالشبكات,3000 فھوPort اما عن
محجوزون لبرامج وخدمات معينةport 1024 الن اول
TCP يقوم بارسال الرسائل عن طريق.NET جاھو فيClass عبارة عنNetworkStream ان
SW.WriteLine(Commandtxt.Text);
53
ھنا يقوم بأخذ االمر وارساله عن طريق الشبكة اليServer
يمكنكم وضع االوامر بداخل البرنامج مثل Leftليدور الروبوت على اليسار ,او Stopليتوقف ,وطبعا للسرعة يجب ان تضعون ھذه االوامر
داخل Buttonاو ما يناسبكم.
Server
ان Serverيقوم بعملية االستماع الى Portمحدد ,وعندما يتم طلب االتصال يتم عن طريق ھذاPort.
;using System.IO
;using System.Net.Sockets
;using System.Threading
ھنا نقوم بتعريف نفس الدوال ولكن نزيد عليھم Threadingونستخدمه ھنا لكي ال يسبب عدم استجابة االبرنامج لنا
;)(thread.Start
ھنا نقوم بتفعيل Threadingعن الدالة Listenerوالتي يوجد بھا الكود الخاص بعملية االستماع واالتصال
;TcpListener MyTcpListener
;NetworkStream NS
;Socket MySocket
;StreamReader SR
54
Serverتعريفات الدوال المستخدمة في برنامج
Listener الدالة
while (true)
{
MySocket = MyTcpListener.AcceptSocket();
NS = new NetworkStream(MySocket);
SR = new StreamReader(NS);
MethodInvoker invoker1 = new MethodInvoker(delegate()
{
ShowCommand(SR.ReadLine());
}
);
MethodInvoker invoker1 = new MethodInvoker(delegate()
{
ShowCommand(SR.ReadLine());
}
this.BeginInvoke(invoker1);
}
}
MyTcpListener.Start();
Portنبدأ بعملية االستماع الى
MySocket = MyTcpListener.AcceptSocket();
NS = new NetworkStream(MySocket);
SR = new StreamReader(NS);
55
MethodInvoker invoker1 = new MethodInvoker(delegate()
{
ShowCommand(SR.ReadLine());
}
);
وبعد البحث على االنترنت وجدة انه يجب, واجھتني مشكلة ظھور رسالة خطأ.NET 2008 المستقبلة باستخدامMessage عندما حاولة اظھار
ووضع اظھار الرسالة بداخل ليتم حل المشكلةMethod Invoker استخدام ما يدعى
ShowCommand(SR.ReadLine());
والتي تقوم بتنفيذ االمرShowCommand اقوم بارسال االمر )الرسالة( المستقبلة الى دالة
case "Stop":
MessageBox.Show("Action 2");
break;
default:
MessageBox.Show("Wrong Command");
break;
}
}
56
Server Client
ServerSocket(Port #)
Listen()
Accept() Socket(Host,Port #)
Close() Close()
Serial port وھذا الكود يمكن ان يتضمن التحكم بال, اريدهHardware وھنا اقوم بكتابة الكود الخاص بالتحكم بالروبوت والتحكم بأي
.او اي شيء اريد تنفيذهParallel port
57
الكاميرات
يوجد عدة انواع من الكاميرات ,ويھمنا ھنا ثالثة انواع منھا فقط:
webcamوالتي تعمل على الكمبيوتر وتتصل عن طريقUSB
IP Megapixel cameraوھي كاميرات ذات دقة وضوح عالية تعمل عن طريق networkكما ويوجد نوع يسمى IP Camولكن دقته قليلة
GSM cameraھي كاميرا تعمل على شريحة الموبايل الرسال الصور الى اي مكان بالعالم باستخدام االنترنت وعن طريقGPRS
web cam
Gsm Camera
58
59
private void Form1_Load(object sender, System.EventArgs e)
{
//webcam يحدد حجم الصورة القادمة من
this.WebCamCapture.CaptureHeight = this.MainImage.Height;
this.WebCamCapture.CaptureWidth = this.MainImage.Width;
}
سأقوم اآلن بعرض مشروع عملي لروبوت بسيط لتطبيق على بعض ما سبق
ھذه الدائرة ھي لوصل الالسلكي الخاص بالروبو ت بالكمبيوتر للتحكم به عن طريق LPT
انا ھذا الجزء مجرد تطبيق مع الصور ,ولكن لن تفھمه نھائيا اذا لم تقرأ الموضوع بالكامل ,النه ال يوجد اي شرح ھنا.
62
10K Resistance ھنا نضيف
63
نضيف ترانزيستور نوعه 2N3904
ومصدر الكھرباء 6Vالن ملف الريليه 6V
64
اقوم ھنا بوصل االقطاب السالبة للترانزستور مع بعض
65
اقوم ھنا بوصل مداخل الدائرة على وصلت LPTلوصلھا بالكمبيوتر ,الالقطاب من 2الى 5
66
ھنا قمت بوصل حدايد السير الخاصة بالالسلكي بوصلة Serialليتم وصلھا الحقا بمخارج الريليھات
67
وصل المستقبل بماتورات الروبوت ,كل ماتوران على سلكين من اسالك المستقبل ,الن اللعبة االصلية مصممة على اساس ماتورات فقط وليس
4ماتورات
68
69
شكل الروبوت بعد وصله
70
شكل آخر للروبوت كنت اقوم بتجربته
71
شكل الروبوت بعد االنتھاء منه
اتذكر عند عمل ھذا الروبوت قمت بوصل الھيكل والمتاتورات بالسيليكون ,وعند وضعه بالسيارة انفصلت جميع اجزائه تقريبا من حرارة الجو
وضغط السيارة.
72
مخطط لروبوت آخر
73
ملحق رقم 1
العناصر نقال عن القرية االلكترونية
http://www.qariya.com/
العناصر
الرمز الوظيفة العناصر
لتمرير التيار
الكھربائي من نقطة الى Wire سلك
اخرى
نقاط لحام
74
مصباح
Motor محرك
Bell جرس
75
لتشغيل واطفاء
Relay حاكمة
االجھزة أضغط ھنا
المقاومة ھي عنصر
يقاوم تدفق التيار
Resistor مقاومة
الكھربائي في الدائرة
أضغط ھنا
مقاومة يمكن تغيير مقاومة متغييرة
)(Rheostat
قيمتھا أضغط ھنا بطرفيين
LED
أضغط ھنا ثنائي ضوئي
Light Emitting Diode
ثنائي يعمل بأنحياز
عكسي عن جھد محدد Zener Diode ثنائي زنر
اضغط ھنا
ثنائي يعمل عند تسليط
ثنائي مستقبل للضوء Photodiode
الضوء عليه
76
عنصر ثنائى االتجاه
يمكنه التحول من حالة
Diac الداياك
القطع الى حالة
التوصيل أضغط ھنا
عنصر يتعامل مع
التيار المتردد أضغط Triac الترياك
ھنا
الثنائيات السعوية او Varactor or Tuning
ثنائي سعوي
الفاراكتور اضغط ھنا or Varicap Diode
ترانزيستور ثنائي
Transistor NPN
الوصلة
أضغط ھنا
Transistor PNP
Transistor, Field- ترانزيستور تأثير
Effect, N-Channel المجال
Transistor, Field-
Effect, P-Channel
Transistor, Metal-
Oxide, Dual-Gate
Transistor, Metal-
Oxide, Single-Gate
Transistor, ترانزيستور احادي
Unijunction الوصلة
ترانزيستور يعمل عند
تسليط الضوء على Phototransistor ترنزيستور ضوئي
القاعدة
كريستال
أضغط ھنا Crystal
كوارتز
77
عنصر يقوم بتضخيم
االشارة الكھربائية Amplifier مكبر أشارة
أضغط ھنا
Tube, Tetrode
Tube, Pentode
Tube, Diode
78
wikipedia نقال عن
USB
USB
Firewire
Ethernet port
Serial port
RS-232
79
PS/2 connector
Mini-DIN connector
Video Graphics
Array
VGA connector
D-sub 15
Digital Visual
Interface
DVI
TRS connector
80
SCSI
DC connector
81