Acs712 com wifi não funciona?

Quando conectado com o wifi o codigo não lê a corrente!

#include "ACS712.h"
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>

const char* ssid = "Jonathas";
const char* password = "drielle24";
const char* serverName = "http://jonathas.pythonanywhere.com";
const char* serverPath = "/davy/receiver/";

const float sensibilidadeACS712 = 66;      // Sensibilidade do sensor ACS712 30A (mV/A)
const int pinSensor = 25;                     // Pino digital ao qual os sensores estão conectados
const float voltagemReferencia = 3.3;         // Voltagem de referencia do microcontrolador
const int ledPin = 2;                         // Pino do LED no ESP32

WiFiClient wifiClient;                        // Declarar wifiClient
HTTPClient httpClient;                        // Declarar HTTPClient

ACS712 ACS(pinSensor, voltagemReferencia, 4095, sensibilidadeACS712);

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    digitalWrite(ledPin, HIGH);               // Pisca o LED enquanto não estiver conectado
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    Serial.println("Conectando ao WiFi...");
    }

  ACS.autoMidPoint();
  Serial.println("Conectado ao WiFi!");
  digitalWrite(ledPin, HIGH);                  // Mantém o LED aceso quando conectado à Internet
}

void loop() {

  float mA = ACS.mA_AC();                   // Função da biblioteca para ler mA da corrente elétrica 

  if (mA < 400.0) {
    Serial.println("Corrente (A): 0");
  } else {
    float voltage = mA;
    Serial.print("Corrente (A): ");
    Serial.println(mA / 1000.0, 2);  // Imprime com 2 casas decimais
    
    float power = (mA / 1000.0) * (sensibilidadeACS712);
    Serial.print("Potência (W): ");
    Serial.println(power, 2);
  }

  delay(5000);
}

Saida
14:31:41.138 -> Corrente (A): 0.00
14:31:41.211 -> Potência (W): 0.00

Porém quando eu não uso o while para se conectar o wifi, faz a leitura normal!


#include "ACS712.h"
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>

const char* ssid = "Jonathas";
const char* password = "drielle24";
const char* serverName = "http://jonathas.pythonanywhere.com";
const char* serverPath = "/davy/receiver/";

const float sensibilidadeACS712 = 66;      // Sensibilidade do sensor ACS712 30A (mV/A)
const int pinSensor = 25;                     // Pino digital ao qual os sensores estão conectados
const float voltagemReferencia = 3.3;         // Voltagem de referencia do microcontrolador
const int ledPin = 2;                         // Pino do LED no ESP32

WiFiClient wifiClient;                        // Declarar wifiClient
HTTPClient httpClient;                        // Declarar HTTPClient

ACS712 ACS(pinSensor, voltagemReferencia, 4095, sensibilidadeACS712);

void setup() {
  Serial.begin(9600);
  ACS.autoMidPoint();
}

void loop() {

  float mA = ACS.mA_AC();                   // Função da biblioteca para ler mA da corrente elétrica 

  if (mA < 400.0) {
    Serial.println("Corrente (A): 0");
  } else {
    float voltage = mA;
    Serial.print("Corrente (A): ");
    Serial.println(mA / 1000.0, 2);  // Imprime com 2 casas decimais
    
    float power = (mA / 1000.0) * (sensibilidadeACS712);
    Serial.print("Potência (W): ");
    Serial.println(power, 2);
  }

  delay(5000);
}

Saida

14:35:05.635 -> Corrente (A): 2.16
14:35:05.675 -> Potência (W): 142.48

Experimenta trocar o pino onde o sensor está ligado. No ESP32, o wi-fi não funciona com o ADC2 (pinos 0, 2, 4, 12 - 15 e 25 - 27).

Troque o sensor para o ADC1 (pinos 32 a 39).

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.