You are on page 1of 81

‫صناعة وبرمجة الروبوت‬

‫مسودة رقم ‪1‬‬


‫مقدمة الكاتب‬

‫على مدى القرن الماضي تطورة الحياة والعلم بشكل كبير‪ ,‬ولكن لالسف ھذا التطور العلمي والتكنولوجي في العصر الحديث‬

‫غالبا ما يأتي من الغرب‪ ,‬حتى العرب الذين يريدون ان يقوموا باالنتاج او تطوير اي شيء تقريبا فانھم يذھبون الى الدول‬

‫الغربية‪ ,‬وذلك الننا بكل بساطة ال نحصل على االحترام الذي نستحقه في دولنا العربية‪ ,‬والننا بكل بساطة ايضا ال نحصل‬

‫على الدعم الكافي او حتى السبب لتطوير او اختراع اي شيء‪ ,‬مع انه يوجد الكثير من العقول التي تستحق التقدير واالحترام‬

‫من حولنا‪ ,‬اال انه قليال جدا جدا من يستطيع ان يقوم بانجاز ما يستحق ذكره بعد تخرجه من الجامعة وھو في دولنا العربية‪.‬‬

‫ولذلك ھذه مساھمة صغيرة مني قبل ان اترك ھذا المجال نھائيا لكل شخص يحب ان يدخل عالم الروبوت ويحاول ان يقدم‬

‫مشروع او فكرة او اي شيء جديد‪ .‬واتمنى ان ننھض بالعلم في يوم من االيام لنعود امة عربية تفتخر بنفسھا من جديد‪,‬‬

‫بالفعل وليس بالكالم‪.‬‬

‫شكر خاص لعائلتي وأخي العزيز أحمد‬

‫كما واحب ان أشكر منتدى ‪ArabTeam2000.com‬‬

‫عمار الرز‬

‫‪2‬‬
‫الفھرس‬

‫‪2‬‬ ‫مقدمة الكاتب‬


‫‪3‬‬ ‫الفھرس‬
‫‪4‬‬ ‫‪ Robot‬الروبوت‬
‫‪5‬‬ ‫الفصل االول‬
‫‪5‬‬ ‫السيارات االسلكية )العاب االطفال(‬
‫‪5‬‬ ‫‪ Buddy‬الھيكل‬
‫‪6‬‬ ‫)‪ Motors‬المحركات )الماتورات‬
‫‪10‬‬ ‫كيفية االستفادة من بعض اجزاء االلعاب في بناء الروبوت الخاص بنا‬
‫‪11‬‬ ‫االدوات واالجزاء الخاصة بالروبوت‬
‫‪14‬‬ ‫األنظمة الرقمية‬
‫‪18‬‬ ‫الفصل الثاني‬
‫‪18‬‬ ‫‪ computer ports‬منافذ الحاسب اآللي‬
‫‪19‬‬ ‫‪Parallel port‬‬
‫‪25‬‬ ‫‪Serial port‬‬
‫‪28‬‬ ‫‪USB port‬‬
‫‪29‬‬ ‫‪Ports converters‬‬
‫‪30‬‬ ‫‪ Parallel Port‬تطبيقات على‬
‫‪37‬‬ ‫‪ control‬الفصل الثالث التحكم‬
‫‪38‬‬ ‫التحكم في الروبوت‬
‫‪48‬‬ ‫الدوائر الجاھزة والمساعدة في التحكم‬
‫‪49‬‬ ‫‪Embedded Systems‬‬
‫‪58‬‬ ‫الكاميرات‬
‫‪62‬‬ ‫تطبيق عملي‬
‫‪74‬‬ ‫ملحق رقم ‪1‬‬
‫‪79‬‬ ‫ملحق رقم ‪2‬‬

‫‪3‬‬
‫الروبوت ‪Robot‬‬

‫تعريف الروبوت كما وضعته منظمة ‪: ISO‬‬


‫"الروبوت ھو آله أوتوماتيكية متحكم فيھا ببرنامج قابل للتغيير ذات‬
‫وظائف متعددة"‪.‬‬

‫ان الروبوت اصبح من االشياء المھمة التي دخل في عالمنا اليوم‪ ,‬فاننا نجد انه قد تم‬
‫صناعة سياراتنا على يد الروبوتات‪ ,‬ويوجد الكثير من الصناعات التي تعتمد على‬
‫الروبوت‪ ,‬كما وان كثير من الدول اتجھوا الى الروبوتات في عمليات االمن اوالدفاء‬
‫والتجسس وغيره من المھام الكثيرة جدا‪.‬‬

‫ولذلك يمكن تقسيم الروبوتات كأساس الى ثالثة اجزاء‪:‬‬


‫‪ .1‬البرنامج ‪Software‬‬
‫‪ .2‬االجھزة التي تحتوي على البرنامج )‪Hardware (ex. Microcontroller, computer‬‬
‫‪ .3‬اآللة االوتوماتيكية ‪Automatic machine‬‬

‫وعالم الروبوت ھو عالم ضخم جدا من الصعب جدا حصره لتشعبه وتعدد انواعه‪ ,‬ولذلك سيتم الحديث ھنا عن الروبوتات التي تشبه السيارات‪,‬‬
‫ويمكنكم استخدام ما يمكنكم تعلمه ھنا لصنع الروبوت الخاص بكم‪ ,‬او ما يدعى االنطالقة في عالم الروبوتات‪.‬‬

‫‪4‬‬
‫الفصل االول‬

‫السيارات االسلكية )العاب االطفال(‬

‫السيارات االسلكية )العاب االطفال(‬

‫احب ان استخدم العاب االطفال لسبب وجود الالسلكي‪ ,‬الدواليب‪ ,‬وبعض االجزاء االخرى التي يمكن استخدامھا بسھولة‪ ,‬وذلك لسبب عدم وجود‬
‫محالت متخصصة في اجزاء الروبوت في الوطن العربي‪ ,‬وكما وانھا غالية نوعا ما على االنترنت‪.‬‬

‫ان مكونات السيارات االسلكية ھي‪:‬‬

‫‪ .1‬ھيكل من البالستك ‪Plastic Buddy‬‬


‫‪ .2‬محركات )ماتورات( متصلة بالدواليب ‪motors connected to wheels‬‬
‫‪ .3‬التحكم الالسلكي ‪ ) wireless system‬المستقبل ‪ , Receiver‬المرسل ‪(Sender‬‬
‫‪ .4‬كھرباء من البطاريات ‪Power from battery‬‬

‫‪ .1‬الھيكل ‪Buddy‬‬

‫ان الھيكل من االجزاء الھامة التي يجب االھتمام بھا‪ ,‬يجب ان يكون الھيكل قوي‪ ,‬خفيف‪ ,‬يمكن تشكيله حسب احتياجاتنا‪.‬‬

‫يمكننا استخدام البالستك‪ ,‬الواح االجريلك‪ ,‬فايبر جالس‪ ,‬المعدن‪ ,‬او اي مادة اخرى نجدھا مناسبة في عملية التصنيع‪.‬‬

‫عادتا ال نستفيد من الھيكل من سيارات االلعاب الن سطحه غير مستوي )اذا اردنا تركيب بعض االجھزة عليه مثل خاليا شمسية او ذراع( وال‬
‫يوجد بداخله مكان لوضع االجھزة الخاصة بنا )مثل الحساسات ‪( sensors‬‬
‫ولذلك انصح دائما بان يتم صناعة ھيكل الروبوت يدويا‪ ,‬وذلك ليتم اتخاذ الشكل المناسب لنا‪ ,‬بالنسبة للحجم و الشكل و مادة الصنع‪.‬‬

‫و اذا اردت ان تظھر القطع الداخلية في الروبوت فيمكنك استخدام ‪Cast Acrylic‬‬
‫‪ Sheet‬كما ھو موضح بالصورة‪ ,‬فھو قوي وخفيف وشفاف‪ ,‬ويمكن ان تجده في‬
‫المحالت التي تصنع االلواح االعالنية‬

‫‪5‬‬
‫‪ .2‬المحركات )الماتورات( ‪Motors‬‬

‫يوجد لدينا ثالثة انواع من المحركات الكھربائية‪:‬‬

‫‪ .1‬المحرك الكھربائي ‪Electric Motor‬‬


‫‪ .2‬المحرك الخطوي ‪Stepper Motor‬‬
‫‪Servo or Servomechanism .3‬‬

‫‪ .1‬المحرك الكھربائي ‪Electric Motor‬‬


‫وھو المعروف لدينا‪ ,‬المسمى الدينامو والذي له سلكان موجب ‪ +‬وسالب ‪ , -‬ويعمل بالطاقة المترددة ‪DC‬‬
‫عند توصيل التيار الكھربائي فيه فانه يدور في اتجاه‪ ,‬وعند عكس التيار الكھربائي فانه يدول في االتجاه‬
‫اآلخر‬

‫ملحوظة‪ :‬حديثنا ھنا عن ‪ 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‬دواليب‪ ,‬ويمكن ايجاد محرك‬
‫واحد للدواليب الخلفية‪ ,‬ويمكن ايجاد محركان فقط على الدواليب الخلفية‪ ,‬ويمكن‬
‫ايجاد محرك على كل دوالب‪ ,‬وھذا يعتمد على القوة المطلوبة‪ ,‬العزم‪ ,‬وكمية‬
‫الطاقة المقدمة والمستھلك‪.‬‬

‫‪ .3‬التحكم الالسلكي ‪ ) wireless system‬المستقبل ‪ , Receiver‬المرسل ‪(Sender‬‬


‫المرسل ‪Sender‬‬

‫ھو عبارة عن الدائرة االلكترونية التي تقوم بارسال اشارة معينة على تردد معين الى المستقبل )عادتا ما تكون االشارة باستخدام ‪.(Radio Wave‬‬

‫المستقبل‪Receiver‬‬
‫ھو عبارة عن الدائرة االلكترونية التي تقوم باستقبال االشارة المرسلة على نفس التردد‪ ,‬وعند استقبالھا فانه يقوم )المستقبل ‪ ( Receiver‬بارسال‬
‫الطاقة الكھربائية الى الماتور المطلوب تحريكه فتتحرك السيارة‪.‬‬

‫‪ .4‬كھرباء من البطاريات ‪Power from battery‬‬


‫البطارية ھي مصدر الطاقة الذي يغزي كل من المرسل‪ ,‬المستقبل‪ ,‬والماتورات‪ ,‬وسنقوم الحقا بربطه بالخاليا الشمسية لشحنه‪.‬‬

‫‪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‬‬
‫األنظمة الرقمية‬

‫يوجد في الحاسوب ‪ 4‬انظمة رقمية وھي‪:‬‬

‫‪ .1‬النظام الثنائي ‪(0,1) Binary‬‬

‫‪ .2‬النظام الثماني ‪(0 To 7) Octal‬‬

‫‪ .3‬النظام العشري ‪(0 To 9) Decimal‬‬

‫‪ .4‬النظام السادس عشر ‪(0 To 9 and A,B,C,D,E,F) Octal‬‬

‫لتتم برمجة الروبوت يجب علينا فھم بعض التحويالت بين ھذه االنظمة الرقمية‪ ,‬وأھمھا‪:‬‬

‫التحويل بين النظام الثنائي والنظام العشري ‪Decimal to Binary number‬‬

‫عندما يكون عندنا رقم عشري ‪ decimal‬ونريد تحويله الى رقم ثنائي ‪ Binary‬نقوم باستخدام القسمة المطولة‬
‫مثال‪ :‬فالنأخذ الرقم ‪131‬‬

‫‪1‬‬ ‫‪/2‬‬ ‫‪131‬‬

‫‪1‬‬ ‫‪/2‬‬ ‫‪65‬‬

‫‪0‬‬ ‫‪/2‬‬ ‫‪32‬‬

‫‪0‬‬ ‫‪/2‬‬ ‫‪16‬‬

‫‪0‬‬ ‫‪/2‬‬ ‫‪8‬‬

‫‪0‬‬ ‫‪/2‬‬ ‫‪4‬‬

‫‪0‬‬ ‫‪/2‬‬ ‫‪3‬‬

‫‪0‬‬ ‫‪/2‬‬ ‫‪2‬‬

‫‪1‬‬ ‫‪/2‬‬ ‫‪1‬‬

‫فيكون الناتج ‪) 10000011‬نأخذ الرقم من اسفل الى اعلى‪ -‬ونكتبه من اليسار الى اليمين(‬

‫‪14‬‬
‫وھذا كود التحويل باستخدام ‪C#.NET‬‬

‫;‪int Dec = 0‬‬


‫;]‪int[] Bin = new int[9‬‬
‫)(‪private void DecToBin‬‬
‫{‬
‫)‪for (int i = 8; i > 0; i--‬‬
‫{‬
‫;‪Bin[i] = Dec % 2‬‬
‫;‪Dec = Dec / 2‬‬
‫}‬
‫}‬

‫شرح الكود‬
‫)‪for (int i = 8; i > 0; i--‬‬

‫نقوم بأخذ الرقم العشري ونستخدمه لباقي القسمة ‪ 8‬مرات‬

‫;‪Bin[i] = Dec % 2‬‬

‫فاذا كان باقي القسمة ‪ ,0‬نضع ‪ 0‬في ناتج العملية وھو الرقم الثنائي‬

‫اما اذا كان باقي القسمة ‪ 1‬فنضع ‪1‬‬

‫;‪Dec = Dec / 2‬‬

‫وبعد كل عملية نقسم الرقم العشري على ‪ 2‬الننا قمنا بأخذ باقي القسمة سابقا‬

‫التحويل بين النظام العشري والنظام الثنائي ‪Binary number to Decimal‬‬

‫وعندما يكون عندنا رقم ثنائي ‪ Binary‬نريد تحويله الى رقم عشري ‪ decimal‬نقوم باستخدام الطريقة التالية‪:‬‬

‫فالنأخذ الرقم ‪ 10011011‬كمثال‬


‫الصورة التالية توضح العملية اكثر )الصور نقال عن ‪(www.wikihow.com‬‬

‫‪15‬‬
16
‫;‪int Num = 1‬‬
‫;‪Dec = 0‬‬
‫)(‪private void BinToDec‬‬
‫{‬
‫;]‪int[] Bin = new int[9‬‬

‫)‪for (int i = 8; i > 0; i--‬‬


‫{‬
‫)‪if (Bin[i] == 1‬‬
‫;)‪Dec = Dec + (Num‬‬
‫;‪Num = Num * 2‬‬
‫}‬
‫}‬

‫شرح الكود‬

‫;‪int Num = 1‬‬

‫في ھذه العملة نقوم بتعريف رقم اسمه ‪ Num‬ونعطيه قيمة ‪1‬‬

‫)‪for (int i = 8; i > 0; i--‬‬


‫للمرور بالثمانية خانات‬

‫)‪if (Bin[i] == 1‬‬


‫;)‪Dec = Dec + (Num‬‬

‫فاذا كان يوجد ‪ 1‬في الرقم العشري فاننا نجمع قيمة ال ‪ Num‬مع قيمة‪Dec‬‬

‫;‪Num = Num * 2‬‬


‫وھنا نقوم بضرب قيمة ‪Num * 2‬‬
‫فيكون الناتج عند المرور بالخانات الثماني ھي‬
‫‪1 2 4 8 16 32 64 128‬‬

‫‪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 ‫توصيل‬
:‫ان الجدول المبين باالسفل يحتوي على مھمة كل فتحة من فتحات المنفذ‬

Pin No (DB25) Signal name Direction Register - bit Inverted


1 Strobe In/Out Control-0 Yes
2 Data0 Out Data-0 No
3 Data1 Out Data-1 No
4 Data2 Out Data-2 No
5 Data3 Out Data-3 No
6 Data4 Out Data-4 No
7 Data5 Out Data-5 No
8 Data6 Out Data-6 No
9 Data7 Out Data-7 No
10 Ack In Status-6 No
11 Busy In Status-7 Yes
12 Paper-Out In Status-5 No
13 Select In Status-4 No
14 Linefeed In/Out Control-1 Yes
15 Error In Status-3 No
16 Reset In/Out Control-2 No
17 Select-Printer In/Out Control-3 Yes
18-25 Ground - - -

19
‫ولذلك نجد انه للتحكم بضوء صغير ‪ LED‬يجب توصيل القطب الموجد باحدى الفتحات من ‪ 2‬الى ‪9‬‬
‫والقطب السالب من ‪ 18‬الى ‪ 25‬كما ھو موضح بالصورة‬

‫يرجى العلم ان مخرج ‪ Parallel Port‬ھو ‪5V‬‬


‫التحكم بال ‪parallel port‬‬
‫اننا نستخدم مكتبة تدعى ‪ inpout32.dll‬للتحكم في ‪ parallel port‬والوجودة في المرفقات‬
‫وھي عبارة عن مكتبة قديمة‪ ,‬وتعتبر ‪ unmanaged DLL file‬اي انه ال يمكن استدعائھا بشكل مباشر من ‪.NET‬‬
‫ولكن يمكن تعريفھا بالكود كما سنبين الحقا‪ .‬راجع الملف المرفق اسم ‪inpout32.rar‬‬

‫ولذلك قم بتحميلھا ونسخھا الى‬


‫‪C:\windows\system32‬‬

‫وللتحكم بمخارج ال ‪ parallel port‬فقط فيرجى مراجعة البرنامج ‪ Parallel_port_v1.rar‬والذي يمكن ان تجده بالمرفقات‪.‬‬
‫وبالنسبة للمداخل سيتم التحدث عنھا الحقا ان شاء ﷲ‪.‬‬

‫ستجدون ملفان داخل المشروع اسمھما ‪Form1 and LPT‬‬

‫‪20‬‬
‫‪ Form1‬به ابسط كود للتحكم‪ ,‬يقوم باطفاء واضائة جميع المخارج فقط‬
‫اما بالنسبة لل ‪ LPT‬عبارة عن تطوير بسيط في الكود للتحكم بكل مخرج على حدة دون التأثير على المخارج االخرى‬
‫ان البرنامج ھو باستخدام ‪ C#.NET 2008‬ولكن يمكن نسخ الكود الى ‪ .NET 2005 and .NET 2003‬وسيعمل ان شاء ﷲ‬
‫كما وستجدون مالحظات باالنجليزي داخل المشروع‪ ,‬ولذلك انصح كل شخص لم يفھم الشرح الموجود ھنا ان يدخل على المشروع ويتتبع الكود‬
‫ويقرأ الشرح باالنجليزي‬

‫‪21‬‬
‫فالنبدأ بشرح الكود الخاص ب‪Form1‬‬

‫;‪using System.Runtime.InteropServices‬‬

‫تستخدم لمساعدتنا في تعريف ‪inpout32.dll‬‬

‫])"‪[DllImport("inpout32.dll", EntryPoint = "Out32‬‬

‫ھنا نقوم بطلب استخدام ‪ function‬يدعى ‪ Out32‬موجود داخل المكتبة ‪inpout32.dll‬‬

‫;)‪public static extern void Output(int adress, int value‬‬

‫ھنا نقوم بتعريف ھذا ال ‪ function‬واعطائه المتغيرات الخاصة به وھي رقم البورت والقيمة المراد ارسالھا له‬

‫;)‪Output(0x378, 255‬‬

‫فيقوم بارسال ‪ 1‬الى جميع المخارج ‪x378‬ھنا نقوم بارسال القيمة ‪ 255‬الى ‪0‬‬
‫‪ hexadecimal‬ھنا معناھا ان الرقم ‪ 378‬ھو ‪0x‬‬
‫‪ lpt1‬ھو رقم الرجستري الخاص ب ‪0x378‬و‬

‫بسيط وسھل‪ ,‬ويمكنكم الحصول عليه من المرفقات في االعلى ‪ Form1,‬ھذا ھو فقط الكود الخاص به‬

‫شرح الكود الخاص بشاشة ‪LPT‬‬


‫ولنعقد االمور قليال فقط‪ ,‬ولنتحكم بكل مخرج على حدة دون التأثير على المخارج االخرى‬

‫;]‪int[] Bin = new int[9‬‬

‫‪22‬‬
‫ خانات‬9 ‫ تحتوي على‬array ‫لقد قمت ھنا بتعريف مصفوفة‬
(binary)1 ‫ او‬0 ‫ وتكون‬LPT ‫ تستخدم لوضع القيم المراد اخراجھا من‬8 ‫ الى‬1 ‫الخانات من‬
decimal‫ وتخزن ك‬,8-1 ‫ الموجودة بالخانات‬binary ‫ فانھا تستخدم كناتج تحويل االرقام‬Bin[0] ‫اما الخانة‬
LPT ‫ليتم ارسالھا الحقا الى‬
‫وھذه صورة يمكن ان توضح عمل المصفوفة اكثر‬

private void OutFromLPT(int PinNumber, int Value)


{
Bin[PinNumber] = Value;

//start converts binary to decimal


int Num = 1;
Bin[0] = 0;
for (int i = 8; i > 0; i--)
{
if (Bin[i] == 1)
Bin[0] = Bin[0] + (Num);
Num = Num * 2;
}
//END converts binary to decimal

private void OutFromLPT(int PinNumber, int Value)

23
‫يقوم ھذا ال ‪ function‬بأخذ قيمتان ‪, PinNumber‬وھو رقم ال ‪ pin‬المراد تغيير قيمته‬
‫و ‪ Value‬وھي القيمة المراد وضعھا‪ ,‬وتكون اما ‪ 0‬او ‪1‬‬
‫;‪Bin[PinNumber] = Value‬‬

‫ھنا نقوم باسناد قيمة المخرج اليه في المصفوفة‬

‫‪//start convert binary to decimal‬‬


‫;‪int Num = 1‬‬
‫;‪Bin[0] = 0‬‬
‫)‪for (int i = 8; i > 0; i--‬‬
‫{‬
‫)‪if (Bin[i] == 1‬‬
‫;)‪Bin[0] = Bin[0] + (Num‬‬
‫;‪Num = Num * 2‬‬
‫}‬
‫‪//END convert binary to decimal‬‬

‫ھذا الكود لتحويل النظام الثنائي الى عشري‬


‫وقد تم شرح ھذا الكود سابقا‬
‫;)]‪Output(0x378, Bin[0‬‬

‫ھنا نقوم بارسال القيمة ]‪ Bin[0‬الى‪LPT1‬‬


‫وكما ذكرت ]‪ Bin[0‬ھي القيمة ‪ decimal‬التي تم تحويلھا ‪,‬‬

‫‪24‬‬
‫‪Serial port‬‬

‫ال اريد التحدث عنه كثيرا ولذلك سأختصر موضوع الھاردوير‪ ,‬وسيتمركز حديثي عن ‪software‬‬
‫الن ھدف الموضوع في النھاية الروبوت وما يخدمه فقط‬

‫يوجد عدة انواع واشكال لل ‪ serial port‬ولذلك سيتركز حديثي عما‬


‫يسمى ‪ DE-9‬والمبين بالصورة التالية‬

‫يتكون من ‪pins 9‬‬ ‫ان ‪serial port‬‬


‫موضحة بالجدول التالي‬

‫نحن نحتاج في عملنا كل من ‪ 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

‫اما بالنسبة للكود‬

System.IO.Ports.SerialPort serialPort1 = new


System.IO.Ports.SerialPort();
serialPort1.PortName = "COM1";
serialPort1.Open();
serialPort1.Write("a");
serialPort1.Close();

System.IO.Ports.SerialPort serialPort1= new ystem.IO.Ports.SerialPort();

SerialPort ‫ من نوع‬object ‫ھنا نقوم بتعريف‬

serialPort1.PortName = "COM1";

COM1, COM2, etc ‫ھنا نقوم بوضع اسم البورت‘ وھو عادتا ما يكون‬
‫ كما بالصورة التالية‬device manager ‫ويمكن ان تعرفوا ارقام البورت المتوفر لديكم من‬

26
‫;)(‪serialPort1.Open‬‬

‫ھنا نقوم بفتح البورت الرسال او استقبال الداتا‬


‫;)"‪serialPort1.Write("a‬‬

‫ھنا نقوم بارسال ‪ string‬من خالل البورت‪ ,‬وفي ھذه الحالة ‪ a ,‬وحرف ‪ a‬يحول الى ‪ ASCII‬ثم الى‪binary‬‬
‫اي انه يرسل ‪ 1100001‬من البورت الى الجھاز المتصل اليه بشكل تسلسلي كما شرح سابقا‬

‫;)(‪serialPort1.Close‬‬

‫ھنا نقوم بأغالق البورت‬

‫‪27‬‬
‫ستجدون في المرفقات برنامج يقوم بمراقبة ‪ serial port‬ويقوم باظھار جميع المعلومات المطلوبة وتناقل‬

‫‪free-serial-port-monitor‬‬
‫‪http://www.serial-port-monitor.com/Download/fre‬‬

‫ويمكنكم مراجعة البرنامج الموجود بالمرفقات والذي يحمل اسم ‪Parallel_port2.rar‬‬


‫والذي به ثالثة امثلة عن ‪ serial port‬عملھا واحد ولكن بطرق مختلفة‬

‫‪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‬ولألسف النوع الثاني ھو ما نحتاجه ولكنه نادر الحصول عليه‪.‬‬

‫وھذه بعض االجھزة‬


‫‪serial to USB converter‬‬

‫‪Link 1‬‬

‫‪Link‬‬

‫‪USB to parallel converter‬‬


‫لالسف من النادر جدا ان نجد ‪ USB to parallel converter‬يمكن ان نستخدمه بالتحكم باالجھزة‪ ,‬وكثيال مننا ما نشتري الوصلة الموضحة‬
‫باالسفل وھي متوفرة بكثرة بالسوق‪ ,‬ولكنھا تستخدم في الطابعات وليس بالتحكم‪.‬‬

‫‪29‬‬
‫تطبيقات على ‪Parallel Port‬‬

‫التحكم ب ‪ relay‬عن طريق‪LPT‬‬


‫للتحكم بالريليه من خالل منافذ الكمبيوتر‪ ,‬يجب علينا ان نصنع دائرة الكترونية صغيرة‪ ,‬الن مخارج الكمبيوتر مصممة العطاء اشارة وليست كافية‬
‫لالعطاء كھرباء كافية لتشغيل قطع مثل الريليه‪ ,‬ويمكننا استخدام الريليه ‪ relay‬لتشغيل اي شيء نريد تشغيله عن طريق الكمبيوتر مثل لمبة‪,‬‬
‫مروحة‪ ,‬ثالجة‪ ,‬او اي اجھزة اخرى تعتمد على كھرباء ‪ AC or DC‬سواء كان ‪V 12‬او ‪V.220‬‬
‫او يمكننا وصل اي سلكين ببعض كما سنرى الحقا‪.‬‬

‫‪30‬‬
‫‪- Diod 1‬يستخدم لحماية ‪ LPT‬من التيارات العكسية‬
‫‪- 10k resistance‬ھذه المقاومة تستخدم لحماية الترانزيستور‬
‫‪- 2N3904 transistor‬عند استقبال ‪V 5‬من الكمبيوتر يقوم بتمرير المصدر الثاني للكھرباء وھو ھنا ‪V 12‬وذلك لتشغيل ملف ال‪ , relay‬ونقوم‬
‫باستخدام المصدر الثاني للكھرباء بناءا على قيمة الملف في الريليه‪ ,‬فمن الممكن ان يكون ‪6V,9V,12V, etc‬‬
‫‪- Diod 2‬لحماية الترانزستزر من التيارات العكسية‪ ,‬كما انه يحمي الجھاز عند ضعف ‪ Amp‬في مصدر الطاقة الثاني ‪V 12‬في حال كان بطارية‬
‫‪- Relay‬عند استقبال التيار الكھربائي )ھنا ‪) (V12‬يقوم بجذب الذراع الداخلي به‪ ,‬فيتصل طرفيه ببعض ليسمح بمرور التيار‪ ,‬مثل الصورة التالية‬
‫)انظروا للخط االحمر وھو التوصيل(‬

‫وبالنسبة للكود فال نحتاج اال ان نخرج ‪ 1‬من‪PIN 6‬‬

‫;‪Bin[5]=1‬‬
‫;)]‪Output(0x378, Bin[0‬‬

‫ويمكنكم االستعانة بالجزء السابق من الموضوع لفھم الكود والذي يدعى" التحكم بال" ‪parallel port‬‬
‫والبرنامج الموجود ھناك كافي لتشغيل‪LED or relay‬‬

‫التحكم بال ‪Stepper motor‬‬


‫لقد تحدثت سابقا عن ال ‪ stepper motor‬وطريقة عمله‪ ,‬وھنا سأتحدث عن طريقة التحكم به عن طريق‪LPT‬‬
‫سأتحدث ھنا عن طريقة التحكم بالمحرك الخطوي )‪ (stepper motor‬ذو االربعة ملفات )يوجد به ‪ 5‬اسالك كما تحدثنا سابقا)‬
‫ستجدون الدائرة المستخدة في الصورة‬

‫ھنا نستخدم ‪ IC‬يدعى ‪ULN2003‬‬


‫والذي يقوم بتمرير فرق جھد خارجي قدره من ‪ 12‬الى ‪ 24‬فولت‪ ,‬ويجب االنتباه ھنا انه يتحمل ‪ 500‬ملي امبير فقط‪) .‬اذا ارتم امبير اعلى يمكنكم‬
‫استخدام)‪relay‬‬
‫وھذه ھي ‪ Datasheet‬الخاصة بال‪ULN2003‬‬

‫‪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;
}

‫فالنأخذ جزء من الكود وھو‬


34
‫‪case 1:‬‬
‫;‪Pin2.BackColor = System.Drawing.Color.Green‬‬
‫;‪Pin5.BackColor = System.Drawing.Color.White‬‬
‫;)‪OutFromLPT(1, 0‬‬
‫;)‪OutFromLPT(4, 1‬‬
‫;‪Step = 2‬‬
‫;‪break‬‬

‫‪case 1:‬‬

‫لتحريك الملف االول‬


‫;‪Pin2.BackColor = System.Drawing.Color.Green‬‬
‫;‪Pin5.BackColor = System.Drawing.Color.White‬‬

‫يستخدم ھذا الكود لتلوين ال ‪ button‬المستخدم باللون االخضر‪ ,‬والذي يدل على الملف المراد تحريكه )اخراج الكھرباء له(‬
‫واللون االبيض اي انه غير مستخدم‬

‫;)‪OutFromLPT(1, 0‬‬

‫يقوم باخراج ‪ 0‬من البورت االول )وھو فعليا رقم ‪ ,(2‬وتحدثت سابقا ان القيمة معكوسة بسبب الدائرة ‪ ULN200,‬وھنا ليصل الكھرباء للملف‬
‫االول‬
‫;)‪OutFromLPT(4, 1‬‬

‫يقوم باخراج ‪ 1‬من بورت ‪) 4‬وھو الملف السابق(‪ ,‬وھنا لفصل الكھرباء عن الملف الرابع )الذي يسبقه)‬
‫;‪Step = 2‬‬

‫لالنتقال للخطوة الثانية‬

‫‪35‬‬
‫ويوجد دوائر جاھزة للتحكم بال ‪ relay‬عن طريق ‪ parallel port‬يمكنكم شرائھا من‬
‫االنترنت‪ ,‬وبالنسبة لبرمجتھا ھو نفس الكود الموجود بالشرح في االعلى‪ ,‬ولكنھا دوائر‬
‫جاھزة‬
‫تدعى ‪LPT relay board‬‬
‫ان شرائھا اضمن من بنائھا ‪,‬ولكن بنائھا ارخص‪ ,‬واين التعلم والمتعة في العمل اذا قمنا‬
‫بشراء كل شيء ؟‬

‫وھذا ھو اسم البرنامج بالمرفقات ‪Parallel_port3.rar‬‬

‫طبعا في استخدامنا لل ‪ serial port‬غالبا ما يكون باحدى وسيلتين للسھولة‬

‫‪ .1‬استخدام ‪) serial relay‬كما بالصورة( وھو عبارة عن دائرة جاھزة ترسل اليھا ‪ data‬معينة ليشغل ‪ relay‬معين‪ ,‬وطبعا تقوم ھذه الدائرة فعليا‬
‫بتحويل ال ‪ serial to parallel‬لتحدد الريلي ‪ relay‬المراد تشغيله‬
‫كما ويمكن توصيل ‪ serial port‬بھذا الجھاز )او بالذراع( بشكل السلكي وذلك ما سأتحدث عنه الحقا ان شاء ﷲ‬

‫‪ .2‬للتحكم في الذراع ‪ ARM‬المتصل بالروبوت‬

‫وبالنسبة للتوصيل والبرمجة سأتحدث عنھا في قسمي التحكم والقسم الخاص باالذرع‬

‫‪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/‬‬
‫وھو مجرد مثال آخر وطريقة اخرى للتحكم غير المذكورة سابقا )طريقة اخرى الرسال المعلومات(‬

‫ھذا الكود باستخدام ‪ C#.NET‬للتحكم ب ‪ ProXR‬نقال عن الموقع مع تعديل بسيط‬

‫‪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‬وھو ما يذكر بالكتالوج ايضا‬

‫يمكنكم وضع ال ‪ serial relay‬والتحكم به بشكل السلكي وذلك بتوصيل‬


‫احدى االجھزة التي يمكن ان تنقل اشارة ‪ serial port‬بشكل السلكي‬
‫وتدعى ‪ Wireless Serial Port Adapter‬ويستخدم عادتا تقنية‬
‫‪Bluetooth‬لنقل االشارة ولكنكم تتحكمون به على اساس‬
‫‪ serial‬وليس ‪Bluetooth‬‬

‫‪Parallel_port4.rar‬‬

‫‪38‬‬
‫التحكم في الروبوت‬
‫لقد تحدثت سابقا عن بعض انظمة التحكم ومخارج الكمبيوتر وطرق توصيل الروبوت وصنعه ‪,‬واآلن جاء دور اسھل طريقة للتحكم بالروبوت ‪,‬‬
‫وھي اول طريقة قمت باستخدامھا في صناعة الروبوت الخاص بي والتحكم به كان بداية دخولي ھذا العالم‪.‬‬
‫التحكم بالروبوت باستخدام ‪ control‬الخاص بلعبة السيارة ‪,‬التي نأخذ منه ال‪control and remote control‬‬
‫فنقوم بتوصيل( ‪ control‬المقصود ھنا مستقبل االشارة )في الروبوت( في حال نحن قمنا بصناعته وتوصيل ‪ remote control‬بالكمبيوتر‬

‫عادتا ما يكون جھاز التحكم يحتوي على ‪ 4‬مفاتيح ‪,‬تعمل ھذه المفاتيح بسير السيارة لالمام والخلف ‪,‬يمين ويسار‪ .‬ھذا ابسط انواع التحكم الذي‬
‫نحتاجه‬

‫عادتا ما يكون مبدأ عمل المفتاح ھو بوصل طرفين معدنيين ببعض ‪,‬وعند مالمستھما يقوم بأكمال الدائرة االلكترونية التي تقوم بدورھا بارسال‬
‫اشارة الى المستقبل ‪,‬والذي يقوم باخراج الكھرباء من احدى االسالك الى المتور فتسير السيارة‪.‬‬

‫مھمتنا ھي وصل الطرفين المعدنيين بالكمبيوتر ‪,‬وعندما نرسل اشارة من الكمبيوتر يقوم بوصل الطرفين ‪,‬وعندما نفصل االشارة يقوم بفصل‬
‫الطرفين وذلك باستخدان الريليه‪.‬‬

‫ولكي نبدأ بذلك يجب علينا فھم كيفية عمل ‪ remote control‬الذي نمتلكه‪.‬‬

‫يوجد شكالن مشھوران منه )كما بالصورة(‬


‫اما كبسة‬

‫‪39‬‬
‫او ذراع‬

‫وفي الحاالتان المبدأ واحد ‪,‬وھو مالمسة الطرفين المعدنيين‬

‫سآخذ احدى المتحكمين كمثال ھنا( الذراع ‪),‬وسيمكنكم تطبيقه على المتحكم اآلخر‪.‬‬

‫ھذا شكل المتحكم من الداخل‬

‫بعد فصل االذرع البيض من المتحكم‬

‫‪40‬‬
41
‫ويوجد طريقتان للدوائر لتوصيلھم بال‪LPT‬‬
‫اوال عن طريق‪relay‬‬

‫‪42‬‬
‫وھذه صوؤة موضحه اكثر‬

‫وھذا ھو المخطط من غير‪relay‬‬


‫ولكن دائما افضل استخدام ‪ relay‬لزيادة الحماية للكمبيوتر‬

‫‪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‬‬

‫ولذلك سأكتفي بما تحدثة عنه سابقا في ھذا الموضوع‬


‫ويمكنكم مراجعة الرابطة التالية والتي تحتوي على اجھزة لھذه االنواع‪ ,‬وعادتا ما تأتي مع ‪ component, samples, and manual‬يساعدكم‬
‫على برمجتھا‬
‫‪http://www.relaycontrollers.com Relay Controllers‬‬

‫وذلك يعتمد على الشركة المنتجة للجھاز‬

‫‪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,‬ولكنك تحتاج الى التسجيل اوال‪.‬‬

‫لن أدخل في برمجته باستخدام ‪ .NET‬النه ال يختلف كثيرا عن االكواد السابقة‬

‫التحكم بالروبوت عن طريق ‪Embedded System‬‬


‫ان البرنامج الذي ساستخدمه ھنا للتحكم يشبه برامج ‪ chatting‬وھي بكل بساطة ارسال اوامر من الكمبيوتر االول الى الكمبيوتر الثاني‪ ,‬وبدال من‬
‫عرضھا )كبرامج المحادثة( يقوم بتنفيذھا‪.‬‬

‫ويوجد برنامجين‪ ,‬االول ‪ Server‬والثاني‪Client‬‬

‫‪ Server‬وھو البرنامج الموجود على الكمبيوتر في الروبوت )او المتصل به(‬

‫‪ Client‬ھو البرنامج الذي سيكون في جھاز الكمبيوتر المستخدم في التحكم‬

‫وعملية االتصال كبرمجة موضحة بالصورة‬

‫‪51‬‬
Server Client

ServerSocket(Port #)
Listen()
Accept() Socket(Host,Port #)

Stream Reader Stream Writer

Close() Close()

52
using System.IO;

using System.Net.Sockets;

‫ ﻧﻘﻮم ﺑﺎﺳﺘﺨﺪام هﺬﻩ اﻟﺪوال ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ‬Socket

TcpClient MyTcpClient = new TcpClient("LocalHost", 3000);

NetworkStream NS = MyTcpClient.GetStream();

StreamWriter SW = new StreamWriter(NS);

SW.WriteLine(Commandtxt.Text);

SW.Close();

NS.Close();

MyTcpClient.Close();

TcpClient MyTcpClient = new TcpClient("LocalHost", 3000);

Sever ‫" اي ان‬LocalHost" ‫ وھو في ھذا المثال‬,‫ له‬HostName ‫ او‬IP address ‫ ونقوم باسناد‬TCP ‫ المستخدم وھو‬Protocol ‫نقوم بتعريف‬
)‫موجودون بنفس الجھاز )للتجربة فقط‬and Client
, 1024 ‫ يمكنكم استخدام اي واحد ولكن ينصح ان يكون اعلى من‬port 65535, ‫ وكما ھو معلوم لدينا يوجد بالشبكات‬,3000 ‫ فھو‬Port ‫اما عن‬
‫ محجوزون لبرامج وخدمات معينة‬port 1024 ‫الن اول‬

‫ ليتم االتصال‬Port ‫ على نفس قيمة‬Server and Client ‫يجب ان يكون‬


NetworkStream NS = MyTcpClient.GetStream();
StreamWriter SW = new StreamWriter(NS);

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 = new Thread(new System.Threading.ThreadStart(Listener‬‬

‫;)(‪thread.Start‬‬

‫ھنا نقوم بتفعيل ‪ Threading‬عن الدالة ‪ Listener‬والتي يوجد بھا الكود الخاص بعملية االستماع واالتصال‬

‫;‪TcpListener MyTcpListener‬‬

‫;‪NetworkStream NS‬‬

‫;‪Socket MySocket‬‬

‫;‪StreamReader SR‬‬

‫;)(‪public delegate void MethodInvoker‬‬

‫‪54‬‬
Server‫تعريفات الدوال المستخدمة في برنامج‬

Listener ‫الدالة‬

public void Listener()


{
MyTcpListener = new TcpListener(3000);
MyTcpListener.Start();

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 = new TcpListener(3000);

3000 ‫ وھو‬Port ‫ ونسند له قيمة‬TCP ‫نقوم بتعريف‬

MyTcpListener.Start();
Port‫نبدأ بعملية االستماع الى‬

MySocket = MyTcpListener.AcceptSocket();
NS = new NetworkStream(MySocket);
SR = new StreamReader(NS);

StreamReader‫ ونقرأھا عن طريق‬NetworkStream ‫نقوم باستقبال الرسالة باستخدام‬

55
MethodInvoker invoker1 = new MethodInvoker(delegate()
{
ShowCommand(SR.ReadLine());
}
);

‫ وبعد البحث على االنترنت وجدة انه يجب‬,‫ واجھتني مشكلة ظھور رسالة خطأ‬.NET 2008 ‫ المستقبلة باستخدام‬Message ‫عندما حاولة اظھار‬
‫ ووضع اظھار الرسالة بداخل ليتم حل المشكلة‬Method Invoker ‫استخدام ما يدعى‬

ShowCommand(SR.ReadLine());

‫ والتي تقوم بتنفيذ االمر‬ShowCommand ‫اقوم بارسال االمر )الرسالة( المستقبلة الى دالة‬

private void ShowCommand(string Comm)


{
CommandList.Items.Add(Comm);
switch (Comm)
{
case "Left":
MessageBox.Show("Action 1");
break;

case "Stop":
MessageBox.Show("Action 2");
break;

default:
MessageBox.Show("Wrong Command");
break;
}
}

56
Server Client

ServerSocket(Port #)
Listen()
Accept() Socket(Host,Port #)

Stream Reader Stream Writer

Close() Close()

Serial port ‫ وھذا الكود يمكن ان يتضمن التحكم بال‬,‫ اريده‬Hardware ‫وھنا اقوم بكتابة الكود الخاص بالتحكم بالروبوت والتحكم بأي‬
.‫او اي شيء اريد تنفيذه‬Parallel port

Client.rar ‫ و‬Server.rar ‫وھذه اسماء البرامج في المرفقات‬

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;
}

private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)


{
// ‫يقوم بتوقيف الكاميرا عن العمل‬
this.WebCamCapture.Stop();
}

private void WebCamCapture_ImageCaptured(object source,


WebCam_Capture.WebcamEventArgs e)
{
// MainImage ‫يضع الصورة المأخوذة من الكاميرا في‬
this.MainImage.Image = e.WebCamImage;
}

private void cmdStart_Click(object sender, System.EventArgs e)


{
// ‫يقوم بتغيير سرعة اخذ الصور من الكاميرا‬
this.WebCamCapture.TimeToCapture_milliseconds = (int) this.CaptureTime.Value;
// ‫يقوم بتشغيل الكاميرا‬
this.WebCamCapture.Start(0);
}

private void cmdStop_Click(object sender, System.EventArgs e)


{
// ‫يقوم بتوقيف الكاميرا‬
this.WebCamCapture.Stop();
}

private void button1_Click(object sender, EventArgs e)


{
// ‫يقوم بنسخ لصورة المرادة‬
CopyImage.Image = MainImage.Image;
}

‫طبعا المالحظات ھي الشرح‬


‫ونستفيد من نسخ الصورة لكي نخزنھا الحقا على الكمبيوتر‬

www.planetsourcecode.com ‫جزء من الكود من موقع‬

Webcam.rar ‫واسم البرنامج بالمرفقات‬


60
61
‫تطبيق عملي‬

‫سأقوم اآلن بعرض مشروع عملي لروبوت بسيط لتطبيق على بعض ما سبق‬

‫ھذه الدائرة ھي لوصل الالسلكي الخاص بالروبو ت بالكمبيوتر للتحكم به عن طريق ‪LPT‬‬
‫انا ھذا الجزء مجرد تطبيق مع الصور‪ ,‬ولكن لن تفھمه نھائيا اذا لم تقرأ الموضوع بالكامل‪ ,‬النه ال يوجد اي شرح ھنا‪.‬‬

‫نحتاج ‪ 4‬دوائر ريليه للتحكم بالروبوت‬

‫ھنا نضع ‪Diod‬‬

‫‪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‬‬ ‫سلك‬
‫اخرى‬

‫نقاط لحام‬

‫اسالك غير متصله‬

‫عدت خاليا تشكل ما‬


‫‪Cell‬‬ ‫خلية‬
‫يعرف بالبطارية‬

‫البطارية الكھربائية ھي‬


‫العنصر المسؤل عن‬
‫امداد الدوائر‬ ‫‪Battery‬‬ ‫بطارية‬
‫االلكترونية بالكھرباء‬
‫أضغط ھنا‬
‫أضغط ھنا‬ ‫‪DC‬‬ ‫مصدر مستمر‬
‫أضغط ھنا‬ ‫‪AC‬‬ ‫مصدر متردد‬
‫حماية الدوائر‬
‫‪Fuse‬‬ ‫فاصلة‬
‫الكھربائية أضغط ھنا‬

‫‪Transformer‬‬ ‫محول كھربائي‬


‫في الغالب يستخدم‬
‫لرفع او تقليل الجھد‬ ‫‪Center tap‬‬ ‫محول ذو نقطة في‬
‫الكھربائي‬ ‫‪transformer‬‬ ‫المنتصف‬
‫أضغط ھنا‬
‫‪Air-Core‬‬
‫محول ھوائي‬
‫‪Transformer‬‬
‫التأريض مھم لحماية‬
‫االجھزة الكھربائية ‪,‬‬
‫في الدوائر االلكترونية‬ ‫‪Earth‬‬
‫تأريض‬
‫يستخدم ھذا الرمز ليدل‬ ‫)‪(Ground‬‬
‫على ‪ 0‬فولت او‬
‫الطرف السالب‬

‫مؤشر‬ ‫‪Lamp‬‬ ‫مصباح‬

‫‪74‬‬
‫مصباح‬

‫رمز السخان الكھربائي‬


‫المستخدم في االفران‬
‫‪Heater‬‬ ‫سخان كھربائي‬
‫وبعض االجھزة‬
‫الصناعية والمنزلية‬

‫‪Motor‬‬ ‫محرك‬

‫‪Bell‬‬ ‫جرس‬

‫‪Buzzer‬‬ ‫جرس صغير‬

‫يقوم الملف بتوليد‬


‫مجال مغناطيسي‬
‫‪Coil‬‬ ‫ملف‬
‫بمجردد مرور التيار‬
‫الكھربائي فيه‬
‫فتح وغلق الدوائر‬
‫الكھربائية‬
‫ھذا المفتاح يغلق فقط‬ ‫‪Push Button‬‬ ‫مفتاح ضاغط‬
‫عن الضغط عليه ويبقى‬
‫مفتوح عند تركه‬
‫ھذا المفتاح يفتح فقط‬
‫عن الضغط عليه ويبقى‬ ‫مفتاح ضاغط‬
‫مغلق عند تركه‬
‫مفتاح للتشغيل‬
‫مفتاح تشغيل واطفاء ‪2-way Switch‬‬
‫واالطفاء‬
‫مفتاح كھربائية له‬
‫‪SPDT‬‬ ‫مفتاح مساريين‬
‫مساريين‬
‫مفتاح للتشغيل‬
‫واالطفاء مزدوج‬
‫‪Dual On-Off Switch‬‬
‫يعمل كال المفتاحيين‬ ‫مفتاح مزدوج‬
‫)‪(DPST‬‬
‫في نفس الوقت بمجرد‬
‫الضغط‬

‫مفتاح له مساريين‬ ‫مفتاح مزدوج‬


‫يعمل كال المساريين‬ ‫بمساريين‬
‫‪DPDT‬‬
‫في نفس الوقت بمجرد‬
‫الضغط على المفتاح‬

‫‪75‬‬
‫لتشغيل واطفاء‬
‫‪Relay‬‬ ‫حاكمة‬
‫االجھزة أضغط ھنا‬

‫المقاومة ھي عنصر‬
‫يقاوم تدفق التيار‬
‫‪Resistor‬‬ ‫مقاومة‬
‫الكھربائي في الدائرة‬
‫أضغط ھنا‬
‫مقاومة يمكن تغيير‬ ‫مقاومة متغييرة‬
‫)‪(Rheostat‬‬
‫قيمتھا أضغط ھنا‬ ‫بطرفيين‬

‫مقاومة متغييرة بثالثة‬


‫مقاومة تقسم الجھد‬ ‫)‪(Potentiometer‬‬
‫اطراف‬
‫مقاومة دقيقة في الغالب‬
‫تستخدم داخل الجھاز‬
‫مقاومة متغييرة دقيقة )‪(Preset‬‬
‫لمعايرة الدائرة‬
‫االلكترونية‬
‫مكثف التحكم في تدفق‬
‫للشحنة الكھربائية في‬
‫‪Capacitor‬‬ ‫مكثف‬
‫الدائرة االلكترونية ‪.‬‬
‫أضغط ھنا‬
‫يثبت ھذا النوع من‬
‫‪ Capacitor, polarised‬المكثفات بحسب قطبية‬ ‫مكثف قطبي‬
‫اطرافه أضغط ھنا‬

‫مكثف تضبط قيمته‬


‫‪Variable Capacitor‬‬ ‫مكثف متغيير‬
‫أضغط ھنا‬

‫لضبط ومعايرة اجھزة‬


‫‪Trimmer Capacitor‬‬ ‫مكثف ضبط دقيق‬
‫الالسلكي‬

‫أضغط ھنا‬ ‫‪Diode‬‬ ‫ثنائي ‪ -‬دايود‬

‫‪LED‬‬
‫أضغط ھنا‬ ‫ثنائي ضوئي‬
‫‪Light Emitting Diode‬‬
‫ثنائي يعمل بأنحياز‬
‫عكسي عن جھد محدد‬ ‫‪Zener Diode‬‬ ‫ثنائي زنر‬
‫اضغط ھنا‬
‫ثنائي يعمل عند تسليط‬
‫ثنائي مستقبل للضوء ‪Photodiode‬‬
‫الضوء عليه‬

‫ثنائي يعمل عند تسليط‬


‫نبضة على قاعدته‬ ‫‪thyristor - SCR‬‬ ‫الثايرستور‬
‫أضغط ھنا‬

‫‪76‬‬
‫عنصر ثنائى االتجاه‬
‫يمكنه التحول من حالة‬
‫‪Diac‬‬ ‫الداياك‬
‫القطع الى حالة‬
‫التوصيل أضغط ھنا‬
‫عنصر يتعامل مع‬
‫التيار المتردد أضغط‬ ‫‪Triac‬‬ ‫الترياك‬
‫ھنا‬
‫الثنائيات السعوية او‬ ‫‪Varactor or Tuning‬‬
‫ثنائي سعوي‬
‫الفاراكتور اضغط ھنا‬ ‫‪or Varicap Diode‬‬

‫عنصر شبه موصل‬


‫ينتمي لعائلة‬ ‫‪SIDAC‬‬ ‫السيداك‬
‫الثايرستور أضغط ھنا‬

‫ترانزيستور ثنائي‬
‫‪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‬‬
‫كوارتز‬

‫عنصر يحول اھتزاز‬


‫الصوت الى اشارة‬ ‫‪Microphone‬‬ ‫مايك‬
‫كھربائية‬
‫عنصر يحول االشارة‬
‫الكھربائية الى‬ ‫‪Earphone‬‬ ‫سماعة أذن‬
‫اھتزازات صوتية‬

‫عنصر يحول االشارة‬


‫الكھربائية الى‬ ‫‪Speaker‬‬ ‫سماعة كبيرة‬
‫اھتزازات صوتية‬

‫‪77‬‬
‫عنصر يقوم بتضخيم‬
‫االشارة الكھربائية‬ ‫‪Amplifier‬‬ ‫مكبر أشارة‬
‫أضغط ھنا‬

‫استقبال األشارات‬ ‫‪Aerial‬‬


‫ھوائي‬
‫الالسلكية‬ ‫)‪(Antenna‬‬

‫مصدر تغذية مستمر‬

‫مصدر تغذية متردد‬

‫مقاومة تقل قيمتھا كلما‬


‫زادت قوة الضوء‬
‫‪LDR‬‬ ‫مقاومة ضوئية‬
‫المسلط عليھا أضغط‬
‫ھنا‬
‫مقاومة تتأثر قيمتھا‬
‫بشكل كبير مع تغير‬
‫‪Thermistor‬‬ ‫مقاومة حرارية‬
‫درجة الحرارة أضغط‬
‫ھنا‬
‫عنصر يستخدم لحماية‬
‫الدوائر الكھربائية‬ ‫‪Varistor‬‬ ‫الفاريستور‬
‫أضغط ھنا‬
‫المفتاح المغناطيسي‬
‫‪Reed Switch‬‬ ‫المفتاح المغناطيسي‬
‫أضغط ھنا‬

‫‪Tube, Triode‬‬ ‫صمام‬

‫‪Tube, Tetrode‬‬

‫‪Tube, Pentode‬‬

‫‪Tube, Diode‬‬

‫ملحق رقم ‪2‬‬


‫‪Computer Ports‬‬

‫‪78‬‬
wikipedia ‫نقال عن‬

USB

USB

Firewire

IEEE 1394 interface

Ethernet port

Ethernet over twisted pair using


category 5 cable 8P8C

Serial port

RS-232

Parallel port IEEE 1284

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

IEC connector IEC 60320

81

You might also like