BLYNK
HOME       📲 GETTING STARTED       📗 DOCS       ❓HELP CENTER       👉 SKETCH BUILDER

ESP8266 esp01 + arduino uno

arduino
esp8266
#1

Hello! I need a Little help with my Project, I’m using an Arduino Uno with ESP8266 esp-01 module. The esp8266 connects to WiFi, but my App stays offline. It gets stock in the phrase: “connected to WiFi”. I’m using external power supply with enough current. I’ve changed baudrate with the command: AT+UART_DEF=9200,8,1,0,0.
Here is part of my code:

Removed unformatted code - Moderator

Thank you!!

0 Likes

#2
  1. Format your code properly using backticks (```)

  2. Post all your code

  3. Post your serial monitor output :slightly_smiling_face:

0 Likes

#3

Hi! this is my whole code:

#define BLYNK_PRINT Serial
#define BLYNK_DEBUG
#define BLYNK_MAX_READBYTES 1024
#include <SoftwareSerial.h>
#include <ESP8266_Lib.h>  
#include <BlynkSimpleShieldEsp8266.h>

char ssid[] = "Iphone";
char pass[] = "*******";

SoftwareSerial EspSerial(2,3); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);

char auth[] = "****************************";//token de la app Blynk
SimpleTimer timer2;//Definicion del temporizador
WidgetLCD lcd(V2);//asignación del pin virtual 2

int value;      //variable que almacena la lectura analógica raw
int position;   //posicion del potenciometro en tanto por ciento
int ej;//valor del ejercicio escogido (1,2,3,4 ó 5)
int contador = 0;//el contador que inicializa los mensajes en LCD
int valorMin = 140;//valores de comparacion con la posicion actual
int valorMax = 0;//valores de comparacion con la posicion actual
int bolaVal;//posicion del interruptor de bola
int repeticiones = 30;//repeticiones del ejercicio
int timerID;//ID del temporizador que llama a la funcion leedatos
String cadena;
/****************************FUNCIÓN QUE LEE LOS DATOS ANALÓGICOS/DIGITALES DE LOS SENSORES*******************************/
void leedatos()
{
  const int analogPin = A0;//variable que almacena el valor del potenciometro
  bolaVal = digitalRead(2); //lee del interruptor bola
  value = analogRead(A0);      // realizar la lectura analógica raw
  position = round(map(value, 0, 1023, 0, 140));  // convertir a porcentaje el potencimetro
  Blynk.virtualWrite(V5, position);//escribe en la aplicacion en el widget SUPERCHART
 
  switch (ej)//llama a el ejercicio correspondiente
  {
    case 1: ejercicio1();//comprobaciones del ej 1
            cadena=cadena+position+",";//actualiza la cadena
      break;
    case 2: ejercicio2();//comprobaciones del ej 2
            cadena=cadena+position+",";
      break;
    case 3: ejercicio3();//comprobaciones del ej 3
            cadena=cadena+position+",";
      break;
    case 4: ejercicio4();//comprobaciones del ej 4
            cadena=cadena+position+",";
      break;
    case 5: ejercicio5();//comprobaciones del ej 5
            cadena=cadena+position+",";
      break;
    default:
            lcd.clear();
            lcd.print(0,0,"escoge un ejercicio");
            delay(1000);
      break;
  }
}


/*********************************FUNCION DE BOTON START/STOP********************************************************/
BLYNK_WRITE(V3)
{
  if (param.asInt() == 1)//El boton en la aplicación está a 1
  {
    timer2.disable(timerID);//deshabilita el temporizador que llama a Leedatos
    lcd.clear();//Borra LCD
    lcd.print(0, 0, "has salido del ejercicio");//Imprime en LCD
    delay(3000);
  }
  else
  {
    timer2.enable(timerID);//habilita el temporizador que llama a leedatos
    lcd.clear();//borra de LCD
    lcd.print(0, 0, "empieza el ejercicio");//Imprime en LCD
    delay(3000);
  }

}


/*****************************FUNCION QUE HACE LAS COMPROBACIONES DEL EJERCICIO 1********************************/
void ejercicio1()//Sentada flexiona y estira la rodilla al máximo
{
  valorMax = max(position, valorMax);//Actualiza el valor máximo recogido
  valorMin = min(position, valorMin);//Actualiza el valor mínimo recogido
  contador++;//Aumenta el contador para la escritura en LCD

  if (valorMax < 130)//comprobacion para ver si NO flexiona la rodilla
  {
    if (contador >= 40)//si el contador llega a 40 que escriba en LCD
    {

      lcd.clear();
      lcd.print(0, 0, "Flexiona mas la rodilla");
      contador = 0;//Se restauran los valores
      valorMin = 140;//Se restauran los valores
      valorMax = 0;//Se restauran los valores
    }
  }
  else if (valorMin > 10)//comprobabcion para ver si NO estira la rodilla
  {
    
    if (contador >= 40)//si el contador llega a 40 que escriba en LCD
    {
      lcd.clear();
      lcd.print(0, 0, "Estira mas la rodilla");

      contador = 0;
      valorMin = 140;
      valorMax = 0;
    }
  }

  else //si consigue cumplir los ángulos correctos
  {
    if(valorMin <10 && valorMax > 130)
    {
      lcd.clear();
      lcd.print(0, 0, "Sigue asi");
      valorMin = 140;
      valorMax = 0;
      repeticiones--;//se disminuye una repeticion de la serie
      Blynk.virtualWrite(V4, repeticiones);//se imprime en la aplicación en el widjet de DISPLAY
      if (repeticiones <= 0)//si termina con las repeticiones
      {
        lcd.clear();
        lcd.print(0, 0, "Enhorabuena, has terminado el ej");//termina el ejercicio (imprime lcd)
        Blynk.virtualWrite(V3, 1);//pone el boton a STOP y para de leer datos
        Blynk.email("isabeljg15@gmail.com", "Nombre del paciente", "Ejercicio 1: "+cadena);
        cadena="";
      }
    }  
  }
}


/*****************************FUNCION QUE HACE LAS COMPROBACIONES DEL EJERCICIO 2********************************/
void ejercicio2()//Sentadilla contra la pared
{
  valorMax = max(position, valorMax);
  valorMin = min(position, valorMin);
  contador++;

  if (valorMax < 90)//comprobabcion de flexión
  {
    if (contador >= 40)
    {
      lcd.clear();
      lcd.print(0, 0, "Flexiona mas la rodilla");
      contador = 0;
      valorMin = 140;
      valorMax = 0;
    }
  }
  else if (valorMin > 10)//comprobabción de estiramiento
  {
    if (contador >= 40)
    {
      lcd.clear();
      lcd.print(0, 0, "Estira mas la rodilla");
      contador = 0;
      valorMin = 140;
      valorMax = 0;
    }
  }
  else
  {
    if(valorMin <10 && valorMax > 90)//comprobacion de movimiento correcto
    {
      lcd.clear();
      lcd.print(0, 0, "Sigue asi");
      valorMin = 140;
      valorMax = 0;
      repeticiones--;//disminuye una repetición
      Blynk.virtualWrite(V4, repeticiones);//escribe en el widget de DISPLAY
      if (repeticiones <= 0)//termina el ejercicio
      {
        lcd.clear();
        lcd.print(0, 0, "Enhorabuena, has terminado el ej");
        Blynk.virtualWrite(V3, 1);//para de leer y pone la app en STOP
        Blynk.email("isabeljg15@gmail.com", "Nombre del paciente", "Ejercicio 2: "+cadena);
        cadena="";
      }
    }  
  }

}



/*****************************FUNCION QUE HACE LAS COMPROBACIONES DEL EJERCICIO 3********************************/
void ejercicio3()//tumbada llevar la rodilla al pecho flexionando
{
  valorMax = max(position, valorMax);
  valorMin = min(position, valorMin);
  contador++;

  if (valorMax < 130)//comparativa de flexión
  {
    if (contador >= 40)
    {
      lcd.clear();
      lcd.print(0, 0, "Flexiona mas la rodilla");
      contador = 0;
      valorMin = 140;
      valorMax = 0;
    }
  }
  else if (valorMin > 10)//comparativa de estiramiento
  {
    if (contador >= 40)
    {
      lcd.clear();
      lcd.print(0, 0, "Estira mas la rodilla");
      contador = 0;
      valorMin = 140;
      valorMax = 0;
    }
  }
  else if (position > 130 && bolaVal == LOW)//comparativa de la rodilla al pecho
  {
    if (contador >= 5)
    {
      lcd.clear();
      lcd.print(0, 0, "lleva la rodilla al pecho");
      contador = 0;
    }
  }
  else//se realiza correctamente el ejercicio
  {
     if(valorMin <10 && valorMax > 130)
    {
      lcd.clear();
      lcd.print(0, 0, "Sigue asi");
      valorMin = 140;
      valorMax = 0;
      repeticiones--;//disminuye una repetición
      Blynk.virtualWrite(V4, repeticiones);//escribe en el widget de DISPLAY las repeticiones que quedan
      if (repeticiones <= 0)//termina el ejercicio
      {
        lcd.clear();
        lcd.print(0, 0, "Enhorabuena, has terminado el ej");
        Blynk.virtualWrite(V3, 1);
        Blynk.email("isabeljg15@gmail.com", "Nombre del paciente", "Ejercicio 3: "+cadena);
        cadena="";
      }
    }  
  }

}



/*****************************FUNCION QUE HACE LAS COMPROBACIONES DEL EJERCICIO 4********************************/
void ejercicio4()//boca abajo flexionar y estirar
{
  valorMax = max(position, valorMax);
  valorMin = min(position, valorMin);
  contador++;

  if (valorMax < 130)//comprobación de flexión
  {
    if (contador >= 40)
    {
      lcd.clear();
      lcd.print(0, 0, "Flexiona mas la rodilla");
      contador = 0;
      valorMin = 140;
      valorMax = 0;
    }
  }
  else if (valorMin > 10)//comparación de estiramiento
  {
    if (contador >= 40)
    {
      lcd.clear();
      lcd.print(0, 0, "Estira mas la rodilla");
      contador = 0;
      valorMin = 140;
      valorMax = 0;
    }
  }
  else if (bolaVal == LOW)//comprobar posicion del cuerpo(boca abajo/boca arriba)
  {
    if (contador >= 5)
    {
      lcd.clear();
      lcd.print(0, 0, "colocate tumbado boca abajo");
      contador = 0;
    }
  }
  else//realiza correctaente el ejercicio
  {
    if(valorMin <10 && valorMax > 130)
    {
      lcd.clear();
      lcd.print(0, 0, "Sigue asi");
      valorMin = 140;
      valorMax = 0;
      repeticiones--;
      Blynk.virtualWrite(V4, repeticiones);
      if (repeticiones <= 0)
      {
        lcd.clear();
        lcd.print(0, 0, "Enhorabuena, has terminado el ej");
        Blynk.virtualWrite(V3, 1);
        Blynk.email("isabeljg15@gmail.com", "Nombre del paciente", "Ejercicio 4: "+cadena);
        cadena="";
      }
    }  
  }

}




/*****************************FUNCION QUE HACE LAS COMPROBACIONES DEL EJERCICIO 5********************************/
void ejercicio5()//Levantar la pierna estirada
{
  valorMax = max(position, valorMax);
  valorMin = min(position, valorMin);
  contador++;

  if (valorMax > 20)//comprobar que no flexiona la rodilla
  {
    if (contador >= 40)
    {
      lcd.clear();
      lcd.print(0, 0, "Estira mas la rodilla");
      contador = 0;
      valorMin = 140;
      valorMax = 0;
    }
  }
  else if (valorMin > 10)//comparar que estira lo suficiente la rodilla
  {
    if (contador >= 40)
    {
      lcd.clear();
      lcd.print(0, 0, "Estira mas la rodilla");
      contador = 0;
      valorMin = 140;
      valorMax = 0;
    }
  }
  else
  {
     if(valorMin <10 && valorMax <30&&bolaVal == HIGH)//realiza correctamente el ejercicio
    {
      lcd.clear();
      lcd.print(0, 0, "Sigue asi");
      valorMin = 140;
      valorMax = 0;
      repeticiones--;//disminuye una repeticion
      Blynk.virtualWrite(V4, repeticiones);//imprime en DISPLAY las repeticiones que quedan
      if (repeticiones <= 0)//termina el ejercicio
      {
        lcd.clear();
        lcd.print(0, 0, "Enhorabuena, has terminado el ej");
        Blynk.virtualWrite(V3, 1);
        Blynk.email("isabeljg15@gmail.com", "Nombre del paciente", "Ejercicio 5: "+cadena);
        cadena="";
      }
    }  
  }

}

/*********************************FUNCION DEL MENU DESPLEGABLE EN LA APP*****************************************/
BLYNK_WRITE(V0)
{
  ej = param.asInt();//Lee el ejercicio escogido
  switch (param.asInt())
  {
    case 1://se elige el ejercicio 1
      Blynk.virtualWrite(V1, 1); //se cambia la imagen 1 en el widget de IMAGE GALERY
      repeticiones=30;
      cadena="";
      lcd.clear();
      lcd.print(0, 0, "Has elegido ejercicio 1");
      delay(2000);
      break;
    case 2://se elige el ejercicio 2
      Blynk.virtualWrite(V1, 2); //se cambia la imagen 2
      repeticiones=30;
      cadena="";
      lcd.clear();
      lcd.print(0, 0, "Has elegido ejercicio 2");
      delay(2000);
      break;
    case 3://se elige el ejercicio 3
      Blynk.virtualWrite(V1, 3); //se cambia la imagen 3
      repeticiones=30;
      cadena="";
      lcd.clear();
      lcd.print(0, 0, "Has elegido ejercicio 3");
      delay(2000);
      break;
    case 4://se elige el ejercicio 4
      Blynk.virtualWrite(V1, 4); //se cambia la imagen 4
      repeticiones=30;
      cadena="";
      lcd.clear(); 
      lcd.print(0, 0, "Has elegido ejercicio 4");
      delay(2000);
      break;
    case 5://se elige el ejercicio 5
      Blynk.virtualWrite(V1, 5); //se cambia la imagen 5
      repeticiones=30;
      cadena="";
      lcd.clear();
      lcd.print(0, 0, "Has elegido ejercicio 5");
      delay(2000);
      break;
    default:
      lcd.clear();
      lcd.print(0, 0, "no se elije nada");

  }

}


/*******************************FUNCION DE INICIALIZACION*************************/
void setup()
{
  // Inicializamos
  Serial.begin(9600);//baudios a los que trabaja arduino

  EspSerial.begin(ESP8266_BAUD);
  Serial.println("llega1");
  delay(10);
  
  Serial.println("llega1");
  Blynk.begin(auth, wifi, ssid, pass);
  
  Serial.println("llega2");
  Serial.println("Waiting for connections...");
  timerID= timer2.setInterval(250L, leedatos);//inicializacion del timer de leedatos cada 250ms
  Blynk.syncAll();//sincroniza la aplicacion blynk todos los pines virtuales

}


/****************************FUNCION BUCLE PRINCIPAL*****************************/
void loop()
{
  Blynk.run();//Ejecuta la App Blynk
  timer2.run();//Ejecuta el temporizador
}
´´

And this is the serial monitor: 
![photo5843828611877023934|375x500](upload://cLKEGDwZnLV13eFniVDUTJpUIPi.jpeg)
0 Likes

#4

0 Likes

#5

What happens if you replace the above with the below?:

Blynk.begin(auth, wifi, ssid, pass, “blynk-cloud.com”, 8080);
0 Likes

#6

If you’re connecting to your iPhone as a mobile hotspot then that may be your issue.
The connecting to a normal Wi-Fi network.

Pete.

0 Likes

#7

it will never work

0 Likes

#8

Why? This syntax seem to work and had been copied from example:

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";

So why the one @Isabel had posted won’t work??

0 Likes

#9

I think his Iphone is in tethering mode :thinking:

0 Likes

#10

Probably YES, but IPhone as an AP should work. At least Android works.

1 Like

#11

I guess it’s possible, but is it possible to have an iPhone as an AP and Blynk App as well?

0 Likes

#12

It seems that some ISPs will block Blynk traffic when the phone is used in tethering/hotspot mode.

Pete.

2 Likes

#13

I think so …

0 Likes

#14

Ah YES! I’ve met such an issue in PL with one operator, while there is no issue with another. So that could be…

Yet there should be one more line in serial monitor: “Connecting to blynk…”, and I don’t see it…

1 Like

#15

I tried, but it doesn’t make any difference.

0 Likes

#16

So, here is the thing, i tried with this other sketch, and works… but I don’t know why. The answer on the serial monitor is completly different. Here is the code and the output on the serial.

#include <BlynkSimpleShieldEsp8266.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "***********************";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Iphone";
char pass[] = "+++++++";



// or Software Serial on Uno, Nano...
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);

void setup()
{
  // Debug console
  Serial.begin(9600);

  // Set ESP8266 baud rate
  EspSerial.begin(ESP8266_BAUD);
  delay(10);

  Blynk.begin(auth, wifi, ssid, pass);

  Serial.println("Waiting for connections...");
  //timerID= timer2.setInterval(250L, leedatos);//inicializacion del timer de leedatos cada 250ms
  //Blynk.syncAll();//sincroniza la aplicacion blynk todos los pines virtuales

}

void loop()
{
  Blynk.run();
  Serial.println("hello world");
  // You can inject your own code or combine it with other sketches.
  // Check other examples on how to communicate with Blynk. Remember
  // to avoid delay() function!
}
0 Likes

#17

This include and define appears to be the only real main difference from a quick glance.

Does your original sketch work if you upload now?

If not, try removing the above and try again?

1 Like

#18

I tried with ando without the define, and still the same output on the serial. The include is in both sketches but i forgot to paste it, sorry.

0 Likes

#19

And without the ESP8266_Lib.h?

1 Like

#20

Then it doesn’t work. I think the problem is with the functions I’ve made, (it’s very heavy for the arduno to run it).
Also if I use the function Blynk.email it also gets stuck on the blynk.begin… but I dont konw why.

1 Like