Buenas tardes, un gusto en saludarles nuevamente.
Es decir que la funcion mencionada anteriormente utiliza los pines RX y TX (0 y 1) del arduino, por lo que es recomendable usar otros pines (digitales) para hacer la conexion con el ESP8266.
Actualmente estoy trabajando en un proyecto que usa el sensor de presion arterial y el de electromiografia (EMG). Tengo el siguiente codigo:
Code:
#include <SoftwareSerial.h>
#include <eHealth.h>
SoftwareSerial ESP1(3,2); // (RX,TX) EN EL ARDUINO
int x=2;
int flag=0;
void setup(){
Serial.begin(19200);
eHealth.readBloodPressureSensor();
ESP1.begin(19200);
}
void loop(){
Serial.flush();
String a,coma=",";
int Syst=0, Dias=0, Puls=0;
//-----Codigo de tension arterial para obtener solo la ultima medicion realizada---------
while(x>1){
Serial.flush();
uint8_t numberOfData = eHealth.getBloodPressureLength();
Serial.print(F("Number of measures : "));
Serial.println(numberOfData, DEC);
int flag= numberOfData;
int flag1= flag - 1;
for (int i = flag1; i<flag; i++) {
x--;
Serial.print(F("Systolic value : "));
Serial.print(30+eHealth.bloodPressureDataVector[i].systolic);
Syst=30+eHealth.bloodPressureDataVector[i].systolic;
Serial.println(F(" mmHg"));
Serial.flush();
Serial.print(F("Diastolic value : "));
Serial.print(eHealth.bloodPressureDataVector[i].diastolic);
Dias=eHealth.bloodPressureDataVector[i].diastolic;
Serial.println(F(" mmHg"));
Serial.flush();
Serial.print(F("Pulse value : "));
Serial.print(eHealth.bloodPressureDataVector[i].pulse);
Puls=eHealth.bloodPressureDataVector[i].pulse;
Serial.println(F(" bpm"));
Serial.flush();
}
}
Serial.println("\n");
Serial.println("\n");
delay(500);
Serial.println(Syst);
Serial.println(Dias);
Serial.println(Puls);
//------------ Fin Codigo de tension arterial para obtener solo la ultima medicion realizada
//--------------Inicio de codigo para obtener valores de EMG-------------------------
for (int j=0; j<6; j++){
int EMG = eHealth.getEMG();
a.concat(EMG);
a.concat(coma);
delay(7);
}
Serial.print("a=");
Serial.println(a);
//---------------------FIN de codigo para obtener valores de EMG
//En este punto realizo un String que es la peticion GET para ser recibido por un PHP y cargar los //valores a la base de datos de la siguente manera:
//GET /pruebaCarga.php?Syst=xxx&Dias=yy&Puls=ww&EMG=12,34,565,24,344,555,
String GETrequest="GET /pruebaCarga.php?Syst=";
GETrequest+=Syst;
GETrequest+="&Dias=";
GETrequest+=Dias;
GETrequest+="&Puls=";
GETrequest+=Puls;
GETrequest+="&EMG=";
GETrequest+=a;
delay(300);
int w;
w=11+GETrequest.length(); //Obtengo la longitud para decir el tamaño de la peticion GET
Serial.println("AT+CIPSTART=\"TCP\",\"192.168.8.100\",80");//Inicio la conexion con la base de datos.
ESP1.println("AT+CIPSTART=\"TCP\",\"192.168.8.100\",80");
delay(300);
Serial.print("AT+CIPSEND=");
Serial.println(w); //Envio longitud
ESP1.print("AT+CIPSEND=");
ESP1.println(w);
Serial.println(GETrequest); //envio peticion GET armada anteriormente.
ESP1.println(GETrequest);
Serial.println("\n");
Serial.flush();
ESP1.flush();
delay(100);
}
El inconveniente que estoy teniendo ahora es que quiero obtener mas de 6 valores de EMG, pero al colocar 7 deja de funcionar el codigo al no agregar esa variable a la peticion GET. colocandolo de esta manera: GET /pruebaCarga.php?Syst=xxx&Dias=yy&Puls=ww&EMG=
Es importante destacar que si quito todo lo relacionado con la libreria SoftwareSerial y los comandos ESP1.print si puedo agregar mas valores.
Es como que si se llenara la memoria.
Si ven algun error o tienen alguna recomendacion pues seria de muchisima utilidad para mi.
Saludos.