INEMA.SOLUÇÕES
Solução 5 · Energia

O consumo da casa em tempo real e em reais

Uma garra abraça o fio de energia e mede a corrente sem cortar nada. O ESP32 calcula quantos watts a casa está puxando, soma os kWh do mês e mostra em reais no celular. Serve para o vizinho que levou susto com a conta e para o pequeno comércio que quer saber onde está o gasto.

Kit R$ 80–150Dificuldade: médiaKit em 3,3 V e 5 V
Antes de tudo: tomada e quadro de energia (127/220 V) matam. Você monta e programa só a parte de baixa tensão (ESP32, resistores, sensor). Colocar a garra no fio da casa é trabalho de eletricista ou de um adulto que saiba fazer, com a energia desligada. Veja a seção Segurança.

Como funciona

A garra sente o campo do fio

Garra no fio ESP32 mede a onda Watts e kWh Painel no celular corrente vira tensão pequena 2000 leituras seguidas corrente eficaz (RMS) amperes × tensão da casa watts agora, kWh, R$
O ESP32 não toca na tomada. Ele só lê a tensão pequena que a garra gera, de no máximo 1 V.

A corrente que passa num fio cria um campo magnético em volta dele. A garra SCT-013 é um transformador em forma de pregador: ela transforma esse campo numa tensão pequena, de até 1 V quando passam 30 A. Como a corrente de casa é alternada, essa tensão sobe e desce 60 vezes por segundo. O ESP32 lê 2000 vezes seguidas, calcula a média do "tamanho" da onda (o valor RMS) e multiplica pela tensão da sua casa.

O número é uma estimativa. O ESP32 mede só a corrente e usa a tensão nominal (127 V ou 220 V). Isso dá a potência aparente, sem o fator de potência de motores e fontes. Para geladeira, ventilador e computador, o número sai um pouco acima do real. Para chuveiro, ferro e chaleira, fica bem perto.

Peças

Lista de compras

PeçaPara que servePreço aprox.
ESP32 DevKit V1 (30 pinos)O cérebro, com Wi-FiR$ 30–45
Sensor de garra SCT-013-030 (saída em tensão, 1 V = 30 A)Mede a corrente sem cortar o fio. Compre o "030", que já tem o resistor de carga dentroR$ 35–60
Conector P2 fêmea (jack 3,5 mm)Recebe o plugue do sensorR$ 3–6
2 resistores 10 kΩ + capacitor 10 µFLevantam a onda até o meio da faixa do ESP32 (1,65 V)R$ 2–5
Protoboard e jumpersLigações sem soldaR$ 12–20
Carregador 5 V + cabo USBAlimenta o ESP32R$ 0–20
TotalR$ 80–150

Preços aproximados de loja online brasileira em outubro de 2026, a conferir antes de comprar. Não inclui caixa de acabamento nem o serviço do eletricista.

Ligação

O circuito de polarização

A onda da garra vai de −1 V a +1 V, e o ESP32 só lê de 0 a 3,3 V. Dois resistores iguais criam um "meio" em 1,65 V. Um fio do sensor vai nesse meio; o outro vai no GPIO 34. Assim a onda passa a subir e descer em volta de 1,65 V, sempre dentro da faixa.

ESP32 3V3 GND GPIO 34 SCT-013 -030 plugue P2 R1 10 kΩ R2 10 kΩ C 10 µF meio 1,65 V fio 2 do sensor fio 1
Capacitor eletrolítico: a perna maior (+) vai no meio, a menor (−, faixa clara) no GND. O ESP32 fica ligado no USB.
LigaçãoDePara
R1 10 kΩ3V3 do ESP32ponto do meio
R2 10 kΩponto do meioGND do ESP32
Capacitor 10 µF+ no ponto do meio− no GND
Sensor, fio 1um terminal do conector P2ponto do meio
Sensor, fio 2outro terminal do conector P2GPIO 34
Certo: um fio só Errado: cabo inteiro a garra abraça a fase ida e volta se anulam: 0 A
A corrente que vai por um fio volta pelo outro. Com os dois dentro da garra, os campos se cancelam e o painel marca zero.
Por que GPIO 34? Com o Wi-Fi ligado, só os pinos 32 a 39 leem sinal analógico direito no ESP32. O 34 é só de entrada, bom para sensor.

Passo a passo

Do pacote ao primeiro gráfico

  1. Prepare a Arduino IDE. Instale a Arduino IDE 2 e, em Gerenciador de Placas, o pacote "esp32" (Espressif). Este projeto não precisa de biblioteca extra.
  2. Teste a placa sozinha. Escolha "ESP32 Dev Module" e a porta, e grave o exemplo Blink. Se não gravar, segure o botão BOOT quando aparecer "Connecting...".
  3. Monte a polarização na protoboard. R1, R2 e o capacitor, como no diagrama. Com um multímetro, meça entre o meio e o GND: tem que dar perto de 1,65 V.
  4. Ligue o conector P2 no meio e no GPIO 34, encaixe o plugue do sensor e grave o código. Sem a garra em nenhum fio, o Monitor Serial (115200) tem que mostrar 0,00 A.
  5. Peça a um adulto para colocar a garra. No quadro de energia (eletricista, energia desligada) ou num adaptador separador de fios comprado pronto. Você só observa e anota.
  6. Calibre com um aparelho conhecido. Ligue só um aparelho resistivo de potência escrita na etiqueta, como uma chaleira de 1200 W. Faça CALIBRA = potência da etiqueta ÷ potência medida e grave de novo.
  7. Abra o painel. Digite no navegador do celular o IP que aparece no Monitor Serial, na mesma rede Wi-Fi.

Código

Arduino IDE para ESP32

Troque a rede, a tensão da sua casa e a tarifa. A tarifa em R$ por kWh, com impostos, está na sua conta de luz. O painel atualiza a cada 5 segundos.

// Painel de energia — ESP32, Arduino IDE
// Sensor: SCT-013-030 (1 V na saída = 30 A)
// Não precisa de biblioteca extra.
#include <WiFi.h>
#include <WebServer.h>

const char* REDE  = "NOME_DA_REDE";
const char* SENHA = "SENHA_DA_REDE";

// GPIO 34: garra, pelo circuito do meio
const int PINO_GARRA = 34;
// tensão da sua casa: 127 ou 220
const float TENSAO = 127.0;
// R$ por kWh: a conferir na sua conta
const float TARIFA = 0.95;
// SCT-013-030: 1 V = 30 A
const float A_POR_VOLT = 30.0;
// ajuste com um aparelho conhecido
float CALIBRA = 1.0;
// abaixo disso é ruído: conta como zero
const float RUIDO_A = 0.15;

const int N = 2000;
int amostra[N];
WebServer servidor(80);
float amperes = 0, watts = 0, kwh = 0;
unsigned long ultima = 0;

float lerAmperes() {
  // 1) lê 2000 vezes (cerca de 2 ondas)
  long soma = 0;
  for (int i = 0; i < N; i++) {
    amostra[i] = analogRead(PINO_GARRA);
    soma += amostra[i];
  }
  // 2) a média é o "meio" (1,65 V)
  float media = soma / (float)N;
  // 3) RMS: raiz da média dos quadrados
  double quad = 0;
  for (int i = 0; i < N; i++) {
    float d = amostra[i] - media;
    quad += d * d;
  }
  float rms = sqrt(quad / N);
  // 4) de leitura (0–4095) para volts
  float vrms = rms * 3.3 / 4095.0;
  float a = vrms * A_POR_VOLT * CALIBRA;
  return a < RUIDO_A ? 0 : a;
}

// /dados: JSON para o painel e para a IA
void dados() {
  String j = "{\"amperes\":" + String(amperes, 2);
  j += ",\"watts\":" + String(watts, 0);
  j += ",\"kwh\":" + String(kwh, 3);
  j += ",\"reais\":" + String(kwh * TARIFA, 2);
  j += "}";
  servidor.send(200, "application/json", j);
}

// /: página que abre no celular
void painel() {
  String h = "<meta name=viewport "
    "content='width=device-width'>"
    "<meta http-equiv=refresh content=5>";
  h += "<h2>Energia</h2><p>Agora: ";
  h += String(watts, 0) + " W<br>Somado: ";
  h += String(kwh, 2) + " kWh<br>Custo: R$ ";
  h += String(kwh * TARIFA, 2) + "</p>";
  servidor.send(200, "text/html", h);
}

void setup() {
  Serial.begin(115200);
  WiFi.begin(REDE, SENHA);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.print("\nPainel em http://");
  Serial.println(WiFi.localIP());
  servidor.on("/", painel);
  servidor.on("/dados", dados);
  servidor.begin();
  ultima = millis();
}

void loop() {
  servidor.handleClient();
  if (millis() - ultima < 1000) return;
  // horas desde a última medida
  float horas = (millis() - ultima) / 3600000.0;
  ultima = millis();
  amperes = lerAmperes();
  // potência aparente estimada
  watts = amperes * TENSAO;
  kwh += watts * horas / 1000.0;
  Serial.printf("%.2f A  %.0f W  %.3f kWh\n",
                amperes, watts, kwh);
}
Os kWh zeram se o ESP32 desligar. Na versão 2, guarde o total na memória da placa (biblioteca Preferences, que já vem no pacote esp32) a cada 10 minutos.

A camada de IA

O que a IA faz neste projeto

Qual aparelho mais gasta?

Ligue um aparelho por vez e anote o degrau no gráfico: "chuveiro +5400 W". Com a lista e o registro do dia, a IA aponta o que mais pesou e em que horário.

Consumo fora do normal

O script guarda a média e o desvio de cada hora do dia. Se a leitura passar da média + 2 desvios, ele avisa: "às 3 h a casa está puxando 900 W, o normal é 150 W".

Previsão da conta

kWh até hoje ÷ dias medidos × dias do mês × tarifa. A IA explica o resultado em português e sugere onde cortar.

Script em Python, rodando no computador na mesma rede. Ele registra uma leitura por minuto num arquivo CSV e, quando você pede, monta a pergunta para a IA:

# energia.py — roda no computador,
# na mesma rede do ESP32
import csv, json, time, statistics
import urllib.request
from datetime import datetime

# troque pelo IP do seu ESP32
URL = "http://192.168.0.51/dados"
ARQ = "energia.csv"

def ler():
    return json.load(urllib.request.urlopen(URL))

def registrar(minutos):
    for _ in range(minutos):
        d = ler()
        agora = datetime.now()
        t = agora.isoformat(timespec="minutes")
        with open(ARQ, "a", newline="") as f:
            csv.writer(f).writerow([t, d["watts"]])
        time.sleep(60)

def fora_do_normal(watts, hora):
    # média e desvio desta hora do dia
    h = f"{hora:02d}"
    v = [float(l[1])
         for l in csv.reader(open(ARQ))
         if l[0][11:13] == h]
    if len(v) < 30:
        # ainda pouco histórico
        return False
    m = statistics.mean(v)
    s = statistics.stdev(v)
    return watts > m + 2 * s

def pergunta_para_ia(texto):
    d = json.dumps(ler())
    return (
        "Você analisa a energia de uma "
        "casa. Leitura agora: " + d +
        ". Tensão 127 V, potência "
        "estimada, sem fator de "
        "potência. Responda em "
        "português, em até 4 frases: "
        + texto)

# registrar(60): grava uma hora
# fora_do_normal(w, hora): avisa
q = "qual aparelho mais gasta?"
print(pergunta_para_ia(q))
# Mande o prompt ao modelo que usa:
# - cole no chat do serviço de IA;
# - use a biblioteca oficial dele,
#   com a SUA chave numa variável
#   de ambiente (nunca no código);
# - ou rode um modelo local no PC,
#   sem chave.

Exemplo de conta para mostrar ao cliente, feita com os números dele:

Chuveiro 5500 W × 0,5 h por dia
× 30 dias
= 82,5 kWh por mês
× tarifa da sua conta (R$ por kWh)
= quanto o chuveiro custa no mês

Chave de IA é como senha. Nunca escreva a chave dentro do código do ESP32 nem em arquivo que vai para o GitHub. Guarde numa variável de ambiente do computador e siga a documentação do serviço que você escolheu.

Teste e melhore

Confira antes de mostrar para alguém

Checklist
  • Entre o meio e o GND o multímetro mostra perto de 1,65 V.
  • Com a garra fora de qualquer fio, o painel marca 0 A.
  • Com a chaleira de 1200 W ligada, o painel marca de 1100 a 1300 W depois da calibração.
  • Ao desligar a chaleira, o valor volta ao consumo de antes em poucos segundos.
  • Os kWh sobem devagar e o custo em R$ bate com a conta feita à mão.
Erro comumCausa provávelComo resolver
Marca 0 A com aparelho ligadoGarra em volta do cabo inteiro (ida e volta juntas)O adulto passa a garra em um fio só, a fase
Marca 0,3 A sem nada ligadoRuído do ADC ou falta o capacitorColoque o capacitor de 10 µF; suba RUIDO_A para 0,3
Valor pula muito ou fica sempre altoSensor num pino ADC2 ou meio fora de 1,65 VUse o GPIO 34; confira os dois resistores de 10 kΩ
Potência com quase o dobro do certoTensão errada no códigoConfira se a casa é 127 V ou 220 V e troque TENSAO
Leitura enorme e sem sentidoComprou o SCT-013-100 (saída em corrente, sem resistor de carga)Use o SCT-013-030, que sai em tensão
Marca 0 num aparelho de pilha ou USBA garra só mede corrente alternadaNormal: corrente contínua não aparece

Caderno de testes. Anote numa linha cada mudança e o resultado. A lista de aparelhos com o degrau de cada um vira o relatório que você entrega ao cliente.

DataVersãoO que mudouResultado
20/10v1Sem calibraçãoChaleira de 1200 W marcou 1380 W
20/10v2CALIBRA = 1200 ÷ 1380 = 0,87Chaleira marca 1210 W
…v3Guarda os kWh na memória (Preferences)Anote aqui

Segurança

Quem faz o quê

Você não abre o quadro de energia nem mexe em tomada. A sua parte é o ESP32, os resistores, o capacitor e o sensor, tudo em 3,3 V e 5 V pelo USB. Colocar a garra no fio da casa é trabalho de eletricista ou de um adulto que saiba fazer, com o disjuntor desligado, sem fio desencapado e com a tampa do quadro fechada de novo.
Demonstração na escola ou na feira: use um adaptador separador de fios para alicate amperímetro, comprado pronto. Um adulto liga o adaptador na tomada e o aparelho nele; você só encaixa a garra no laço de fio isolado do adaptador. Nunca descasque nem separe os fios de uma extensão.
Versão com adulto, fora do kit. O medidor PZEM-004T mede tensão, corrente e fator de potência de verdade, mas liga direto na rede de 127/220 V. Ele e qualquer relé ligado na tomada só entram com eletricista ou professor, com a energia desligada e tudo em caixa fechada.

Ficha de negócio

Como vender o painel de energia

Quem compraVizinho que levou susto com a conta, pequeno comércio com freezer e forno (padaria, lanchonete), escola que quer medir a sala de informática
Custo do kitR$ 80–150 (lista acima, a conferir)
Preço sugeridoR$ 250–380 o aparelho montado, calibrado, em caixa (sugestão)
Mão de obra1 hora para configurar e ensinar o painel. A garra no quadro é com eletricista: combine o serviço dele à parte ou faça parceria
Assinatura opcionalR$ 15–30 por mês: relatório da semana, alerta de consumo fora do normal e previsão da conta (sugestão)
Argumento de economiaMeça antes e depois: ligue os aparelhos um a um, mostre o degrau de cada um em watts e faça a conta do mês com a tarifa da conta do cliente
Comece pela sua casa. Uma semana de gráfico da sua casa, com o horário do chuveiro e da geladeira, mostra ao cliente o que ele vai receber.

Para ir além

Próximos passos

Para entender o que o modelo de IA faz com os dados, comece pelo curso IA do zero. Para ter ajuda de um agente de IA ao escrever e corrigir o código, siga para o OSWork. Todos os cursos são abertos e gratuitos no INEMA.CLUB.