Arduino Polska Forum

Pełna wersja: RoboRemo i ESP8266
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam. Projekt zakłada uruchamianie urządzenia za pomocą aplikacji RoboRemo. Mam problem z wysłaniem komendy z arduino do aplikacji, chodzi o sprawdzenie statusu pinu czyli zapeleniu diody w aplikacji.

Kod:
[code]
#define DEBUG true





//int red =11;
int zielona =12;
int czerwona =13;

char cmd[100];
byte cmdIndex;
boolean stan, stan_old = true;


void exeCmd()

{
 Serial.println(cmd);
   if(strcmp(cmd, "+IPD,0,2:0")==0) digitalWrite(czerwona, LOW);
   if(strcmp(cmd, "+IPD,0,2:1")==0) digitalWrite(czerwona, HIGH);

 
}




void setup()
{
 
 delay(500);
 
 Serial.begin(9600);
 
 Serial1.begin(115200);

 
 
// pinMode(red,OUTPUT);
// digitalWrite(red,LOW);
 
 pinMode(zielona,OUTPUT);
 digitalWrite(zielona,LOW);
 
 pinMode(czerwona,OUTPUT);
 digitalWrite(czerwona,LOW);
 
  delay(2000);
 
 digitalWrite(czerwona,HIGH);
 

 

 
 sendData("AT+RST\r\n",2000,DEBUG);
 
 sendData("AT+CWMODE=2\r\n",1000,DEBUG);
 
 
 
 sendData("AT+CIFSR\r\n",1000,DEBUG);
 
 sendData("AT+CIPMUX=1\r\n",1000,DEBUG);
 
 sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG);
 
 digitalWrite(czerwona,LOW);

 digitalWrite(zielona,HIGH);
 
 delay(2000);
 
 digitalWrite(zielona,LOW);
 
 }


void loop(){
 
 if (Serial1.available() > 0)
 {
   char c = (char)Serial1.read();
   if (c == '\n') {
     cmd[cmdIndex] = 0;
     exeCmd();
     cmdIndex = 0;
   } else {
     cmd[cmdIndex] = c;
     if (cmdIndex < 99) cmdIndex++;
   }
 stan = digitalRead(czerwona);
   if (stan != stan_old)
 {
   stan_old = stan;
   if (stan)
     Serial1.println("led 2\n");
         else Serial1.println("led 3\n");

  }
 
   }
}

String sendData(String command, const int timeout, boolean debug)
{
   
   String response = "";
 
 
   Serial1.println(command);
 
   long int time = millis();
 
   while( (time+timeout) > millis())
   {
     while(Serial1.available())
     {
     

       
       char c = Serial1.read();
       response+=c;
     }  
   }
 
   
   if(debug)
   {
     
     Serial.println("Arduino : " + response);

   }
 
   return response;
}
[/code]
Serial wyświetla tak:
0,CONNECT
led 3
ERROR

+IPD,0,2:1

OK
led 2
ERROR

+IPD,0,2:0

OK
led 3
ERROR

Proszę o podpowiedzi ponieważ jestem bardzo początkujący w C
Nie gsm tylko Wifi esp8266
Już zauważyłem w kodzie jak wykorzystane zostało at, a kondensator równoległe do zasilania wifi dałeś.
Tak 1000uF
ja dawałem 1u ale to bez znaczenia sprawdz biblioteka rf24 czy wszystko ok z wifi
To działa w konfiguracji Arduino a ESP jest sterowane przez Arduino. Urządzenie jest złączane i wyłączane prawnie przez RoboRemo problem jest tylko z tą częścią:
Kod:
stan = digitalRead(czerwona);
    if (stan != stan_old)
  {
    stan_old = stan;
    if (stan)
      Serial1.println("led 2\n");
          else Serial1.println("led 3\n");

Która działa od arduino do aplikacji
!stan = stan_old

tak ma byc jesli chodzi ci o :
jesli nie jest stan =stan_old
Ze stanami jest dobrze, problem polega wysłaniu do aplikacji stanu