قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-09-2012, 06:22 PM المشاركة 1   
افتراضي الدورة الجديدة : 13-1 الاتصال بالأجهزة Communication with Devices – موديول GPS Twitter FaceBook Google+



الدورة الجديدة : 13-1 الاتصال بالأجهزة Communication with Devices– موديول GPS









الاتصال مع مختلف الأجهزة ضرورى لمهام مثل قراءة أجهزة الاستشعارsensors , والتحكم فى الأجهزة , وقراءة الوحدات (الموديولات) modulesمثل : ساعات الزمن الحقيقى real-time clocks و أنظمة تحديد الموقع GPSGlobal Positioning System ونقط الاتصال اللاسلكى wireless points, وغيرها .
إعتمادا على حاجة وإمكانيات القائم بتطوير البرنامج , يمكن أيضا إنشاء تطبيقات البرمجيات الخاصة من أجل أجهزة الكومبيوتر الشخصى , هذه التطبيقات يمكن تطويرها فى شكل حزم مثل :
Visual Basic, Java, C + +,...
لمحاكاة الاتصال بتطبيقاتك الخاصة أو حتى باستخدام حزم البرمجيات مثل Hyper Terminal , يمكن لهذه التطبيقات أن تستخدم الكومبيوتر لإنشاء منافذ تسلسلية تخيلية . كما أن محاكى برنامج إيزيس ISIS يمكنه تنفيذ منفذ تخيلى للاتصال مع المنافذ التسلسلية الطبيعية بالكومبيوتر .
أحد التطبيقات التى يمكن أن تنشىء منافذ تخيلية هى Virtual Serial Port Kit , والذى يمكنك تحميل النسخة التجريبية من الموقع :

الشكل التالى يبين مظهر هذه الحزمة :






لكن هذا واحد من العديد من التطبيقات التى تؤدى نفس الوظيفة .
13-1 وحدات (موديولات) GPS :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-09-2012, 06:25 PM المشاركة 2   
افتراضي


13-1 وحدات (موديولات) GPS :
وحدات GPS هى أجهزة اتصال لاسلكى تأخذ إطارات المعلومات المقدمة من الأقمار الصناعية التى تدور حول الأرض . وحدات GPS يجب أن تقرأ من ثلاثة أقمار صناعية على الأقل لتصنع الحسابات المثلثية المعروفة , وهذا ينطوى على قياس الفارق الزمنى بين القراءات لتحديد موقع وحدة GPS على سطح الأرض . جودة القراءة تعتمد على عدد الاتصالات بأقمار GPS فى نفس الوقت , القراءات سوف تكون أكثر دقة كلما تم الاتصال بمزيد من الأقمار الصناعية , لكن GPS التجارية تتحقق مع هامش خطأ نسبته حوالى 3 أمتار , وهذا يعنى , بالنسبة لقطر الكرة الأرضية , هامش خطأ بنسبة 0% تقريبا .
وحدات GPS متوفرة تجاريا بأغلفة ذات أشكال متعددة , أو مجرد دائرة مطبوعة . الشكل التالى يبين المظهر الطبيعى لها :
وحدات GPS لها منافذ تسلسلية والتى ترسل دوريا قراءة الإحداثيات الجغرافية التى قرأتها وحدة GPS . الفترة الزمية الافتراضية لوحدة GPS هى ثانية . قراءة GPS هى مجموعة من الإحداثيات الكروية spherical coordinates</SPAN>على الكرة الأرضية , والتى تستخدم خط طول جرينتش وخط عرض الإكوادور كمرجع للقياس . </SPAN>
لإدراك هذا المفهوم راقب الشكل التالى :





الإحداثيات الكروية تستخدم ثلاثة بارامترات :

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-09-2012, 06:32 PM المشاركة 3   
افتراضي


الإحداثيات الكروية تستخدم ثلاثة بارامترات :
البارامتر الأول هو "خط الطول" longitude , والذى يمثله فى الشكل الزاوية وتقاس من خط جرينتش , هذه الزاوية يمكن أن تكون شرقا East أو غربا West وقيمتها يمكن أن تتغير من الصفر وحتى 90 درجة .
البارامتر الثانى هو "خط العرض" latitude والذى يمثله فى الشكل الزاوية , وتقاس من خط طول الإكوادور ويمكن أن تكون شمالا North أو جنوبا South , وقيمتها يمكن أن تتغير من الصفر وحتى 90 درجة .
البارامتر الثالث هو "الارتفاع العاموى" يعرف باسم altitudeوهويحدد إرتفاع نقطة الإحداثيات بالنسبة لمستوى سطح البحر ويحدد قيمته بالأمتار .
وحدات GPS توفر مجموعة متنوعة من البيانات الأخرى بالإضافة للإحداثيات الكروية :
عدد الأقمار المكتشفة , الحد الأدنى لمواصفات وخواص المسار course والسرعة speed وغيرها .
قراءة الإحداثيات فقط تتطلب إطار معلومات information frame برأس header(مقدمة) بالصيغة :

كود:
$ GPGGA .



فيما يلى مثال يبين قراءة الإحداثيات :

كود:
Latitude: 30 ° 47 '43.47 "South. Longitude: 39 ° 57 '33.36 "West. Height: 2600 m. $ GPGGA, 000000.000,3047.724500, S, 03957.556000, W, 1,8,0,2600, M, 0, M,, * 7B


معلومات خط الطول Latitude Information :

كود:
$ GPGGA, 000000.000,3047.724500, S, 03957.556000, W, 1,8,0,2600, M, 0, M,, * 7B


حيث 3047.724500, S تمثل 30 ° 47 '43.47 "Southأى 30 degrees و 47.7245 minutes والتى تكافىء 47 minutes و 43.47 seconds.


معلومات خط الطول longitude Information:



كود:
$ GPGGA, 000000.000,3047.724500, S, 03957.556000, W, 1,8,0,2600, M, 0, M,, * 7B

حيث 03957.556000, W تمثل 39 ° 57 '33.36 "West أى 39 degrees و 57,556 minutes والتى تكافىء 57 minutes و 33.36 seconds .

معلومات عن عدد الأقمار المتصلة :


كود:
$ GPGGA, 000000.000,3047.724500, S, 03957.556000, W, 1,8,0,2600, M, 0, M,, * 7B
حيث الحقل الثامن يمثل عدد الأقمار الصناعية المتصلة , وهى فى هذه الحالة 8 أقمار .


معلومات الارتفاع العمودى Altitude Information :

كود:
$ GPGGA, 000000.000,3047.724500, S, 03957.556000, W, 1,8,0,2600, M, 0, M,, * 7B

حيث 2600, M تمثل قيمة الارتفاع العمودى بالمتر .
حقول المعلومات ثابتة ويتم الفصل بين كل حقل معلومة وأخرى بالفاصلة (,).


المثال التالى يبين إطار كامل للبيانات المقدمة عن طريق GPS :


كود:
 
$GPZDA,000000.000,30,12,1899,00,00*5F $GPGGA,000000.000,3354.673167,S,04125.539667,W,1,8,0,2600,M,0,M,,*78 $GPGLL,3354.673167,S,04125.539667,W,000000.000,A,A*5F $GPVTG,9,T,0,M,4.86,N,9.00500277932185,K,A*2A $GPRMC,000000.000,A,3354.673167,S,04125.539667,W,4.86,9,301299,0,E,A*30 $GPGSA,A,3,1,2,3,4,5,6,17,22,,,,,0,0,0*2D $GPGSV,2,1,8,1,0,24,0,2,0,24,0,3,0,24,0,4,0,24,0*46 $GPGSV,2,2,8,5,0,24,0,6,0,24,0,17,0,24,0,22,0,24,0*44 $GPRTE,1,1,C,0,*0B


الصورة الرمزية lovevb6
lovevb6
:: عضو فضي ::
تاريخ التسجيل: May 2010
الدولة: LIBYA-BENGHAZY
المشاركات: 1,479
نشاط [ lovevb6 ]
قوة السمعة:123
قديم 24-09-2012, 07:37 PM المشاركة 4   
افتراضي


السلام عليكم

يعجز الكلام عن وصفك استاذ فهد

انا من المتابعين معك والمهتمين بالموضوع


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-09-2012, 08:23 PM المشاركة 5   
افتراضي


السلام عليكم

يعجز الكلام عن وصفك استاذ فهد

انا من المتابعين معك والمهتمين بالموضوع
وعليكم السلام ورحمة الله وبركاته

أخى الكريم

شكرا حزيلا لك

بارك الله فيك


مع تمنياتى بدوام التوفيق


الصورة الرمزية red_stone
red_stone
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2011
المشاركات: 107
نشاط [ red_stone ]
قوة السمعة:0
قديم 24-09-2012, 10:22 PM المشاركة 6   
افتراضي


جزاك الله خيرا


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 25-09-2012, 11:38 AM المشاركة 7   
افتراضي


البرنامج :


كود:
// Definition LCD pins. sbit LCD_RS at RD4_bit; sbit LCD_EN at RD5_bit; sbit LCD_D4 at RD0_bit; sbit LCD_D5 at RD1_bit; sbit LCD_D6 at RD2_bit; sbit LCD_D7 at RD3_bit; //Definition LCD TRIS . sbit LCD_RS_Direction at TRISD4_bit; sbit LCD_EN_Direction at TRISD5_bit; sbit LCD_D4_Direction at TRISD0_bit; sbit LCD_D5_Direction at TRISD1_bit; sbit LCD_D6_Direction at TRISD2_bit; sbit LCD_D7_Direction at TRISD3_bit; //Structure for reading a spherical coordinate. typedef struct { short Degrees_longitude; float Minutes_longitude; char Longitude; short Degrees_latitude; float Minutes_latitude; char Latitude; float Altitude; short Satellites; } Coordinate; //Declaration of variables. char Data; char Bufer[100]; unsigned short Pos=0; unsigned short Flag=0; //Function to detect the coordinate frame. short IsGPGGA( char *plot) { //This function returns 1 if the frame is valid and 0 otherwise. if( plot[0]=='$' && plot[1]=='G' && plot[2]=='P' && plot[3]=='G' && plot[4]=='G' && plot[5]=='A' ) return 1; else return 0; } //Function for searching and filtering a field in the frame. void SearchField( char *Font, char *Destination, short Field ) { unsigned short j=0,k=0; //Loop to find the field. while( j<Field)if( Font[k++]==',' )j++; j=0; //Loop to copy the field. while( !(Font[k]==',' || Font[k]=='*') ) { Destination[j++]=Font[k++]; Destination[j]=0; } } //Function to acquire field data. Coordinate ReadGPS( char *plot ) { //Declaration of variables. Coordinate C; char Text[50]; unsigned short j,k; //Initial value of the variables. C.Degrees_longitude=0; C.Minutes_longitude=0; C.Longitude=0; C.Degrees_latitude=0; C.Minutes_latitude=0; C.Latitude=0; C.Altitude=0; C.Satellites=0; //Verifies that the header contains the text $ GPGGA. if( !IsGPGGA( plot ) )return C; //filtered field 9 containing the altitude. SearchField( plot, Text, 9 ); //Converts text to numeric value. C.Altitude = atof(Text); //filter field 7 containing the number of satellites being tracked. SearchField( plot, Text, 7 ); //Converts text to numeric value. C.Satellites = atoi(Text); //filtered field 2 containing the minutes of latitude. SearchField( plot, Text, 2 ); //converts text to numeric value. C.Minutes_latitude = atof( Text + 2 ); //Truncate the minutes of latitude. Text[2]=0; //Converts text to the numerical value of the degrees of latitude. C.Degrees_latitude = atoi(Text); //filtra el campo 3 containing the latitude direction. SearchField( plot, Text, 3 ); C.Latitude = Text[0]; //filtered field 4 which contains the length minutes. SearchField( plot, Text, 4 ); //converts text to numeric value in the minutes of length. C.Minutes_longitude = atof( Text + 3 ); Text[3]=0; //Converts the text to the numerical value of the degrees of longitude. C.Degrees_longitude = atoi( Text ); //filtered field 2 contains. SearchField( plot, Text, 5 ); C.Longitude = Text[0]; return C; } //Function to chain a coordinate values. void Convertir_coordenada( char *coor, int grados, float minutos, char ll ) { //declaration variables of the function. char Text[20]; short j=0,k=0; short g; float s; //sticks in the text string, the value of the degrees. IntToStr( grados, Text ); while( Text[j]!=0 ) { if( Text[j]!=' ' ) coor[k++]=Text[j]; j++; } coor[k++]=':'; //Separate the seconds of the minute. g = (short)minutos; s = minutos - (float)g; //sticks in the text string, the value of the minutes. IntToStr( g, Text ); j=0; while( Text[j]!=0 ) { if( Text[j]!=' ' ) coor[k++]=Text[j]; j++; } coor[k++]=':'; //Calculate the second, minute fraction. s *= 60.0; //sticks in the text string, the value of the latter. FloatToStr( s, Text ); j=0; while( Text[j]!=0 ) { if( Text[j]!=' ' ) coor[k++]=Text[j]; j++; } //sticks in the text string, orientation. coor[k++]=' '; coor[k++]=ll; coor[k]=0; } //declaration interrupt function. void interrupt ( void ) { //evaluating whether the interrupt triggered by //serial reception. if( PIR1.F5 ) { //reads the input data. Data = UART1_Read(); switch( Data ) { case 13: Pos=0; //Enter character is received. Flag = 1; break; case 10:break; //receives the carriage return. default:Bufer[Pos++]=Data; //Data is stored in the buffer. Bufer[Pos]=0; //set to string. break; } } } void main( void ) { Coordinate C; char Text[20]; //configured ports. TRISB = 0; PORTB = 0; //Interruption is activated by //serial reception. PIE1 = 0b00100000; //Others are disabled interrupt sources. PIE2 = 0; //Turn off interrupt flags. PIR2 = 0; PIR1 = 0; //Configuring the serial port at 4800 bps. UART1_Init(4800); //Global interrupts are enabled, //and peripheral. INTCON = 0b11000000; //Initialization of the LCD display. Lcd_Init(); Lcd_Cmd(_LCD_CURSOR_OFF); while(1) //Infinite Loop. { //Evaluates whether a frame has arrived. if( Flag ) { //verifies that the frame is valid for coordinates. if( IsGPGGA( Bufer ) ) { //reads the coordinate data and stored in the variable C. C=ReadGPS( Bufer ); //Data are transcribed latitude. Convertir_coordenada( Text, C.Degrees_latitude, C.Minutes_latitude, C.Latitude ); //print the latitude data on the LCD. Lcd_Out(1,1,"Lat "); Lcd_Out(1,5,Text); //STranscribed data longitud. Convertir_coordenada(Text,C.Degrees_longitude,C.Minutes_longitude,C.Longitude); //print data longitud in the LCD display. Lcd_Out(2,1,"Lon "); Lcd_Out(2,5,Text); //transcribed the altitude value. FloatToStr(C.Altitude,Text); //print the value of altitude on the LCD display. Lcd_Out(3,1,"Altitud: "); Lcd_Out(3,9,Text); //transcribed the value of the number of satellites connected. IntToStr(C.Satellites,Text); //print the number of satellites in the LCD display. Lcd_Out(4,1,"Satellites: "); Lcd_Out(4,11,Text); } Flag=0; //Turn off the check flag. } } }


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 25-09-2012, 11:43 AM المشاركة 8   
افتراضي


بعد تحرير وترجمة البرنامج بتردد ساعة 20 MHz , يستخدم برنامج إيزيس لإنشاء دائرة تحتوى على الأجهزة التالية :
PIC18F452, LM044L, COMPIM
يجب ضبط كل من المنفذ التخيلى COMPIMوالمنفذ الطبيعى على 4800 bps , الشكل التالى يبين إعدادات COMPIM :





فى هذه الحالة يتم تحديد المنفذ الطبيعة COM1 , ويمكن تغييره تبعا للمنافذ المتاحة بالكومبيوتر .
الشكل التالى يبين بناء الدائرة ببرنامج إيزيس :
يمكن توصيل GPS فى هذه الحالة عن طريق محاكى GPS أو من خلال GPS حقيقى يوصل إلى المنفذ الطبيعى . لمحاكاة GPS يمكنك استخدام الحزمة البرمجية Virtual GPS , أو أى طريق أخرى تؤدى نفس الغرض , مظهر محاكى GPSكما فى الشكل التالى :



فى هذه الحالة يمكنك مقارنة بيانات خرج المحاكى بالبيانات المعروضة ببرنامج إيزيس . بنفس الطريقة يمكنك تغيير البيانات المرسلة بواسطة محاكى GPS .

يجب أن لا تنسى إنشاء ربط بين منفذين , إذا رغبت فى العمل الكامل عن طريق محاكى GPS .


إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 08:05 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2024