Utilizar o NodeMcu em lugares que não tem um WiFi pode ser um problema, pois não teríamos como conectá-lo à rede para acessar seu web server. Entretanto, para isso, existe o modo de access point, que cria uma rede WiFi para você comunicar com o NodeMcu. Portanto, nesta aula, vamos aprender a criar e configurar um access point.
Na aula anterior, aprendemos a utilizar a interrupção externa e o modo sleep do NodeMcu.
Informações importantes
Esta aula será bem resumida, pois a parte mais difícil que é criar um web server para extrair e enviar dados já foi abordada nas aulas 6 e 7.
De qualquer forma, a ideia do Access Point (AP) é criar justamente um ponto de acesso, uma rede WiFi, com nome e senha customizáveis para podermos criar uma rede local e comunicar com o NodeMcu. O access point é ideal em locais onde não existe uma rede WiFi para conectar o NodeMcu, ou então existe, mas ela é instável ou inacessível.
Citando um exemplo: imagine um sistema de monitoramento de uma horta que fica em um local remoto. Neste local não há rede e você precisa pegar as informações de umidade da horta e, como não há WiFi, o ideal é criar um ponto de acesso para você conectar toda vez que quiser pegar os dados do NodeMcu.
Uma outra aplicação extremamente interessante do access point é criar uma rede para dois NodeMcu’s trocarem informações entre si.
Modos diferentes
O NodeMcu disponibiliza 4 modos diferentes de WiFi, que são:
Modo estação
Este modo é o mesmo que utilizamos nas aulas passadas. Ele é utilizado para conectar o NodeMcu à uma rede WiFi existente. A vantagem da estação é que a rede WiFi pode estar conectada na internet e, com isso, poderemos extrair dados dela.
Modo SOFTAP
Este é o modo utilizado para criar apenas o ponto de acesso. Por padrão, o IP do NodeMcu será 192.168.4.1 e todo dispositivo conectado em seguida receberá o próximo IP disponível (ex: 192.168.4.2).
Modo STATIONAP
Neste modo, o NodeMcu é capaz de trabalhar no modo de estação e no modo SOFTAP. Ou seja, ele permite conectar o NodeMcu à uma rede e permite a criação de um ponto de acesso ao mesmo tempo.
Modo nulo
Este modo coloca o WiFi do NodeMcu em um estado de baixo consumo, como se o módulo do WiFi ficasse desligado.
Programação
Configurando o modo
Nas aulas anteriores, nós já vimos qual comando utilizar para alterar o modo do WiFi. Relembrando então:
1 | wifi.setmode(modo, salvar) |
O comando acima possui dois parâmetros:
- modo: é o modo do WiFi, conforme descrito no tópico anterior. Dentre eles, temos:
- wifi.STATION: modo de estação
- wifi.SOFTAP: modo de Access Point
- wifi.STATIONAP: modo de estação e Access Point
- wifi.NULLMODE: modo nulo
- salva: parâmetro que define se o modo do WiFi vai ser gravado na memória flash do NodeMcu. Se for true, ele salva, e, se for false, ele mantem o valor anterior.
-
- O valor gravado na memória flash pode ser descoberto utilizando o comando: wifi.getdefaultmode()
Configurando o Access Point
Após configurar o modo certo, vamos às configurações da rede. Para configurar o ponto de acesso, quando o modo for SOFTAP ou STATIONAP (estação e access point), basta utilizar o seguinte comando:
1 | wifi.ap.config(configuração) |
Para criar a configuração do parâmetro, basta seguir o modelo abaixo:
1 2 3 4 5 6 7 8 9 | configuracao={} configuracao.ssid = "NOME_DO_ACCESS_POINT" configuracao.pwd = "SENHA_DO_ACCESS_POINT" configuracao.auth = wifi.WPA2_PSK -- Modo de autenticação WPA2-PSK wifi.ap.config(configuracao) |
No caso acima, configuramos apenas o nome, a senha e a forma de autenticação da rede. Entretanto, existem outros parâmetros que podem ser configurados, como o canal que o ponto de acesso irá fica, se ele ficará oculto ou não e entre outros. Os demais parâmetros podem ser lidos na documentação do NodeMcu.
A configuração também pode ser feita de forma direta:
1 | wifi.ap.config({ssid="NOME_DO_ACCESS_POINT", pwd="SENHA_DO_ACCESS_POINT", auth=auth=wifi.WPA2_PSK}) |
Configurando a estação
Para configurar a estação, quando o modo for STATION ou STATIONAP (estação e access point), basta utilizar o comando abaixo:
1 | wifi.sta.config(configuração) |
Sendo que os principais parâmetros de configuração são: o nome da rede e a senha. Para configurá-los, basta seguir a sequência mostrada abaixo:
1 2 3 4 5 6 7 | configuracao={} configuracao.ssid ="NOME_DO_SEU_WIFI" configuracao.pwd = "SENHA_DO_WIFI" wifi.sta.config(configuracao) |
Ou, então, colocar direto, como fizemos nas outras aulas:
1 | wifi.sta.config {ssid="NOME_DO_SEU_WI-FI", pwd="SENHA_DO_WI-FI"} |
Além destas, existem várias outras configurações da estação, como a que salva os parâmetros da rede na memória do NodeMcu para evitar reconfiguração. Ou, então, a configuração que define o endereço MAC. Para ver quais estão disponíveis, leia a documentação do NodeMcu.
Exemplo apenas com Access Point
Para exemplificar como criar o ponto de acesso, vamos criar um projeto igual o da aula 6: um simples web server do NodeMcu que exibe alguns dados básicos em uma página do navegador. A diferença deste projeto para o da aula 6 é que aqui estaremos usando o ponto de acesso para fazer a comunicação com o NodeMcu ao invés de uma rede WiFi doméstica.
Observações
Depois de configurar o ponto de acesso, conforme tópico anterior, basta utilizar o comando abaixo para criar um servidor.
1 | srv = net.createServer(net.TCP) |
Como esta parte já foi vista em várias aulas, não entrarei nos detalhes seguintes, basta ver o código completo para relembrar.
Código completo
A leitura dos comentários, juntamente com as aulas anteriores, devem ser suficiente para entender o código. Para acessar o web server, basta usar o IP padrão do access point (192.168.4.1) ou então configurar outro IP com o comando wifi.ap.setip(configurações).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | -- Define o modo de access point wifi.setmode(wifi.SOFTAP) -- Configura o nome da rede, a senha e o método de autenticação wifi.ap.config({ssid="MundoProjetado", pwd="12345678", auth=wifi.WPA2_PSK}) -- Pega os dados de IP, netmask e gateway (mas só o IP é usado) ip, nm, gw = wifi.ap.getip() print("IP: ",ip) -- Printa o IP srv=net.createServer(net.TCP) -- Cria o web server conforme aulas 6 e 7 srv:listen(80, function(conn) conn:on("receive",function(client,payload) print(payload) -- Printa o payload recebido do web server -- Cria a página em html client:send("<h1>Central de controle dos LEDs</h1>") client:send("<p> Apague e acione os LEDs facilmente.</p>") client:send("<p> Basta apertar os botões.</p>") end) end) |
Resultados
Depois de rodar o código acima, foi possível encontrar, no celular, a rede criada:
Fazendo login na rede e abrindo o IP no navegador, a página criada no código aparece sem problemas:
Por fim, assim como antes, é possível obter as respostas recebidas pelo NodeMcu no ESPlorer:
De forma geral, com o que foi mostrado nesta aula, você pode repetir os mesmo passos das aulas 6,7 e 9 (aplicativo) utilizando o access point.
Controlando NodeMcu por servidor externo – Aula 12 – NB
Bacana, quantos ESP consigo conectar a um NodeMCU em AP? há um limite?
Obrigado
Olá, Augusto. Existe sim um limite de cinco dispositivos que podem ser ligados ao NodeMcu.