با سلام و خسته نباشید . بنده می خواستم توسط ارتباط 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