sexta-feira, 2 de junho de 2017

ESP8266 - Microcontrolador com Wifi e memória Flash

Detalhes sobre o Hardware
O circuito integrado ESP8266 da empresa Expressif é um SoC (System on Chip) bem completo, ele possui portas GPIO, conversor Analígico/Digital de 10 bits, portas PWM, comunicação I²C e SPI, além de uma interface Wifi que implementa o protocolo 802.11 b/g/n com suporte para WPA/WPA2.
O tamanho desse microcontrolador impressiona muito, tem apenas 11,5mm x 11,5mm e depende de poucos recursos externos. Em algumas implementações a antena Wifi é construída como uma trilha na própria placa mas para quem precisa de um alcance maior existe também a opção de uma antena externa.
Sua CPU RISC de 32bits funciona a 80Mhz, bem acima dos microcontroladores existentes nas placas Arduino. O modelo de memória parece um pouco confuso se você não conhece o funcionamento da atualização do firmware. Dentro do microcontrolador existem 3 tipos de memória, 64K de ROM, 96K de RAM e 64K de IRAM (RAM para instruções), essa última memória parece não fazer muito sentido, mas como a CPU foi construída com a arquitetura de Harward sua memória que armazena os programas é diferente da memória que armazena os dados, então essa IRAM possui programas que serão executados e a memória RAM vai ser usada para outras coisas como a pilha e as variáveis dos programas.
Durante o boot o código na memória ROM é executado, ele verifica se o pino GPIO0 está em nível baixo, se estiver então entra em modo de reprogramação e passa a tentar se comunicar via serial com o software de reprogramação, se ele encontrar então vai transferir o novo código para a memória flash. Opa... que memória é essa que eu ainda não havia comentado? Bem, nas placas com o ESP8266 os fabricantes colocam uma memória Flash SPI externa de 512Kb a 4Mb que servirá para armazenar o programa e também dados, quase como se fosse um pequeno cartão SD.
Até aqui tudo bem, entendemos como ele recebe a atualização, mas como o circuito funciona depois do programa ser baixado na memória flash? Basta resetar a placa mantendo o pino GPIO0 em nível alto, em outras palavras, conectando ele ao VCC, dessa forma a rotina na ROM vai entender que é um boot normal, vai copiar o novo programa da memória flash para a memória IRAM e colocar ele para funcionar. Com isso notamos que apesar de existir placas com até 4Mb de flash o limite de IRAM é de 64K.

Detalhes sobre o Software
A Expressif e outras empresas comercializam as placas pelos nomes de suas especificações que vão de ESP-01 até o ESP-14, cada placa com suas particularidades, vamos mostrar apenas algumas, para mais detalhes visite o link do fabricante aqui.
O modelo ESP-01 possui poucos pinos e deixa acesso para o usuário apenas 4 portas, sendo que duas delas são usadas para TX e RX na comunicação serial e as outras duas podem ser usadas normalmente, observando que uma delas é a porta GPIO0 que também é usada para reprogramação durante o boot. O modelo ESP-12 já deixa acesso a todas as portas do microcontrolador, dessa forma ele é bem mais versátil que seu antecessor. Todos os dois utilizam antenas internas, outros modelos possuem recursos diferentes.
O software original disponibiliza uma interface que chamam de interface AT pois utiliza comandos que iniciam pelas letras "AT" da mesma forma que os modens conectados às portas serias dos microcomputadores. Apesar da interface não ser nada amigável, entendemos que ela foi criada dessa forma para atender ao propósito inicial da placa que era servir apenas como uma espécie de placa de rede Wifi para outras placas, como o Arduino. A coisa mudou quando a Expressif disponibilizou o SDK do seu produto na internet e muita gente começou a ver o que era possível fazer com aquele pequeno dispositivo, logo surgiram outras versões de firmwares com interpretadores Lua, Basic e Python além de uma interface com a IDE do Arduino que permite ao usuário programar a sua placa ESP usando a mesma linguagem e ambiente de programação do Arduino com um hardware de melhor performance, menor em tamanho e mais barato (existem sites que vendem a placa por menos de US$ 2,00... isso mesmo menos de dois dólares, eu não escrevi errado).
Apesar do bom trabalho das equipes dos novos firmwares, eles ainda estão em estágio inicial além de que alguns não são compiladores, como o NodeMCU que implementa a linguagem Lua. Nessa arquitetura o seu programa é armazenado na forma de texto em um pseudo filesystem e depois o software interpreta o seu script.
Os recursos desse filesystem e o acesso aos recursos de Wifi que contam com o funcionamento em modo Cliente e modo AP podem ser feitos por meio das bibliotecas fornecidos pelo fabricante, assim como um mini sistema operacional de tempo real chamado RTOS.

Aqui estão as fotos dos modelos ESP-01 e ESP-12 citados no artigo:

ESP-01

ESP-12

Nenhum comentário:

Postar um comentário