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

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

rigbi
:: مهندس ::
تاريخ التسجيل: Nov 2016
المشاركات: 36
نشاط [ rigbi ]
قوة السمعة:0
قديم 08-11-2016, 09:12 PM المشاركة 1   
افتراضي gsm module ارجوكم ساعدوني بقي لي 30 يوم و اسلم المشروع Twitter FaceBook Google+



السلام عليكم و رحمة الله تعالى و بركاته
كيف حالكم شباب اتمنى ان تكونو بالف خير
انا لم يسبق لي التعامل مع gsm module في الواقع , فقط بعض التجارب في بروتوس
حاليا اعرف كيف ارسل رسالة من الجي اس ام الى الموبايل
لاكن عندي مشكلة و هي كيف يمكنني ان ارسل رسالة من الجوال الى الجي اس ام موديول و هو بدوره يقوم بنقلها الى الميكروكونترولر و الميكرو كونترولر يقوم بمعالجة الرسالة وتطبيق الاكواد اللتي كتبت من اجل الرسالة
مثلا ::
عندي 8 ليدات موصلين بالميكروكونترولر
اريد عندما ارسل رسالة led one on تشتعل الليد الاولى و عندما ارسل رسالة led one off تنطفئ الليد الاولى و هكذا مع جميع الليدات
المرجو من لديه خبرة ان يشاركها معي و مع باقي الاخوان يمكن لهذه المعلومة ان تشفع لك غدا يوم القيامة و تكون سبب من اسباب الفرج و شكرا للجميع

اعلانات

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 08-11-2016, 11:14 PM المشاركة 2   
افتراضي اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


السلام عليكم و رحمة الله تعالى و بركاته
كيف حالكم شباب اتمنى ان تكونو بالف خير
انا لم يسبق لي التعامل مع gsm module في الواقع , فقط بعض التجارب في بروتوس
حاليا اعرف كيف ارسل رسالة من الجي اس ام الى الموبايل
لاكن عندي مشكلة و هي كيف يمكنني ان ارسل رسالة من الجوال الى الجي اس ام موديول و هو بدوره يقوم بنقلها الى الميكروكونترولر و الميكرو كونترولر يقوم بمعالجة الرسالة وتطبيق الاكواد اللتي كتبت من اجل الرسالة
مثلا ::
عندي 8 ليدات موصلين بالميكروكونترولر
اريد عندما ارسل رسالة led one on تشتعل الليد الاولى و عندما ارسل رسالة led one off تنطفئ الليد الاولى و هكذا مع جميع الليدات
المرجو من لديه خبرة ان يشاركها معي و مع باقي الاخوان يمكن لهذه المعلومة ان تشفع لك غدا يوم القيامة و تكون سبب من اسباب الفرج و شكرا للجميع

وعليكم السلام ورحمه الله


اخى يمكنك الإستعانه بالبحث فى اليوتيوب

وهذا شرح لمعظم التطبيقات

https://www.youtube.com/results?sear...ule+in+proteus

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

batma97
:: مهندس متواجد ::
تاريخ التسجيل: Nov 2012
المشاركات: 60
نشاط [ batma97 ]
قوة السمعة:0
قديم 13-11-2016, 01:49 PM المشاركة 3   
افتراضي


السلام عليكم
كنت قد عملت مشروع يشتغل عل gsm module مع البيك 16f628a
قمت بانشاء المشروع بمجهود شخصي اتمنى ان تستفيد منه
يقوم باشعال البورت ب 6 عبر ارسال رسالة R1ON
أو اطفائها عبر ارسال رسالة R1OFF
يمكنك زيادة المخارج .
ماهو نوع موديل الذي تستعمله بالنسبة للكود
كود:
unsigned char tmp;
unsigned char state=0;
unsigned char OK=0;
unsigned char ERROR=0;
unsigned char Erase=0;
unsigned char read=0;
unsigned short i=1;
unsigned char del[2];
unsigned int count=0;
const char cmd0[]="AT+CMGD=1,4";
const char cmd1[]="AT+IPR=9600";
const char cmd2[]="AT+CNMI=2,1,0";
const char cmd3[]="AT+CMGF=1";
const char cmd4[]="AT+CMGR=1";
char relay1=0;
void interrupt()
{
    if (TMR0IF_bit){
    TMR0IF_bit= 0;
    TMR0= 6;
    if(count==1000){Erase=1;count=0;TMR0IE_bit=0;}
    count++;
  }


    if(RCIF_bit==1)
    {
       tmp=UART1_Read();

       switch(state)
       {
            case 0:
            {
                if(tmp=='O')  //enttendre OK 'K'
                {state=1;}
                if(tmp=='E')  //enttendre ERROR 'R'
                state=10;
                if(tmp=='R')  //enttendre RxON ou RxOFF 'x'
                state=20;
                if(tmp=='"')
                state=30;
                break;
            }
            case 1:
            {
                 if(tmp=='K')
                 {Ok=1;}
                 else
                 state=0;
                 break;
            }
            case 10:
            {
                 if(tmp=='R')
                 state=11;
                 else
                 state=0;
                 break;
            }
            case 11:
            {
                 if(tmp=='R')
                 state=12;
                 else
                 state=0;
                 break;
            }
            case 12:
            {
                 if(tmp=='O')
                 state=13;
                 else
                 state=0;
                 break;
            }
            case 13:
            {
                 if(tmp=='R')
                ERROR=1;
                 else
                 state=0;
                 break;
            }
            case 20:
            {
                 if(tmp=='1')
                 state=21;
                 else
                 state=0;
                 break;
            }
            case 21:
            {
                 if(tmp=='O')
                 state=22;
                 else
                 state=0;
                 break;
            }
            case 22:
            {
                 if(tmp=='N')
                 {
                 Relay1=1;

                 Erase=1;
                 state=0;
                 }
                 else
                 if(tmp=='F')
                 state=23;
                 else
                 state=0;
                 break;
            }
            case 23:
            {
                 if(tmp=='F')
                 {
                 Relay1=0;
                 Erase=1;
                 state=0;
                 }
                 else
                 state=0;
                 break;
            }
            case 30:
            {
                   if(tmp=='S')
                   state=31;
                   else
                   state=0;
                   break;
            }
            case 31:
            {
                   if(tmp=='M')
                   state=32;
                   else
                   state=0;
                   break;
            }
             case 32:
            {
                   if(tmp=='"')
                   {
                   Read=1;
                   }
                   else
                   state=0;
                   break;
            }



       }
    }
}

void send_gsm_TC35(const char *s)
{
  while(*s) {
  UART1_Write(*s++);
  }
               UART1_Write(13);
               UART1_Write(10);
               delay_ms(250);
}

void main() {
     CMCON=7;
     TRISA=255;
     TRISB.f0=0;
     TRISB.f7=0;
     TRISB.f6=0;
     TRISB.f3=0;
     portb.f0=0;
     portb.f7=0;
     portb.f6=0;
     portb.f3=0;
       RCIE_bit = 1;        // Enable Rx1 intterupts
       PEIE_bit = 1;
       GIE_bit  = 1;
       TMR0IE_bit=0;
       OPTION_REG= 0x81;
       TMR0=6;
     UART1_Init(9600);
     delay_ms(100);
     
              send_gsm_TC35(cmd1);   //IPR
              delay_ms(1000);
              send_gsm_TC35(cmd2);  //CNMI
              delay_ms(500);

              send_gsm_TC35(cmd0);

while(1)
     {
        portb.f6=Relay1;
        
        if(Erase==1)
        {
              portb.f3=1;
              send_gsm_TC35(cmd0);
               Erase=0;
              portb.f3=0;
        }
        if(read==1)
        {
          send_gsm_TC35(cmd3);    //CMGF
                   delay_ms(500);
          send_gsm_TC35(cmd4);    //CMGR
                   delay_ms(1500);
                   TMR0IE_bit=1;
                   read=0;
        }

     }
}


rigbi
:: مهندس ::
تاريخ التسجيل: Nov 2016
المشاركات: 36
نشاط [ rigbi ]
قوة السمعة:0
قديم 13-11-2016, 02:10 PM المشاركة 4   
افتراضي


مشكور اخي العزيز هل يمكنك ان تشرح لي الكود + هل انت مالك موقع البوابة التقنية



السلام عليكم
كنت قد عملت مشروع يشتغل عل gsm module مع البيك 16f628a
قمت بانشاء المشروع بمجهود شخصي اتمنى ان تستفيد منه
يقوم باشعال البورت ب 6 عبر ارسال رسالة R1ON
أو اطفائها عبر ارسال رسالة R1OFF
يمكنك زيادة المخارج .
ماهو نوع موديل الذي تستعمله بالنسبة للكود
كود:
unsigned char tmp;
unsigned char state=0;
unsigned char OK=0;
unsigned char ERROR=0;
unsigned char Erase=0;
unsigned char read=0;
unsigned short i=1;
unsigned char del[2];
unsigned int count=0;
const char cmd0[]="AT+CMGD=1,4";
const char cmd1[]="AT+IPR=9600";
const char cmd2[]="AT+CNMI=2,1,0";
const char cmd3[]="AT+CMGF=1";
const char cmd4[]="AT+CMGR=1";
char relay1=0;
void interrupt()
{
    if (TMR0IF_bit){
    TMR0IF_bit= 0;
    TMR0= 6;
    if(count==1000){Erase=1;count=0;TMR0IE_bit=0;}
    count++;
  }


    if(RCIF_bit==1)
    {
       tmp=UART1_Read();

       switch(state)
       {
            case 0:
            {
                if(tmp=='O')  //enttendre OK 'K'
                {state=1;}
                if(tmp=='E')  //enttendre ERROR 'R'
                state=10;
                if(tmp=='R')  //enttendre RxON ou RxOFF 'x'
                state=20;
                if(tmp=='"')
                state=30;
                break;
            }
            case 1:
            {
                 if(tmp=='K')
                 {Ok=1;}
                 else
                 state=0;
                 break;
            }
            case 10:
            {
                 if(tmp=='R')
                 state=11;
                 else
                 state=0;
                 break;
            }
            case 11:
            {
                 if(tmp=='R')
                 state=12;
                 else
                 state=0;
                 break;
            }
            case 12:
            {
                 if(tmp=='O')
                 state=13;
                 else
                 state=0;
                 break;
            }
            case 13:
            {
                 if(tmp=='R')
                ERROR=1;
                 else
                 state=0;
                 break;
            }
            case 20:
            {
                 if(tmp=='1')
                 state=21;
                 else
                 state=0;
                 break;
            }
            case 21:
            {
                 if(tmp=='O')
                 state=22;
                 else
                 state=0;
                 break;
            }
            case 22:
            {
                 if(tmp=='N')
                 {
                 Relay1=1;

                 Erase=1;
                 state=0;
                 }
                 else
                 if(tmp=='F')
                 state=23;
                 else
                 state=0;
                 break;
            }
            case 23:
            {
                 if(tmp=='F')
                 {
                 Relay1=0;
                 Erase=1;
                 state=0;
                 }
                 else
                 state=0;
                 break;
            }
            case 30:
            {
                   if(tmp=='S')
                   state=31;
                   else
                   state=0;
                   break;
            }
            case 31:
            {
                   if(tmp=='M')
                   state=32;
                   else
                   state=0;
                   break;
            }
             case 32:
            {
                   if(tmp=='"')
                   {
                   Read=1;
                   }
                   else
                   state=0;
                   break;
            }



       }
    }
}

void send_gsm_TC35(const char *s)
{
  while(*s) {
  UART1_Write(*s++);
  }
               UART1_Write(13);
               UART1_Write(10);
               delay_ms(250);
}

void main() {
     CMCON=7;
     TRISA=255;
     TRISB.f0=0;
     TRISB.f7=0;
     TRISB.f6=0;
     TRISB.f3=0;
     portb.f0=0;
     portb.f7=0;
     portb.f6=0;
     portb.f3=0;
       RCIE_bit = 1;        // Enable Rx1 intterupts
       PEIE_bit = 1;
       GIE_bit  = 1;
       TMR0IE_bit=0;
       OPTION_REG= 0x81;
       TMR0=6;
     UART1_Init(9600);
     delay_ms(100);
     
              send_gsm_TC35(cmd1);   //IPR
              delay_ms(1000);
              send_gsm_TC35(cmd2);  //CNMI
              delay_ms(500);

              send_gsm_TC35(cmd0);

while(1)
     {
        portb.f6=Relay1;
        
        if(Erase==1)
        {
              portb.f3=1;
              send_gsm_TC35(cmd0);
               Erase=0;
              portb.f3=0;
        }
        if(read==1)
        {
          send_gsm_TC35(cmd3);    //CMGF
                   delay_ms(500);
          send_gsm_TC35(cmd4);    //CMGR
                   delay_ms(1500);
                   TMR0IE_bit=1;
                   read=0;
        }

     }
}


rigbi
:: مهندس ::
تاريخ التسجيل: Nov 2016
المشاركات: 36
نشاط [ rigbi ]
قوة السمعة:0
قديم 13-11-2016, 02:13 PM المشاركة 5   
افتراضي


الموديول اللذي استعمله هو sim800l
pic 16f877a


batma97
:: مهندس متواجد ::
تاريخ التسجيل: Nov 2012
المشاركات: 60
نشاط [ batma97 ]
قوة السمعة:0
قديم 13-11-2016, 03:37 PM المشاركة 6   
افتراضي


هذا الموديل جيد +نعم انا صاحب الموقع البوابة التقنية http://www.techporte.com
بالنسبة للكود نبدأ مع الدالة الرئيسية
حيث ستقوم باضافة
كود:
Adcon1=0;
عوض
كود:
CMCON=7;
جعل المخرج portb.f6 مخرج
تفعيل المقاطعات
كود:
RCIE_bit = 1;        
       PEIE_bit = 1;
       GIE_bit  = 1;
لا تستعمل أبدا دالة الميكروسي Uart1_Write_Text();
لقد عوضتها بدالة send_gsm_TC35
بما أنك تستعمل sim800l
قم بازالة السطرين
كود:
send_gsm_TC35(cmd1);   //IPR
              delay_ms(1000);
هذا السطر مهم جدا
كود:
 send_gsm_TC35(cmd2);  //CNMI
هذا السطر تؤكد فيه على الموديل أن يقوم باشعارك باستقبال رسالة نصية

كود:
portb.f6=Relay1;
تعطي قيمة المتغير relay1 للبورت ب 6 و قيمة هذا المتغير نقوم باعطائها عبر تحليل الرسالة المستقبلة و التي نقوم بتحليلها في مقاطعة الاتصال التسلسلي


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:0
قديم 26-12-2017, 02:40 PM المشاركة 7   
افتراضي


السلام عليكم
كنت قد عملت مشروع يشتغل عل gsm module مع البيك 16f628a
قمت بانشاء المشروع بمجهود شخصي اتمنى ان تستفيد منه
يقوم باشعال البورت ب 6 عبر ارسال رسالة R1ON
أو اطفائها عبر ارسال رسالة R1OFF
يمكنك زيادة المخارج .
ماهو نوع موديل الذي تستعمله بالنسبة للكود
كود:
unsigned char tmp;
unsigned char state=0;
unsigned char OK=0;
unsigned char ERROR=0;
unsigned char Erase=0;
unsigned char read=0;
unsigned short i=1;
unsigned char del[2];
unsigned int count=0;
const char cmd0[]="AT+CMGD=1,4";
const char cmd1[]="AT+IPR=9600";
const char cmd2[]="AT+CNMI=2,1,0";
const char cmd3[]="AT+CMGF=1";
const char cmd4[]="AT+CMGR=1";
char relay1=0;
void interrupt()
{
    if (TMR0IF_bit){
    TMR0IF_bit= 0;
    TMR0= 6;
    if(count==1000){Erase=1;count=0;TMR0IE_bit=0;}
    count++;
  }


    if(RCIF_bit==1)
    {
       tmp=UART1_Read();

       switch(state)
       {
            case 0:
            {
                if(tmp=='O')  //enttendre OK 'K'
                {state=1;}
                if(tmp=='E')  //enttendre ERROR 'R'
                state=10;
                if(tmp=='R')  //enttendre RxON ou RxOFF 'x'
                state=20;
                if(tmp=='"')
                state=30;
                break;
            }
            case 1:
            {
                 if(tmp=='K')
                 {Ok=1;}
                 else
                 state=0;
                 break;
            }
            case 10:
            {
                 if(tmp=='R')
                 state=11;
                 else
                 state=0;
                 break;
            }
            case 11:
            {
                 if(tmp=='R')
                 state=12;
                 else
                 state=0;
                 break;
            }
            case 12:
            {
                 if(tmp=='O')
                 state=13;
                 else
                 state=0;
                 break;
            }
            case 13:
            {
                 if(tmp=='R')
                ERROR=1;
                 else
                 state=0;
                 break;
            }
            case 20:
            {
                 if(tmp=='1')
                 state=21;
                 else
                 state=0;
                 break;
            }
            case 21:
            {
                 if(tmp=='O')
                 state=22;
                 else
                 state=0;
                 break;
            }
            case 22:
            {
                 if(tmp=='N')
                 {
                 Relay1=1;

                 Erase=1;
                 state=0;
                 }
                 else
                 if(tmp=='F')
                 state=23;
                 else
                 state=0;
                 break;
            }
            case 23:
            {
                 if(tmp=='F')
                 {
                 Relay1=0;
                 Erase=1;
                 state=0;
                 }
                 else
                 state=0;
                 break;
            }
            case 30:
            {
                   if(tmp=='S')
                   state=31;
                   else
                   state=0;
                   break;
            }
            case 31:
            {
                   if(tmp=='M')
                   state=32;
                   else
                   state=0;
                   break;
            }
             case 32:
            {
                   if(tmp=='"')
                   {
                   Read=1;
                   }
                   else
                   state=0;
                   break;
            }



       }
    }
}

void send_gsm_TC35(const char *s)
{
  while(*s) {
  UART1_Write(*s++);
  }
               UART1_Write(13);
               UART1_Write(10);
               delay_ms(250);
}

void main() {
     CMCON=7;
     TRISA=255;
     TRISB.f0=0;
     TRISB.f7=0;
     TRISB.f6=0;
     TRISB.f3=0;
     portb.f0=0;
     portb.f7=0;
     portb.f6=0;
     portb.f3=0;
       RCIE_bit = 1;        // Enable Rx1 intterupts
       PEIE_bit = 1;
       GIE_bit  = 1;
       TMR0IE_bit=0;
       OPTION_REG= 0x81;
       TMR0=6;
     UART1_Init(9600);
     delay_ms(100);
     
              send_gsm_TC35(cmd1);   //IPR
              delay_ms(1000);
              send_gsm_TC35(cmd2);  //CNMI
              delay_ms(500);

              send_gsm_TC35(cmd0);

while(1)
     {
        portb.f6=Relay1;
        
        if(Erase==1)
        {
              portb.f3=1;
              send_gsm_TC35(cmd0);
               Erase=0;
              portb.f3=0;
        }
        if(read==1)
        {
          send_gsm_TC35(cmd3);    //CMGF
                   delay_ms(500);
          send_gsm_TC35(cmd4);    //CMGR
                   delay_ms(1500);
                   TMR0IE_bit=1;
                   read=0;
        }

     }
}
السلام عليكم اخي الكريم ... الحمد لله انني قدرت ان اوصل لحضرتك من خلال قرائة التعليقات علمت انك صاحب البوابه التقنيه .. انا من متابعي حضرتك عللى القناه و انا معجب جدا جدا بشرحك و باسلوبك و تعلمت منك الكثير الكثير بفضل الله تعالى .......

و كان لي استفسار من حضرتك ... اريد ان اعمل مشروع كما طلب الاخ السابق منك و هو ارسال رساله الى ال جي اس ام بتشغيل ليد و اطفاؤه بحيث تكون ال جي اس ام موصوله بالمايكرو 16f628
مثلا و يقوم بتنفيذ الامر .. انا قرأت تعليقات حضرتك و قمت بتنزيل الكود السابق و قمت بتطبيقه عمليا لكن للاسف لم يعمل معي ... يا ريت اخي الكريم تساعدني في هذا الموضوع حيث انني احاول الوصول اليه من سنوات و لم يفيدني احد ...انا املك GSM module SIM 800L ...اريد كود يحيث اذا بعثت رساله معينه الى الموديول يضيئ الليد الاول و رساله اخرى تقوم بأطفائه .. و هكذا مع 8 ليدات او كما تريد ... كذلك اخي اريد رسمه توضح طريقة توصيل المكونات .... انا اسف و بعتذر للاطاله و لكن للضروره اخي الله يبارك فيك و يرحم والدينا و والديك ...

إضافة رد

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

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

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


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

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