Tensão e Corrente na Prática com ESP32, INA219 e Display OLED
![]() |
| Aprenda na prática como medir tensão e corrente elétrica usando ESP32, INA219 e display OLED. |
Tensão e Corrente na Prática com ESP32, INA219 e Display OLED
Entender a diferença entre tensão e corrente elétrica é um dos primeiros passos para quem está começando em eletrônica. Porém, muitas vezes esses conceitos ficam apenas na teoria.
Neste projeto vamos fazer diferente: vamos medir tensão e corrente em um circuito real, utilizando um ESP32, um sensor INA219 e um display OLED SSD1306.
A ideia é observar os valores no display e, depois, relacioná-los com a Lei de Ohm.
O que são tensão e corrente?
Antes de montar o circuito, precisamos entender dois conceitos fundamentais.
Tensão elétrica
![]() |
| Tensão elétrica é a diferença de potencial entre dois pontos de um circuito. Aprenda a relação entre volts (V) e milivolts (mV) com um exemplo prático. |
A tensão elétrica é a diferença de potencial entre dois pontos de um circuito.
Ela é medida em volts (V).
Por exemplo, neste projeto estamos utilizando uma fonte de aproximadamente:
5,05 V
Essa tensão fornece a energia necessária para que a corrente possa circular pelo circuito.
É importante lembrar que podemos ter tensão entre dois pontos mesmo quando não existe corrente circulando.
Corrente elétrica
A corrente elétrica está relacionada ao fluxo de carga elétrica através de um circuito.
![]() |
| A diferença de potencial (tensão) entre os extremos do circuito provoca o movimento dos elétrons pelo material condutor, formando a corrente elétrica. |
Sua unidade é o ampère (A).
![]() |
| Tabela de conversão de miliampères para ampères, mostrando a equivalência entre 1000 mA e 1 A, 100 mA e 0,1 A, 10 mA e 0,01 A, e 1 mA e 0,001 A. |
Em circuitos eletrônicos é muito comum utilizar valores menores, como:
- mA — miliampère
- µA — microampère
Neste experimento, estamos trabalhando com aproximadamente:
3,10 mA
O material de referência também destaca a relação entre tensão, corrente e resistência através da Lei de Ohm.
Tensão não é corrente
Essa é uma diferença importante para quem está começando.
Podemos pensar de forma simplificada:
Tensão → diferença de potencial
Corrente → fluxo de carga
A tensão é uma das condições que permite que uma corrente circule quando existe um caminho fechado.
No nosso projeto temos:
Fonte → INA219 → Resistor → LED → GNDQuando o circuito está fechado, existe circulação de corrente.
O que é o INA219?
O INA219 é um sensor utilizado para realizar medições elétricas.
Neste projeto ele será utilizado para medir principalmente:
- Tensão
- Corrente
O sensor se comunica com o ESP32 através do protocolo I²C.
Isso permite que o ESP32 leia os valores medidos pelo INA219 e depois apresente essas informações no display OLED.
Assim, transformamos o conjunto em uma pequena ferramenta de medição:
INA219
↓
mede o circuito
↓
ESP32
↓
OLED SSD1306
↓
mostra os valoresComo o INA219 é colocado no circuito?
Uma característica importante do INA219 é que, para medir a corrente da carga, ele deve ser colocado em série com o circuito.
O caminho da corrente convencional é:
+5 V → VIN+ → INA219 → VIN− → resistor → LED → GND
Portanto, na imagem do projeto, a corrente convencional está saindo do positivo da fonte e seguindo em direção ao GND.
O VIN+ fica voltado para o lado positivo da fonte, enquanto o VIN− fica voltado para o lado da carga.
Depois do INA219 temos o resistor de 1 kΩ e o LED.
Isso também explica por que o INA219 precisa estar em série para medir a corrente que passa pela carga.
ESP32 + OLED + INA219
O ESP32 utiliza o barramento I²C para conversar com os dois dispositivos.
![]() |
| Esquema completo do projeto com ESP32, sensor INA219, display OLED SSD1306, resistor de 1 kΩ e LED para medir e visualizar tensão e corrente elétrica. |
Neste projeto:
| Componente | VCC | GND | SDA | SCL |
|---|---|---|---|---|
| ESP32 | USB/5 V | GND | GPIO 21 | GPIO 22 |
| OLED SSD1306 | 5 V* | GND | GPIO 21 | GPIO 22 |
| INA219 | 5 V | GND | GPIO 21 | GPIO 22 |
* Atenção ao modelo do OLED: alguns módulos SSD1306 aceitam 3,3–5 V, mas isso depende da placa. Verifique a especificação do seu módulo antes de alimentá-lo com 5 V.
O OLED e o INA219 compartilham os mesmos sinais:
SDA → GPIO 21
SCL → GPIO 22
Instalando a biblioteca do INA219
Para que o Arduino IDE consiga controlar o sensor, precisamos instalar a biblioteca:
Adafruit INA219
No Arduino IDE:
Acesse:
Gerenciar Bibliotecas
Na caixa de pesquisa, digite:
Adafruit INA219
Procure por:
Adafruit INA219 by Adafruit
Clique em:
Instalar
A biblioteca adicionará ao projeto o arquivo:
#include <Adafruit_INA219.h>Também serão necessárias as bibliotecas utilizadas pelo display:
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>Código utilizado
Este é o código que utilizamos no segundo teste, com a calibração do INA219 para 16 V / 400 mA
ESP32 + INA219 + OLED SSD1306
INÍCIO DO CÓDIGO
/*
============================================================
ESP32 + INA219 + OLED SSD1306
MEDIÇÃO DE TENSÃO E CORRENTE
============================================================
OBJETIVO:
Medir tensão e corrente utilizando o INA219 e apresentar
os valores simultaneamente no display OLED.
CALIBRAÇÃO:
INA219 configurado para 16 V / 400 mA.
I2C:
SDA -> GPIO 21
SCL -> GPIO 22
OLED:
SSD1306 128x64
Endereço: 0x3C
INA219:
Endereço padrão: 0x40
============================================================
*/
#include <Wire.h> // Comunicação I2C
#include <Adafruit_INA219.h> // Biblioteca INA219
#include <Adafruit_GFX.h> // Biblioteca gráfica
#include <Adafruit_SSD1306.h> // Biblioteca OLED
// ============================================================
// CONFIGURAÇÃO DO DISPLAY
// ============================================================
#define SCREEN_WIDTH 128 // Largura do OLED
#define SCREEN_HEIGHT 64 // Altura do OLED
Adafruit_SSD1306 display(
SCREEN_WIDTH,
SCREEN_HEIGHT,
&Wire,
-1
);
// ============================================================
// CONFIGURAÇÃO DO INA219
// ============================================================
Adafruit_INA219 ina219; // Sensor INA219
// ============================================================
// SETUP
// ============================================================
void setup()
{
Wire.begin(21, 22); // SDA = 21 / SCL = 22
// ----------------------------------------------------------
// INICIALIZA O DISPLAY
// ----------------------------------------------------------
display.begin(
SSD1306_SWITCHCAPVCC,
0x3C
);
// ----------------------------------------------------------
// INICIALIZA O INA219
// ----------------------------------------------------------
ina219.begin(); // Inicializa o INA219
ina219.setCalibration_16V_400mA(); // Calibração 16 V / 400 mA
// ----------------------------------------------------------
// TELA INICIAL
// ----------------------------------------------------------
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(20, 20);
display.print("RodRobot");
display.display();
delay(1500);
}
// ============================================================
// LOOP
// ============================================================
void loop()
{
// ----------------------------------------------------------
// REALIZA AS MEDIÇÕES
// ----------------------------------------------------------
float tensao = ina219.getBusVoltage_V(); // Tensão em volts
float corrente = ina219.getCurrent_mA(); // Corrente em mA
// ----------------------------------------------------------
// LIMPA O DISPLAY
// ----------------------------------------------------------
display.clearDisplay();
display.setTextColor(WHITE);
// ----------------------------------------------------------
// MOSTRA A TENSÃO
// ----------------------------------------------------------
display.setTextSize(1);
display.setCursor(0, 5);
display.print("Tensao:");
display.setTextSize(2);
display.setCursor(0, 18);
display.print(tensao, 2);
display.print(" V");
// ----------------------------------------------------------
// MOSTRA A CORRENTE
// ----------------------------------------------------------
display.setTextSize(1);
display.setCursor(0, 40);
display.print("Corrente:");
display.setTextSize(2);
display.setCursor(0, 51);
display.print(corrente, 2);
display.print(" mA");
// ----------------------------------------------------------
// ATUALIZA O DISPLAY
// ----------------------------------------------------------
display.display();
delay(500);
}
FIM DO CÓDIGO
Entendendo as partes mais importantes do código
1. Bibliotecas
#include <Wire.h>
#include <Adafruit_INA219.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>A biblioteca Wire.h permite utilizar a comunicação I²C.
A Adafruit_INA219.h permite controlar o sensor INA219.
As bibliotecas Adafruit_GFX e Adafruit_SSD1306 são utilizadas para controlar o display OLED.
2. Comunicação I²C
No código temos:
Wire.begin(21, 22);Isso define:
GPIO 21 → SDA
GPIO 22 → SCL
Tanto o OLED quanto o INA219 utilizam esse mesmo barramento.
3. Inicialização do INA219
ina219.begin();Essa instrução inicializa o sensor.
Depois temos:
ina219.setCalibration_16V_400mA();Essa configuração seleciona a calibração utilizada neste experimento, adequada à faixa de tensão e corrente que estamos trabalhando.
Realizando as medições
A tensão é obtida através:
float tensao = ina219.getBusVoltage_V();O resultado é armazenado na variável tensao em volts.
A corrente é obtida através:
float corrente = ina219.getCurrent_mA();Nesse caso, o resultado já é fornecido em miliampères (mA).
O que aparece no OLED?
Durante o experimento, os valores não permanecem completamente estáveis. Por isso, vamos considerar os valores aproximados observados na bancada:
Tensão da fonte
≈ 5,05 V
Tensão no LED
≈ 1,93 V
Corrente
≈ 3,10 mA
Esses valores podem oscilar ligeiramente durante a medição, algo normal em um circuito real.
E onde entra a Lei de Ohm?
Agora podemos transformar os valores medidos em um exemplo prático.
Sabemos que:
Tensão da fonte ≈ 5,05 V
e:
Tensão no LED ≈ 1,93 V
Portanto, aproximadamente:
5,05 − 1,93 = 3,12 V
Essa é aproximadamente a tensão sobre o resistor de 1 kΩ.
Agora aplicamos a Lei de Ohm:
![]() |
| Lei de Ohm na prática: as fórmulas para calcular corrente, tensão e resistência elétrica. |
Substituindo:
I = 3,12 / 1000
Resultado:
I ≈ 3,12 mA
O INA219 apresentou aproximadamente:
3,10 mA
Os valores são muito próximos.
Isso demonstra na prática a relação entre tensão, corrente e resistência.
Não estamos apenas calculando
Essa é a principal ideia deste experimento.
Em vez de simplesmente apresentar a fórmula:
I = V / R
estamos fazendo:
Montagem → Medição → Cálculo → Comparação
O ESP32 lê o INA219, o OLED mostra os valores e podemos utilizar um multímetro para verificar as tensões do circuito.
Assim, conceitos que inicialmente parecem abstratos passam a fazer sentido através de uma montagem real.
O que aprendemos?
Neste projeto vimos que:
Tensão é a diferença de potencial entre dois pontos e é medida em volts.
Corrente representa o fluxo de carga elétrica pelo circuito e é medida em ampères ou miliampères.
Resistência dificulta a passagem da corrente e é medida em ohms.
E essas três grandezas estão relacionadas pela Lei de Ohm:
V = I × R
ou:
I = V / R
No nosso experimento, o INA219 permitiu transformar essas grandezas em valores que podemos observar no display OLED em tempo real.
Conclusão
O objetivo deste projeto não é apenas fazer o OLED mostrar números.
A proposta é utilizar o ESP32 + INA219 + OLED como uma ferramenta para aprender eletrônica na prática.
Ao observar aproximadamente 5,05 V de alimentação, 1,93 V sobre o LED e 3,10 mA de corrente, conseguimos relacionar a teoria com aquilo que realmente acontece no circuito.
É justamente essa relação entre montar, medir e entender que torna o aprendizado de eletrônica muito mais interessante.
🔧 Acompanhe o RodRobot
Projetos maker com ESP32, Arduino, eletrônica e programação.
RodRobot – Projetos maker, eletrônica e programação na prática.









Comentários
Postar um comentário