Como construir um ventilador de mesa simples
Quer você o construa a partir de peças impressas em 3D ou papelão, este ventilador de mesa DIY de baixo custo manterá você e seus dispositivos frescos.
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 a placa de ensaio. 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 você preferir seguir esse caminho, o 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,3V como LM1117/LD117 e, em seguida, ligue o módulo WiFi do regulador.
Não conecte os pinos VCC e CH_PD do ESP ao pino 5V do Arduino. Conectar o módulo à alimentação de 5V pode danificá-lo.
Todos os capacitores são 10uF e o resistor é um resistor de 1K .
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 que você pode experimentar.
Estes são os requisitos básicos:
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. Depois de instalado, abra o IDE do Arduino e vá para Arquivo > Preferências .
No campo URLs adicionais do gerenciador de placas , insira a seguinte URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Clique em OK para fechar a janela Preferências.
Em seguida, vá para Ferramentas > Placa > Gerenciador de placas .
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 Sketch > Include Library > Manage Libraries .
Pesquise por 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 baixar a biblioteca ESPWifi.h e incluí-la 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
#include ESP8266WiFi.h> #include PubSubClient.h>
Em seguida, defina os detalhes da conexão WiFi e MQTT.
const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; const char* mqtt_server = "YOUR_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; void setup_wifi() { delay(10); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } }
Esta função deve ser chamada na função setup() do seu esboço.
Em seguida, você precisará criar um cliente MQTT e conectar-se ao seu broker MQTT:
PubSubClient client(espClient); void reconnect() { while (!client.connected()) { if (client.connect("ESP01", mqtt_user, mqtt_password)) { // Subscribe to a topic client.subscribe("test/topic"); } else { delay(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 a função client.publish() para publicar uma mensagem no tópico inTopic .
client.publish("inTopic", "Hello from ESP-01");
Isso publicará a mensagem "Hello from ESP-01" no tópico inTopic .
Você também pode publicar 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.
float temperature = 25.5; String temperatureString = String(temperature); char temperatureChar[5]; temperatureString.toCharArray(temperatureChar, 5); client.publish("Temp", temperatureChar);
Isso publicará os dados de temperatura no tópico Temp .
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 assinar um tópico, use a função client.subscribe() . Para nosso caso abaixo, o cliente se inscreve no tópico outTopic .
client.subscribe("outTopic");
Depois de se inscrever em um tópico, você pode receber mensagens publicadas nesse tópico usando a função client.loop() na função loop() no esboço abaixo:
void loop() { if (!client.connected()) { reconnect(); } client.loop(); }
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:
void callback(char* topic, byte* payload, unsigned int length) { // Print the received message Serial.print("Message received on topic: "); Serial.print(topic); Serial.print(". Message: "); for (int i=0;i Serial.print((char)payload[i]); } 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á alinhada com outros problemas de segurança comuns da Internet das Coisas (IoT) e correções que você deseja manter atualizado.
Para usar níveis de QoS, você pode especificar o nível desejado ao publicar mensagens usando a função client.publish() :
client.publish("topic", "Hello, world!", 1);
Isso publicará a mensagem Hello, world! ao tópico tópico com QoS nível 1 .
Outra técnica avançada é usar mensagens de Última Vontade e Testamento (LWT) . 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 corretor usando a função client.setWill() :
client.setWill("status", "offline", 1, true);
Isso definirá a mensagem LWT como offline no tópico de status com QoS nível 1 e o sinalizador de retenção definido como true .
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.
Quer você o construa a partir de peças impressas em 3D ou papelão, este ventilador de mesa DIY de baixo custo manterá você e seus dispositivos frescos.
Máquinas de liofilização comerciais podem ser caras, então por que não construir a sua própria? Sim, isso realmente pode ser feito e mostraremos como.
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.