تسميات
إنتبه إلى أنه قد اعتمدنا التسميات التالية خلال هذه السلسلة:
تجد جميع مصطلحات مقالات هذه السلسلة في قاموس المصطلحات التابع لها. |
ملفات المقال
يمكنك تحميل ما يلي للاستفاذة أكثر من المقال: |
محاضرة المقال
برتوكولات الاتصال
تتفرع بروتوكولات الاتصال بشكل عام إلى فرعين رئيسيين:
|
الإتصالات المتوازية |
الإتصالات المتتالية |
|
المـتزامن |
اللامتزمنة |
|
LPT EISA VESA PCMCIA |
I2C SPI PS2 |
RS-232 (COM Port) Universal Serial Bus (USB) |
مفاهيم أساسية في الاتصالات المتتالية غير المتزامنة
أولاً: الاتصالات المتواقتة (المتزامنة) يكون فيها بروتوكول الإرسال مؤلف من خطين على الأقل أحدهما خط التزامن (clock)، وبالتالي فإن سرعة إرسال البيانات تتحدد من خلال تردد إشارة التزامن بحيث يتم إرسال كل زوج من الأزواج متتالياً عند جبهة التزامن (صاعدة أو هابطة). |
|
|
|
الشكل 1: إشارة البيانات وإشارة التزامن في بروتوكول إرسال متزامن |
|
ملاحظة: بازدياد المسافة بين الطرفيتين فإنه يحصل انحراف\انزياح بين إشارة التواقت وبين إشارة البيانات مما يؤدي إلى فشل عملية النقل.
ثانياً: اتصالات غير متواقتة (غير متزامنة): لا تحوي على خط تزامن وإنما يتم بدء عملية الإرسال بإرسال زوج بدء الإرسال (Start Bit) والذي بدوره يعلم المستقبل أن الذي يليه هو ثمن واحد من البيانات، وبعدها يتم إرسال الثمن المطلوب وتنتهي عملية إرسال الثمن بإرسال زوج التوقف (Stop Bit) والذي بدوره يعلم المستقبل أن عملية إرسال الثمن قد انتهت ويجب تخزين الثمن في مسجل نافذة الاستقبال والتحضر لاستقبال الثمن التالي إن وجد. |
|
|
|
الشكل2: إشارة البيانات في بروتوكول إرسال غير متزامن |
|
ملاحظة: بخلاف الاتصالات المتواقتة فإن ازدياد المسافة بين الطرفيتين لا يؤدي إلى فشل عملية النقل، كما أن هذه الطريقة أقل كلفة وأبسط بنية وأسهل برمجة.
|
|
الإرسال أحادي الاتجاه (Half-Duplex):تتم فيه عملية الاتصال بين الطرفيتين باتجاه واحد فقط في نفس اللحظة الزمنية، فإما أن تكون في حالة إرسال أو استقبال.
الإرسال ثنائي الاتجاه (Full-Duplex):يمكن أن تكون الوحدة الطرفية في حالة إرسال واستقبال في نفس اللحظة الزمنية.
خانة الإيجابية (Parity Bit):خانة يضيفها المرسل ويستخدمها المستقبل لضمان عدم ضياع المعلومات، وتتعلق خانة الإيجابية بعدد الواحدات في الثمن المرسل. |
|
|
|
|
|
الشكل 3: توضع خانة الإيجابية في إشارة البيانات لبروتوكول إرسال غير متزامن |
|
في حال كون خانة الإيجابية “Even” فإن هذه الخانة تملك القيمة “0” إذا كان عدد الواحدات في الثمن المرسل زوجي وإلا فستصبح “1”. الأمثلة التالية توضح ذلك. 10110010 > Parity Bit = 0 | 10110110 > Parity Bit = 1
في حال كون خانة الإيجابية “Odd” فإن هذه الخانة تملك القيمة “0” إذا كان عدد الواحدات في الثمن المرسل فردي وإلا فستصبح “1”. الأمثلة التالية توضح ذلك. 10110010 > Parity Bit = 1 | 10110110 > Parity Bit = 0
عدد الأزواج لكل محرف (N):يتم فيها التصريح عن عدد الأزواج لبايت البيانات التي سيتم إرسالها، فإما أن تكون 5, 6, 7 or 8bit، ولكن يجب الانتباه مثلاً: في حال إرسال N=7bit فإن قيم العظمى ASCII=127. |
|
|
|
الشكل 4: مثال عن عدد أزواج مختلف 7|8 في إشارتي بيانات لبروتوكول إرسال غير متزامن |
|
خانة زوج التوقف (Stop Bit): يعلم المرسل من خلالها المستقبل بانتهاء عملية الإرسال.1, 1.5 أو 2 زوج. |
|
|
|
الشكل 5: توضع خانة زوج التوقف في نهاية إشارة البيانات لبروتوكول إرسال غير متزامن |
|
معدل سرعة النقل (Baud Rate):وهو عدد الأزواج المرسلة خلال ثانية واحد على خط اتصال متتالي، وهناك قيم قياسية متعارف عليها لمعدلات النقل وهي: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, إلخ…
إن الزمن اللازم لإرسال زوج واحد يعطى بالعلاقة التالية: BitTime = 1Baud Rate
إن عدد البايتات التي يمكن إرسالها خلال ثانية واحدة يمكن حسابها من العلاقة التالية: BytesNum / 1sec = Baud Rate8 |
النافذة المتتالية UART
تعتبر هذه النافذة من أكثر نوافذ الاتصال المتتالي استخداماً في الأنظمة الرقمية ومبدأ عملها وكذلك بروتوكولها متوافق تماماً مع البروتوكول RS232 إلا أن المستويات المنطقية فيها وفق المنطق TTL، وتتميز بسهولة وبساطة استخدامها بالإضافة إلى الكلفة المنخفضة للربط بين متحكمين (MCU-MCU)، أو الربط بين حاسب ومتحكم (MCU-PC).
ملاحظة: الكلمة UART هي اختصار لـ Universal Asynchronous Receiver and Transmitter Interface |
|
الشكل 6:الربط بين متحكمين من خلال النافذة UART |
تملك النافذة المتتالية في متحكمات العائلة AVR على ميزات عديدة وهي تعمل في نمطين مستقلين:
|
بنية إطار البيانات للنافذة UART
إن تشكيل إطار البيانات المرسلة أو المستقبلة للنافذة UART مشابه تماماً لبنية إطار البروتوكول RS232 باختلاف وحيد وهو المستوى المنطقي المعكوس. |
|
الشكل 7: بنية إطار البيانات المرسلة أو المستقبلة للنافذة UART |
IDLE: لا توجد إرسالات على خط الإتصال (RxD أو TxD)، خـط IDLE مرتفع.
|
حساب قيمة مسجل معدل النقل
(Baud Rate Register)
من أجل تحديد معدل سرعة النقل للنافذة المتتالية يتم شحن المسجل UBRR بقيمة تحسب وفقاً للعلاقات في الشكل8. |
|
الشكل 8: معادلات حساب قيمة المسجل UBRR الموافقة لمعدل النقل |
حيث أنّ: UBRR هي محتوى المسجل UBRRH و UBRR وتتراوح من 0 إلى 4095. مثال: أحسب قيمة المسجل UBRR من أجل تردد هزاز كريستالي 1Mhz ومعدل نقل 9600bps ونمط عمل عام غير متواقت. UBRRH,L= fOSC / (16 × Baud) - 1= 1000000 / (16 × 9600) - 1= 5.510416 ≈ 6
كما هو ملاحظ فإن القيمة غير دقيقة أي أن هناك خطأ في قيمة معدل النقل ولن تكون القيمة تماماً 9600، وبالتالي إذا كانت دارة المستقبل تعتمد تردد عمل مختلف وكان الخطأ مختلف فإنه ربما يحصل تشوه في البيانات بسبب عدم التزامن الدقيق في معدل النقل.
لذلك يوصى بمعدلات نقل قياسية وترددات هزازات كريستالية قياسية لتفادي الأخطاء الكبيرة في حساب معدلات النقل، بحيث أن الخطأ يجب أن لا يتجاوز 0.5% من أجل الحصول على وثوقية عمل عالية؛ لكن يمكن أن يعمل النظام بدون مشاكل حتى خطأ 5%. يمكن حساب الخطأ من العلاقة التالية: ERROR[%] = (BaudRateCloseMatch / BaudRateCalculated - 1) × 100%
مثال: من أجل نفس المثال السابق، نعوض في العلاقة السابقة: ERROR[%] = (9600 / 8928.571 - 1) × 100%= 7.52%
ملاحظة: من أجل تفادي مشكلة أخطاء معدل النقل قم باختيار تردد الهزاز الكريستالي بحيث يكون من مضاعفات معدل النقل. |
تحقيق اتصال بين طرفيتين في برتوكول UART
هناك بارامترات يجب تحديدها بين المرسل والمستقبل قبل إرسال البيانات في الاتصالات غير المتواقتة وهي:
عموماً، فإنه من أجل تحقيق اتصال بين طرفيتين بدون مصافحة يكفي توصيل قطب الإرسال “TxD” والاستقبال “RxD” على التوازي المتعاكس كما في الشكل التالي: |
|
الشكل 9: تحقيق اتصال بين طرفيتين من خلال النافذة UART |
نمطي البيانات في الاتصالات المتتالية
1- نمط الآسكي (Ascii Mode): يتم تمثيل كل خانة على أنها محرف مستقل ويتم إرسال قيمة الآسكي لهذا المحرف. مثال: التعليمة “Print 123” ستقوم بإرسال الأرقام (1,2,3) على أنها محارف، وبالتالي سترسل الآسكي لكل منها [49][50][51] – بالنتيجة سترسل ثلاث بايتات. 2- النمط الثنائي (BIN Mode): يتم تمثيل البيانات على أنها قيمة عديدة وليس محرفية ويتم إرسال القيمة الثنائية لهذا العدد. مثال: التعليمة “Printbin 123” ستقوم بإرسال القيمة (123) على أنها ثمن واحد، وبالتالي سترسل [1111011] – بالنتيجة سترسل ثمن واحد فقط. |
التعامل مع النافذة UART في Bascom-AVR
|
شرح التعليمة |
التعليمة البرمجية |
تحديد معدل النقل العام للنافذة المتتالية UART0. |
$baud= Var |
إرسال البيانات عبر النافذة المتتالية UART0. |
Print Var ;"const" |
إرسال البيانات بصيغة ثنائية عبر النافذة المتتالية UARTx. [; Varn]: خيار من أجل تحديد عدد البايتات المراد إرسالها (مصفوفة). |
Printbin Var [; Varn] |
قراءة البيانات الواردة على النافذة المتتالية UART0. ["prompt"]: خيار يقوم بإرسال رسالة نصية قبل قراءة محتوى النافذة. Var: المتحول الذي سيتم إدخاله (رقمي، محرفي). [,Varn]: خيار من أجل إدخال أكثر من متحول بنفس التعليمة (n=1,2…). |
Input["prompt"], Var [,Varn] |
قراءة البيانات الواردة على النافذة UART0 بصيغة ثنائية. [,Var2]: خيار من أجل تحديد عدد البايتات المراد إدخالها (مصفوفة). |
Inputbin Var1 [,Var2] |
قراءة البيانات الواردة على النافذة UART0 بالصيغة HEX. |
Inputhex["prompt"],Var[,Varn] |
تعود بقيمة الـ Ascii لأول محرف في مسجل buffer النافذة UART0. |
var =INKEY() |
ينتظر وصول أول محرف إلى مسجل buffer النافذة المتتالية UART0 ويعود بقيمة الـ Ascii له. |
var =WAITKEY() |
يفحص محتوى buffer مسجل النافذة UART0 ويعود بالقيمة “1” إذا كان هناك أي محرف، وإلا فسوف يعود بالقيمة “0“، مع العلم أن هذه التعليمة تفحص محتوى المسجل ولا تؤثر على محتواه! |
Var =Ischarwaiting() |
ملاحظة 1: من أجل إرسال أكثر من متحول على نفس السطر يمكن استخدام (;) للفصل بين المتحولات (Print A ; B ; C) ملاحظة 2: إن التعليمة Printbin مكافئة تماماً للتعليمة Print Chr (var); ملاحظة 3: يمكن استخدام التعليمة Printbin من أجل إرسال عدة متحولات مخزنة في مصفوفة؛ كما في المثال التالي سوف يتم إرسال عشر بايتات موجودة في المتحول (مصفوفة) Arr. Printbin Arr(1) ; 10 ملاحظة 4: يمكن استخدام التعليمة Inputbin من أجل إدخال عدة متحولات وإسنادها إلى مصفوفة؛ كما في المثال التالي سوف يتم استلام عشر بايتات ووضعها في المصفوفة Arr. Inputbin Arr(1) , 10 ملاحظة 5: إن التعليمة Inputbin سوف تنتظر حتى تستلم جميع البايتات المحددة في متحولاتها! |
تطبيق: ربط متحكمي AVR من خلال النافذة المتتالية UART
تقديم
المطلوب وصل متحكمي AVR من خلال النافذة المتتالية UART بحيث يتم إرسال أوامر تحكم بينهما على الشكل التالي: |
|
عند الضغط على المفتاح الموصول مع المتحكم MCU-A سيتم إرسال المحرف “A” من MCU-A إلى MCU-B، وعندما يستلم المتحكم MCU-B المحرف “A” سيقوم بتغيير حالة الثنائي D2. وبالمثل تماماً: عند الضغط على المفتاح الموصول مع المتحكم MCU-B سيتم إرسال المحرف “B” من MCU-B إلى MCU-A، وعندما يستلم المتحكم MCU-A المحرف “B” سيقوم بتغيير حالة الثنائي D1. |
|
الشكل 10: المخطط التمثيلي لربط المتحكمين من خلال النافذة UART |
|
|
|
الشكل 11: يبين طريقة الوصل للنافذة المتتالية بين المتحكمين |
البـرمجة
البرنامج “Exp.18-A.bas” للمتحكم MCU-A في بيئة BASCOM-AVR: '-----------------------[Definitions] '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ '--->[Main Program] البرنامج “Exp.18-B.bas” للمتحكم MCU-B في بيئة BASCOM-AVR: '-----------------------[Definitions] '--->[Main Program] |
حلول التطوير باستخدام منفذ الاتصالات المتتالي USB
تعتبر تقنية USB في الوقت الحالي من التقنيات المعقدة حيث أن تضمين منفذ USB في النظام الإلكتروني وكتابة برنامج القيادة الخاص به على الحاسب أمر شديدة التعقيد، وذلك لأنه يتوجب على المصمم تحقيق أمرين:
لذلك وبسبب الطلب المتزايد على هذه التقنية واقتحامها للسوق العالمية فإن هنالك الكثير من الشركات التي وفرت على المصممين عناء تصميم العتاد الالكتروني لينصّب اهتمامهم على كتابة برامج القيادة، لذلك كل ما يتوجب على المصمم هو الاطلاع على معايير USB بغرض فهم كيفية التعامل مع هذا العتاد الالكتروني. تقدم بعض الشركات حلولاً للتعامل مع المنفذ USB باستخدام شرائح متكاملة تقوم على تحويل البروتوكول USB إلى نافذة متتالية UART تمكن المستخدم من توصيل المتحكم المصغر بشكل مباشرة مع هذه النافذة، بالإضافة إلى ذلك توفر هذه الشرائح حلولاً برمجية من خلال مكتبات ربط ديناميكية من أجل ربط نظام مع الحاسب عن طريق البروتوكول USB ومعالجة بارامترات النظام أو إرسال أوامر التحكم إلى النظام. من أشهر وأكثر الشرائح انتشاراً واستخداماً هي الدارة المتكاملة FT232 التي هي عبارة عن دارة تحويل USB<>UART التي تنتجها شركة FTDI. |
|
الشكل 12: واجهتي الربط (نمطي العمل) للشريحة FT232R المخصصة للتحويل UART<>USB
|
حيث أن عملية تحويل البروتوكول USBتم بنائها في داخل هذه الشريحة ككيان صلب (Hardware) دون الحاجة إلى برمجة الشريحة، حيث تؤمن هذه الشريحة واجهتي ربط ديناميكي للتعامل برمجياً مع المنفذ باستخدام توابع خاصة وجاهزة موجودة في مكتبات الربط الديناميكي للشريحة دون الحاجة إلى بناء البروتوكول USB بشكل برمجي من البداية أو حتى فهم مبدأ عمله. إن واجتهي الربط (D2XX driver و VCP driver) التي تؤمنها هذه الشريحة موضحة على الشكل 12.
فيما يلي جدول مقارنة بين واجتهي الربط (D2XX driver و VCP driver) للشريحة FT232R: |
VCP Driver |
D2XX.DLL Driver |
|
بساطة البرنامج |
برنامج بسيط |
برنامج معقد |
السرعة |
سرعة ثابتة لا يمكن تغيرها 300KB/s |
سرعة قابلة للتغيير تصل إلى 3MB |
التحكم بالشريحة |
لا يمكن التحكم بالشريحة |
تحكم كامل ومباشر بالشريحة |
|
الشريحة FT232R (دارة متكاملة مخصصة للتحويل UART<>USB)
|
|
تلعب هذه الشريحة دور الملائم بين منفذ USB وبين النظام حيث تقوم باستقبال بيانات منفذ USB وتستخلص منها البيانات المطلوبة، كما تقوم بإرسال البيانات من المتحكم بشكلها المتتالي إلى منفذ USB بعد إضافة الحقول اللازمة لتحقيق بروتوكول USB. |
|
ربط متحكم AVR من خلال النافذة UART (TTL)i مع منفذ USB (Differential)i
|
الشكل 13: المخطط التمثيلي لربط متحكم AVR مع منفذ USB من خلال الشريحة FT232R |
|
الشكل 14: مخطط التوصيل (Schematic) لربط متحكم AVR مع منفذ USB من خلال الشريحة FT232R |
إن التعامل فيزيائياً مع الشريحة FT232R يعتبر أمراً صعباً لعدم توفرها في غلاف فيزيائي من النوع DIP وهي فقط متوفرة كعنصر SMD، لذلك يمكن استخدام موديول التحويل UART<>USB الجاهز “Nawatt neXus” أو أي موديول آخر مشابه. |
|
الشكل 15: موديول “Nawatt neXus” |
يمتلك الموديول العديد من الأقطاب، ولكن يلزمنا فقط الأقطاب التالية:
|
تطبيق: إرسال البيانات بين متحكم AVR والحاسب باستخدام الأشعة تحت الحمراء
تقديم
إن عملية إرسال البيانات بين متحكم AVR من خلال النافذة UART (TTL)i والحاسب عبر منفذ USB (Differential)i ستتم في هذا التطبيق باستخدام الأشعة تحت الحمراء، وبالتالي سيتضمن التصميم دارتين: |
|
|
|
|
|
الشكل 16: مخطط التوصيل (Schematic) لدارة الإرسال بالأشعة تحت الحمراء ووصلها مع القطب TXD للمتحكم |
دارة الإرسال للأشعة تحت الحمراء
وهي عبارة عن مرسل أشعة تحت الحمراء (IR LED) متحكم به عن طريق مفتاح إلكتروني ترانزستوري (Q1). إن التيار الاسمي للثنائي LED يترواح بين 25 و100 ميليأمبير وكلما ازدادت قيمة التيار ازدادت استطاعة الإرسال وجهد العمل للثنائي 2V (R2 = 30Ω)i. |
|
تم توصيل مدخل دارة الإرسال إلى قطب الإرسال للنافذة المتتالية UART للمتحكم. وبالتالي فإن جميع البيانات الصادرة من النافذة على القطب TXD سوف ترسل على شكل ثنائي (0,1) على المرسل IR-LED. |
|
|
|
الشكل 17: مميزة عمل المتصل الضوئي Photodiode |
دارة الاستقبال للأشعة تحت الحمراء
وهي عبارة عن متصل ضوئي (Photodiode) محيز عكسياً بحيث أنه عندما يتم تسليط ضوء على نافذة الثنائي التي تمثل المنطقة الفاصلة بين المتصل P/N يقوم على تمرير كمية أكبر من التيار كما هو مبين على مميزة العمل في الشكل17. عندما يكون الثنائي في الظلام فإن مقاومة الثنائي تكون كبيرة جداً (بالميغا أوم)، وعندما يتم تسليط الضوء على الثنائي تصبح مقاومته بضع كيلو أوم، كما أن تغير شدة الضوء الساقط على الثنائي سيؤدي إلى تغير مطال الخرج على طرفي المقاومة R3، وبالتالي سنستخدم قادح شميث 74HC14 لتثبيت المطال بحيث تتأرجح إشارة الخرج بين القيمة “0” (عندما يرسل المرسل القيمة المنطقية “0”) والقيمة “1” (عندما يرسل المرسل القيمة المنطقية “1”). |
|
يبين الشكل18 مخطط دارة الاستقبال وتوصيلها مع القطب RXD لموديول الوصل مع الحاسب neXus. |
|
|
|
الشكل 18: مخطط التوصيل لدارة الاستقبال بالأشعة تحت الحمراء ووصلها مع القطب RXD للموديول neXus |
البـرمجة
البرنامج “Exp.19.bas” في بيئة BASCOM-AVR: '-----------------------[Definitions] |
سيقوم البرنامج بإرسال (TXD) العبارة “Hello World” كل 50 ميلي ثانية على النافذة المتتالية (UART) بشكل مستمر. على الطرف الآخر سيكون المستقبل (Photodiode) موصل مع منفذ USB من خلال الموديول neXus وبالتالي يمكن عرض القيم المستقبلة من خلال النافذة Terminal – الشكل19. |
|
الشكل 19: خرج دارة الاستقبال في نافذة Terminal في الحاسب |
في حال طلب استقبال البيانات من خلال متحكم آخر بدل الحاسب وعرضها على شاشة إظهار LCD فيتم ذلك بتوصيل خرج دارة الاستقبال إلى القطب RXD للمتحكم الآخر وسيكون البرنامج على الشكل التالي: |
البرنامج “Exp.20.bas” في بيئة BASCOM-AVR: '-----------------------[Definitions] |
سوف تقوم الدالة “Ischarwaiting()i” بفحص محتوى مسجل الدخل للنافذة المتتالية UART وفي حال ورود بيانات سيتحقق الشرط (Ischarwaiting()= 1) ويتم قراءة البيانات الواردة (Var =Inkey()i) وعرضها على شاشة LCD. |
تطبيق: إرسال البيانات بين متحكم AVR والحاسب باستخدام الليزر
تقديم
إن عملية إرسال البيانات بين متحكم AVR من خلال النافذة UART (TTL)i والحاسب عبر منفذ USB (Differential)i ستتم في هذا التطبيق باستخدام أشعة الليزر، وبالتالي سيتضمن التصميم دارتي الإرسال والإستقبال. |
دارة الإرسال لأشعة الليزر
وهي عبارة عن مرسل ليزري (Laser LED) متحكم به عن طريق مفتاح إلكتروني ترانزستوري (Q1). إن التيار الاسمي للثنائي LED يترواح بين 25 و100 ميليأمبير وكلما ازدادت قيمة التيار ازدادت استطاعة الإرسال وجهد العمل للثنائي 2V (R2 = 30Ω)i. تم توصيل مدخل دارة الإرسال إلى قطب الإرسال للنافذة المتتالية UART للمتحكم. وبالتالي فإن جميع البيانات الصادرة من النافذة على القطب TXD سوف ترسل على شكل ثنائي (0,1) على المرسل Laser-LED. |
|
|
|
|
|
الشكل 20: مخطط التوصيل (Schematic) لدارة الإرسال بأشعة الليزر ووصلها مع القطب TXD للمتحكم |
دارة الاستقبال لأشعة الليزر
وهي عبارة عن ترانزستور ضوئي (Phototransistor) محيز أمامياً بحيث أنه عندما يتم تسليط ضوء على نافذة الترانزستور التي تمثل القاعدة فسوف يقوم الترانزستور بتمرير كمية أكبر من التيار كما هو مبين على مميزة العمل في الشكل21. |
|
|
|
||
الشكل 21: مميزة عمل الترانزستور الضوئي
|
||
عندما يكون الترانزستور في الظلام فإن مقاومة الترانزستور تكون كبيرة جداً (بالميغا أوم) وسيكون في حالة القطع، وعندما يتم تسليط الضوء سوف يفتح الترانزستور، كما أن تغير شدة الضوء الساقط على الترانزستور سيؤدي إلى تغير مطال الخرج على طرفي الترانزستور، وبالتالي سنستخدم قادح شميث 74HC14 لتثبيت المطال بحيث تتأرجح إشارة الخرج بين القيمة “0” (عندما يرسل المرسل القيمة المنطقية “0”) والقيمة “1” (عندما يرسل المرسل القيمة المنطقية “1”). الشكل22 يبين مخطط دارة الاستقبال وتوصيلها مع القطب RXD لموديول الوصل مع الحاسب neXus. |
|
|
|
||
الشكل 22: مخطط التوصيل لدارة الاستقبال بالأشعة تحت الحمراء ووصلها مع القطب RXD للموديول neXus |
البـرمجة
البرنامج “Exp.19.bas” في بيئة BASCOM-AVR: '-----------------------[Definitions] |
سيقوم البرنامج بإرسال (TXD) العبارة “Hello World” كل 50 ميلي ثانية على النافذة المتتالية (UART) بشكل مستمر. على الطرف الآخر سيكون المستقبل (Phototransistor) موصل مع منفذ USB من خلال الموديول neXus وبالتالي يمكن عرض القيم المستقبلة من خلال النافذة Terminal – الشكل 23. |
|
الشكل 23: خرج دارة الاستقبال في نافذة Terminal في الحاسب |
في حال طلب استقبال البيانات من خلال متحكم آخر بدل الحاسب وعرضها على شاشة إظهار LCD فيتم ذلك بتوصيل خرج دارة الاستقبال إلى القطب RXD للمتحكم الآخر وسيكون البرنامج هو نفسه البرنامج “Exp.20.bas”.
بالنتيجة فإن مشروع إرسال واستقبال البيانات باستخدام الأشعة تحت الحمراء مشابه تماماً لمشروع إرسال واستقبال البيانات باستخدام الليزر والاختلاف الوحيد هو باستبدال مرسل الأشعة تحت الحمراء بمرسل ليزري واستبدال الثنائي الضوئي بترانزستور ضوئي. |
تطبيق: إرسال البيانات بين متحكم AVR والحاسب باستخدام الموجات المذياعية
تقديم
إن عملية إرسال البيانات بين متحكم AVR من خلال النافذة UART (TTL)i والحاسب عبر منفذ USB (Differential)i ستتم في هذا التطبيق باستخدام الأمواج المذياعية RF، وبالتالي سيتضمن التطبيق دارتي الإرسال والإستقبال. |
دارة الإرسال للأمواج المذياعية
وهي عبارة عن مرسل مذياعي (RF Transmitter) على شكل موديول جاهز يعمل بجهد 5V ويملك أربعة اقطاب (+5V, GND, ANT, DI). تم توصيل مدخل البيانات لموديول الإرسال (DI) إلى قطب الإرسال للنافذة المتتالية UART للمتحكم. وبالتالي فإن جميع البيانات الصادرة من النافذة على القطب TXD سوف ترسل على شكل ثنائي (0,1) على قطب إرسال البيانات للموديول RF. |
دارة الاستقبال للأمواج المذياعية
وهي عبارة عن مستقبل مذياعي (RF Receiver) على شكل موديول جاهز يعمل بجهد 5V ويملك أربعة اقطاب (+5V, GND, ANT, DO).. تم توصيل مخرج البيانات المستقبلة (DO) لموديول الاستقبال إلى قطب الاستقبال للنافذة المتتالية UART للموديول neXus. الشكل22 يبين مخطط دارة الاستقبال وتوصيلها مع القطب RXD لموديول الوصل مع الحاسب neXus. |
|
الشكل 24: مخطط التوصيل (Schematic) لدارة الإرسال والاستقبال بالأمواج المذياعية |
البـرمجة
البرنامج هو نفسه البرنامج “Exp19.bas”، وبالنتيجة فإن مشروع إرسال واستقبال البيانات باستخدام الأمواج المذياعية مشابه تماماً لمشروع إرسال واستقبال البيانات باستخدام الأشعة تحت الحمراء والاختلاف الوحيد هو باستبدال مرسل الأشعة تحت الحمراء بمرسل مذياعي واستبدال الثنائي الضوئي بمستقبل مذياعي.وفي حال طلب استقبال البيانات من خلال متحكم آخر بدل الحاسب وعرضها على شاشة إظهار LCD فيتم ذلك بتوصيل خرج دارة الاستقبال إلى القطب RXD للمتحكم الآخر وسيكون البرنامج هو نفسه البرنامج “Exp.20.bas”. |
تطبيق: ربط موديول GPS مع متحكم AVR من خلال النافذة UART
تقديم
يستخدم هذا الجهاز لتحديد موقع أي نقطة على الأرض من حلال مجموعة من الحسابات على البيانات المستقبلة من الأقمار الصناعية وقد تقدم أثناء عرض المحاضرة الثامنة (Session_08_CE_2012.wmv) مبدأ عمل نظام الـGPS وكذلك حزم البيانات التي يتم بثها من الأقمار الصناعية المخصصة لنظام الملاحة العالمي وكيف يتم استقبالها من خلال موديول استقبال “GPS Receiver Module”. |
$GPGGA,092750.000,5321.6802,N,00630.3372,W,1,8,1.03,61.7,M,55.2,M,,*76 $GPGSA,A,3,10,07,05,02,29,04,08,13,,,,,1.72,1.03,1.38*0A $GPGSV,3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30*70 $GPGSV,3,2,11,02,39,223,19,13,28,070,17,26,23,252,,04,14,186,14*79 $GPGSV,3,3,11,29,09,301,24,16,09,020,,36,,,*76 $GPRMC,092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280511,,,A*43 $GPGGA,092751.000,5321.6802,N,00630.3371,W,1,8,1.03,61.7,M,55.3,M,,*75 $GPGSA,A,3,10,07,05,02,29,04,08,13,,,,,1.72,1.03,1.38*0A $GPGSV,3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30*70 $GPGSV,3,2,11,02,39,223,16,13,28,070,17,26,23,252,,04,14,186,15*77 $GPGSV,3,3,11,29,09,301,24,16,09,020,,36,,,*76 $GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A*45 |
(reference: http://www.gpsinformation.org/dale/nmea.htm) الشكل 25: مثال عن الحزم المستقبلة على خرج موديول GPS. |
في هذا التطبيق سوف نتعامل مع إحدى حزم البيانات المستقبلة من خلال الموديول وهي الحزمة $GPZDA وهي تحوي على الوقت والتاريخ فقط؛ وبالتالي من أجل استخلاص البيانات من الحزمة فإنه يجب معرفة نوع وشكل البيانات التي يستقبلها موديول الـــG.P.S والتي تعتمد البروتوكول NMEA الذي يعد أشهر برتوكولات هذا النظام.
ملاحظة: كلمة NMEA هي اختصار National Marine Electronics Association. |
الحزمة ZDA - Time and Date
شكل الحزمة هو: $GPZDA,hhmmss.ss,DD,MM,YYYY,ltzh,ltzn*cs<CR><LF> |
الإسم |
ASCII String |
الوحدة |
الشرح |
|
الشكل |
مثال |
|||
$GPZDA |
string |
$GPZDA |
Message ID |
|
hhmmss.ss |
hhmmss.ss |
082710.00 |
UTC time |
|
day |
dd |
16 |
day |
UTC time: day |
month |
mm |
09 |
month |
UTC time: month |
year |
yyyy |
2002 |
year |
UTC time: year |
ltzh |
xx or -xx |
00 |
Local zone hours |
|
ltzn |
zz |
00 |
Local zone minutes |
|
cs |
hexadecimal |
*64 |
Checksum |
|
<CR> <LF> |
مثال: $GPZDA,071802.00,29,10,2008,00,00*6A الحزمة في هذا المثال تشير إلى أن التاريخ هو: 29/10/2008 والوقت هو: 07:18:02 بتوقيت غرينتش. |
ربط موديول GPS مع المتحكم المصغر
يتوفر تجارياً العديد من موديولات GPS وجميع موديولات الــGPS تملك نافذة متتالية UART.
|
|||
|
|
|
|
الشكل 26:بعض موديولات الـGPS التجارية |
|||
من أجل هذا التطبيق فإنه يكفي تغذية الموديول (VCC و GND) ووصل القطب TXD من الموديول مع القطب RXD للنافذة المتتالية UART للمتحكم المصغر كما في الشكل27. |
|
||
الشكل 27 |
البـرمجة
البرنامج “GPS_ZDA.bas” في بيئة BASCOM-AVR: '***************************************************************************** |
إن جميع حزم البيانات الرواردة على خرج موديول GPS تبدأ بالمحرف “$” وبالتالي فإن البرنامج “GPS_ZDA.bas”سيقوم بما يلي:
'$GPZDA,hhmmss.ss,DD,MM,YYYY,00,00*cs<CR><LF>
ملاحظة هامة: تمتلك الحزمة GPZDA مواضع ثابتة للمحارف ضمن السلسلة، أي: قيمة الثواني تتوضع دائماً في السلسلة عند المحرفين 11,12 (SS) وقيمة الشهر تتوضع عند المحرفين 20,21 (MM) وهكذا... إلا أن بعض الحزم الأخرى وأهمها الحزمة GPRMC لا تمتلك مواضع ثابتة للمحارف إذا يمكن أن تتغير تبعاً لعدد القيم بعد الفاصلة العشرية لبعض متحولات خطوط الطول والعرض. من أجل ذلك سنضع هنا فكرة برمجية من أجل استخلاص قيم الإحداثيات والوقت والتاريخ والارتفاع والسرعة من الحزمة GPRMS فيما يلي. |
الحزمة RMC
ملاحظة: الكلمة RMC هي اختصار لجملة Recommended Minimum Data شكل الحزمة هو: $GPRMC,hhmmss.000,status,latitude,N,longitude,E,spd,cog,ddmmyy,mv,mve,mode*cs<CR><LF> |
الإسم |
ASCII String |
الشرح |
||
الشكل |
مثال |
|||
$GPRMC |
string |
$GPRMC |
Message ID |
RMC protocol header |
hhmmss |
hhmmss.sss |
083559.00 |
UTC Time |
Time of position fix |
status |
character |
A |
Status |
V = Navigation receiver warning |
latitude |
ddmm.mmmm |
4717.11437 |
Latitude |
User datum latitude degrees, minutes, minutes |
N |
N |
N/S Indicator |
N=north or S=south |
|
longitude |
ddmm.mmmm |
00833.91522 |
Longitude |
User datum latitude degrees, minutes, minutes |
E |
character |
E |
E/W indicator |
E=east or W=west |
Spd |
numeric |
0.004 |
Speed (knots) |
Speed Over Ground |
cog |
numeric |
77.52 |
COG (degrees) |
Course Over Ground |
ddmmyy |
ddmmyy |
091202 |
Date |
Current Date in Day, Month Year |
mv |
numeric |
Magnetic variation |
Not being output by receiver |
|
mvE |
character |
Magnetic variation E/W indicator |
Not being output by receiver |
|
mode |
Mode Indicator |
|||
cs |
hexadecimal |
*53 |
Checksum |
|
<CR> <LF> |
End of message |
مثال عن الحزمة: $GPRMC,071802.00,A,4717.11437,N,00833.91522,E,0.004,77.52,14072011,,,A*57 |
البـرمجة
البرنامج “GPS_RMC.bas” في بيئة BASCOM-AVR: '***************************************************************************** |
البرنامج “GPS_RMC.bas” يعتمد نفس المبدأ في البرنامج “GPS_ZDA.bas”، إلا أننا هنا لا نعتبر موقع المحارف ثابت وإنما نوجد مواقع الفاصلة “,” التي تفصل بين البيانات ونوضح هذا فيما يلي: $GPRMC,071802.00,A,4717.11437,N,00833.91522,E,0.004,77.52,14072011,,,A*57 بالنظر إلى الحزمة السابقة فإننا سنجد أن مواقع الفواصل “” هي: [7, 17, 19, 30, 32, 44, 46, 52, 58, 67, …] ومن الواضح تماماً أنه: بعد الفاصلة الأولــــى تأتي قيمة الوقت (071802) وبعد الفاصلة الثالثـــة تأتي قيمة خط الطول (4717.11437) وبعد الفاصلة الرابعـة تأتي قيمة محدد الاتجاه (N) وبعد الفاصلة الخامسة تأتي قيمة خط العرض (00833.91522) وبعد الفاصلة السادسة تأتي قيمة محدد الاتجاه (E) وبعد الفاصلة السابعـة تأتي قيمة السرعة (0.004) وبعد الفاصلة التاسعـة تأتي قيمة التاريخ (14072011)
وبالتالي تمكنا من معرفة بدايات توضع كل صنف من البيانات والآن يمكننا اقتطاعها ابتداءً من هذا العنوان وانتهاءً بعنوان الفاصلة التالية. ويتم تحديد مواقع الفواصل من خلال تعليمة البحث عن موضع محرف ضمن سلسلة محرفية المتمثلة بالتعليمة “Charpos”. يمكن الاطلاع على بارامترات التعليمة في برنامج BASCOM-AVR/Help. |
الحقوق الفكرية
حقوق النشر محفوطة م.وليد بليد Copyright © 2012 Walid Balid All rights reserved |
تأليف
المؤلف: وليد بليد (سوريا)