Comunicación serial no confiable entre Arduino serial y Android mediante HC-05 Bluetooth SPP

0

Tengo una APP de Andriod que se conecta a Arduino UNO a través de bluetooth (HC-05), y recibe lecturas del sensor usando el comando Serial.print () en el croquis de Arduino. La aplicación se realiza utilizando el inventor de la aplicación y utiliza bloques de Bluetooth en ese programa.

Aquí hay un complemento

Funcionabienhastaqueuseunsensordepolvo,quenecesitaAndroidparaprobarenelpinD8.

intpin=8;unsignedlongduration;unsignedlongstarttime;unsignedlongsampletime_ms=1000;//sampe30s;unsignedlonglowpulseoccupancy=0;floatratio=0;floatconcentration=0;unsignedlongtimeElapsed=2000;unsignedlongsTime;voidsetup(){Serial.begin(9600);pinMode(8,INPUT);starttime=millis();}voidloop(){duration=pulseIn(pin,LOW);lowpulseoccupancy=lowpulseoccupancy+duration;if((millis()-starttime)>sampletime_ms)//ifthesampletime==1s{ratio=lowpulseoccupancy/(sampletime_ms*10.0);//Integerpercentage0=>100concentration=1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62;//usingspecsheetcurveSerial.print(analogRead(analogInPin)/20);Serial.print("s");
 Serial.print(analogRead(A5));
 Serial.print("s");
 Serial.print(analogRead(A3));
 Serial.print("s");
 Serial.print(concentration);
 Serial.print("s");
lowpulseoccupancy=0;
starttime=millies();
 } 

 }

La adición de la variable "concentración" anterior a Serial.print () lleva al error en el que la APP no recibe ningún bloque de información en un temporizador de reloj, luego recibe dos consecutivos en el siguiente temporizador de reloj. La aplicación está diseñada para verificar el bluetooth cada 1000 ms, y estoy enviando los datos del sensor después de 1000 ms. Cuando no recibe datos, muestra error="No se puede acceder al ítem / lista está vacío. ¿Qué hacer? Funciona bien si dejo la" concentración ". La tasa de serie es 9600 bps.

    
pregunta user20507

1 respuesta

1

En el arduino, una longitud de 32 bits, creo que una flotación para la concentración no es suficiente, por lo tanto, el aruino en desbordamiento tal vez se reinicie antes de escribir todo en la serie.

    
respondido por el user43186

Lea otras preguntas en las etiquetas