#define SENSOR_PIN 4 // ADC GPIO4 #define SENSITIVITY 185 // 185mV/A for 5A module (Change for your module) #define ADC_RESOLUTION 4096 // 12-bit ADC (ESP32) #define V_REF 3300 // ESP32 ADC Reference Voltage (mV) const int numSamples = 100; float zeroPoint; void setup() { Serial.begin(115200); pinMode(SENSOR_PIN, INPUT); delay(2000); // Measure idle voltage (zero current) long sum = 0; for (int i = 0; i < numSamples; i++) { sum += analogReadMilliVolts(SENSOR_PIN); delay(10); } zeroPoint = sum / numSamples; Serial.print("Zero Point (No Current): "); Serial.print(zeroPoint); Serial.println(" mV"); } float readACCurrent() { float sumSquared = 0; for (int i = 0; i < numSamples; i++) { float voltage = analogReadMilliVolts(SENSOR_PIN); float current = (voltage - zeroPoint) / SENSITIVITY; sumSquared += current * current; delay(1); } return sqrt(sumSquared / numSamples); } void loop() { float acCurrent = readACCurrent(); Serial.print("AC Current RMS: "); Serial.print(acCurrent, 3); Serial.println(" A"); delay(1000); }