Manual

do

Maker

.

com

Repetidor WiFi com ESP8266 (WiFi Repeater)

Repetidor WiFi com ESP8266 (WiFi Repeater)

Impressionantemente, só tenho pego projetos com LoRa nos últimos 2 meses. E o mais interessante é que quase sempre tem também WiFi na história; e em alguns casos, entra o repetidor wifi.

Enquanto os fabricantes de hardware não decidirem implementar o padrão WiFi HaLow em roteadores para IoT, teremos que nos conformar em mesclar duas redes wireless diferentes. Nesse artigo veremos como configurar um repetidor WiFi utilizando ESP8266, oferecendo diversos recursos - entre eles, NAT (Network Address Translation) para expandir a rede e o alcance. Também veremos um WiFi Mash, que permite rotear o melhor caminho até o destino, além de fazer contingência entre os nós de uma rede WiFi.

Que ESP8266 suporta esse firmware?

Todos! O mais barato é obviamente o ESP01, que será o utilizado para demonstração em vídeo. Recomendo fortemente a compra com nosso parceiro MASUGUX, que possui diversos modelos.

O que é um repetidor?

A função de um repetidor WiFi  é justamente repetir o sinal em uma rede sem fio. Ele recebe o sinal baixo e o amplifica, aumentando o alcance da rede para distâncias que seriam inalcançáveis sem seu uso.

Como o sinal é amplificado?

Não tem mágica. Na verdade, como o repetidor WiFi retransmite o que recebe, o sinal de saída passa a ter a força dele próprio. Isto é, ele deve estar no limítrofe do alcance do roteador WiFi, por exemplo - no ponto mais distante em que o sinal do roteador ainda atinja. Depois, ele retransmite, com toda sua intensidade de saída. Se o último ponto de destino ainda estiver longe, basta adicionar mais repetidores até que toda a área necessária para o alcance do destino seja atingível. Mas aí entra outra questão.

Hops ou nós

Em rede, hop é o número de saltos necessários para alcançar o destino. Quanto mais hops, maior a latência. Se não houver outra possibilidade, já é uma solução consideravelmente boa e sem gambiarra.

Já os nós são os pontos da rede que estão "amarrados". Supondo o caso acima, onde tivessemos 2 repetidores, um roteador e uma estação. A estação deveria passar por 3 nós para iniciar os saltos na Internet. Isso poderia ser pior, poderiamos ter 3, 4 ou mais repetidores para cobrir uma área em diferentes direções (porque devemos considerar um ambiente com salas). Com isso, cada origem poderia ter um número de nós diferente, onde algum dos ambiente mandatoriamente seria favorecido. Mas há um caso em que isso pode ser benéfico.

Rede mesh

Rede mesh (também conhecida minoritariamente como "rede de malha")  é uma alternativa ao padrão 802.11, onde em uma rede haja a necessidade de utilizar um AP (Access Point) como um dos hops da rede.

Uma rede mesh se integra de modo a fazer uma malha que se comporta como uma única rede, decidindo automaticamente o melhor caminho entre os nós para atravessar a malha e saltar para o destino. Mas nem tudo é vantagem.

Apesar de oferecer o tráfego por diferentes saltos (ou caminhos, se preferir), ela possui um grande payload (ou custo, se preferir). Mas nem tudo é desvantagem.

Apesar de seu alto custo (considere realmente uma perceptível latência em casos de necessidade de resposta rápida), ela tem a vantagem de ser tolerante a falhas. Isto é, se a malha estiver devidamente fechada e um dos nós "morrer", a rede continua funcionando de forma transparente. Da mesma forma, se um novo nó entra, ele se integra aos demais componentes da rede e aumenta a contingência.

Já escrevi um artigo há algum tempo, mostrando como configurar uma rede mesh com NRF24L01, nesse artigo.

Roteador

Um roteador é um gateway de uma rede que interliga uma rede à outra. Por exemplo, seu roteador WiFi permite que sua LAN acesse a Internet. Mas roteadores interligam LANs, WLANs, WANs etc. Isso quando falamos de redes TCP/IP. Normalmente roteadores domésticos (e atualmente, roteadores empresariais) oferecem uma interface amigável ao usuário, mas profissionais de rede não abrem mão do acesso ao console do roteador, onde tem maior flexibilidade e agilidade na configuração do dispositivo. Bem, meu amigo. Esse repetidor lhe dará também ambas as interfaces!

Sniffing

Um sniffer de rede é um programa para interceptar dados de tráfego, seja em redes WiFi, ethernet ou serial. Escrevi diversos artigos sobre como fazê-lo, inclusive tenho um produto para perícia forense que desenvolvi junto a outro perito forense digital e que foi muito bem aceito no mercado - o DWOS TAP. Um dos artigos que escrevi sobre ele foi mostrando uma interceptação de uma TV Samsung Smart, bastante interessante. Mostrei também detalhes importantes para um sniffing controlado, utilizando a libpcap por intermédio do Tcpdump. Fiz também uma engenharia reversa no protocolo de um ZKTeco TF1700.

Aplicações não faltam! Mas por que falei de sniffers aqui? Bem, porque esse artigo vai lhe permitir fazer NAT, mesh, sniffing e um repetidor WiFi, utilizando apenas um singelo ESP8266!

Como fazer um repetidor WiFi com ESP8266?

Espero que tenha lido todos os passos anteriores. Se o fez, certamente sua ansiedade deve estar alta.

O processo não é dos mais simples, mas após preparar o ambiente para a compilação de seu firmware será fácil reproduzir.

1 - Prepare o SDK do ESP8266

Baixe o SDK, como primeiro passo. No Linux, algumas dependências necessitam ser instaladas, como gcc, binutils, flex, bison, gawk etc.

git clone --recursive https://github.com/xxxajk/esp-open-sdk.git

2 - Instale as dependências (Ubuntu e semelhantes)

sudo apt-get update && sudo apt-get install -y libtool-bin && sudo apt-get install make texi2html unrar-free autoconf automake libtool gcc g++ gperf \
    flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial \
    sed git unzip bash help2man wget bzip2

3 - Compile o SDK em modo standalone

É o jeito mais fácil, então, não vamos considerar mais complicações, uma vez que o objetivo aqui é chegar ao projeto final do repetidor WiFi.

cd esp-open-sdk/ && make STANDALONE=y

Isso leva um bom tempo, tome um café e leia alguns artigo em outra aba enquanto isso.

Após um longo tempo, a compilação será finalizada. Usei apenas um núcleo, mas isso pode ser agilizado utilizando o parâmetro "-j N", onde "N" é o número de processadores dedicados a essa compilação.

No final da compilação será dada a linha necessária para colocar o cross-compilador no path do sistema. Algo como:

export PATH=/home/djames/repeater/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

Para não deixar no path padrão, eu coloco um alias no arquivo ~/.bashrc, na última linha.

alias esp8266dev='export PATH=/home/djames/repeater/esp-open-sdk/xtensa-lx106-elf/bin:$PATH'

Depois, recarregue o .bashrc e carregue o sdk para o path:

source ~/.bashrc
esp8266dev

4 - Compilar o projeto repetidor WiFi com ESP8266

Agora, em um diretório separado deve-se clonar o seguinte repositório:

git clone --recursive https://github.com/martin-ger/esp_wifi_repeater.git

Entre no diretório criado (esp_wifi_repeater) e edite o Makefile para alterar o ambiente de compilação, se desejado. Impreterivelmente, devemos editar o arquivo user/user_config.h para definir as redes. Não se preocupe, são apenas parâmetros claros.

Pronto! Agora basta conectar seu ESP8266 ao computador, compilar e subir o firmware:

make && make flash

Para fazer flashing manualmente, use o programa esptool.py:

esptool.py --port /dev/ttyUSB0 write_flash -fs 4MB -ff 80m -fm dio 0x00000 firmware/0x00000.bin 0x02000 firmware/0x02000.bin

Se for instalar em ESP01, troque "-fs 4MB" por "-fs 1MB".

É possível fazer uma peripécia montando esse ambiente todo em Windows, mas aí eu pergunto (retoricamente):

Pra quê?

Instale uma máquina virtual Linux no VirtualBox e seja feliz!

Como esse artigo já ficou longo, escreverei outro mostrando como utilizar todos os recursos desse firmware e gravarei um vídeo.

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

 

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.