Você está na página 1de 7

Etec Takashi Morita

Conexão ESP32 em nuvem com Arduino

23/10/2023
Sara Mendes Campos
Introdução
Este artigo apresentará a teoria da utilização do protocolo MQTT, e irá
apresentar a montagem prática do ESP 32 com a nuvem, essas coisas serão
feitas para a comprovação do conhecimento geral em IOT e de seus protocolos.

Teoria
A implementação bem-sucedida do protocolo MQTT na plataforma Arduino
usando o ESP32 permite uma comunicação eficaz entre a placa Arduino IDE e
a plataforma 'Arduino IoT Cloud', selecionada para este projeto. O protocolo
MQTT é utilizado para transmitir e receber dados entre essas entidades,
operando no modelo de Publicação e Assinatura (Pub-Sub).
Através da API de Dados (MQTT) da plataforma 'Arduino IoT Cloud', é possível
enviar e receber informações das variáveis. Um exemplo de uso desta API é a
transmissão de atualizações das variáveis da Nuvem IoT para um navegador.
Desenvolvido na década de 90 pela IBM e Eurotech, o MQTT é um protocolo de
mensagens projetado para minimizar o consumo de recursos de rede, largura de
banda e software. Ele opera no formato Cliente/Servidor, ou seja, Pub-Sub
O MQTT é amplamente utilizado no campo de Comunicação entre Máquinas
(M2M) e desempenha um papel crucial na conectividade da Internet das Coisas
(IoT). O protocolo MQTT funciona com base no modelo de
Publicação/Assinatura, onde os clientes publicam e/ou recebem informações,
enquanto um servidor (Broker) gerencia o envio e a recepção de dados.
Em um cenário MQTT típico, um publicador envia mensagens para um tópico
específico, ao qual um assinante se inscreve para acessar as mensagens.
Devido à ausência de uma conexão direta entre o publicador e o assinante, o
protocolo MQTT requer um intermediário chamado Broker.
No contexto do MQTT, a publicação e a recepção de dados acontecem por meio
de um servidor Broker. O publicador envia a mensagem com um tópico de
destino e seu conteúdo (Payload) para o Broker, que gerencia e encaminha a
mensagem para o assinante inscrito previamente no tópico. Da mesma forma,
se um cliente deseja se tornar um assinante em um tópico específico, basta
enviar uma solicitação ao Broker, que estabelecerá a conexão entre o cliente e
o tópico em questão
A composição principal do protocolo MQTT consiste em:
1. Tópico - Endereço para onde as mensagens são enviadas.
2. Cliente - Entidade que interage com o Broker, permitindo o envio e a
recepção de dados.
3. Subscriber (Assinante) - Recebe as mensagens após se inscrever em
um tópico.
4. Broker - Age como intermediário para facilitar a comunicação entre
Publisher e Subscriber, gerenciando o recebimento, fila e envio das
mensagens.
5. Publisher (Publicador) - Emite dados para um tópico específico.
6. Mensagem - O pacote de dados trocado entre os clientes e o Broker.

Prática
Na atividade prática, fiz um circuito que enquanto está acionado pela nuvem, liga
os leds em uma sequencia com tempos variados, e quando está desligado na
nuvem, o circuito desliga ao mesmo tempo, abaixo está o código utilizado, e logo
após apresentarei duas evidencias, uma do circuito ligado e outra dele desligado.
Código:
/*
Sketch generated by the Arduino IoT Cloud Thing "Untitled"
https://create.arduino.cc/cloud/things/af7e49b9-26e5-4936-b20f-
5495b525384a

Arduino IoT Cloud Variables description

The following variables are automatically generated and updated when changes
are made to the Thing

CloudLight led;

Variables which are marked as READ/WRITE in the Cloud Thing will also have
functions
which are called when their values are changed from the Dashboard.
These functions are generated with the Thing and added at the end of this
sketch.
*/
int numPiscadas = 0; // Contador de piscadas
#include "thingProperties.h"

void setup() {
// Initialize serial and wait for port to open:
Serial.begin(9600);
pinMode(2, OUTPUT);
// This delay gives the chance to wait for a Serial Monitor without blocking if none
is found
delay(1500);

// Defined in thingProperties.h
initProperties();

// Connect to Arduino IoT Cloud


ArduinoCloud.begin(ArduinoIoTPreferredConnection);

/*
The following function allows you to obtain more information
related to the state of network and IoT Cloud connection and errors
the higher number the more granular information you’ll get.
The default is 0 (only errors).
Maximum is 4
*/
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
}

void loop() {
ArduinoCloud.update();
// Your code here
}
/*
Since Led is READ_WRITE variable, onLedChange() is
executed every time a new value is received from IoT Cloud.
*/
void onLedChange() {
// Add your code here to act upon Led change

if(led == 1){
digitalWrite(2, HIGH);
delay(100);
digitalWrite(2, LOW);
delay(100);
digitalWrite(2, HIGH);
delay(400);
digitalWrite(2, LOW);
delay(400);
digitalWrite(2, HIGH);
delay(700);
digitalWrite(2, LOW);
delay(700);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
digitalWrite(2, HIGH);
delay(1000);
}
else{
desliga:
digitalWrite(2, LOW);
}
}
Evidencias de montagem:
Ligado:

Desligado:
Bibliografia:
https://www.youtube.com/watch?v=gq1-G3Lbym8

https://blog.kalatec.com.br/protocolo-mqtt/

https://aws.amazon.com/pt/what-is/mqtt/

https://www.automacaoindustrial.info/mqtt/

Você também pode gostar