FVM Learning

Nosso maior compromisso é compartilhar conhecimentos, somos simples, mas não simplórios, astuto, mas não pacóvio, nos posicionamos empenhados em mostrar o caminho para desmistificação do opróbrio em legítima defesa do conhecimento compartilhado. Eng. Jemerson Marques!

sexta-feira, 28 de junho de 2019

Como configurar o ESP8266 nos modos: Station (STA) e Access Point (AP)!!!

Como configurar o ESP8266 nos modos: Station (STA) e Access Point (AP)!!!

Olá a Todos!!!

Hoje nós iremos abordar um assunto de suma importância para quem  é apaixonado por IoT, automação, quem programa, monta projetos,  trabalha ou por Hobby, e ainda não entendeu em detalhes ou deseja entender melhor as funções para o funcionamento nos modos STA e o AP nos módulos ESP8266. 
Os ESPs funcionam em dois modos de configurações destintos: 
STA "Station" - "Estação".
AP "Access Point" - "Ponto de Acesso".

No modo STA - permite que o ESP8266 se conecte a uma rede Wi-Fi (uma criada pelo seu roteador wireless). Assim, uma característica importante sobre o ESP8266 é que ele pode funcionar como um Client "cliente" ou como AP "ponto de acesso" ou até mesmo em ambas as configurações programadas.
No modo AP - ele permite que você crie sua própria rede e tenha outros dispositivos conectados a ele como por exemplo: Um ESP, um Smartphone, um Notebook, entre outros dispositivos que se conecte a uma rede Wireless.

Para a realização deste procedimento, é necessário você já ter as bibliotecas do ESP instalada na IDE Arduíno.

Se você ainda não instalou, veja o nosso Post:

Modo Station (STA)

O modo STA é usado para conectar o módulo ESP a uma rede Wi-Fi estabelecida por um ponto de acesso.
A classe Station possui vários recursos para facilitar o gerenciamento da conexão Wi-Fi. Caso a conexão seja perdida, o ESP8266 será reconectado automaticamente ao último ponto de acesso utilizado, uma vez que esteja novamente disponível. O mesmo acontece na reinicialização do módulo. Isso é possível, pois o ESP salva as credenciais do último ponto do acesso usado na memória flash (não volátil). Usando os dados salvos 
A mudança do módulo para o modo Station é feita com a função begin. Os parâmetros típicos passados ​​para iniciar incluem SSID e senha, de modo que o módulo possa se conectar a um AP específico.

WiFi.begin (ssid, password)

Por padrão, o ESP tentará se reconectar à rede Wi-Fi sempre que estiver desconectado. Não há necessidade de lidar com isso por código separado. Uma boa maneira de simular a desconexão seria redefinir o ponto de acesso. O ESP relatará a desconexão e tentará se reconectar automaticamente.

Função begin()

Existem várias versões (chamadas de função overload em C ++) da função begin. Uma delas foi apresentada logo acima: WiFi.begin (ssid, password). A função Overload fornecem flexibilidade em número ou tipo de parâmetros aceitos. A função Overload mais simples e curriqueira do begin são:

WiFi.begin ()

A chamada dessa função instruirá o módulo a mudar para o modo de STA e conectar-se ao último ponto de acesso usado com base memória flash.
na configuração salva na
Abaixo está a sintaxe de outra  função Overload que começar com todos os parâmetros possíveis:

WiFi.begin(ssid, password, channel, bssid, connect)

Significado de cada parâmetros existente dentro da Função:

ssid - uma cadeia de caracteres que contém o SSID do Access Point ao qual gostaríamos de nos conectar, podendo conter no máximo 32 caracteres.

password - esse parâmetro é onde contém a senha do AP, uma cadeia de caracteres que deve ter no mínimo 8 caracteres e no máximo 64 caracteres.

channel - utilizamos esse parâmetro quando queremos determinar um canal de trabalho específico, caso contrário este parâmetro pode ser omitido.

bssid - retornar o endereço MAC do AP para o qual o módulo ESP foi direcionado para se conectar, este parâmetro também é opcional.

connect - um parâmetro booleano que, se definido como false, instruirá o módulo apenas para salvar os outros parâmetros sem realmente estabelecer conexão com o AP.

config

Desativar o cliente DHCP (Dynamic Host Configuration Protocol) é definir a configuração de IP da interface STA para valores arbitrários definidos pelo usuário. A interface será uma configuração de IP estático em vez de valores fornecidos pelo DHCP.

WiFi.config(local_ip, gateway, subnet, dns1, dns2)

Essa função retornará true se a alteração da configuração for aplicada com sucesso. Se a configuração não puder ser aplicada, por exemplo, módulo não está no modo STA ou STA + softAP, então a função retornará falso.

A seguinte configuração de IP pode ser fornecida:

local_ip - insira aqui o endereço IP que você deseja atribuir à interface STA do ESP.
gateway - deve conter o endereço IP do gateway (de um roteador) para acessar redes externas.
sub-net- esta é uma máscara que define o intervalo de endereços IP da rede local

dns1, dns2 - parâmetros opcionais que definem endereços IP de DNS (Domain Name Servers) que mantêm um diretório de nomes de domínio (como, por exemplo, www.google.com) e os traduzem para endereços IP.

Código de exemplo

#include <ESP8266WiFi.h>

const char* ssid = "********";
const char* password = "********";

IPAddress staticIP(192,168,1,200);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

void setup(void)
{
  Serial.begin(115200);
  Serial.println();

  Serial.printf("Connecting to %s\n", ssid);
  WiFi.config(staticIP, gateway, subnet);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {}


Modo Soft Access Point

O modo Access Point (AP) é um dispositivo que fornece acesso à rede Wi-Fi para outros dispositivos Station (STA) e os conecta a mais a uma rede externa com fio. O ESP8266 pode fornecer funcionalidade semelhante, exceto por não ter interface com uma rede com fio "cabeada". Esse modo de operação é chamado de ponto de acesso flexível (soft-AP). A máxima quantidade de estações conectadas ao soft-AP, são cinco.

Configurar um ponto de acesso suave para uma rede Wi-Fi.

A versão mais simples desta função requer apenas um parâmetro e é usada para configurar uma rede Wi-Fi aberta.

WiFi.softAP (ssid)

Para configurar uma rede protegida por senha ou para configurar parâmetros de rede adicionais, use a seguinte função Overload:

WiFi.softAP(ssid, password, channel, hidden)

O primeiro parâmetro desta função é obrigatório, os restantes três são opcionais.
Significado de cada parâmetros existente dentro da Função:

ssid - uma cadeia de caracteres que contém o SSID do Access Point ao qual gostaríamos de nos conectar, podendo conter no máximo 63 caracteres.

password - esse parâmetro é onde contém um cadeia de caracteres opcional com uma senha. Para a rede WPA2-PSK, que deve ter no mínimo 8 caracteres. Se não for especificado, o ponto de acesso estará aberto para qualquer pessoa se conectar.

channel - utilizamos esse parâmetro para definir o canal Wi-Fi, de 1 a 13. Canal padrão é 1, esse parâmetro é opcional e ser omitido.

hidden - parâmetro opcional, se definido como true "verdadeiro", ocultará o SSID
A função retornará true ou false dependendo do resultado da configuração do soft-AP.

softAPConfig

Configure a interface de rede do soft-AP.

softAPConfig (local_ip, gateway, sub-rede)

Todos os parâmetros são o tipo de endereço IP e são definidos da seguinte maneira:

local_ip - endereço IP do soft-AP.
gateway - endereço IP do gateway
sub-net - máscara de sub-rede

A função retornará true ou false, dependendo do resultado da alteração da configuração.

Exemplo de código:

#include <ESP8266WiFi.h>

void setup(void)
{
  Serial.begin(115200);
  Serial.printf("Connection status: %d\n", WiFi.status());
  Serial.printf("Connecting to %s\n", ssid);
  WiFi.begin(ssid, password);
  Serial.printf("Connection status: %d\n", WiFi.status());
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.printf("\nConnection status: %d\n", WiFi.status());
  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {}


Você pode se interessar por este super interessante post de:

Controle Remoto WI-FI 3 Canais - ESP para ESP8266 - Controlando Cargas


E por hoje é só, espero ter ajudado!!!

Qualquer dúvida, digita nos comentários que logos estaremos respondendo.

Se inscreva no nosso Blog!!! Click aqui - FVM Learning!!!

Forte abraço.

Deus vos Abençoe

Shalom

6 comentários:

  1. Opa, tudo bem? Tenho uma dúvida: Usando a WiFiManager é possível colocar o ESP em Station e AP ao mesmo tempo?

    ResponderExcluir
    Respostas
    1. Olá!!!
      Nós nunca testamos o WiFiManager, não podemos lhe informar se é possível fazer ele em STA e AP simultaneamente.
      Forte abraço.

      Excluir
  2. BOA NOITE,

    PRIMEIRAMENTE GOSTARIA DE AGRADECER!! EXCELENTE MATERIAL...
    PRECISO DE UM CODIGO TALVEZ POSSA ME AJUDA...TENHO QUE PESAR ALGUNS VEICULOS NA BALACA QUANDO ESTES CHEGAM NA MESMA PARA PESAGEM ... PRECISO ENVIAR UMA UNICA INFORMAÇÃO PARA ALIMENTAR O SISTEMA QUE O VEICULO CHEGOU E QUAL SEU NUMERO DE FROTA QUANDO ESTIVER NA REDE WIFFI ENVIANDO DADOS PARA BLOCO DE NOTAS..

    ResponderExcluir
    Respostas
    1. Olá!!!
      Muitíssimo obrigado!!!
      O que você está querendo, é um projeto que envie dados específicos para uma central...
      No momento nós não estamos fazendo projetos, pois isso leva tempo para programarmos da maneira do cliente... e no momento estamos com nosso tempo resumido, por isso não podemos atendê-lo. :(
      Obrigado por estar conosco!!!
      Lhes convido a se inscrever também em nosso canal no YouTube, isso nos ajuda bastante a darmos prosseguimento ao nosso trabalho, e não lhes custa nada, não é? https://www.youtube.com/channel/UCnaAKKkyhX7LY2ZYIff-qug
      Forte abraço.

      Excluir
  3. Respostas
    1. Olá @BRENO CARVALHO COE
      Muitíssimo obrigado!!!!
      Obrigado por estar conosco!!!
      Lhes convido a se inscrever também em nosso canal no YouTube, isso nos ajuda bastante a darmos prosseguimento ao nosso trabalho, e não lhes custa nada, não é? https://www.youtube.com/channel/UCnaAKKkyhX7LY2ZYIff-qug
      Forte abraço.

      Excluir