sexta-feira, setembro 23, 2016

ESP8266

O  ESP8266 causou furor ao fornecer uma solução de baixo custo para conexão a rede WiFi. Como os detalhes sobre ele são bem fácies de achar, vou me limitar a um rápido resumo antes de utilizá-lo com o sinalizador.

À esquerda um WeMos D1 Mini. No alto um ESP-07 e embaixo um ESP-12

Hardware

O ESP8266 é um circuito integrado criado pela ExpressIf contendo:
  • Uma CPU 32 bits (Tensilica Xtensa LX106), rodando a 80MHz (com possibilidade de overclocking para 160MHz em alguns dispositivos)
  • Suporte a WiFi b/n/g, operando tanto como dispositivo como ponto de acesso
  • 16 pinos de GPIO
  • Interfaces SPI, I2C e UART
  • ADC de 10 bits

Com tudo isto, um microcontrolador com comunicação WiFi pode ser construído acrescentando basicamente cristal, flash e antena. Diversos módulos utilizando o ESP8266 estão disponíveis. Os primeiros (e talvez os mais conhecidos) são os ESP-nn da AI-Thinker. A variação entre os modelos está na quantidade de pinos disponibilizados, no espaçamento dos conectores e no tipo de antena. Infelizmente a maioria não é adequada para espetar em uma protoboard; os modelos mais comuns usam um espaçamento entre pinos de 2mm ao invés de 0,1" (2,54mm). O ESP 8266 opera a 3.3V e os módulos da AI-Thinker não possuem nenhum regulador ou conversor de nível.

O hardware do NodeMCU é um exemplo de módulo com elementos adicionais de hardware: um regulador de tensão e um conversor USB serial, permitindo alimentar e comunicar através de um conector micro USB. Um hardware semelhante é o WeMos D1 Mini, que vou usar no meu projeto com o sinalizador. Ambos usam o espaçamento padrão de 0,1" (o D1 Mini vem com três conjuntos de conectores: macho, fêmea e duplo; você solda o que for melhor para a sua aplicação).

Estes módulos costumam custar no exterior em torno de US$5.

Software

Inicialmente o ESP8266 era utilizado somente com o seu firmware padrão, que reconhece na serial comandos do tipo AT para executar tarefas como configurar o WiFi e estabelecer uma conexão TCP ou UDP. Neste modo o ESP8266 é tipicamente ligado a um outro microcontrolador, sendo usado "apenas" para efetuar a conexão WiFi. A ligação é simples, desde que o microcontrolador também opere a 3.3V: alimentação, terra, rx e tx. Se você quiser fazer um teste dos comandos AT a partir de um PC, use um conversor serial USB que suporte operação a 3.3V (o que não é  muito comum).

Posteriormente a ExpressIf liberou um SDK que permite gerar aplicações a serem executadas diretamente no ESP8266. Nesta configuração a comunicação serial é usada para carregar a aplicação. Alguns exemplos de projetos feitos com este SDK:
  • NodeMCU: um interpretador Lua rodando no ESP
  • Micro Python:  um interpretador Micro Python rodando no ESP
  • ESP8266 BASIC: um interpretador BASIC rodando no ESP
  • Arduino: permite a programação do ESP8266 usando a IDE do Arduino
Por enquanto as minhas experiências vão usar a IDE do Arduino. Basicamente segui as instruções no site da WeMos para usar o Boards Manager para instalar o suporte ao ESP8266 na IDE. Como o D1 mini já tem um conversor serial USB (baseado no CH340G), foi só ligar na USB do PC, compilar o exemplo blink (demorou um tempão) e ver o LED piscar.


Atualização (27/09/16):

O WeMos D1 mini não está mais disponível, em seu lugar tem o WeMos D1 mini Pro.

O link para o tutorial de uso do Arduino também mudou e o novo tutorial não fala mais em como usar o Boards Manager da IDE.  Veja direto no github.

5 comentários:

pronto disse...

Eu tenho usado o PlatformIO para programar o esp8266. Ele compila muito mais rápido e também é na linguagem do Arduino.

pronto disse...
Este comentário foi removido pelo autor.
Daniel Quadros disse...

Coloquei na lista experimentar o PlataformIO. Gostei que ele suporta também as várias Launchpads da Texas.

Anônimo disse...

Daniel não consegui assistir o seu talk na bsides.
Pelo que me falaram foi bem legal.

gostaria de mais informações sobre ele.

obrigado

meu email
kfarias@gmail.com

Daniel Quadros disse...

A palestra "Hackeando WiFi com o ESP8266" pode ser vista aqui: https://drive.google.com/open?id=0BxAzQY17Vad0cVRwZ3BfWE9DUms