Como Usar o ESP32 IoT com 4 Entradas e 4 Saídas

Publicado em 08/02/2025

O ESP32 IoT com 4 Entradas e 4 Saídas é uma placa desenvolvida para facilitar projetos de automação residencial e industrial, permitindo controle remoto e monitoramento via Internet das Coisas (IoT). Neste artigo, vamos explorar como configurar e usar esse dispositivo em seus projetos.

Características do ESP32 IoT 4 Entradas e 4 Saídas

  • Microcontrolador ESP32 com Wi-Fi e Bluetooth
  • 4 entradas digitais para sensores
  • 4 saídas à Transistor Open-Colector para acionamento de cargas
  • Conexão via protocolo MQTT e HTTP
  • Compatível com plataformas como Arduino IDE e ESPHome

Materiais Necessários

Para seguir este guia, você precisará de:

ESP32 IoT 4 Entradas e 4 Saídas

Passo a Passo para Configuração

1. Instalação da IDE e Bibliotecas

Antes de programar o ESP32, é necessário instalar o Arduino IDE e adicionar o suporte ao ESP32:

  • Abra o Arduino IDE e acesse Preferências.
  • Adicione o link de gerenciador de placas do ESP32: https://dl.espressif.com/dl/

package_esp32_index.json

  • Instale a biblioteca PubSubClient para conexão MQTT.

2. Cofiguração do Wi-Fi e MQTT

Para conectar o ESP32 à Internet, use o seguinte código:

#include "WiFi.h"
#include "PubSubClient.h"

const char* ssid = "SEU_WIFI";
const char* password = "SUA_SENHA";
const char* mqtt_server = "broker.hivemq.com";

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
    Serial.begin(115200);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("Conectado!");
    client.setServer(mqtt_server, 1883);
}

void loop() {
    if (!client.connected()) {
        client.connect("ESP32Client");
    }
    client.loop();
}

3. Controle das Saídas a Transistor do módulo

#define RELE1  17
#define RELE2  04
#define RELE3  16
#define RELE4  5

void setup() {
    pinMode(RELE1, OUTPUT);
    pinMode(RELE2, OUTPUT);
    pinMode(RELE3, OUTPUT);
    pinMode(RELE4, OUTPUT);
}

void loop() {
    digitalWrite(RELE1, HIGH);
    delay(1000);
    digitalWrite(RELE1, LOW);
    delay(1000);
}

4. Realizando Leitura das Entradas do módulo e ligando a saída correspondente

#include  //para ser usado se com dispositivos I2c
// define pinos
int LED_BUILTIN = 2;
int OUTPUT1 = 17;
int OUTPUT2 = 04;
int OUTPUT3 = 16;
int OUTPUT4 = 05;
int INPUT1 = 33;
int INPUT2 = 25;
int INPUT3 = 26;
int INPUT4 = 27;
int SW2 = 18;


void setup() {
  //inicializa os pinos como saída
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(OUTPUT1, OUTPUT);
  pinMode(OUTPUT2, OUTPUT);
  pinMode(OUTPUT3, OUTPUT);
  pinMode(OUTPUT4, OUTPUT);

  //inicializa os pinos como Entrada
  pinMode(INPUT1, INPUT);
  pinMode(INPUT2, INPUT);
  pinMode(INPUT3, INPUT);
  pinMode(INPUT4, INPUT);

  //inicializa as saídas no modo desligado
  digitalWrite(OUTPUT1, HIGH);
  digitalWrite(OUTPUT2, HIGH);
  digitalWrite(OUTPUT3, HIGH);
  digitalWrite(OUTPUT4, HIGH);

  // inicializa I2c
  Wire.begin(21, 22);

  Serial.begin(115200);
  //Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);
  Serial.println("Serial Txd is on pin: " + String(TX));
  Serial.println("Serial Rxd is on pin: " + String(RX));

  Serial.println("\nI2C Scanner");
  address();
  delay(300);
}

void address() {
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for (address = 1; address < 127; address++) {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.print(address, HEX);
      Serial.println(" !");

      nDevices++;
    } else if (error == 4) {
      Serial.print("Unknow error at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(1000);  // wait 5 seconds for next scan
}

void loop() {

  int estado_in0 = digitalRead(INPUT1);  // Ligado ao CN1_4 placa Acessoria Controla RL1
  int estado_in1 = digitalRead(INPUT2);  // Ligado ao CN1_3 placa Acessoria Controla RL2
  int estado_in2 = digitalRead(INPUT3);  // Ligado ao CN1_2 placa Acessoria Controla RL3
  int estado_in3 = digitalRead(INPUT4);  // Ligado ao CN1_1 placa Acessoria Controla RL4
  int estado_in4 = digitalRead(SW2);     // Ligado ao CN1_1 placa Acessoria Controla RL4

  if (estado_in0 == 0)            // Contolado pela Entrada CN1_4 da placa Acessoria Controla RL1
    digitalWrite(OUTPUT1, LOW);   // RELE1
  else if (estado_in0 == 1)       // Contolado pela Entrada CN1_4 da placa Acessoria Controla RL1
    digitalWrite(OUTPUT1, HIGH);  // RELE1

  if (estado_in1 == 0)            // Contolado pela Entrada CN1_3 da placa Acessoria Controla RL2
    digitalWrite(OUTPUT2, LOW);   // RELE2
  else if (estado_in1 == 1)       // Contolado pela Entrada CN1_3 da placa Acessoria Controla RL2
    digitalWrite(OUTPUT2, HIGH);  // RELE2

  if (estado_in2 == 0)            // Contolado pela Entrada CN1_2 da placa Acessoria Controla RL3
    digitalWrite(OUTPUT3, LOW);   // RELE3
  else if (estado_in2 == 1)       // Contolado pela Entrada CN1_2 da placa Acessoria Controla RL3
    digitalWrite(OUTPUT3, HIGH);  // RELE3

  if (estado_in3 == 0)            // Contolado pela Entrada CN1_1 da placa Acessoria Controla RL4
    digitalWrite(OUTPUT4, LOW);   // RELE4
  else if (estado_in3 == 1)       // Contolado pela Entrada CN1_1 da placa Acessoria Controla RL4
    digitalWrite(OUTPUT4, HIGH);  // RELE4

  if (estado_in4 == 0)                // Contolado pela Entrada CN1_1 da placa Acessoria Controla RL4
    digitalWrite(LED_BUILTIN, HIGH);  // RELE4
  else if (estado_in4 == 1)           // Contolado pela Entrada CN1_1 da placa Acessoria Controla RL4
    digitalWrite(LED_BUILTIN, LOW);   // RELE4
}

Enviando o código para o módulo de desenvolvimento ESP32 IoT com 4 Entradas e 4 Saídas
  1. Segure simultaneamente os botões PGM e Reset 
  2. Solte Reset, solte PGM, neste momento o módulo estara no modo de boot pronto para receber a aplicação

Aplicações

✅ Automação residencial: Controle de iluminação e aparelhos elétricos.

✅ Monitoramento industrial: Acionamento remoto de máquinas.

✅ Projetos de IoT: Integração com assistentes virtuais e dashboards.

Conclusão

O ESP32 IoT com 4 Entradas e 4 Saídas é uma solução poderosa para automação e IoT. Com ele, você pode criar sistemas inteligentes, conectados e de fácil controle. Experimente e compartilhe suas experiências!

Precisa de mais componentes? Confira nossa Loja  explore outras soluções para seus projetos de automação!

Pague com
  • proxy-mercadopago-v1
  • proxy-mercadopago-v1
Selos

AFEletronica - CNPJ: 26.806.365/0001-00 © Todos os direitos reservados. 2025