اطلاعیه

Collapse
No announcement yet.

پروژه کامل حرفه ای sim900 برای برد اموزشی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پروژه کامل حرفه ای sim900 برای برد اموزشی

    سلام.
    میخوام یک پروژه کامل اس ام اس کنترل با برد اموزشی که خودم نوشتم رو براتون بزارم شاید خوشتون بیاد.
    این برنامه برای برد اموزشی lpc1768 و برد اموزشی sim 900 همین سایت نوشته شده.کلید یک برای لرن کردن شماره میباشد.کلید را نگه داشته و به شماره زنگ بزنید.مشکلی بود در خدمتم
    پیوست شد
    فایل های پیوست شده

    #2
    پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

    سلام
    دوست عزیز میشه بگید قسمت سریال اون به چه صورتی است؟ اطلاعات در داخل بافر به صورت وقفه ذخیره می شود و هر وقت خواستیم میتونیم اطلاعات بافر رو بخونیم؟
    میشه راجب قسمت ارتباط سریال این پروژه رو توضیح بدید؟؟
    باتشکر

    دیدگاه


      #3
      پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

      بله از وقفه سریال استفاده شده و تا دیتای جدیدی نیاد اطلاعات بافر دست نخورده میماند.کجاش رو توضیح بدم؟چیز خاصی نداره سریال

      دیدگاه


        #4
        پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

        نوشته اصلی توسط arvin2009
        بله از وقفه سریال استفاده شده و تا دیتای جدیدی نیاد اطلاعات بافر دست نخورده میماند.کجاش رو توضیح بدم؟چیز خاصی نداره سریال
        میخوام بدونم اگر اطلاعات در زمان هایی که ما نمیدونیم ارسال بشه داخل بافر ذخیره بشه و هر زمان نیاز داشتم اطلاعات رو بخونم.ولی وقفه سریال هر وقت اطلاعات بیاد وقفه اتفاق می افته و من باید در زیر برنامه وقفه اطلاعات رو بردارم.درسته؟
        میشه ریجیسترهای مربوط به سریال و نحوه ی عملکردش رو توضیح بدید؟

        دیدگاه


          #5
          پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

          من خودم یک برنامه برنامه با CMSIS برای راه اندازی Sim900 نوشتم. SMS رو دریافت و پردازش میکنم ولی هر کاری کردم نتونستم SMS ارسال کنم. میشه یک نگاه به این کدها بندازید

          کد:
          sprintf(sms,"Hello world!%c",Ctrlz);
          UARTPuts_(LPC_UART0,"AT+CMGS=\"09368417941\"");
          ch[0]=0x1a;
          Delay_1s(3);
          UARTPuts(LPC_UART0,"Hello world!");
          //UART_SendByte(LPC_UART0,Ctrlz);
          UARTPuts_(LPC_UART0,ch);

          کد:
          sprintf(sms,"Hello world!%c",Ctrlz);
          UARTPuts_(LPC_UART0,"AT+CMGS=\"09368417941\"");
          //ch[0]=0x1a;
          Delay_1s(3);
          UARTPuts(LPC_UART0,"Hello world!");
          UART_SendByte(LPC_UART0,Ctrlz);
          //UARTPuts_(LPC_UART0,ch);

          دیدگاه


            #6
            پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

            آقا همون تیکه ای که اس رو دریافت و پردازش میکنی رو اگه میشه بی زحمت بزار من لازم دارم
            مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

            دیدگاه


              #7
              پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

              آقا همون تیکه ای که اس رو دریافت و پردازش میکنی رو اگه میشه بی زحمت بزار من لازم دارم
              [/quote]
              همایون

              بفرمایید این هم کد:
              [code=c]
              B=strstr(Buffer0,"OUT1ON"
              if(B!=0){
              GPIO_SetValue(2,1<<1);
              C_buf(Buffer0);
              Del_OK=1;
              }
              B=strstr(Buffer0,"OUT1OFF"
              if(B!=0){
              GPIO_ClearValue(2,1<<1);
              C_buf(Buffer0);
              Del_OK=1;
              }
              [/code]

              دیدگاه


                #8
                پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

                الان رشته شما توی متغیر B هستش
                وشما اینجا مقایسه میکنیش
                من هنوز نمیدونم چطوری رشته دریافت کنم و به هم بچسبونم
                مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

                دیدگاه


                  #9
                  پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

                  نوشته اصلی توسط NimaAryamehr
                  الان رشته شما توی متغیر B هستش
                  وشما اینجا مقایسه میکنیش
                  من هنوز نمیدونم چطوری رشته دریافت کنم و به هم بچسبونم
                  شما باید اول یک بافر سریال درست کنید.
                  بعد تو زیر برنامه وقفه سریال کارکتر دریافتی رو به آخر بافر اضافه کنید
                  به همین سادگی
                  [code=c]#include <lpc17xx.h>
                  #include <string.h>
                  #include <ctype.h>
                  #include "LPC17xx_pinsel.h"
                  #include "LPC17xx_gpio.h"
                  #include "LPC17xx_uart.h"
                  #include "debug_frmwrk.h"
                  char ch[1];
                  char Buffer0[500],Buffer2[500];
                  char sms[50];
                  char lcd[20];
                  uint8_t input0;
                  char Ctrlz=26;
                  char double_quote=34;
                  uint8_t input0;
                  uint8_t input1;

                  //----------------------------------------------------------------------------------------------
                  void upper(char Buf[],int LeN){ // tabe tabdel horofef kochaak be bozorg
                  for(LeN=0;LeN<501;LeN++){
                  Buf[LeN]=toupper(Buf[LeN]);
                  }
                  }
                  //-----------------------------------------------------------------------------------------------
                  void C_buf(char Buf[]){ // Empty Buffer
                  int LeN;
                  LeN=strlen(Buf);
                  for(LeN=0;LeN<501;LeN++){
                  Buf[LeN]=0;
                  }
                  }
                  //************************************************** ******************
                  void Delay_1s( int sEc){
                  // void Delay_1s(){
                  int sEc1,sEc2;
                  for(sEc2=0;sEc2<sEc;sEc2++){
                  for(sEc1=0;sEc1<18000000;sEc1++);
                  }
                  }

                  //*************************************************
                  // sim900 init
                  // ATE0
                  //
                  //*************************************************
                  void SIM900_init(void)
                  {
                  int h1,h2,h3;
                  for(h1=0;h1<40;h1++){
                  Delay_1s(1);
                  UARTPuts_(LPC_UART0,"AT\r\n"
                  }


                  UARTPuts_(LPC_UART0,"AT\r\n"

                  UARTPuts_(LPC_UART0,"AT\r\n"
                  UARTPuts_(LPC_UART0,"AT\r\n"
                  UARTPuts_(LPC_UART0,"AT\r\n"
                  UARTPuts_(LPC_UART0,"AT\r\n"
                  UARTPuts_(LPC_UART0,"AT\r\n"
                  UARTPuts_(LPC_UART0,"AT\r\n"
                  UARTPuts_(LPC_UART0,"AT\r\n"
                  UARTPuts_(LPC_UART0,"AT\r\n"
                  UARTPuts_(LPC_UART0,"AT\r\n"
                  UARTPuts_(LPC_UART0,"AT\r\n"
                  UARTPuts_(LPC_UART0,"ATE0\r\n"
                  Delay_1s(1);
                  UARTPuts_(LPC_UART0,"ATE0\r\n"
                  Delay_1s(1);
                  UARTPuts_(LPC_UART0,"ATE0\r\n"
                  Delay_1s(1);
                  UARTPuts_(LPC_UART0,"AT+CMGF=1\r\n"
                  Delay_1s(1);
                  UARTPuts_(LPC_UART0,"AT+CMGF=1\r\n"
                  Delay_1s(1);
                  UARTPuts_(LPC_UART0,"AT+CMGF=1\r\n"
                  Delay_1s(1);
                  UARTPuts_(LPC_UART0,"AT+CNMI = 1,2,0,0,0\r\n"
                  Delay_1s(1);
                  Delay_1s(1);
                  Delay_1s(1);
                  Delay_1s(1);
                  UARTPuts_(LPC_UART0,"AT+DDET=1\r\n"
                  Delay_1s(1);
                  }
                  //----------------------------------------------------------------------------------
                  void dell_all_sms(void) // Delete all SMS
                  {
                  unsigned char sim;
                  int waitms;
                  char del[30];

                  UARTPuts_(LPC_UART0,"AT+CMGDA=\"DEL ALL\""
                  for(waitms=0;waitms<9000000;waitms++);

                  for(sim=0;sim<31;sim++){
                  sprintf(del,"AT+CMGD=%u",sim);
                  UARTPuts_(LPC_UART0,del);
                  for(waitms=0;waitms<9000000;waitms++);
                  }
                  C_buf(Buffer0);
                  }

                  //************************************************** *************** UART0 INT
                  void UART0_IRQHandler(void)
                  {
                  int A;
                  input0 = UART_ReceiveByte(LPC_UART0);
                  if(input0>0x20 & input0<0x7f){
                  A=strlen(Buffer0);
                  Buffer0[A]=input0;
                  upper(Buffer0,500);
                  UARTPuts_(LPC_UART2, Buffer0);
                  //UARTPuts_(LPC_UART1,Buffer0);
                  }
                  }
                  //************************************************** *************** UART1 INT
                  void UART2_IRQHandler(void)
                  {
                  int A;
                  input1 = UART_ReceiveByte(LPC_UART2);
                  if(input1>0x20 & input1<0x7f){
                  A=strlen(Buffer2);
                  Buffer2[A]=input1;
                  upper(Buffer2,500);

                  //UARTPuts_(LPC_UART0,Buffer1);
                  //UARTPuts_((LPC_UART_TypeDef *)LPC_UART1, Buffer1);
                  }
                  }

                  int main(void){
                  PINSEL_CFG_Type PinCfg;
                  UART_CFG_Type UART_InitStruct;
                  int len;
                  char *B;
                  char Del_OK;
                  UART_FIFO_CFG_Type UARTFIFOConfigStruct;
                  //debug_frmwrk_init();
                  GPIO_SetDir(2,0xff,1);
                  //------------------------- UART2 -----------------------------------------------------------

                  PinCfg.Portnum=0;
                  PinCfg.Pinnum=10;
                  PinCfg.Funcnum=1;
                  PinCfg.OpenDrain=0;
                  PinCfg.Pinmode=0;
                  PINSEL_ConfigPin(&PinCfg); //TXD1
                  PinCfg.Pinnum=11;
                  PINSEL_ConfigPin(&PinCfg); //RXD1


                  UART_InitStruct.Baud_rate=9600;
                  UART_InitStruct.Databits = UART_DATABIT_8;
                  UART_InitStruct.Parity = UART_PARITY_NONE;
                  UART_InitStruct.Stopbits = UART_STOPBIT_1;

                  UARTFIFOConfigStruct.FIFO_DMAMode = DISABLE;
                  UARTFIFOConfigStruct.FIFO_Level = UART_FIFO_TRGLEV0;
                  UARTFIFOConfigStruct.FIFO_ResetRxBuf = ENABLE;
                  UARTFIFOConfigStruct.FIFO_ResetTxBuf = ENABLE;

                  UART_Init(LPC_UART2, &UART_InitStruct);
                  UART_FIFOConfig(LPC_UART2, &UARTFIFOConfigStruct);
                  UART_IntConfig(LPC_UART2, UART_INTCFG_RBR, ENABLE);

                  NVIC_EnableIRQ(UART2_IRQn);
                  UART_TxCmd(LPC_UART2, ENABLE);

                  //************************************************** *********** UART0
                  //Config UART0 -> P0.2 - P0.3
                  PinCfg.Portnum=0;
                  PinCfg.Pinnum=3;
                  PinCfg.Funcnum=1;
                  PinCfg.OpenDrain=0;
                  PinCfg.Pinmode=0;
                  PINSEL_ConfigPin(&PinCfg); //RXD0
                  PinCfg.Pinnum=2;
                  PINSEL_ConfigPin(&PinCfg); //TXD0

                  UART_InitStruct.Baud_rate=9600;
                  UART_InitStruct.Databits = UART_DATABIT_8;
                  UART_InitStruct.Parity = UART_PARITY_NONE;
                  UART_InitStruct.Stopbits = UART_STOPBIT_1;

                  UART_Init(LPC_UART0, &UART_InitStruct);

                  UARTFIFOConfigStruct.FIFO_DMAMode = DISABLE;
                  UARTFIFOConfigStruct.FIFO_Level = UART_FIFO_TRGLEV0;
                  UARTFIFOConfigStruct.FIFO_ResetRxBuf = ENABLE;
                  UARTFIFOConfigStruct.FIFO_ResetTxBuf = ENABLE;

                  UART_FIFOConfig(LPC_UART0, &UARTFIFOConfigStruct);

                  UART_IntConfig(LPC_UART0, UART_INTCFG_RBR, ENABLE);

                  NVIC_EnableIRQ(UART0_IRQn);
                  UART_TxCmd(LPC_UART0,ENABLE);
                  //************************************************** ******************
                  UARTPuts_(LPC_UART2, "HOMAYON 0"
                  UARTPuts_(LPC_UART2, "HOMAYON 1"
                  UARTPuts_(LPC_UART2, "HOMAYON 2"
                  UARTPuts_(LPC_UART2, ">"
                  SIM900_init();

                  //###############################################
                  //sprintf(sms,"Hello world!%c",Ctrlz);
                  UARTPuts_(LPC_UART0,"AT+CMGS=\"093684179 41\"\r\n"
                  //ch[0]=0x1a;
                  Delay_1s(3);
                  UARTPuts(LPC_UART0,"Hello world!"
                  UART_SendByte(LPC_UART0,Ctrlz);
                  UARTPuts(LPC_UART0,"\r\n"
                  //UARTPuts_(LPC_UART0,ch);
                  //###############################################

                  while(1){
                  len=strlen(Buffer0);
                  if(len>200){
                  C_buf(Buffer0);
                  }
                  //++++++++++++++++++++++++++++++++++++++
                  B=strstr(Buffer0,"OUT1ON"
                  if(B!=0){
                  GPIO_SetValue(2,1<<1);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  B=strstr(Buffer0,"OUT1OFF"
                  if(B!=0){
                  GPIO_ClearValue(2,1<<1);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  //++++++++++++++++++++++++++++++++++++++
                  B=strstr(Buffer0,"OUT2ON"
                  if(B!=0){
                  GPIO_SetValue(2,1<<2);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  B=strstr(Buffer0,"OUT2OFF"
                  if(B!=0){
                  GPIO_ClearValue(2,1<<2);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  //++++++++++++++++++++++++++++++++++++++
                  B=strstr(Buffer0,"OUT3ON"
                  if(B!=0){
                  GPIO_SetValue(2,1<<3);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  B=strstr(Buffer0,"OUT3OFF"
                  if(B!=0){
                  GPIO_ClearValue(2,1<<3);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  //++++++++++++++++++++++++++++++++++++++
                  B=strstr(Buffer0,"OUT4ON"
                  if(B!=0){
                  GPIO_SetValue(2,1<<4);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  B=strstr(Buffer0,"OUT4OFF"
                  if(B!=0){
                  GPIO_ClearValue(2,1<<4);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  //++++++++++++++++++++++++++++++++++++++
                  B=strstr(Buffer0,"OUT5ON"
                  if(B!=0){
                  GPIO_SetValue(2,1<<5);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  B=strstr(Buffer0,"OUT5OFF"
                  if(B!=0){
                  GPIO_ClearValue(2,1<<5);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  //++++++++++++++++++++++++++++++++++++++
                  B=strstr(Buffer0,"OUT6ON"
                  if(B!=0){
                  GPIO_SetValue(2,1<<6);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  B=strstr(Buffer0,"OUT6OFF"
                  if(B!=0){
                  GPIO_ClearValue(2,1<<6);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  //++++++++++++++++++++++++++++++++++++++
                  B=strstr(Buffer0,"OUT7ON"
                  if(B!=0){
                  GPIO_SetValue(2,1<<7);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  B=strstr(Buffer0,"OUT7OFF"
                  if(B!=0){
                  GPIO_ClearValue(2,1<<7);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  //++++++++++++++++++++++++++++++++++++++
                  B=strstr(Buffer0,"OUT8ON"
                  if(B!=0){
                  GPIO_SetValue(2,1<<8);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  B=strstr(Buffer0,"OUT8OFF"
                  if(B!=0){
                  GPIO_ClearValue(2,1<<8);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  //++++++++++++++++++++++++++++++++++++++
                  B=strstr(Buffer0,"ALLON"
                  if(B!=0){
                  GPIO_SetValue(2,0xff<<1);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  B=strstr(Buffer0,"ALLOFF"
                  if(B!=0){
                  GPIO_ClearValue(2,0xff<<1);
                  C_buf(Buffer0);
                  Del_OK=1;
                  }
                  //++++++++++++++++++++++++++++++++++++++

                  if(Del_OK==1){
                  Del_OK=0;
                  dell_all_sms();
                  }
                  len=strlen(Buffer0);
                  if(len>200){
                  C_buf(Buffer0);
                  }

                  }
                  }
                  [/code]

                  دیدگاه


                    #10
                    پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

                    نوشته اصلی توسط arvin2009
                    سلام.
                    میخوام یک پروژه کامل اس ام اس کنترل با برد اموزشی که خودم نوشتم رو براتون بزارم شاید خوشتون بیاد.
                    این برنامه برای برد اموزشی lpc1768 و برد اموزشی sim900 همین سایت نوشته شده.کلید یک برای لرن کردن شماره میباشد.کلید را نگه داشته و به شماره زنگ بزنید.مشکلی بود در خدمتم
                    پیوست شد
                    آقایarvin پروژه شمارو گرفتم اما این ارور میگیره چیکارش کنم؟
                    مدت زمانی که صرف ایجاد تاپیک و منتظر پاسخ هستید را صرف سرچ کنید...

                    دیدگاه


                      #11
                      پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

                      برای ورژن کیل است.اگه میتونید خودتون یک تابع دلی بنویسید.فایل سیستم در کیل شما فرق دارد

                      دیدگاه


                        #12
                        پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

                        سلام
                        میخواستم اگر امکان داشته باشه یک شماتیک کلی هم از مدار بگذارید.
                        برنامه اصلی تا حدودی نامفهومه، مخصوصا برای من تازه کار. میخواستم با تحلیل برنامه به ویژگی ها، کارایی ها و عملکرد قسمت های مختلف میکرو ARM وارد بشوم، اما عملا چیز زیادی نفهمیدم.
                        اگر ممکنه یک توضیح کلی هم درباره عملکرد مدار بدهید که مثلا با ارسال اس ام اس چه فرآیندی در SIM900 و خود میکرو انجام میشه و نتیجه نهاییش چیه؟

                        با تشکر

                        دیدگاه


                          #13
                          پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

                          سلام.در مورد عملکرد میکرو و سیم 900 در همین سایت و سایتهای دیگر زیاد توضیح داده شده.و تحلیل سختی هم نیست.همش کار با پرت سریال است.یک سرچ کوچیک بزنید کلی پروژه میاد که اگه یک دست به سرو گوش همین برنامه بکشید از همه اونا کاملتر و حرفه ای تر است و من دیدم چندتا محصول هم با همین برنامه تولید شده.چون برنامه فروشی بوده سعی کردم یکم خلاصش کنم و چون اولین برنامه ای بود که برای ارم نوشتم قبول دارم یکم بهم ریخته و نا مفهوم باشه.یک مشکلی هم که داره و اون موقع هنوز بلد نبودم قسمت i2c است که نمیتونه شماره تلفن را توی ایتوپرام ذخیره کنه.اینش رو درست کنید دیگه فکر نکنم مشکلی داشته باشه.اصل این برنامه برای avr است

                          دیدگاه


                            #14
                            پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

                            با سلام
                            من یک مشکل با SIM900 دارم
                            در دستور AT+CIPSEND
                            که دیتاهای خودم رو می فرستم
                            و در آخر 0X1A می فرستم که ارسال می شه

                            حالا در یک حالت تصادفی در بین دیتاها دو بایت پشت سرهم 0X0D 0X1A می شه و ماژول فکر می کنه که باید ارسال انجام بشه و بقیه دیتاها دیگه می مونند و ارسال نمیشن!!!
                            چکار باید کنم برای حل این مشکل؟

                            دیدگاه


                              #15
                              پاسخ : پروژه کامل حرفه ای sim900 برای برد اموزشی

                              من ماژول SIM900 رو گرفتم اما نتونستم از برنامه جواب بگیرم.
                              اگر ممکنه شماتیک مدار رو بگذارید.

                              دیدگاه

                              لطفا صبر کنید...
                              X