Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Desenvolver um código simples para ligar e desligar um Relê no cloud #6

Open
estevam5s opened this issue Jun 2, 2024 · 0 comments
Assignees

Comments

@estevam5s
Copy link
Member

Task: Controle de Relê via Cloud

Descrição

Desenvolver um código simples para controlar um relê remotamente através de uma conexão com a nuvem. O código permitirá ligar e desligar o relê através de comandos enviados por uma plataforma na nuvem, como MQTTBox, utilizando o protocolo MQTT.

Objetivos

  • Implementar uma conexão WiFi para o microcontrolador.
  • Estabelecer uma conexão com um broker MQTT na nuvem.
  • Criar funções para ligar e desligar o relê.
  • Receber comandos via MQTT para controlar o estado do relê.
  • Publicar mensagens MQTT indicando o estado atual do relê.

Hardware Utilizado

  • Arduino ou microcontrolador compatível.
  • Módulo de Relê.
  • Placa WiFi ou módulo WiFi compatível.

Software Utilizado

  • IDE Arduino.
  • Biblioteca WiFi.h para a comunicação WiFi.
  • Biblioteca PubSubClient.h para a comunicação MQTT.

Passos

  1. Configuração do Hardware :
  • Conectar o módulo de relê ao microcontrolador conforme o esquemático.
  • Conectar o microcontrolador ao módulo WiFi.
  1. Instalação das Bibliotecas :
  • Instalar as bibliotecas WiFi.h e PubSubClient.h na IDE Arduino.
  1. Configuração do Código :
  • Incluir as bibliotecas necessárias no código.
  • Definir as credenciais de conexão WiFi.
  • Definir as informações do broker MQTT (endereço, porta, usuário e senha).
  • Configurar o pino do relê como saída.
  1. Conectar à Rede WiFi :
  • Inicializar a conexão WiFi com as credenciais fornecidas.
  1. Conectar ao Broker MQTT :
  • Configurar o cliente MQTT com as informações do broker.
  • Estabelecer a conexão com o broker MQTT.
  1. Loop Principal :
  • No loop principal, verificar se há novas mensagens MQTT.
  • Se receber um comando "ligar" via MQTT, ativar o relê.
  • Se receber um comando "desligar" via MQTT, desativar o relê.
  1. Publicar Status MQTT :
  • Publicar mensagens MQTT indicando o estado atual do relê (ligado/desligado).
  1. Testar o Código :
  • Carregar o código para o microcontrolador.
  • Monitorar as mensagens MQTT para verificar se o controle remoto do relê está funcionando corretamente.

Código .ino

#include <WiFi.h>
#include <PubSubClient.h>

// Parâmetros de conexão WiFi e MQTT
const char* ssid = "Nome_da_sua_rede";      // SSID da rede WiFi
const char* password = "Senha_da_sua_rede"; // Senha da rede WiFi

const char* mqtt_broker = "endereco.do.seu.broker.mqtt"; // Endereço do servidor MQTT
const char* topic = "topico/do/rele";                     // Tópico MQTT para controle do relé
const char* mqtt_username = "seu_usuario_mqtt";           // Nome de usuário MQTT
const char* mqtt_password = "sua_senha_mqtt";             // Senha MQTT
const int mqtt_port = 1883;                               // Porta MQTT

// Pino do relé
const int relayPin = 2; // Pino onde o relé está conectado

// Variável para armazenar o estado do relé
bool relayState = false;

// Objeto para conexão WiFi
WiFiClient wifiClient;

// Objeto para cliente MQTT
PubSubClient client(wifiClient);

// Protótipo de função para lidar com mensagens MQTT
void callback(char* topic, byte* payload, unsigned int length);

void setup() {
  Serial.begin(9600);

  // Conexão à rede WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  // Configuração do servidor MQTT
  client.setServer(mqtt_broker, mqtt_port);
  client.setCallback(callback);

  // Configuração do pino do relé
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, LOW); // Desliga o relé inicialmente

  // Conexão ao servidor MQTT
  if (client.connect("arduinoClient", mqtt_username, mqtt_password)) {
    Serial.println("Connected to MQTT broker");
    client.subscribe(topic); // Inscreve-se ao tópico MQTT para receber comandos
  } else {
    Serial.println("MQTT connection failed");
  }
}

void loop() {
  client.loop();
}

// Função de callback para lidar com mensagens MQTT recebidas
void callback(char* topic, byte* payload, unsigned int length) {
  Serial.println("Message received from MQTT broker");

  // Converte a carga útil em uma string
  String message;
  for (int i = 0; i < length; i++) {
    message += (char)payload[i];
  }

  // Verifica se a mensagem é para ligar ou desligar o relé
  if (message.equals("ligar")) {
    digitalWrite(relayPin, HIGH); // Liga o relé
    relayState = true;
  } else if (message.equals("desligar")) {
    digitalWrite(relayPin, LOW); // Desliga o relé
    relayState = false;
  }

  // Confirmação do estado do relé
  Serial.print("Relay state: ");
  Serial.println(relayState ? "ON" : "OFF");
}

Considerações Finais

Este código básico permite controlar um relê remotamente através de uma conexão WiFi e MQTT. Ele pode ser expandido para incluir recursos adicionais, como autenticação, monitoramento de status e integração com outros dispositivos na nuvem.

Documentação Adicional

@estevam5s estevam5s converted this from a draft issue Jun 2, 2024
@estevam5s estevam5s self-assigned this Jun 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

1 participant