Conecte seu ESP8266 a qualquer rede Wi-Fi disponível

María Hernández
· 6 min de leitura
Enviar por e-mail

O ESP8266 é um microcontrolador desenvolvido pela Espressif Systems . Conhecido como módulo Wi-Fi , este microcontrolador pode ser usado para realizar diversas atividades relacionadas à rede Wi-Fi, com aplicações em automação residencial e muito mais. Com preços e recursos variados, existem muitos tipos de módulos ESP8266 disponíveis – mas todos são incrivelmente úteis no IoT .

Independentemente da IoT que você desenvolveu, existem duas maneiras de conectar seu ESP8266 à nuvem. Primeiro, você pode inserir suas credenciais de Wi-Fi no firmware do ESP8266 para estabelecer a conexão necessária e começar a enviar dados. Uma segunda maneira – que abordaremos passo a passo abaixo – é construir seu próprio ponto de acesso na placa, criando um firmware universal que estabelecerá uma conexão com qualquer rede disponível com o simples pressionar de um botão.

Requisitos

Etapa 1. Configuração do hardware

Nota : A Ubidots fez algumas modificações na biblioteca ConfigManager para implementar uma rotina que inicia o modo AP simplesmente pressionando um de reinicialização .

Dependendo do módulo ESP8266 que você escolher, pode ser necessário atribuir o pino de reset usando esta versão da biblioteca . As configurações padrão do botão estão atribuídas ao pino 5 ; se estiver usando um NodeMCU , você deve conectar o botão ao D1 .

Passo 2. Configure a IDE do Arduino com seu dispositivo

Antes de usar qualquer ESP8266 , você precisará instalar as placas na IDE do Arduino. Siga os passos abaixo para compilar a placa.

Se ainda não o fez, comece por descarregar a IDE do Arduino .

  1. Abra a IDE do Arduino. Selecione Arquivo -> Preferências e insira o URL abaixo do "URLs adicionais do Gerenciador de Placas" . Você pode adicionar vários URLs, separando-os por vírgulas.
http://arduino.esp8266.com/stable/package_esp8266com_index.json

NOTA : Se você usa Mac , o Arduino e o menu Arquivo contêm funções diferentes em comparação com o Windows. Você também precisará instalar o seguinte driver para fazer o upload do firmware para o seu NodeMCU.

2. Abra o Gerenciador de Placas em Ferramentas -> Placa -> Gerenciador de Placas e instale a plataforma ESP8266. Para encontrar o dispositivo correto, pesquise por ESP8266 na barra de pesquisa.

3. Selecione o módulo ESP8266 que você está usando. Neste caso, decidimos usar o NodeMCU 1.0 (módulo ESP-12) . Para selecionar a placa, vá em Ferramentas > Placa > Selecionar a placa .

Além disso, para comunicar com o NodeMCU, também precisamos selecionar a porta COM. Vá em Ferramentas -> Porta e selecione a porta apropriada para o seu dispositivo.

Para garantir que tudo funcione de forma rápida e eficiente, vamos otimizar velocidade de upload Acesse Ferramentas -> Velocidade de Upload -> 115200.

4. Acesse o GitHub e baixe a biblioteca ConfigManager . Clique no botão verde com a etiqueta “ Clone or download ” e selecione “ Download ZIP ”.

5. Agora, volte ao Arduino IDE e clique em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP .

6. Selecione o arquivo .ZIP do ConfigManager e clique em “ Aceitar ” ou “ Escolher ”.

Se a operação for bem-sucedida, você verá a seguinte mensagem na IDE do Arduino: " Biblioteca adicionada à sua biblioteca. Verifique o menu "Incluir Biblioteca ".

7. Em seguida, acesse Sketch/Program -> Incluir Biblioteca -> Gerenciador de Bibliotecas e instale a PubSubClient . Para encontrar a biblioteca correta, pesquise por PubSubClient na barra de pesquisa.

8. Agora, reinicie a IDE do Arduino antes de fazer o upload.

9. Depois de instalar a plataforma ESP8266 e as bibliotecas necessárias, instale o programa de upload de sistema de arquivos para Arduino ESP8266 passos de instalação do repositório e retorne a este guia.

10. Após instalar o seu programa de upload, crie um novo esboço para trabalhar e salve-o. Nosso exemplo se chama AP_ESP8266 :

11. Em seguida, acesse o diretório do esboço e crie uma nova pasta chamada data .

12. Depois de criar o diretório, baixe este arquivo HTML e anexe-o ao diretório. Este arquivo será usado no sistema de arquivos.

13. Em seguida, precisamos carregar o arquivo para o sistema de arquivos flash do ESP8266. Para começar, certifique-se de ter selecionado uma porta da placa e fechado o Monitor Serial .

14. Selecione Ferramentas > Carregar dados do sketch ESP8266 para iniciar o carregamento de arquivos para o sistema de arquivos flash do ESP8266.

Ao concluir, a barra de status do IDE deverá exibir "SPIFFS Image Uploaded" (Imagem SPIFFS carregada ).

15. Agora, cole o código abaixo na IDE do Arduino . Depois de colar, atribua os nomes dos dispositivos e variáveis ​​desejados, bem como seu Ubidots . Se você não souber seu Ubidots , descubra como obter um aqui.

Copie e cole o código abaixo no ambiente de desenvolvimento Arduino (IDE), incluindo os parâmetros específicos do seu dispositivo e das variáveis.

#incluir<ESP8266WiFi.h> #incluir<ConfigManager.h> #incluir<PubSubClient.h> /******* Definir Constantes **********/ namespace{ const char * AP_NAME = " Ponto de AcessoUbidots "; // Atribui o nome do seu Ponto de Acesso const char * MQTT_SERVER = "ubidots"; const char * TOKEN = "...."; // Atribui o seu TOKEN Ubidots const char * DEVICE_LABEL = "meu-dispositivo"; // Atribui o rótulo do seu Dispositivo const char * VARIABLE_LABEL = "minha-variável"; // Atribui o rótulo da sua Variável int SENSOR = A0; } char topic[150]; char payload[50]; String clientMac = ""; unsigned char mac[6]; struct Config { char name[20]; bool enabled; int8 hour; } config; /******* Inicializar uma instância global **********/ WiFiClient espClient; PubSubClient client(espClient); ConfigManager configManager; /***************Funções Auxiliares ********************/ void callback(char* topic, byte* payload, unsigned int length){ } void reconnect() { while (!client.connected()){ Serial.print("Tentando conexão MQTT..."); // Tenta conectar if (client.connect(clientMac.c_str(), TOKEN, NULL)) { Serial.println("conectado"); break; } else { configManager.reset(); Serial.print("falha, rc=""); Serial.print(client.state()); Serial.println(" tente novamente em 3 segundos"); for(uint8_t Blink=0; Blink<=3; Blink++){ digitalWrite(LED, LOW); delay(500); digitalWrite(LED, HIGH); delay(500); } } } } String macToStr(const uint8_t* mac) { String result; for (int i = 0; i < 6; ++i) { result += String(mac[i], 16); if (i < 5)result += ':'; } return result; } /********* Funções Principais *************/ void setup() { Serial.begin(115200); /* Declara os pinos como entrada/saída */ pinMode(SENSOR, INPUT); pinMode(PIN_RESET, INPUT); pinMode(LED, OUTPUT); /* Atribui o endereço MAC do WiFi como nome do cliente MQTT */ WiFi.macAddress(mac); clientMac += macToStr(mac); /* Configuração do Ponto de Acesso */ configManager.setAPName(AP_NAME); configManager.addParameter("name", config.name, 20); configManager.addParameter("enabled", &config.enabled); configManager.addParameter("hour", &config.hour); configManager.begin(config); /* Define os detalhes do servidor */ client.setServer(MQTT_SERVER, 1883); client.setCallback(callback); /* Constrói a requisição do tópico */ sprintf(topic, "%s%s", "/v1.6/devices/", DEVICE_LABEL); } void loop() { configManager.reset(); configManager.loop(); /* Reconexão do cliente MQTT */ if (!client.connected()) { reconnect(); } /* Leitura do sensor */ int value = analogRead(SENSOR); /* Constrói a requisição do payload */ sprintf(payload, "{\"%s\": %d}", VARIABLE_LABEL, value); /* Publicar valor do sensor no Ubidots */ client.publish(topic, payload); client.loop(); delay(5000); }

16. Após inserir os parâmetros, verifique o código na IDE do Arduino. Para isso, clique no de marca de seleção no canto superior esquerdo da IDE do Arduino.

Em seguida, carregue seu código no seu NodeMCU . Selecione o de seta para a direita ao lado da marca de seleção.

Após o upload do código, você verá a seguinte mensagem na IDE do Arduino:

Seu módulo ESP8266 agora está pronto para estabelecer uma conexão com qualquer rede disponível, bastando pressionar o botão!

17. Para verificar o estado da conexão, abra o monitor serial Starting Access Point seja exibida no monitor serial:

18. Agora que o Ponto de Acesso foi criado, você pode estabelecer a conexão a partir do seu telefone. Em Redes Wi-Fi, selecione Ponto de Acesso Ubidots :

Após a conexão ser estabelecida, você será redirecionado para a página abaixo. Insira seus parâmetros de Wi-Fi e clique em salvar .

19. Para verificar se a conexão foi estabelecida, acesse o Monitor Serial:

Agora, volte à sua conta Ubidots para visualizar os dados recebidos do seu novo dispositivo:

Resultados

Seguindo este guia, você configurará um ponto de acesso que conecta seu dispositivo a qualquer rede disponível sem precisar inserir as credenciais no firmware – criando, assim, um firmware universal que pode ser usado em qualquer lugar!

Agora é a sua vez de experimentar. Cadastre-se gratuitamente Ubidots