نمایش نتایج: از 1 به 10 از 67
Like Tree9 لایک

موضوع: ماژول gprs / gsm چهار باند a6

Hybrid View

  1. #1
    Junior Member
    تاریخ عضویت
    Apr 2016
    نوشته ها
    4
    با سلام
    ضمن تشکر از راهنماییهاتون که کارگشا بودو حل شد،قفظ امکان ارسال پیام با دستورات at همچنان نشدوپیام دریافت کردم ولی ارسال هنگ میکندوچندین بار باید ریست شود تا برگرده به حالت عادی.لطفا راهنمایی کنید.
    همچنینی اگر کدآماده یا لایبرری خاصی برای کار ازطریق بردهای آردینو اگه وجود دارد معرفی کنید.
    ممنون

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط saeed990 نمایش پست ها
    با سلام
    ضمن تشکر از راهنماییهاتون که کارگشا بودو حل شد،قفظ امکان ارسال پیام با دستورات at همچنان نشدوپیام دریافت کردم ولی ارسال هنگ میکندوچندین بار باید ریست شود تا برگرده به حالت عادی.لطفا راهنمایی کنید.
    همچنینی اگر کدآماده یا لایبرری خاصی برای کار ازطریق بردهای آردینو اگه وجود دارد معرفی کنید.
    ممنون
    اول در مورد کد این که این کد باری sim800l هست اما از اونجایی که اکثر کامندها بین ماژول های سیم مشترکه میتونید ازش استفاده کنید:
    کد:
    #include <SoftwareSerial.h>
    SoftwareSerial SIM800(D2, D1 , 128);
    #define GSMReset D3
    
    
    
    
    void setup() {
      Serial.begin(9600); // for serial monitor
      SIM800.begin(9600); // for GSM shield
      gsmPower();
      gsmConfig();
      dialNumber() ;
    }
    
    
    
    
    void loop() {
      commandDetect();
    }
    //*********************************************************************************
    void gsmConfig() {
      sendCommand("ATZ", 100);
      sendCommand("AT+CMGD=1,4", 200);
      sendCommand("AT+CMGF=1\r", 100); // set SMS mode to text
      sendCommand("AT+CFUN=1", 2000);
      sendCommand("AT+CREG?", 1000);
      dtmfActive();
      anwerCall();
      Serial.println("The end of Config process");
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    }
    //**********************************************************************************
    void showSms() {
      char incoming_char = 0;
      if ( SIM800.available() > 0)
      {
        incoming_char =  SIM800.read(); //Get the character from the cellular serial port.
        Serial.print(incoming_char); //Print the incoming character to the terminal.
      }
    }
    //***********************************************************************************
    void smsProcess() {
      char incoming_char = 0;
      if ( SIM800.available() > 0)
      {
    
    
    
    
        incoming_char =  SIM800.read();
        if (incoming_char == 'A')
        {
          delay(10);
          incoming_char =  SIM800.read();
          if (incoming_char == 'd')
          {
            delay(10);
            Serial.print("horaaaaaaaaaaaaaaaaaaay");
          }
        }
      }
    }
    //***********************************************************************************
    void gsmPower() {
      pinMode(GSMReset, OUTPUT);
      Serial.println("Turning GSM ON");
      digitalWrite(GSMReset, HIGH);
     // delay(1100);
      //digitalWrite(GSMReset, LOW);
     // delay(4000);
      Serial.println("Start config process...");
    }
    
    
    
    
    //**********************************************************************************
    
    
    
    
    void sendCommand(String cmd, int t)
    {
      SIM800.println(cmd);
      readSerial();
      delay(t);
    }
    
    
    
    
    //**************************************************************************************
    void readSerial( ) {
      while (SIM800.available())
      {
        Serial.write(SIM800.read());
      }
    }
    
    
    
    
    //***********************************************************************************
    
    
    
    
    void dialNumber() {
      Serial.println("Dialing...");
      sendCommand("ATD09177102643;", 100);
      Serial.println("End of Dial process");
      delay(2000);
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    }
    //************************************************************************************
    void ensms()
    {
      Serial.println("Sending SMS");
      sendCommand("AT+CSCS=\"GSM\"", 200);
      sendCommand("AT+CMGF=1", 200);
      sendCommand("AT+CSMP=17,167,0,0", 200);
      sendCommand("AT+CMGS=\"09177102643\"", 500);
      sendCommand("Salam\n manam !\x1A", 500);
      Serial.println("Englisg SMS Sent");
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    }
    
    
    
    
    //****************************************************************************************
    void farsisms()
    {
      Serial.println("Sending SMS");
      sendCommand("AT+CSCS=\"HEX\"", 100);
      sendCommand("AT+CMGF=1", 100);
      sendCommand("AT+CSMP=17,167,0,8", 100);
      sendCommand("AT+CMGS=\"09177102643\"", 500);
      sendCommand("0633064406270645060C002006220641062A0627062800200631062706CC062706460647\x1A", 0);
      Serial.println("Persian SMS Sent");
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    }
    //*******************************************************************************************
    void commandDetect() {
    
    
    
    
      if (Serial.available() > 0)
      {
        char data = Serial.read();
        switch (data)
        {
          case 'd' :
            dialNumber();
            break;
    
    
    
    
          case 'e' : ensms();
            break;
    
    
    
    
          case 'f' : farsisms();
            break;
    
    
    
    
          case 'h':
            SubmitHttpRequest();
            break;
    
    
    
    
          case 's':
            Send2Pachube();
            break;
        }
      }
    }
    
    
    
    
    //******************************************************************************************************
    void SubmitHttpRequest()
    {
      sendCommand("AT+CSQ", 100);
      sendCommand("AT+CGATT?", 100);
      sendCommand("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"", 1000); //setting the SAPBR, the connection type is using gprs
      sendCommand("AT+SAPBR=3,1,\"APN\",\"CMNET\"", 4000); //setting the APN, the second need you fill in your local apn server
      sendCommand("AT+SAPBR=1,1", 2000); //setting the SAPBR, for detail you can refer to the AT command mamual
      sendCommand("AT+HTTPINIT", 2000); //init the HTTP request
      sendCommand("AT+HTTPPARA=\"URL\",\"www.google.com.hk\"", 1000); // setting the httppara, the second parameter is the website you want to access
      sendCommand("AT+HTTPACTION=0", 10000); //submit the request
      sendCommand("AT+HTTPREAD", 300); // read the data from the website you access
      sendCommand("", 100);
      delay(2000);
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    }
    
    
    
    
    //*************************************************************************************************************************
    ///send2Pachube()///
    ///this function is to send the sensor data to the pachube, you can see the new value in the pachube after execute this function///
    void Send2Pachube()
    {
      sendCommand("AT+CGATT?", 1000);
      sendCommand("AT+CSTT=\"CMNET\"", 1000); //start task and setting the APN,
      sendCommand("AT+CIICR", 3000); //bring up wireless connection
      sendCommand("AT+CIFSR", 2000); //get local IP adress
      sendCommand("AT+CIPSPRT=0", 3000);
      sendCommand("AT+CIPSTART=\"tcp\",\"api.cosm.com\",\"8081\"", 2000); //start up the connection
      sendCommand("AT+CIPSEND", 4000); //begin send data to remote server
    
    
    
    
      String humidity = "1031";//these 4 line code are imitate the real sensor data, because the demo did't add other sensor, so using 4 string variable to replace.
      String moisture = "1242";//you can replace these four variable to the real sensor data in your project
      String temperature = "30";//
      String barometer = "60.56";//
      sendCommand("{\"method\": \"put\",\"resource\": \"/feeds/42742/\",\"params\"", 500); //here is the feed you apply from pachube
      sendCommand(": {},\"headers\": {\"X-PachubeApiKey\":", 500); //in here, you should replace your pachubeapikey
      sendCommand(" \"_cXwr5LE8qW4a296O-cDwOUvfddFer5pGmaRigPsiO0", 500); //pachubeapikey
      sendCommand("jEB9OjK-W6vej56j9ItaSlIac-hgbQjxExuveD95yc8BttXc", 500); //pachubeapikey
      sendCommand("Z7_seZqLVjeCOmNbEXUva45t6FL8AxOcuNSsQS\"},\"body\":", 500);
      sendCommand(" {\"version\": \"1.0.0\",\"datastreams\": ", 500);
      sendCommand("[{\"id\": \"01\",\"current_value\": \"" + barometer + "\"},", 500);
      sendCommand("{\"id\": \"02\",\"current_value\": \"" + humidity + "\"},", 500);
      sendCommand("{\"id\": \"03\",\"current_value\": \"" + moisture + "\"},", 500);
      sendCommand("{\"id\": \"04\",\"current_value\": \"" + temperature + "\"}]},\"token\": \"lee\"}", 500);
      SIM800.println(); ((char)26); //sending
      delay(5000);
      SIM800.println();
      sendCommand("AT+CIPCLOSE", 100); //close the connection
      delay(2000);
      Serial.println("Ensert\n 'd' for dial \n 'e' for english sms \n 'f' for farsi sms \n 'h' for HttpRequest \n 's' for Send2Pachube  ");
    
    
    
    
    }
    
    
    
    
    //******************************************************************************************************************
    void dtmfActive() {
      sendCommand("AT+DDET=1", 200);
    }
    
    
    
    
    
    
    
    
    //***************************************************************
    void anwerCall() {
      sendCommand("ATS0=3", 200);
    }
    
    
    
    
    void blinkd16(){
      pinMode(16,OUTPUT);
      digitalWrite(16,HIGH);
      delay(100);
      digitalWrite(16,LOW);
        delay(100);
      }
    فقط باید شماره پینهای ارتباط سریال نرم افزاریتون رو عوض کنید.

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

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO