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.
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.