بسم الله الرحمن الرحيم
توصيل الجوال بالـ pic
هذا شرح مختصر لكيفية ربط الجوال بالبك وكيفية تناقل البيانات بينهما .. جاء تنفيذا لرغبة بعض الإخوة وأسأل الله تعالى أن ينفع به .
هناك عدة طرق لربط الجوال بالبك من حيث التوصيلات المادية والتوصيلات البرمجية ( أعني بها طريقة تناقل البيانات ) وسنعتمد في شرحنا على الطريقة السهلة والمشهورة
وهي كالتالي :
التوصيلات المادية RS232
التوصيلات البرمجية UART
طبعا هذه الطريقة تعتمد بشكل أساسي على طرفين هما RX , TX حيث يستخدمان لاستقبل وإرسال البيانات بين الأجهزة المربوطة .. وتكون عمليتي الارسال والاستقبال للبيانات بشكل متسلسل (serial) وبالتالي فإن هذا سيؤثر على سرعة نقل البيانات فنحتاج الى تأخير زمني بعد كل إرسال حتى لا يحصل تدخل في البيانات .
لذا سنحتاج للمتطلبات التالية :
1- جوال يدعم أوامر AT commands (استخدمت نوكيا 7610)
2- كيبل توصيل الجوال بالكمبيوتر ... وأفضل استخدام الجوالات التي تعتمد كيبل CA-53 كما في الصورة
3- برنامج تعريف الجوال ( Pc Suite 7 Nolia ) أو (Nokia_Connectivity_Cable_Driver_) أو أي برنامج آخر حسب نوع الجوال لديك
مع العلم أن النقطتان (2و3) سنحتاجهما في المحاكاة فقط أما في التطبيق العملي فلا حاجة اليهما
4- PIC يدعم UART أي أنه يحتوي على طرفي RX ,TX ( استخدمت 16f877a
5- MAX 232
بعد تحضير هذه المتطلبات قم بتنصيب برنامج تعريف الجوال ثم أوصل الجوال بالكمبيوتر ... وهنا يجب أن نتاكد أن الجوال قد تعرف بشكل صحيح وأن الكمبيوتر قد خصص منفذ COM للتخاطب مع الجوال
كما في الصورة
URL=http://up.**********/][IMG]http://up.**********/files/kuxzodvyfjmoqp71m3h6.jpg[/IMG][/URL
كيف تعرف أن جوالك يدعم AT commands ؟؟
بعد القيام بالتوصيلات والتعريفات الموضحة أعلاه ينبغي فحص دعم الجوال لـ AT commands ويكون ذلك باستخدام برنامج Hyber Terminal (يأتي مع الوندوز وله ) أو باستخدام برنامج ( Modem tester )
سأعتمد برنامج Modem tester في الشرح
قم بتحميله من
هنــــــــــأ علما أن حجمه صغير جدا
شغل البرنامج واتبع الخطوات كما في الصورة :
[IMG]http://up.**********/files/j3byx1p0q8dwomnpdbc8.jpg[/IMG]
توضيح لبعض أوامر AT
- AT : يستخدم لفحص دعم الجوال لايعازات AT وكذلك لتنبيه الجوال لتنفبذ الايعازات ولهذا نجد أن جميع أوامر At تكون مسبوقة بهذا الايعاز
AT+(command)
-لإجراء اتصال نستخدم ATD الأمر وصيغته كالتالي
كود:
ATD phone no ; CR (Enter)
ملاحظة : بما أن الـPic ليس فيه زر Enter لذا سنستخدم Ascci code المقابل له وهو الرقم (13)ATD phone no ; chr(13)
ولا ننسى التأكيد على الفارزة المنقوطة
-لأرسال SMS نستخدم الأوامر التالية :
1- نجعل النمط المستخدم في الارسال هو النصي لأنه هو النمط الأسهل :
2- نكتب الأمر التالي :
كود:
AT+CMGS="رقم الهاتف المرسل اليه" CR (enter) Ctrl+H
3- نكتب نص الرسالة
4- نضغط Ctrl+z
ملاحظة : بما أن الـPic ليس فيه زر Ctrl+z لذا سنستخدم Asci code المقابل له وهو الرقم (26) وليس فيه Ctrl+H فنستخدم الرقم (10)
فتكون الأوامر التي يرسلها الـ pic للجوال كالتالي
كود:
AT+CMGF=1
Chr(13)
Chr(10)
AT+CMGS="رقم الهاتف المرسل اليه"
Chr(13)
Chr(10)
Msg (نص الرسالة)
Chr(26)
Chr(13)
Chr(10)
هناك مئات الأوامر من AT لكن هذا ما سنحتاجه في تجربتنا
شرح بروتوكول UART باستخدام لغة مايكروبيسك
هذا البروتوكول كما عرفنا يستخدم لارسال واستقبال البيانات بين البك والأجهزة الخارجية التي تدعم هذه الخاصية
يحتوي هذا البروتوكول على مجموعة من التعليمات أهمها
-UART1_Init : يستخدم للبدء ببرتوكول UART ويحدد سرعة تناقل البيانات ويجب وضعه قبل جميع تعليمات الـ UART وصيغته :
مع العلم أن 9600 هي سرعة النقل ونستطيغ تغييرها مثلا 157800
-
UART1_Write : يستخدم لأرسال بيانات بصيغة Ascci code
مثلا : رقم (2) الآسكي كود له (50) , لارسال رقم 2 بهذه الطريقة نكتب
عند الاستلام تظهر : 2
-
UART1_Write_Text : يستخدم لارسال سلسة نصية ويفضل ان لا تكون طويلة حتى لا يحدث خطا عند الاستلام
كود:
UART1_Write_Text("Allah is My God")
بهذه التعليمات الثلاثة نستطيع ان نتعامل مع الجوال حيث نرسل له أوامر AT
-لكي نجعل الجوال يجري اتصال برقم معين نكتب له الدالة التالية
كود:
Sub procedure calling()
UART1_Init(9600) ' Initialize UART module 9600 bps
Delay_ms(100)
UART1_Write_Text("AT")
UART1_Write(13)
UART1_Write(10)
Delay_ms(1000)
UART1_Write_Text("ATD1122334;")
UART1_Write(13)
UART1_Write(10)
Delay_ms(1000)
End sub
وبنفس الطريقة نجعل الجوال يقوم بإرسال SMS
كود:
sub procedure sendsms()
UART1_Init(9600) ' Initialize UART module at 9600 bps
Delay_ms(100)
UART1_Write_Text("AT")
UART1_Write(13) 'CR mean (Enter)
UART1_Write(10)'LF mean (ctrl+H)
Delay_ms(1000)
UART1_Write_Text("AT+CMGF=1")
UART1_Write(13) 'CR
UART1_Write(10) ' LF
Delay_ms(1000)
UART1_Write_Text("AT+CMGS=")
UART1_Write(34) ' "
UART1_Write_Text("121211212") ' phone no.
UART1_Write(34) ' "
UART1_Write(13) 'CR
UART1_Write(10) 'LF
Delay_ms(1000)
UART1_Write_Text("test msg")
UART1_Write(26) ' mean (ctrl+Z)
UART1_Write(13)
UART1_Write(10)
Delay_ms(1000)
end sub
أما في برنامج بروتس فنحتاج الى التعديل التالي
[IMG]http://up.**********/files/cpmo82hfz8est9s9anpe.jpg[/IMG]
أكيد تتذكر لماذا اخترنا COM3 ؟؟
رابط ملف بروتس مع البرنامج بالمايكروبيسك
http://www.4shared.com/file/0gXGZl_3/ATcommands.html
الى هنا انتهت المحاكاة على الكمبيوتر وقريبا بعون الله تعالى سأضع الدائرة العملية البسيطة لمن أراد تنفيذها
وسأحاول وضع البرنامج بلغة مايكروسي وكذلك بـ فلوكود حتى يستفيد أكبر عدد من المتابعين .. وشكرا