روشن کردن led با ارتباط http ماژول mc60 به کمک آردوینو

با سلام و خسته نباشید . بنده می خواستم توسط ارتباط http با ماژول mc60 به کمک آردوینو ال ای دی روشن کنم. و کد برنامه آردوینو رو پایین براتون می زارم متاسفانه وصل نمیشه. ممنون میشم بفرمایید ایراد کدم کجاست یا چیزی هست که جا افتاده باشه. کد:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(8,9);            // RX, TX Pins
#define TIMEOUT    1000
#define reset  15//A1
String content = "";
char output[9] = {'o', 'u', 't', '=','0', '0','0','0','\0'};
int error=0;

void setup() {
Serial.begin(9600);
mySerial.begin(115200);

  pinMode( 19, OUTPUT ); //A5
  pinMode( 18, OUTPUT ); //A4
  pinMode( 17, OUTPUT ); //A3
  pinMode( 16, OUTPUT ); //A2 
  pinMode(reset , OUTPUT );
  digitalWrite( 19, LOW ); 
  digitalWrite( 18, LOW ); 
  digitalWrite( 17, LOW );
  digitalWrite( 16, LOW );
  digitalWrite( reset , LOW );
}

void loop() { 
  
digitalWrite( reset , HIGH );
delay(200);  
digitalWrite( reset , LOW ); 

Serial.println("Reset GSM .");  
delay(2000);
sendCmd("AT+QIDEACT\r\n", "DEACT OK\r\n", 5000);
Serial.println(content);

sendCmd("AT+QIFGCNT=0\r\n", "OK\r\n", 5000);
Serial.println(content);

sendCmd("AT+QICSGP=1,\"mcinet\"\r\n", "OK\r\n",TIMEOUT);
Serial.println(content);

sendCmd("AT+QIREGAPP=\"mcinet\"\r\n", "OK\r\n",TIMEOUT);
Serial.println(content); 

sendCmd("AT+QIACT", "OK\r\n" , TIMEOUT);
Serial.println(content);
  
if(0 ==sendCmd("AT+QIMUX=1\r\n", "OK\r\n", 5000)){
Serial.println(content);
while(1){
if(digitalRead(19)==HIGH){
  output[4]='1';  
  }else{
  output[4]='0';  
  };
  if(digitalRead(18)==HIGH){
  output[5]='1';  
  }else{
  output[5]='0';  
  };
  if(digitalRead(17)==HIGH){
  output[6]='1';  
  }else{
  output[6]='0';  
  };
  if(digitalRead(16)==HIGH){
  output[7]='1';  
  }else{
  output[7]='0';  
  };
 output[8]='\0'; 
 
//if(content.indexOf("ERROR") >= 0){error++;};

sendCmd("AT+QHTTPURL=38,30""\r\n","CONNECT\r\n", TIMEOUT);
sendCmd("http://test.micronik.ir/gprs/index.php""\r\n","OK",TIMEOUT);
Serial.println(content);

 
//if(content.indexOf("ERROR") >= 0){error++;};

sendCmd("AT+QHTTPURL=38,30""\r\n","CONNECT\r\n", TIMEOUT);
sendCmd("http://test.micronik.ir/gprs/index.php""\r\n","OK",TIMEOUT);
Serial.println(content); 

/*sendCmd("AT+HTTPPARA=\"CONTENT\",\"application/x-www-form-urlencoded\"\r\n", "OK\r\n", 1000);
Serial.println(content); */
sendCmd("AT+QHTTPPOST=8,50,50\r\n", "DOWNLOAD\r\n", 1000);
Serial.println(content);
Serial.println(output);
mySerial.print(output);
sendCmd("\r\n", "OK\r\n", 1000);
Serial.println(content);
 
sendCmd("AT+HTTPACTION=1\r\n", "+HTTPACTION: 1,", 10000);
Serial.println(content);
if(content.indexOf("+HTTPACTION: 1,200") >= 0){
 error=0;
 sendCmd("AT+QHTTPREAD=30\r\n", "CONNECT\r\n", 3000);
 Serial.println(content);
 if(content.indexOf("led1=on")  >= 0) digitalWrite( 19, HIGH ); 
 if(content.indexOf("led1=off") >= 0) digitalWrite( 19, LOW ); 
 if(content.indexOf("led2=on")  >= 0) digitalWrite( 18, HIGH );
 if(content.indexOf("led2=off") >= 0) digitalWrite( 18, LOW ); 
 if(content.indexOf("led3=on")  >= 0) digitalWrite( 17, HIGH ); 
 if(content.indexOf("led3=off") >= 0) digitalWrite( 17, LOW ); 
 if(content.indexOf("led4=on")  >= 0) digitalWrite( 16, HIGH ); 
 if(content.indexOf("led4=off") >= 0) digitalWrite( 16, LOW );
 }else{error++;};
 Serial.print("error = ");
 Serial.println(error);
 if(error >= 5 ) break;
}//WHILE
}//AT+SAPBR=1,1
error=0;
}//LOOP
int sendCmd(const char* cmd, const char *resp, unsigned timeout)
{
    content = "";
    int len = strlen(resp);
    int sum=0;
    unsigned long timerStart,timerEnd; 
    mySerial.write(cmd);
    delay(100);
    timerStart = millis();
    while(1) {
        if(mySerial.available()) {
            char c = mySerial.read();
            content = content + String(char (c));
            sum = (c==resp[sum]) ? sum+1 : 0;
            if(sum == len)break;
             }
        timerEnd = millis();
        if((timerEnd - timerStart) > timeout) {
          //Serial.println("Over flow timeout");
            return -1;
        }
    }
    delay(10);
    while(mySerial.available()) {
        char c = mySerial.read();
        content = content + String(char (c));
    }

    return 0;
}

url ی که استفاده کردم هم یک url عمومی هست که همه می تونن ازش استفاده کنن نام کاربری admin و رمز 123456

سلام
برای اینکه نیاز نباشه ما دوباره از اول وقت بزاریم و کدتون رو تست و بررسی کنیم ، لازمه که بگید مشکل دقیقا کجا هست
تا چه مرحله ای پیش میره
کجا گیر میکنه ؟
عملکرد کلی کد به چه صورت هست و …

بله حتما
این کد در اصل برای sim800 بود که بنده با یکم تغییر برای mc60 نوشتم.
در ابتدای کد با استفاده از کتابخانه یافت ور سریال دو پورت RXوTX رو تعریف می کنیم . بعدش هم یک سری متغیر های لازم در آینده و همچنین تعریف کردن پین های خروجی 4 تا LED در sim800 به دلیل وجود پایه ریست در ماژول و فلوت شدن اون ماژول میایم و به کمک یک ترانزیستور و دو تا مقاومت و تعریف کردن یک پایه آنالوگ در آردوینو از فلوت این مدار جلوگیری می کنیم.
پس سوال اول اینه که برا mc60 هم باید این کار رو انجام داد و یک پایه در این ماژول به اسم sim2-rst وجود داره و باید رو این پایه همون کار رو بکنیم؟
در ادامه به کمک کامند های مربوط به تنظیمات خود ماژول که غالبا از قسمت example اپلیکیشن نوت خود ماژول استفاده شده تنظیم می کنیم.
در ادامه برای پای هایی که برای LED ها تعریف کردیم وضعیت روشن خاموش رو تعریف می کینم.
لازم به ذکر که برای ازسال کامند ها به ماژول یک تابع درست کردیم که سه تا ورودی داره : کامند به همراه تنظیماتش ، ریسپانسی که باید از ماژول دریافت کنه تا به کامند بعی بری و مدت زمان delay
من احساس می کنم یک قسمت از کد و یا کامند ها یکی رو جا انداختم چون وارد void loop میشه ولی اونجایی که حلقه گذاشته برا شمردن error میافته تو اون و فقط ارور میده.

اول از همه اینکه آیا شما از تابع ارسال کامند و خوندن مقدار برگشتی مطمئن هستید؟ اون رو تست کردید ؟
اگر نه ، اول باید از اون مطمئن بشید . برای این کار تست رو با یه دستور ساده که خروجیش مشخص هست انجام بدید . مثل دستور ATI

در مرحله دوم ، آیا شما از کامند هایی که برای ماژول میفرستید مطمئن هستید ؟
یعنی خودتون به صورت دستی این کامند ها رو ارسال کردید به همین ترتیب و بدون مشکل بوده ؟
اگر نه باید اول این کار رو انجام بدید
شما دارید میگید شک دارم که دستوری جا انداخته باشم ؟!!!
شما اول باید دستی از دستورات مطمئن بشید و بعد کد اسال اتوماتیکش رو بنویسید

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