Hello, I was using the esp32 for monitoring, for a few days it worked correctly, but recently the device is only offline, I thought it was a problem with the board, but when using a new one the problem persists, I no longer know what to do, I will leave a picture of what it always looks like when you try to call and the code is done
#include <ArduinoIoTCloud.h>
#include <Arduino_ConnectionHandler.h>
#include <Wire.h> //Biblioteca para Comunicação I2C (sensores)
#include <ACS712.h>
const char DEVICE_LOGIN_NAME[] = "9b97343f-6f53-47cc-a80e-c311c0a09b7c";
const char SSID[] = "XXXX"; // Network SSID (name)
const char PASS[] = "XXXX"; // Network password (use for WPA, or use as key for WEP)
const char DEVICE_KEY[] = "JFWJHIDBDVUSOLNPGVC2"; // Secret device password
void onNivelaguaChange();
void onCorrenteRmsChange();
CloudPercentage nivelagua;
CloudElectricCurrent correnteRms; //Armazenar a corrente medida pelo sensor
const int sensorACS712 = 34; // Pino ao qual o sensor ACS712 está conectado
int amostragem =1000;
int sensorValue_aux = 0;
float valorSensorACS712 = 0;
float valorCorrente = 0;
float voltsporUnidade = 0.004887586;// 5%1023
//const int sensorOffset = 2500; // Valor do offset do sensor ACS712, ajuste conforme necessário
//- Para 30A, sensibilidade = 0.066;
//- Para 20A, sensibilidade = 0.100;
//- Para 5A, sensibilidade = 0.185;
float sensibilidade = 0.100;; // Sensibilidade do sensor ACS712 de 20A
void initProperties(){
ArduinoCloud.setBoardId(DEVICE_LOGIN_NAME);
ArduinoCloud.setSecretDeviceKey(DEVICE_KEY);
ArduinoCloud.addProperty(nivelagua, READWRITE, ON_CHANGE, onNivelaguaChange);
ArduinoCloud.addProperty(correnteRms, READWRITE, ON_CHANGE, onCorrenteRmsChange);
}
WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS);
#define sensor1Value 12
#define sensor2Value 13
#define sensor3Value 14
void setup() {
//VALOR REFERENCIAL
// analogReference(DEFAULT);
// Initialize serial and wait for port to open:
Serial.begin(9600);
pinMode(sensor1Value, INPUT);
pinMode(sensor2Value, INPUT);
pinMode(sensor3Value, INPUT);
pinMode(sensorACS712, INPUT);
// Initialize Wi-Fi connection
WiFi.begin(SSID, PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
// This delay gives the chance to wait for a Serial Monitor without blocking if none is found
delay(1500);
// Defined in thingProperties.h
initProperties();
// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
}
void loop() {
ArduinoCloud.update();
// Your code here
onNivelaguaChange(); //Verifica o nível da água através dos sensores instalados
delay(2000);
//onCorrenteRmsChange();//Verifica a corrente eletrica do sensor
//delay(5000); // Send data every 5 seconds
}
void onNivelaguaChange() { //Verificando o nivel de água
if ((digitalRead(sensor1Value) == HIGH) && (digitalRead(sensor2Value) == LOW) && (digitalRead(sensor3Value) == LOW)) {
nivelagua = 33;
} else if ((digitalRead(sensor1Value) == HIGH) && (digitalRead(sensor2Value) == HIGH) && (digitalRead(sensor3Value) == LOW)) {
nivelagua = 66;
} else if ((digitalRead(sensor1Value) == HIGH) && (digitalRead(sensor2Value) == HIGH) && (digitalRead(sensor3Value) == HIGH)) {
nivelagua = 100;
} else {
nivelagua = 0;
}
Serial.println("Valor medido do nivel: ");
Serial.print(nivelagua);
delay(1000);
}
void onCorrenteRmsChange() {
valorSensorACS712 =0;
for(int i=0; i < amostragem ; i++){
// le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é
//(1023)vcc/2 para corrente =0
sensorValue_aux = (analogRead(sensorACS712) -511.5);
// somam os quadrados das leituras (É valido para DC e AC).
valorSensorACS712 += pow(sensorValue_aux,2);
//-----------------CORRENTE DC---------------------------------------
//Somente para medir corrente DC
///valorSensorACS712 += sensorValue_aux ;
//UM PEQUENO INTERVALO ENTRE AS LEITURAS
delay(2000);
}
// CALCULO QUE MEDE A CORRENTE MÉDIA
// finaliza o calculo da méida quadratica e ajusta o valor lido para volts
valorSensorACS712 = (sqrt(valorSensorACS712/ amostragem)) * voltsporUnidade;
//-----------------CORRENTE DC---------------------------------------
//Somente para medir corrente DC
//valorSensorACS712 = (valorSensorACS712/ amostragem) * voltsporUnidade;
// calcula a corrente considerando a sensibilidade do sernsor (100 mV por amper)
valorCorrente = (valorSensorACS712/sensibilidade);
correnteRms = valorCorrente;
Serial.println("Valor medido da corrente: ");
Serial.print(correnteRms);
delay(2000);
}