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:

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

Agora instale os pacotes dependentes:

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:

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:

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):

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





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:

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.

Não ocorrendo problemas (e não deve ocorrer), você verá uma saída assim no terminal:

monitor serial esp32
monitor serial esp32

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:

Configurar o WiFi do ESP32
pós configuração

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.

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!

Vá até o final da página e veja se os artigos relacionados lhe interessam.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do bit Ao Byte – https://www.facebook.com/groups/dobitaobyte/

Projetos Arduino e Eletrônica – https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 BR – https://www.facebook.com/groups/ESP8266BR/

Próximo post a caminho!

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.