A cada dia é mais comum encontrar equipamentos eletrônicos informando o estado em que se encontram, ou que são controlados remotamente. Isso se deve ao "IoT" ou "internet das coisas". daí a importância de saber como funciona e como pode ser implementado em algum equipamento ou projeto eletrônico. Existem várias técnicas para implementar “IoT” em equipamentos eletrônicos, mas uma das mais utilizadas é o protocolo de mensagem “mqtt”. Nesta seção, aprenderemos a base para entender e implementar IoT em equipamentos eletrônicos.

MQTT (Message Queuing Telemetry Transport) é um protocolo de transporte de mensagens, utilizando a Internet como meio de comunicação. Este protocolo visa a comunicação entre dispositivos ou equipamentos eletrônicos, por isso é comum associá-lo à sigla: "M2M", que significa comunicação: "Machine to Machine", ou seja, envio e recebimento de mensagens entre máquinas ou equipamentos eletrônicos. . Sobre o protocolo MQTT e outros protocolos que utilizam a internet, está sendo construída a: "Internet of Things" ou IoT, que nos permitem receber e enviar mensagens e informações entre equipamentos eletrônicos. Para entender como funciona a “Internet das Coisas” ou “IoT”, é necessário entender como funcionam as redes de computadores.

Quando os primeiros computadores apareceram, eles não se comunicavam. Para passar informações de um computador para outro, as pessoas usavam fitas ou discos magnéticos (disquetes). Os computadores não tinham uma interface ou porta que permitisse a comunicação entre computadores. Assim, cada computador era um equipamento independente, conforme a figura a seguir:

 


| Clique na imagem para ampliar |

 

Quando surgiram as primeiras redes, elas permitiam a comunicação entre computadores, mas eram do tipo barramento, ou seja, um cabo ligava-os entre si conforme a imagem a seguir:

 

 


| Clique na imagem para ampliar |

 

O cabo usado para conectar os computadores era do tipo coaxial e essa rede tinha um inconveniente: se o cabo fosse desconectado em algum lugar, a rede não se comunicaria com todos os computadores, pois era do tipo serial. Para resolver este problema, surgiram switches ou hubs de rede, que permitem que uma rede seja feita e se um computador ou seu cabo de rede for desconectado, os outros computadores não são afetados. A imagem a seguir mostra como os computadores são conectados a um switch:

 


| Clique na imagem para ampliar |

 

Os cabos utilizados nesta rede são do tipo par trançado e seu principal protocolo de comunicação é o Ethernet. Assim surgiram as primeiras redes cabeadas locais, ou seja, os computadores eram conectados no mesmo local, como: uma casa, um prédio, uma empresa. Por esta razão, essas redes são conhecidas como redes LAN (Local Area Network), ou seja, redes locais. A imagem a seguir mostra um switch ou hub que recebe os cabos de rede e gerencia a recepção e transmissão de pacotes de dados para os computadores que compõem a rede:

 

 


| Clique na imagem para ampliar |

 

Os switches podem ser encontrados em diversos tamanhos, dependendo da quantidade de conectores que podem receber. Os conectores são conhecidos como RJ45. A figura a seguir mostra um conector RJ45 e o cabo de par trançado usado para conexões LAN:

 


| Clique na imagem para ampliar |

 

Cada conector do switch possui uma porta para receber dados (Rx) e outra para transmitir dados (Tx). Podemos ver que o transmissor de dados está conectado ao receptor do outro lado. Para cada linha de comunicação, dois cabos são usados ​​na forma torcida. A figura a seguir mostra como os computadores estão conectados ao switch:

 


| Clique na imagem para ampliar |

 

Existem muitos tipos e categorias de cabos para fazer a conexão entre o computador e o switch, mas o principal é entender como eles se comunicam fisicamente. Nas primeiras redes, onde eram usados ​​cabos coaxiais, você só podia transmitir ou receber dados (half-duplex), e com o switch você pode transmitir e receber dados ao mesmo tempo (full-duplex) conforme a imagem a seguir:

 


| Clique na imagem para ampliar |

 

 

Na maioria das residências, comércios, empresas, indústrias, etc., as redes locais (LAN) começaram a se formar e a necessidade de comunicação entre essas redes locais começou. É quando surge o protocolo de internet, que permite a comunicação entre redes LAN localizadas em diferentes partes do mundo. A Internet é uma WAN (rede de longa distância) ou rede de longa distância. Esta rede comunica computadores em todo o mundo e usa um protocolo chamado “IP” ou Protocolo de Internet. Para conectar redes locais à internet é necessário utilizar um roteador ou roteador que é um equipamento eletrônico encarregado de conectar diferentes redes LAN locais. A figura a seguir mostra o uso do roteador para se conectar à Internet:

 


| Clique na imagem para ampliar |

 

 

Os roteadores são normalmente fornecidos por empresas que fornecem serviço de internet. A figura a seguir mostra um roteador:

 


| Clique na imagem para ampliar |

 

Com o avanço da tecnologia, a maioria dos computadores passou a incorporar uma porta de rede wireless ou WiFi (Wireless Fidelity) que permite a comunicação na LAN local sem fio. Para isso é necessário possuir um equipamento eletrônico denominado: “Access Point” ou ponto de acesso. A figura a seguir mostra uma rede local LAN, conectada via WiFi:

 


| Clique na imagem para ampliar |

 

No nível de dados, o protocolo entre uma rede local LAN com fio e uma rede local LAN WiFi não muda, ou seja, os mesmos protocolos ainda são usados. É aqui que a internet e o placa microbit começam a ser usados ​​para fazer projetos com internet das coisas ou “IoT”. Como o placa microbit possui uma porta Bluetooth, podemos usá-lo para nos comunicar com um telefone celular e conectar o celular à internet através da conexão de rede WiFi, conforme mostrado na imagem a seguir:

 


| Clique na imagem para ampliar |

 

 

Um "switch" e um "ponto de acesso" cumprem a mesma função, ou seja, permitem a interligação de equipamentos ou computadores a uma rede LAN local. A maioria dos “Pontos de Acesso” também inclui um “switch” e assim, é possível interligar à rede local: equipamentos via onda de rádio (Wireless) e também via cabo, conforme figura a seguir:

 


| Clique na imagem para ampliar |

 

 

Redes locais LAN com e sem fio podem ser interconectadas via Internet sem conflito. Mas você precisa de um protocolo que separe as redes locais das redes amplas ou mundiais. Este protocolo é conhecido como: “IP” ou “Internet Protocol”, que é baseado em endereços de 32 bits. Os endereços IP são divididos nos seguintes intervalos:

 

Classe A IP – Grandes redes.

IP Classe B – redes médias.

IP Classe C – Pequenas redes.

IP Classe D – Multicast.

IP Classe E – Investigação.

Com um número de 32 bits, podemos ter até 4294967295 endereços IP, conforme a figura a seguir:

 


| Clique na imagem para ampliar |

 

A figura a seguir mostra o número de endereços IP para cada classe.

 


| Clique na imagem para ampliar |

 

Do ponto de vista da “quantidade” de endereços IP atribuídos a cada classe, podemos observar a seguinte imagem:

 


| Clique na imagem para ampliar |

 

Para lidar melhor com os endereços IP, eles não são tratados em notação decimal. Como os IPs têm 32 bits, ou seja, 4 bytes, como cada byte tem 8 bits, fica mais fácil manipulá-los por byte. Assim, os endereços IP são divididos em 4 bytes, conforme a figura a seguir:

 


| Clique na imagem para ampliar |

 

A cada byte (8 bits) podemos representar números decimais de 0 a 255. Assim, fica mais fácil lidar e lembrar de números IP, como mostra a imagem a seguir:

 


| Clique na imagem para ampliar |

 

 

A tabela a seguir mostra o intervalo de números decimais que podem ser representados por bits. Como o endereço IP foi dividido em 4 octetos (bytes), os números que podem ser representados variam de 0 a 255:

 


 

 

Esta tabela mostra com mais detalhes a faixa de números decimais que podem ser representados por bits:

 


| Clique na imagem para ampliar |

 

Então, mudando para a notação IP, os intervalos das classes seriam os seguintes:

 


| Clique na imagem para ampliar |

 

No caso da Internet, existe outra classificação de endereços IP, que são: Público e privado. Para a rede classe D, que é a utilizada em residências e pequenas empresas, os endereços IP privados variam de: 192.168.0.0.0 a 192.168.255.255. Os roteadores conhecem ou distinguem entre endereços privados e públicos, para que saibam para onde enviar um pacote de dados quando ele trafega pela rede. A figura a seguir mostra um exemplo de uma rede de internet clássica onde existem: switch, ponto de acesso e roteadores:

 


| Clique na imagem para ampliar |

 

A figura a seguir mostra três redes conectadas à Internet por meio de seus roteadores. Assim, os roteadores (também chamados de: "gateway" ou gateway) possuem endereços públicos, mas os computadores dentro de cada rede possuem endereços privados. Existem muitos tipos de redes que um roteador pode intercomunicar, como redes privadas, redes públicas ou entre redes públicas e privadas. Os roteadores precisam ter duas placas de rede para poder se comunicar ou vincular duas redes. Os roteadores têm tabelas de endereços IP que informam para onde rotear um pacote de dados. O roteador analisa o endereço IP, pois neste endereço vão as informações da rede e do computador para onde direcionar o pacote de dados.

Nas redes existe o conceito de servidor. Servidores são computadores que executam programas que aceitam muitas conexões e fornecem um serviço específico. Por exemplo, um computador pode ter um servidor de páginas web, outro pode ter um servidor de banco de dados, outro pode ter um servidor intermediário para mensagens MQTT, conforme mostrado na figura a seguir:

 


| Clique na imagem para ampliar |

 

Brokers são servidores para mensagens MQTT usados ​​para a Internet das Coisas ou IoT. Um servidor pode fornecer vários serviços ao mesmo tempo. Observe na figura a seguir como um dos computadores é um servidor web e um servidor de banco de dados. O outro possui o broker para mensagens MQTT:

 


| Clique na imagem para ampliar |

 

Quando um equipamento eletrônico envia dados para o broker MQTT, ele é chamado de: "publisher". A mensagem enviada passa pelo switch ou ponto de acesso, depois vai para o roteador e vai para a internet. Como a mensagem leva a qual computador a mensagem deve chegar, os roteadores se encarregam de fazer com que ela chegue ao seu destino. Assim, a mensagem é recebida no roteador correspondente e recebido no computador que possui o broker MQTT instalado. A figura a seguir mostra esse processo:

 


| Clique na imagem para ampliar |

 

 

Quando algum equipamento eletrônico deseja ler a mensagem da corretora, ele é denominado: “assinante”. Assim, quando alguém se inscrever na corretora, receberá as mensagens e poderá lê-las. Observe a figura a seguir:

 


| Clique na imagem para ampliar |

 

No protocolo MQTT, os termos "publisher" e "subscriber" são usados ​​para indicar o dispositivo que envia a mensagem e o dispositivo que lê a mensagem, conforme a figura a seguir:

 


| Clique na imagem para ampliar |

 

 

Observe como as mensagens trafegam pela Internet usando switches, pontos de acesso e roteadores. As empresas prestadoras de serviços de Internet normalmente fornecem um dispositivo de acesso à Internet, que inclui os três dispositivos em um, conforme a figura a seguir:

 


| Clique na imagem para ampliar |

 

 

Tendo entendido a parte anterior, cabe agora entender o que trafega por esses equipamentos eletrônicos (computadores, dispositivos, celulares, tablets, switches, pontos de acesso, roteadores). Os dados que trafegam pela internet são chamados de “pacotes de dados ou quadros”. Esses pacotes de dados podem transportar: strings de texto, música, fotos, vídeos. Além disso, eles podem transportar dados como temperatura, umidade, estados dos pinos de entrada/saída de um microcontrolador. Estes últimos são aqueles usados ​​na Internet das Coisas (IoT). Cada pacote de dados que trafega pela internet tem o seguinte formato:

 


| Clique na imagem para ampliar |

 

Os dados podem ser diagramados em um datagrama, ou seja: um diagrama dos dados. Observe no datagrama que existe uma versão, um comprimento para o cabeçalho (head) do datagrama. Um comprimento total para todo o pacote de dados, Identificadores, um tempo de vida (TTL) para o pacote chegar ao seu destino, uma "soma de verificação" para verificar se os dados recebidos estão intactos, um endereço IP de origem, um endereço IP de destino, um parte opcional para dados extras que o pacote deve manipular e, finalmente, os dados do usuário.

Os pacotes de dados são recebidos e enviados pelo protocolo TCP (Transmission Control Protocol) ou Transmission Control Protocol. Este protocolo é responsável por pacotes serem enviados e recebidos corretamente. O protocolo IP é responsável por verificar os endereços dos computadores atribuídos na rede. Esses dois protocolos trabalham juntos quando um pacote de dados é enviado pela internet, por isso é muito comum dizer que o protocolo da internet é: "TCP/IP" A figura a seguir mostra o modelo do protocolo TCP/IP:

 


 

 

 

Compreendendo o que a camada de acesso físico, o protocolo IP e o protocolo TCP fazem, resta apenas a camada de aplicação. Os aplicativos são aqueles que utilizam toda a infraestrutura da Internet para enviar e receber dados. Como exemplo de aplicações temos as páginas web (HTML), o transporte de arquivos (FTP), o serviço de mensagens MQTT, etc. Observe a figura a seguir:

 


| Clique na imagem para ampliar |

 

 

Como um computador pode ter vários programas de servidor rodando ao mesmo tempo, o sistema operacional precisa de algum mecanismo para saber para onde direcionar um pacote de dados que chega pela rede. Para saber isso, o sistema operacional usa o conceito de "porta" ou "soquete". Um computador pode ter até 65.536 portas. Isso ocorre porque dois bytes são usados ​​para a porta em protocolos de Internet. A figura a seguir mostra algumas das portas comumente usadas para aplicativos em um computador:

 


| Clique na imagem para ampliar |

 

 

Já focado no protocolo MQTT, podemos ver que ele utiliza a Internet para enviar e receber mensagens. Como as bases da Internet já foram explicadas, ainda temos que entender o protocolo MQTT, conforme a figura a seguir:

 


| Clique na imagem para ampliar |

 

 

As mensagens MQTT são compostas de duas partes:

1 - O tema ou “assunto”.

2 – O valor.

Observe no exemplo a seguir como um carro publica a velocidade em que viaja. O “tópico” é “velocidade”, o valor é 70. Outros dispositivos se inscrevem nesse tópico e recebem o valor de 70:

 


| Clique na imagem para ampliar |

 

 

Aqui está outro exemplo com o placa microbit. O placa microbit envia a temperatura para o celular, o celular publica com o tópico: “temperatura”. O valor do tópico é 22. Esse valor é enviado ao broker MQTT. Quem quiser ler este valor deverá subscrever a temperatura "tópico" e receberá o valor: "22". Observe a figura a seguir:

 


| Clique na imagem para ampliar |

 

 

A figura a seguir mostra o formato do protocolo MQTT:

 


| Clique na imagem para ampliar |

 

 

Os tópicos (também chamados de “tópicos”) podem ser organizados em forma de árvore, da mesma forma que os arquivos são organizados em um computador. E se eu tiver dois ou mais sensores de temperatura para enviar ao corretor? Eles podem ser organizados em “tópicos” ou “temas”, assim:

casa/cozinha/temperatura

casa/sala/temperatura

É importante entender que quem envia os dados para a corretora se chama: “editor” e quem lê os dados da corretora se chama: “assinantes”. Além disso, que o serviço de mensagem MQTT é formado: pelo tópico e seu respectivo valor. Para saber mais pode visitar a página: " mqtt.org”, que pertence a uma organização encarregada de promover o protocolo MQTT, conforme a imagem a seguir:

 


| Clique na imagem para ampliar |

 

Se você clicar no menu: "Software" nesta página, você será direcionado para uma página, onde encontrará: corretoras que você pode instalar no seu computador ou em um computador conectado à Internet, corretoras de teste gratuitas e pagamentos que já estão rodando na internet e que você pode usar para fazer testes ou fazer projetos, bibliotecas prontas para uso com sua linguagem de programação preferida, ferramentas ou programas para explorar corretoras, etc. Observe na figura a seguir, as opções da página: “software”:

 


| Clique na imagem para ampliar |

 

 

No menu: "Ferramentas e Aplicativos", existe uma opção chamada: "ferramentas de desktop", lá, existe um item chamado: "MQTT Explorer", que é um software para ver "tópicos e valores" de qualquer broker instalado no algum computador A imagem a seguir mostra a aplicação: "MQTT Explorer", onde você pode fazer conexões com os brokers:

 


| Clique na imagem para ampliar |

 

Uma vez conectada à corretora, a aplicação permite observar os tópicos e valores nela hospedados, conforme figura a seguir:

 


| Clique na imagem para ampliar |

 

Uma das corretoras gratuitas mais utilizadas pode ser encontrada em: “test.mosquitto.org”, no portão: “1883”, conforme imagem abaixo:

 


| Clique na imagem para ampliar |

 

 

Para incluir o MQTT em projetos ou equipamentos eletrônicos, é necessário utilizar uma biblioteca que manipule este protocolo. No menu: “Software/Client Libraries”, você encontrará bibliotecas prontas para quase todas as linguagens de programação mais populares como: “c, c++, java, javascript, Python, etc”. Além disso, há uma biblioteca para Arduino. A imagem a seguir mostra um exemplo de código javascript, usado em páginas da web, para se conectar a um corretor e fazer uma publicação. Observe que está postando no tópico: “presence” o valor: “hello!”.

 


 

 

 

A imagem a seguir mostra um código de exemplo para fazer uma assinatura em um corretor. Observe que você está se inscrevendo no tópico: “presença”.

 


 

 

 

Como o placa microbit pode ser conectado a um celular, é necessário aprender a programar MQTT neles, conforme a imagem a seguir:

 


 

 

 

Para o desenvolvimento de aplicações MQTT em celulares, pode-se utilizar o ambiente de desenvolvimento: "app inventor", que é gratuito e pode ser encontrado na internet. A seguir está a página inicial do “app inventor”:

 


| Clique na imagem para ampliar |

 

 

Por se tratar de um aplicativo instalado na nuvem da internet, é necessário entrar com um e-mail. A seguir está a interface de desenvolvimento de: “app inventor”:

 


| Clique na imagem para ampliar |

 

 

 

O aplicativo: "App inventor" não possui funções para o protocolo MQTT em sua paleta de componentes, portanto é necessário baixar um da Internet e instalá-lo na opção: "Extensão", conforme a imagem a seguir:

 


 

 

 

Para localizar a extensão: MQTT para "app" inventor, digite as seguintes palavras em um mecanismo de pesquisa na Internet:

“paho mqtt client app inventor 2”

Isso o levará a uma página onde você pode baixar a extensão. Uma vez instalada a extensão MQTT, você pode ter as funções em blocos prontas para uso, como vemos na imagem a seguir:

 


| Clique na imagem para ampliar |

 

 

Como podemos ver, é fácil usar IoT na prática usando MQTT. Existem outras formas de fazer IoT, como: sockets, websockets, API RESTful, banco de dados, etc. Isso abre um universo de possibilidades para equipamentos eletrônicos, conectando-se à internet das coisas. Resta imaginar e testar como utilizá-lo em seus projetos.