Manual

do

Maker

.

com

Configurar o WiFi do ESP32 pelo bluetooth

Configurar o WiFi do ESP32 pelo bluetooth

Configurar o WiFi do ESP32 de um jeito diferente

Imagine que interessante não precisar se preocupar em configurar previamente  a rede WiFi do ESP32. Recentemente fiz um projeto para o Ye Vesta Home Brewing envolvendo um ESP8266. Em casa, configurei o modo Station conectado à minha rede. Chegando lá, tive que reconfigurar a rede e não foi simples, tive que subir o firmware modificado. Se fosse um ESP32, essa solução viria bem a calhar. Vejamos o processo agora.

Comprar o ESP32

Para essa configuração é necessário um ESP32, obviamente. Se você ainda não começou a sua diversão por falta de um, dá uma chegadinha na AutoCore Robótica e adquira o seu.

Pré-configuração

Todo o ambiente disposto aqui foi desenvolvido em Linux. Você pode criar uma máquina virtual com o VirtualBox e compilar o firmware por lá. Depois pode subí-lo de algum modo em seu Windows. Se for possível fazer um passthrough dos recursos do sistema para a máquina virtual, você poderá subir o firmware de dentro do Linux mesmo. Outra opção é fazer um dual boot, onde você poderá escolher que sistema iniciar através de um menu. Por fim, você pode fazer um boot com um livecd e montar esse ambiente de desenvolvimento em uma midia removível. Desse modo, toda a vez que você quiser desenvolver usando o SDK da ESPressif, bastará fazer o boot do seu livecd e acessar a midia na qual o ambiente de desenvolvimento foi instalado. Ou seja, não há desculpas para não experimentar!

Para começar, crie um arquivo (se não existir) ~/.bash_profile e adicione o seguinte conteúdo:

export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin
alias get_esp32="export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin"
export IDF_PATH=~/esp/esp-idf

Não se esqueça do "." prefixando o arquivo; isso significa que ele é um arquivo oculto.

Agora instale os pacotes dependentes:

sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial

Download do toolchain

Na publicação desse artigo, a versão mais atual é  essa para Linux x86_64.

Após o download, crie um diretório chamado "esp" em seu home e descomprima o arquivo dentro dele:

mkdir ~/esp && cd~/esp
wget -c https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz
tar zxvf ~/Downloads/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz

ESP-IDF

Agora será necessário baixar a API para o ESP32. Ainda dentro do diretório esp, digite (ou copie e cole) a seguinte linha de comando:

git clone --recursive https://github.com/espressif/esp-idf.git

Hello World

Hora de experimentar. Faça uma cópia do diretório de exemplo hello_world para dentro do diretório esp (o nível de diretório atual em que você deve estar nesse momento):

cp -r ~/esp/esp-idf/examples/get-started/hello_world/ .

Agora entre no diretório copiado e vamos ver uma novidade:

cd hello_world
make menuconfig

Agora você tem um menu para configurar o funcionamento do firmware! Aqui você deve configurar os parâmetros da comunicação serial. Não que seja necessário, mas fiz uma gravação curta do processo, que você pode conferir abaixo. Considerando que o dispositivo foi encontrado em /dev/ttyUSB0:

https://youtu.be/ddYaD9JqjUM

Como você pôde ver, ao entrar no diretório e digitar "make menuconfig", abriu-se um menu em curses, semlhante ao menu de configuração do kernel ou o de SDK de embarcados; é bastante comum, não é novidade, exceto para o ESP32 - o que nos é de grande valia.

Após configurar e sair do menu, digitei "make flash" para compilar e subir o firmware. Para ver o resultado, da comunicação, basta digitar "make monitor". Se quiser executá-los na sequência, digite "make flash monitor".

Agora que o teste está feito, você já deve ter entendido o processo e deverá estar mais seguro para o próximo passo, que é instalar o exemplo "blufi" para configurar o WiFi do ESP32 através do bluetooth.

EspBlufi apk para configurar o WiFi do ESP32

Agora vem a parte chata. Vocẽ precisará confiar no app da ESPressif. Vá a esse link e pegue a última release. Depois transfira-o para seu Android (ou faça o download diretamente em seu smartphone). Eu baixei no computador e coloquei no Dropbox pra facilitar. Depois o abri no celular, então tive que habilitar a instalação de pacotes de fontes não confiáveis e após instalar o programa, tive que permitir localização. Localização é sim necessário, não dá pra escapar dessa necessidade.

Ainda no smartphone, será necessário habilitar tanto WiFi como bluetooth. Agora vamos copiar o código de exemplo da utilização desse recurso,compilar e subir o firmware para o ESP32.

Copiar o EspBlufi dos exemplos

Do mesmo modo que para o "exemplo hello world", copie o diretório "blufi" para dentro de ~/esp e novamente rode o menuconfig para verificar as configurações da comunicaçao serial. No último menu você tem como habilitar ou desabilitar o bluetooth, mas como esse é um projeto de exemplo, ele já vem pronto para uso e você não precisará se preocupar com essas configurações.

cp -r esp-idf/examples/bluetooth/blufi .
cd blufi && make menuconfig
#...e ao terminar a verificacao da serial...
make flash monitor

A partir desse momento você pode habilitar o bluetooth de seu smartphone e, não tente parear; simplesmente habilite-o e se quiser, pode até chegar se aparece o BLUEFI na lista, mas somente essa informação é importante até aqui. O que você deve fazer em seguida é abrir o aplicativo EspBlufi e clicar sobre o dispositivo que aparecerá. A partir de então você terá a possibilidade de configurar os modos AP, Station e AP+Station. A tela final pós configuração deve dar todas as informações relacionadas à sua configuração prévia. Algo mais ou menos assim:

bluetooth-wifi.webp

Veja no video a seguir uma configuração simples do modo AP (tentei configurar previamente o modo Station, mas eu teria que expor demais minha rede e estava com preguiça de mudar a senha de novo). Não está sincronizado direito background e foreground, mas dá pra entender bem o que acontece.

https://youtu.be/fGiNcVfE-QE

Código

Se resolver dar uma olhada no código, não desanime. É grande por causa das implementações, mas supondo que você queira implementar um projeto seu e utilizar-se desse recurso, basta adicionar suas funções e variáveis e depois chamar o que for necessário dentro de app_main(). Logo mais eu escreverei outros artigos utilizando o SDK do ESP32 e com código próprio, é só acompanhar!

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.