Conecte seu ESP8266 a qualquer rede Wi-Fi disponível
O ESP8266 é um microcontrolador desenvolvido pela Espressif Systems . Conhecido como módulo WiFi , este microcontrolador pode ser utilizado para realizar diversas atividades relacionadas ao WiFi, com aplicações em automação residencial e muito mais. Variando em preço e recursos, existem muitos tipos de módulos ESP8266 disponíveis – mas todos são incrivelmente úteis no IoT .
Independentemente do IoT que você desenvolveu, existem duas maneiras de conectar seu ESP8266 à nuvem. Primeiro, você pode inserir suas credenciais WiFi 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 a seguir – é construir seu próprio ponto de acesso na placa, criando um firmware universal que estabelecerá uma conexão com qualquer rede disponível com apenas o pressionar de um botão.
Requisitos
- Módulo ESP8266
- Arduino IDE 1.8.2 ou superior
- Biblioteca ConfigManager
- Biblioteca PubSubClient
- Conta Ubidots
Passo 1. Configuração de hardware
Nota : A Ubidots fez algumas modificações na Biblioteca ConfigManager para implementar uma rotina que inicia o modo AP simplesmente pressionando um de reset .
Dependendo do módulo ESP8266 escolhido, pode ser necessário atribuir o pino de reinicialização usando esta versão da biblioteca . As configurações padrão do botão são atribuídas ao PIN 5 ; se estiver usando um NodeMCU , você deve conectar o botão no D1 .
Etapa 2. Configure o Arduino IDE com seu dispositivo
Antes de usar qualquer ESP8266 , você terá que instalar as placas no Arduino IDE. Siga as etapas abaixo para compilar o quadro.
Se ainda não o fez, comece baixando o Arduino IDE .
- Abra o IDE do Arduino. Selecione Arquivos -> Preferências e insira o URL abaixo do URLs adicionais do gerenciador de placa . Você pode adicionar vários URLs, separando-os por vírgulas.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
NOTA : Se você é um usuário Mac , Arduino e Arquivo contêm funções suspensas diferentes em comparação com usuários do Windows. Você também precisará instalar o driver para fazer upload do firmware para seu NodeMCU.
2. Abra o Boards Manager em Tools -> Board -> Boards Manager e instale a plataforma ESP8266. Para encontrar o dispositivo correto, pesquise ESP8266 na barra de pesquisa.
3. Selecione o módulo ESP8266 que você está usando. Neste caso, decidimos utilizar o NodeMCU 1.0 (Módulo ESP-12) . Para selecionar o quadro, vá em Ferramentas > Quadro > Selecione o quadro .
Além disso, para nos comunicarmos com o NodeMCU, também precisaremos selecionar a porta com. Vá para Ferramentas -> Porta e selecione a PORTA apropriada para o seu dispositivo.
Para manter tudo funcionando de forma rápida e tranquila, vamos garantir que a velocidade de upload esteja otimizada para 115200. Vá para Ferramentas -> Velocidade de upload -> 115200.
4. Acesse GitHub e baixe a biblioteca ConfigManager . Clique no botão verde denominado “ Clone ou download ” e selecione “ Baixar ZIP ”.
5. Agora, volte no IDE do Arduino e clique em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP .
6. Selecione o arquivo .ZIP do ConfigManager e depois “ Aceitar ” ou “ Escolher ”.
Se for bem-sucedido, você verá a seguinte mensagem no IDE do Arduino: " Biblioteca adicionada à sua biblioteca. Verifique o menu" Incluir biblioteca " "
7. Em seguida, vá para Sketch/Program -> Incluir Biblioteca -> Gerenciador de Biblioteca e instale a PubSubClient . Para encontrar a biblioteca correta, pesquise PubSubClient na barra de pesquisa.
8. Agora, reinicie o Arduino IDE antes de fazer o upload.
9. Depois de instalar a plataforma ESP8266 e as bibliotecas necessárias, instale o uploader do sistema de arquivos Arduino ESP8266 . etapas de instalação do repositório e retorne a este guia.
10. Após a instalação do uploader, crie um novo esboço para trabalhar e salve-o. Nosso exemplo se chama AP_ESP8266 :
11. Em seguida, vá para o diretório sketch e crie uma nova pasta chamada data .
12. Depois que o diretório for criado, baixe este arquivo HTML e anexe-o ao diretório. Este arquivo será usado no sistema de arquivos.
13. Em seguida, precisamos fazer upload do arquivo para o sistema de arquivos flash ESP8266. Para começar, certifique-se de ter selecionado uma porta da placa e fechado o Serial Monitor .
14. Selecione Ferramentas> Upload de dados de esboço ESP8266 para iniciar o upload de arquivos para o sistema de arquivos flash ESP8266.
Quando terminar, a barra de status do IDE deverá exibir SPIFFS Image Uploaded :
15.Agora, cole o código abaixo no Arduino IDE . Depois de colado, atribua os rótulos de dispositivo e variável desejados, bem como seu Ubidots TOKEN exclusivo. Se você não conhece seu Ubidots TOKEN, descubra como conseguir um aqui.
Copie e cole o código abaixo no IDE do Arduino, incluindo seu dispositivo específico e parâmetros variáveis.
#incluir<ESP8266WiFi.h> #incluir<ConfigManager.h> #incluir<PubSubClient.h> /******* Definir constantes **********/ namespace{ const char * AP_NAME = "Ponto de acesso Ubidots "; // Atribui o nome do seu ponto de acesso const char * MQTT_SERVER = "things. ubidots .com"; const char * TOKEN = "...."; // Atribui seu TOKEN Ubidots const char * DEVICE_LABEL = "my-device"; // Atribui o rótulo do seu dispositivo const char * VARIABLE_LABEL = "my-variable"; // Atribui o rótulo da sua variável int SENSOR = A0; } tópico de char[150]; carga útil char[50]; String clienteMac = ""; char não assinado mac[6]; struct Configuração {nome do char[20]; bool habilitado; int8 horas; } configuração; /******* Inicializa uma instância global **********/ WiFiClient espClient; Cliente PubSubClient(espClient); ConfigManagerconfigManager; /***************Funções auxiliares ********************/ void callback(char* topic, byte* payload, comprimento int não assinado){ } void reconnect() { while (!client.connected()){ Serial.print("Tentando conexão MQTT..."); // Tentativa de conexão if (client.connect(clientMac.c_str(), TOKEN, NULL)) { Serial.println("connected"); quebrar; } else { configManager.reset(); Serial.print("falhou, rc="); Serial.print(cliente.state()); Serial.println("tente novamente em 3 segundos"); for(uint8_t Piscar=0; Piscar<=3; Piscar++){ digitalWrite(LED, LOW); atraso(500); digitalWrite(LED, ALTO); atraso(500); } } } } String macToStr(const uint8_t* mac) { String resultado; for (int i = 0; i < 6; ++i) { resultado += String(mac[i], 16); se (i <5)resultado += ':'; } retornar resultado; } /********* Funções Principais *************/ void setup() { Serial.begin(115200); /* Declara PINs como entrada/saída */ pinMode(SENSOR, INPUT); pinMode(PIN_RESET, INPUT); pinMode(LED, SAÍDA); /* Atribuir endereço MAC WiFi como nome do cliente MQTT */ WiFi.macAddress(mac); clienteMac += macToStr(mac); /* Configuração do ponto de acesso */ configManager.setAPName(AP_NAME); configManager.addParameter("nome", config.nome, 20); configManager.addParameter("habilitado", &config.enabled); configManager.addParameter("hora", &config.hora); configManager.begin(config); /* Set Define os detalhes do servidor */ client.setServer(MQTT_SERVER, 1883); cliente.setCallback(retorno de chamada); /* Crie a solicitaçã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 valor = analogRead(SENSOR); /* Construa a solicitação de carga */ sprintf(payload, "{\"%s\": %d}", VARIABLE_LABEL, value); /* Publica o valor do sensor no Ubidots */ client.publish(topic, payload); cliente.loop(); atraso(5000); }
16. Após inserir seus parâmetros, verifique o código no IDE do Arduino. Para fazer isso, clique no da marca de seleção no canto superior esquerdo do seu Arduino IDE.
Em seguida, carregue seu código em seu NodeMCU . Escolha o de seta para a direita ao lado da marca de seleção.
Assim que o código for carregado, você verá a mensagem abaixo no Arduino IDE:
Seu módulo ESP8266 agora está pronto para estabelecer conexão com qualquer rede disponível apenas pressionando o botão!
17. Para verificar o status da conexão, abra o monitor Serial , pressione o botão conectado ao seu módulo ESP e segure-o por 5 segundos até ver a mensagem “ Starting Access Point ” no seu 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 Ubidots Access Point :
Quando a conexão for 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, vá para o Serial Monitor:
Agora, volte às suas contas 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 definir as credenciais no firmware – criando assim um firmware universal que pode ser usado em qualquer lugar!