Hoje em dia o lema é conectividade e mobilidade. Estamos vendo coisas cada vez mais móveis e conectadas, principalmente no que tange à internet. E dentre os inúmeros módulos que surgiram recentemente para explorar a onda da Internet das Coisas (IoT), o que mais se destaca é o ESP8266, da empresa Espressif, cujo modelo ESP-01 é mostrado na Figura 1 logo adiante.

 

esp8266-1
Figura 1 – ESP8266 Modelo ESP-01

 

 

O que a princípio chama muito atenção neste módulo são dois aspectos. O primeiro, é seu tamanho muito reduzido. E o segundo, é seu preço, na faixa dos $ 5,00 (isso mesmo, 5 dólares), ou até mesmo menos que isso. Depois, o que também se destaca é a facilidade com que o mesmo pode ser integrado a demais soluções, bastando, por exemplo, o uso de uma comunicação serial UART.

 

 

O que é o módulo ESP8266

 

Afinal de contas, o que é esse módulo que tanta gente tem falado? O que ele faz? O que tem de bom?!

 

Apesar de ser uma incógnita o conjunto completo e bem definido de todas as especificações do ESP8266, seguem abaixo detalhes e características que foram “descobertas” (bom, o termo correto seria “peneiradas”…) acerca do módulo, muitas das quais obtidas em documentos chineses com selo de “Confidencial“:

  • É um System-On-Chip com Wi-Fi embutido;
  • Tem conectores GPIO, barramentos I2C, SPI, UART, entrada ADC, saída PWM e sensor interno de temperatura;
  • CPU que opera em 80MHz, com possibilidade de operar em 160MHz;
  • Arquitetura RISC de 32 bits;
  • 32KBytes de RAM para instruções;
  • 96KBytes de RAM para dados;
  • 64KBytes de ROM para boot;
  • Possui uma memória Flash SPI Winbond W25Q40BVNIG de 512KBytes;
  • O núcleo é baseado no IP Diamand Standard LX3 da Tensilica;
  • Fabricado pela Espressif;
  • Existem módulos de diferentes tamanhos e fabricantes.

 

O núcleo da CPU é baseado em um IP Xtensa, da Cadence, que foi modificado a critérios da Espressif. O foco do artigo não está em detalhes técnicos aprofundados da CPU, então, quem tiver mais interesse sobre estas informações pode dar uma lida no site da Cadence.

 

Variantes

 

Os módulos ESP8266 são fornecidos numa ampla variedade de modelos, com diferenças perceptíveis principalmente no que tange à quantidade de IOs disponíveispara acesso externo, e  no tamanho do módulo. Até o presente momento, “oficialmente” existem módulos numerados de ESP-01 até ESP-12. Os modelos ESP-01 até o ESP-11, com suas respectivas legendas indicadoras, são mostrados na Figura 2, em comparação com uma moeda no centro da imagem.

 

esp8266-2
Figura 2 – Variantes ESP8266

 

 

Como pode ser observado, todos são módulos muito pequenos, com destaque para o ESP-01, o mais tradicionalmente utilizado e abordado, e o ESP-09, o menor da família.

 

O objetivo dos modelos ESP-01 e ESP-10 é servir como “Ponte Serial-WiFi”, ou seja, de um lado eles recebem comandos via Serial (UART) e interagem com a rede WiFi por meio de conexões TCP/UDP. Os demais também podem operar nesse modo, embora sejam capazes de desempenhar mais funcionalidades, inclusive, de operarem em modo standalone, ou seja, como microcontroladores com Wi-Fi! ?

 

O layout da placa de circuito impresso, juntamente com o da antena utilizada na placa, lembra muito o módulo nRF24L01 da Nordic, como mostrado na Figura 3 adiante.

 

esp8266-3
Figura 3 – Comparativo de módulos

 

Desenvolvimento

 

A Espressif é uma empresa que tem demonstrado um “bom” apoio quanto ao desenvolvimento de soluções para os seus módulos ESP8266, principalmente no que tange ao suporte à comunidade. Como exemplo, a empresa possui um repositório no GitHub, onde disponibiliza exemplos de código para firmwares com RTOS e comandos AT, e sua SDK, por exemplo. Curiosamente, há um exemplo do ESP8266 com FreeRTOS!

 

Além disso, também  há o fórum de desenvolvedores do ESP8266, mantido pela Espressif, onde é possível encontrar uma ampla gama de materiais, notícias sobre lançamentos de firmwares, discussões acerca de funcionalidades, bugs e sugestões, dentre outras coisas mais.

 

Como mencionado acima, alguns dos módulos vêem pré-carregados com um firmware que os transformam em “Pontes Serial-WiFi”. Para realizar essa ponte, a interface serial dos módulos obedece a uma tabela de comandos. Os comandos seriais seguem o padrão AT, e variam de firmware para firmware, diferenciando principalmente no tipo de resposta dada pelo módulo a cada comando, e na quantidade de comandos suportados.

 

Em um próximo post irei passar um passo a passo do ESP-01 com o Arduino, mas a título de exemplo para operar no modo AT basta que o sinal TX do módulo ESP8266 seja conectado ao sinal RX do microcontrolador com UART, e o sinal RX do módulo seja conectado ao sinal TX do microcontrolador, e que ambos tenham a mesma referência de GND. Além disso, os pinos de RST e CH_PD devem ser mantidos em PULL_UP para que ele funcione com Wi-Fi. Vale lembrar que o nível de sinal a ser trabalhado com o módulo é 3,3V. E, obviamente, o módulo deve ser alimentado com VCC de 3,3V para operar. Maiores detalhes sobre as pinagens são apresentados adiante, na seção de “Descrição dos Pinos”.

 

Nas Figuras 4 e 5 adiante são mostrados como pode ser feita essa conexão usando um Arduino e um exemplo do comando “AT+CWLAP”, que comanda o módulo a listar os pontos de rede Wi-Fi ao seu alcance. No exemplo mostrado adiante é apresentado um modelo de Arduino feito pela SeeedStudio, que possui um controle para operar em lógica de 5V ou 3,3V. Com a chave para controle em 3,3V, ele é capaz de fazer interface com o ESP8266 sem problema algum.

 

esp8266-4
Figura 4 – Exemplo de conexão TX/RX e alimentação para funcionamento e interface com módulo ESP8266
esp8266-5
Figura 5 – Exemplo de comando serial AT “AT+CWLAP”

 

Como mencionado também, a fabricante libera em seu GitHub o código-fonte do firmware que trata os comandos AT e faz a interface com Wi-Fi correspondente aos comandos, ou seja, você pode baixar este código-fonte e modificá-lo para se adequar aos seus requisitos de projetos, ou simples interesses pessoais.

 

Mas nisso incorremos em um problema… A arquitetura do módulo não é ARM, não é x86, é Xtensa, e não encontramos por aí de bandeja uma suite para compilar códigos para esta plataforma. Como fazer então?

 

Para compilar um código-fonte nativo para o ESP8266 é preciso ter um compilador adequado para a sua arquitetura de máquina, e dessa forma a Espressif também libera um Toolchain, contendo o compilador e demais ferramentas necessárias para compilar código nativo para o módulo. Ela também fornece detalhes de configuração e setup.

 

Complementando o assunto sobre desenvolvimento nativo para trabalhar diretamente com os módulos ESP8266, a Espressif liberou uma suite completa de desenvolvimento (SDK) para permitir criar códigos nativos, o que inclui uma toolchain com gcc adaptado para compilar código para a arquitetura Xtensa do módulo, além de outras ferramentas que permitem fazer o upload do código para o módulo. Há até mesmo uma máquina virtual em formato VirtualBox com Linux Ubuntu contendo essas ferramentas já previamente instaladas e configuradas. E onde que eu encontrei essa pérola? No fórum oficial! ?

 

Incluído no SDK, há toda uma gama de bibliotecas que permitem trabalhar com SSL, JSON e até a pilha lwIP, com o objetivo de permitir o desenvolvimento de aplicações para a Internet das Coisas. Juntamente, há exemplos de códigos que demonstram as funcionalidades do chip, tais como acesso à rede, UART, barramentos I2C e SPI, como também o simples acesso e controle a IOs.

 

Como se não bastasse, a Espressif também disponibiliza uns 3 projetos para servirem de base, com códigos-fonte disponíveis para exemplo, também no GitHub.

 

Para mais detalhes, você também pode consultar a raiz da Wiki do ESP8266 no link do GitHub.

 

Entretanto, a SDK oficial é parcialmente fornecida em código-aberto, ou seja, algumas bibliotecas são fornecidas como binários, não sendo possível acessar os códigos correspondentes às funções utilizadas. Dessa forma, grupos de usuários têm-se reunido no objetivo de desenvolver uma toolchain completamente open-source para a arquitetura Xtensa.

 

O site esp8266.ru, apesar de estar em russo, é uma das melhores fontes de firmwares e ferramentas de desenvolvimento para ESP8266. Nele é possível encontrar versões recentes do Firmware AT, ferramentas para upload e desenvolvimento de código, dentre outros. A título de exemplo, ele já possui detalhes e exemplos de como carregar código no ESP8266 usando a plataforma Arduino IDE. E se quiser também ver uma ampla gama de projetos diferentes, todos feitos com o ESP8266 em várias de suas variantes, o site notey é uma ótima indicação.

 

Aplicações

 

Nos guias, sites, documentos confidenciais e demais fontes de informação que utilizamos para agregar as informações aqui exibidas acerca do ESP8266, pudemos perceber que o mesmo pode ser utilizado em uma ampla gama de aplicações, exatamente pelo fato de possuir conectividade Wi-Fi, um bom poder de processamento, e tamanho reduzido. Suas possíveis aplicações são tais como:

  • Tomadas inteligentes;
  • Automação residencial;
  • Monitoramento remoto;
  • Segurança doméstica, comercial e industrial;
  • Rede de sensores;
  • Controle industrial sem-Fio;
  • Monitores de bebês e crianças;
  • Eletrônica vestível;
  • Dispositivos para localização via Wi-Fi;
  • Tags de identificação para segurança;
  • Câmeras IP;
  • Robótica;
  • E muito mais.

 

Como mostrado, são alguns tópicos muito interessantes que tratam basicamente do que é possível ser feito agora com uma “coisa” que pode ser móvel com conectividade Wi-Fi!

 

Mais características do chip e detalhes de operação

 

Se você chegou até aqui, é porque realmente quer saber mais sobre este módulo! Então, lá vai. Embaixo temos mais algumas características técnicas a respeito do ESP8266 e sobre demais detalhes sobre sua operação em rede TCP/IP sob WiFi:

  • SDIO 1.1, 2.0, SPI, UART;
  • Encapsulamento de 32 pinos QFN com 11.5mm por 11.5mm;
  • Switch de Radiofrequência;
  • Processadores de MAC e Baseband integrados;
  • Gestão de Qualidade de Serviço (QoS) integrado;
  • Interface I2S para aplicações de áudio;
  • Regulador on-chip com baixo dropout para fornecimento de energia aos periféricos integrados;
  • Arquitetura proprietária para geração de clock free-spurious;
  • Engine integrada para criptografias WEP, TKIP, AES e WPA;
  • Suporte aos protocolos 802.11 b/g/n;
  • Wi-Fi Direct (P2P), soft-AP;
  • Pilha de protocolo TCP/IP integrada com suporte a IPv4;
  • Wi-Fi em frequência de 2.4GHz com suporte a WPA e WPA2;
  • Potência de saída em +20dBm no modo 802.11b;
  • Conversor ADC integrado com resolução de 10 bits;
  • Suporte a uma variedade de antenas;
  • Energia de consumo em modo sleep menor que 10uA;
  • Tempo para sair de sleep e transmitir pacotes menor que 2ms;
  • Potência de standby menor que 1.0mW;
  • Pode operar em faixa de temperaturas de -40ºC a 125ºC.

Fonte: https://www.embarcados.com.br/modulo-esp8266/

Leave a Comment