Ponto de acesso WiFi baseado em ESP8266/ESP32 usando MicroPython

Ponto de acesso WiFi baseado em ESP8266/ESP32 usando MicroPython

Muitos aplicativos IoT são controlados com a ajuda de uma página da web ou site HTML executado em uma rede local (LAN) ou rede local sem fio (WLAN). Alguns exemplos de tais aplicações IoT incluem automação residencial, automação de escritório e agricultura inteligente. A página HTML ou site que controla as coisas está hospedado em um microcomputador ou microcontrolador. As placas de desenvolvimento WiFi como ESP8266 e ESP32 fornecem uma interface de rede WiFi onde a placa pode atuar como uma estação WiFi ou como um ponto de acesso WiFi. Confira como conectar o ESP8266/ESP32 a uma conexão WiFi usando o módulo de rede MicroPython. Seja configurada como uma estação WiFi ou um ponto de acesso WiFi, as portas MicroPython, incluindo ESP8266 e ESP32, podem hospedar páginas HTML usando o módulo de soquete MicroPython. Você pode verificar como configurar ESP8266/ESP32 ou outras portas MicroPython como servidor TCP e clientes TCP. Como um servidor TCP, ESP8266/ESP32/qualquer porta MicroPython pode hospedar uma página da web.

Como servidor TCP, conectamos o ESP8266/ESP32 a um modem/roteador WiFi onde outros dispositivos poderiam acessar a página hospedada pelo ESP8266/ESP32 via internet. Os dispositivos podem receber comandos ou dados de sensores do servidor de hospedagem ESP8266/ESP32 por toda a internet. Neste caso, a aplicação web host para automação residencial ou qualquer projeto IoT é roteada pelo modem/roteador entre o servidor ESP8266/ESP32 e os demais nós da rede IoT.

Para uma aplicação IoT na qual todos os nós da rede IoT são implantados localmente ou estão dentro do alcance de LAN ou WLAN, esta configuração de rede pode levar a uma falha evitável. Caso o modem/roteador apresente defeito ou a conexão à Internet do seu provedor de serviços de Internet (ISP) seja suspensa devido a alguma falha, o aplicativo IoT completo será encerrado porque os dispositivos IoT não poderão se comunicar entre si na ausência ou falha de conexão com a internet.

MicroPython ESP8266/ESP32 hospedando um aplicativo HTML como estação WiFi

No entanto, podemos evitar tal falha tornando o ESP8266/ESP32 ou outra porta MicroPython como um ponto de acesso WiFi independente que hospeda o aplicativo da web, para que vários nós possam acessar o aplicativo IoT diretamente com o servidor de hospedagem (ou seja, ESP8266/ESP32, em vez de acessando o aplicativo IoT pela internet).

MicroPython ESP8266/ESP32 hospedando um aplicativo HTML como ponto de acesso WiFiNeste projeto, demonstraremos como configurar o ESP8266/ESP32 ou qualquer porta MicroPython como um ponto de acesso WiFi e hospedar uma página web diretamente do ponto de acesso.

Componentes necessários

  1. ESP8266/ESP32 x1
  2. Cabo USB ESP8266/ESP32 x1
  3. Computador/Laptop (para programação ESP) x1
  4. Smartphone (para acessar o aplicativo web) x1

Conexões de circuito
Você não precisa fazer nenhuma conexão de circuito. Você só precisa ter uma ferramenta de desenvolvimento de software MicroPython como uPyCraft IDE ou Thonny IDE pronta e fazer upload do firmware MicroPython para ESP8266/ESP32. Finalmente, você precisa fazer upload do script MicroPython deste projeto para ESP8266/ESP32. O script em si cuidará tanto da criação do ESP8266/ESP32 como um ponto de acesso WiFi quanto da hospedagem de uma página HTML. Depois que o script for carregado, a placa poderá ser protegida em um caso e implantada em um aplicativo IoT destinado a ser executado em WLAN.

Preparando ESP8266/ESP32
Antes de continuar, você deve ter um IDE MicroPython pronto para escrever, editar e fazer upload de códigos. Você pode usar uPyCraft IDE ou Thonny IDE para desenvolvimento de software. Com a ajuda do respectivo IDE, você deve ter carregado o firmware MicroPython para ESP8266 ou ESP32. Veja como preparar o IDE uPyCraft e fazer upload do firmware MicroPython para ESP8266/ESP32.

Script MicroPython

Como funciona o projeto
Com a ajuda de um módulo de rede, o ESP8266/ESP32 é configurado como um ponto de acesso WiFi em vez de uma estação WiFi. Quando o ESP8266/ESP32 é configurado como um ponto de acesso WiFi, a placa pode ser acessada diretamente pelos outros nós IoT usando uma interface de rede WiFi em vez de acessar a placa pela Internet.

Uma página HTML de amostra é projetada dentro do script MicroPython. A página HTML é armazenada como uma string entre aspas duplas. Como as strings entre aspas duplas no Python padrão e no MicroPython são imutáveis, podemos hospedar páginas da Web estáticas usando essas estruturas do MicroPython. Então, a única maneira de fazer uma página HTML interagir com o servidor de hospedagem é usando elementos de formulário HTML, como botões.

Finalmente, o ponto de acesso ESP8266/ESP32 é configurado como um servidor TCP usando soquetes que entrega a página da web sempre que o endereço IP local do ESP8266/ESP32 é solicitado usando um cabeçalho HTTP por um ponto de acesso ESP8266/ESP32 conectado ao dispositivo.

O código
O script MicroPython começa com a importação do módulo de soquete caso o módulo de soquete não seja encontrado. A seguir é importado o módulo de rede para configuração da interface WiFi no ESP8266/ESP32. O módulo esp é importado e a depuração é definida como none usando o método esp.osdebug . O módulo gc é importado e a coleta de lixo é explicitamente habilitada usando o método gc.collect .

As variáveis ​​SSID e senha são definidas para armazenar o SSID e a chave de rede do servidor ESP8266/ESP32. Um objeto da interface de rede WiFi ap_if é instanciado usando o método network.WLAN , que é configurado para o ponto de acesso WiFi. A interface de rede é ativada chamando o método active e configurada para criar o SSID e a senha usando o método config . Agora, qualquer dispositivo pode se conectar ao ponto de acesso ESP8266/ESP32 com o SSID e a chave de rede fornecidos. Você pode escolher qualquer SSID e chave de rede de sua preferência. O SSID e a chave de rede são atribuídos 'MicroPython-AP' e 'eeworldonline', respectivamente, neste projeto. Observe que tanto o SSID quanto a senha recebem strings mutáveis. O SSID será exibido como uma conexão WiFi na guia WiFi de computadores e smartphones. Os dispositivos incorporados podem se conectar ao ponto de acesso ESP8266/ESP32 programando-os explicitamente para se conectarem com o SSID e a senha fornecidos.

O script é executado até que o ponto de acesso WiFi seja ativado. Assim que o ponto de acesso for ativado, uma mensagem 'conexão bem-sucedida' será impressa no console. Imediatamente a seguir, os parâmetros de rede do ponto de acesso são impressos no console usando o método ifconfig .

A função web_page é definida para entregar a página HTML hospedada pelo ESP8266/ESP32. Nesta função, o código HTML da página da web é armazenado como uma string imutável em uma variável HTML. Um objeto soquete é instanciado com o método socket.socket para usar o protocolo de Internet IPv4 e a rede TCP na camada de rede da pilha TCP/IP. O soquete está vinculado ao localhost e à porta número 80 usando o método socket.bind . O soquete é ativado para escutar conexões TCP de entrada usando o método socket.listen .

Em um loop while infinito, o soquete é feito para aceitar conexões de dispositivos conectados ao ponto de acesso usando o método socket.accept . À medida que o servidor ESP8266/ESP32 aceita uma conexão, o endereço IP do dispositivo de conexão é impresso no console. A solicitação HTTP GET recebida da conexão aceita é armazenada em uma solicitação variável. A solicitação HTTP recebida da conexão aceita também é impressa no console. A página da web retornada pela função web_page é armazenada em uma resposta variável e enviada para a conexão solicitante usando o método send . A conexão é fechada usando o método close . O loop continua infinitamente, procurando por novos dispositivos solicitando uma conexão com o servidor TCP ESP8266/ESP32 e entregando a página da web como localhost, o dispositivo conectado solicita o endereço IP.

Resultado
Carregue e execute o código MicroPython como um arquivo main.py para ESP8266/ESP32. Ao rodar o ponto de acesso ESP8266/ESP32, ele é exibido como uma das conexões WiFi disponíveis em um smartphone ou computador, conforme imagem abaixo.

Conecte o ponto de acesso inserindo a chave de rede definida no código MicroPython. O servidor ESP8266/ESP32 imprimiu o endereço IP do host local no console, conforme mostrado na imagem abaixo.

Para abrir a página hospedada pelo servidor ESP8266/ESP32 TCP, abra um navegador da web e escreva o endereço IP do ESP32/ESP8266 na barra de endereço e pressione Enter. Isto enviará uma solicitação do cliente web (navegador) do smartphone ou computador para o servidor ESP8266/ESP32, conforme imagem abaixo.

Atendendo à solicitação, o ESP8266/ESP32 envia a página web para o web client (navegador) do smartphone/computador, que será carregado da seguinte forma.

Observe que um ponto de acesso WiFi no ESP8266/ESP32 usando MicroPython não pode operar como um repetidor WiFi. MicroPython não oferece suporte a roteamento NAT ou IP.

Conteúdo Relacionado

Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
ESP32-CAM é um módulo de câmera compacto que combina...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
O impacto dos enrolamentos da armadura CC no desempenho...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
Powrót do blogu

Zostaw komentarz

Pamiętaj, że komentarze muszą zostać zatwierdzone przed ich opublikowaniem.