Os dispositivos IoT podem fazer coisas legais, mas uma parte essencial da equação é como eles se comunicam. Você pode gerenciar isso com um módulo ESP-01.

Estar dentro do orçamento não significa necessariamente que você não pode assumir projetos avançados de bricolage. Se você está procurando um módulo WiFi pequeno, acessível e conveniente para ampliar seus projetos de IoT, o módulo ESP-01 é uma ótima escolha. No entanto, integrar esse módulo a um protocolo leve como o MQTT pode ser complicado, especialmente se você for novo no desenvolvimento de IoT.

Programar apenas a placa ESP-01 pode ser um desafio em comparação com outros módulos da série ESP8266. Mas vamos ver o básico de toda a configuração de hardware e software que você precisa para começar a usar o módulo, bem como configurar o MQTT de maneira simples e processual.

Conhecendo o Conselho

ESP8266 O ESP-01 é um módulo WiFi pequeno e compacto que vem com um chip ESP8266EX, que é um SoC altamente integrado projetado para aplicações IoT.

instagram viewer

O módulo inclui um microcontrolador sem fio de chip único com uma pilha de protocolo TCP/IP e é capaz de se conectar a uma rede sem fio ou atuar como um ponto de acesso. O módulo ESP-01 também possui um cabeçalho de pino 2x4 que fornece acesso aos pinos GPIO, alimentação e aterramento e interface UART.

Configurando o Hardware

O módulo não é compatível com breadboard. Por conveniência, você pode comprar uma placa de extensão pré-fabricada ou simplesmente seguir o caminho antigo - usando cabos de jumper e uma placa de ensaio.

Existe um programador dedicado, o ESP8266 Serial Module Board, que pode facilitar sua experiência de programação. Se preferir seguir este caminho, DIYHOBI tem um tutorial útil sobre como atualizar um programa no módulo ESP-01 usando um programador (incluindo o Adaptador do Módulo Conversor USB para TTL CH340G).

Mas você ainda pode programar o módulo usando uma placa Arduino. Veja o diagrama de circuito abaixo para referência.

Embora possa parecer tentador, geralmente não recomendamos conectar o módulo diretamente ao pino de 3,3 V do Arduino, pois requer mais corrente do que o pino fornece. Em vez disso, conecte o Arduino 5V a um regulador de tensão de 3,3 V como LM1117/LD117 e, em seguida, alimente o módulo WiFi do regulador.

Não conecte o VCC e CH_PD pinos do ESP ao 5V pino do Arduino. Conectando o módulo a 5V poder pode danificá-lo.

Todos os capacitores são 10uF e o resistor é um 1K resistor.

Requisitos de Software

O módulo ESP-01 é comumente usado com a plataforma Arduino. Como tal, configurar o software é bastante simples, especialmente se você estiver familiarizado com o Arduino C. No entanto, se você estiver mais familiarizado com o Raspberry, há muitos Projetos Raspberry Pi IoT podes tentar.

Estes são os requisitos básicos:

  • Um corretor ou servidor MQTT (como Mosquitto ou CloudMQTT).
  • Um Arduino IDE com a biblioteca central ESP8266.
  • A biblioteca PubSubClient para Arduino.

Você deve se lembrar que ter seu próprio servidor MQTT localmente oferece flexibilidade em seus projetos.

Instalando as bibliotecas necessárias

Primeiro, baixe e instale o Arduino IDE em seu computador. Uma vez instalado, abra o Arduino IDE e vá para Arquivo > Preferências.

No URLs adicionais do gerenciador de placas campo, digite o seguinte URL:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Clique OK para fechar a janela Preferências.

Em seguida, vá para Ferramentas > Quadro > Gerente de Conselhos.

Em seguida, procure por esp8266 e instale o pacote da placa esp8266—isso inclui todas as bibliotecas necessárias para o módulo ESP-01.

Para instalar a biblioteca PubSubClient, vá para Esboço > Incluir biblioteca > Gerenciar bibliotecas.

Procurar PubSubClient e clique na biblioteca para instalá-la.

Depois de instalar todas as bibliotecas necessárias, você pode começar a programar o módulo ESP-01. Uma coisa a observar, porém, é que você pode usar o Wifi.h que está incluído na biblioteca, ou baixe o ESPWifi.h biblioteca e incluí-lo em seu esboço.

Estabelecendo uma conexão entre o ESP-01 e o MQTT Broker

Um broker MQTT é um servidor que atua como intermediário entre clientes MQTT. Ele permite que os clientes enviem e recebam mensagens entre si por meio de um modelo de publicação-assinatura.

Para conectar seu módulo ESP-01 a um broker MQTT, você precisará especificar o endereço IP do broker e o número da porta em seu código. Você também precisará fornecer um ID de cliente exclusivo que identifique seu módulo ESP-01 para o corretor.

Primeiro, inclua as bibliotecas necessárias na parte superior do seu esboço

#incluir <ESP8266WiFi.h>
#incluir <PubSubClient.h>

Em seguida, defina os detalhes da conexão WiFi e MQTT.

constCaracteres*ssid = "SEU_SSID";
constCaracteres* senha = "SUA SENHA";
constCaracteres* servidor_mqtt = "SEU_MQTT_SERVER";

Não se esqueça de substituir os espaços reservados pelos seus próprios detalhes de conexão WiFi e MQTT.

Depois disso, crie um cliente WiFi e conecte-se à sua rede WiFi local:

WiFiClient espClient;
vaziosetup_wifi(){
atraso (10);
WiFi.begin (ssid, senha);
enquanto (WiFi.status() != WL_CONNECTED) {
atraso (500);
}
}

Esta função deve ser chamada no configurar() função do seu esboço.

Em seguida, você precisará criar um cliente MQTT e conectar-se ao seu broker MQTT:

PubSubClient cliente(cliente especial);
vazioreconectar(){
enquanto (!cliente.conectado()) {
se (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Inscrever-se em um tópico
cliente.subscribe("teste/tópico");
} outro {
atraso (5000);
}
}
}

Depois de se conectar ao seu broker MQTT, você pode começar a publicar e assinar os tópicos.

Publicando dados do ESP-01 para o MQTT Broker

Agora que você conectou com sucesso seu módulo ESP01 ao broker MQTT, vamos ver como você pode publicar dados do ESP-01 no broker.

Para publicar dados, use o cliente.publicar() função para publicar uma mensagem para o inTopic tema.

cliente.publicar("inTopic", "Alô do ESP-01");

Isso publicará a mensagem "Hello from ESP-01" no inTopic tema.

Você também pode publicar os dados do sensor do ESP-01 para o corretor. Por exemplo, se você tiver um sensor de temperatura conectado ao seu ESP-01, poderá publicar os dados de temperatura para o corretor conforme mostrado abaixo.

flutuador temperatura = 25.5;
Corda temperaturaString = Corda(temperatura);
Caracteres temperaturaChar[5];
string de temperatura.toCharArray(temperaturaChar, 5);
cliente.publicar("Temperatura", temperaturaChar);

Isso publicará os dados de temperatura no temperatura tema.

Os dados podem ser publicados em loop ou em intervalos regulares, dependendo dos requisitos do seu projeto. Certifique-se de que você não está inundando o corretor com muitos dados e que está publicando em um intervalo razoável.

Inscrevendo-se em tópicos MQTT e recebendo dados no ESP-01

Para se inscrever em um tópico, use o cliente.subscribe() função. Para o nosso caso abaixo, o cliente assina o outTopic tema.

cliente.subscribe("outTopic");

Depois de se inscrever em um tópico, você pode receber mensagens publicadas nesse tópico usando o cliente.loop() função no laço() função no esquema abaixo:

vaziolaço(){
se (!cliente.conectado()) {
reconectar();
}
cliente.laço();
}

Isso verificará continuamente novas mensagens e executará a função de retorno de chamada quando uma nova mensagem for recebida.

Para lidar com as mensagens recebidas, defina uma função de callback como a mostrada abaixo:

vazioligar de volta(Caracteres* tema, byte* carga útil, não assinada int comprimento){
// Imprime a mensagem recebida
Serial.imprimir("Mensagem recebida sobre o tema: ");
Serial.imprimir(tema);
Serial.imprimir(". Mensagem: ");
para (int eu=0;euSerial.imprimir((Caracteres)carga útil[eu]);
}
Serial.println();
}

Esta função será chamada quando uma nova mensagem for recebida no tópico assinado. Ele imprimirá a mensagem recebida no Serial Monitor.

Usando Níveis de QoS (Qualidade de Serviço) e Recursos de Segurança

Uma das técnicas mais importantes usadas no tratamento de solicitações é usar níveis de QoS (Quality of Service) para suas mensagens MQTT. Os níveis de QoS definem como o broker e os assinantes devem lidar com suas mensagens. Existem três níveis de QoS: 0, 1 e 2.

O nível 0 de QoS é o menos confiável, pois as mensagens são enviadas apenas uma vez e não há garantia de entrega ao assinante. O nível 1 de QoS é mais confiável, pois as mensagens são enviadas pelo menos uma vez e têm a garantia de serem entregues ao assinante pelo menos uma vez. O nível 2 de QoS é o mais confiável, pois as mensagens são enviadas exatamente uma vez e têm a garantia de serem entregues ao assinante exatamente uma vez. A forma como seus dispositivos se comunicam está de acordo com outros problemas e correções de segurança comuns da Internet das Coisas (IoT) você quer ficar por dentro.

Para usar os níveis de QoS, você pode especificar o nível desejado ao publicar mensagens usando o cliente.publicar() função:

cliente.publicar("tema", "Olá Mundo!", 1);

Isso publicará a mensagem Olá Mundo! para o tema tópico com nível de QoS 1.

Outra técnica avançada é usar Última Vontade e Testamento (LWT) mensagens. As mensagens LWT são mensagens enviadas pelo intermediário quando um cliente se desconecta inesperadamente. Acreditamos que isso seja importante para detectar dispositivos off-line ou para acionar ações quando um dispositivo é desconectado.

Para usar mensagens LWT, você pode especificar a mensagem LWT ao conectar-se ao intermediário usando o cliente.setWill() função:

cliente.setWill("status", "desligada", 1, verdadeiro);

Isso definirá a mensagem LWT para desligada no status tópico com QoS nível 1 e o sinalizador de retenção definido como verdadeiro.

Prepare-se para o seu próximo projeto de IoT

O módulo ESP-01 é uma solução acessível e compacta para projetos IoT, e usá-lo com MQTT pode levar seu projeto para o próximo nível. Embora a configuração inicial possa ser assustadora, os benefícios do MQTT, como comunicação leve e alta escalabilidade, fazem dele um investimento que vale a pena.