O esp8266 é um microcontrolador bem poderoso e útil que pode fornecer a qualquer projeto a capacidade de conexão wireless com a internet. E, isso abre portas para muitas aplicações interessantes. Portanto, vamos aprender como programar esse microcontrolador usando a IDE do Arduino para que possamos criar projetos de Internet das Coisas (IoT).

Informações básicas

Em 2018, eu criei um curso ensinando a usar a placa de desenvolvimento NodeMcu (que usa um esp8266), mas era um curso voltado à programação em Lua. Na época, era algo que achava interessante, mas eventualmente percebi que esse método tinha muitas limitações e acabei preferindo migrar para a programação na IDE do Arduino. Por meio da IDE do Arduino, consegui fazer projetos bem avançados:

Apesar do curso antigo ser voltado à programação em Lua, ele tem muita informação útil. Justamente por isso, esse curso de agora será um espelho do curso antigo, pontuando apenas as diferenças relativas à IDE do Arduino. Então, não estranhe se você ler coisas repetidas.

O que é e qual é a utilidade do esp8266?

Provavelmente você já sabe muito bem o que é o esp8266 e, na introdução desta aula eu já adiantei a explicação. Mas vejamos agora alguns detalhes aprofundados dele.

Do CI à placa de desenvolvimento

O esp8266 em si é um Circuito Integrado (CI) bem pequeno (5 mm) que pode ser categorizado como um microcontrolador que possui capacidade de conectar à internet por meio do Wi-Fi. Veja ele na imagem abaixo:

esp8266
Fonte: Wikipedia

Assim como muitos CIs, o esp8266 não funciona sozinho e necessita de alguns outros componentes externos, como:

  • Memória flash (para armazenar o firmware);
  • Cristal;
  • Capacitores e resistores;
  • Antena (para a conexão Wi-Fi).

Por conta disso, existem alguns módulos que vem com todos esses elementos já montados de forma adequada, o que facilita o uso desse microcontrolador. Veja um exemplo na imagem seguinte, do módulo chamado ESP12-E:

ESP8266 versão ESP12E

E a próxima imagem mostra como é o módulo ESP12-F (bem semelhante ao ESP12-E) por dentro. No caso, o módulo foi danificado.

ESP12F danificado

Apesar dos módulos facilitarem bastante o uso do esp, ele é adequado quando estamos criando um projeto específico. Como o intuito deste curso é o aprendizado, é interessante usarmos uma placa de desenvolvimento para poder experimentar e criar nossos códigos. Para isso, faremos uso da placa NodeMcu, que pode ser vista na imagem adiante:

NodeMcu
Fonte: Wikipedia

De acordo com a imagem acima, é possível perceber que o NodeMcu faz uso do módulo ESP12-E. O interessante é que a placa possui uma conexão USB que podemos usar para programar o esp (facilita bastante).

Diferenciais do esp8266

Expliquei que o esp8266 consegue conectar à uma rede Wi-Fi, mas ele é capaz de um pouco mais que isso. Vejamos 3 coisas que ele pode fazer nesse sentido:

  • Conectar a um Wi-Fi e obter acesso à Internet:
    • Tendo acesso a internet, você pode extrair dados de (praticamente) qualquer site. Ou seja, pode obter a hora atual, a temperatura, umidade, notícias, dados da Wikipedia etc. O limite aqui é a imaginação.
  • Criar um Access Point:
    • Ao invés de conectar à uma rede existente, o esp pode criar a própria rede (Ponto de Acesso). Isso é útil em locais que não tem uma rede Wi-Fi. E essa rede pode ser usada para outros ESPs conectarem e trocarem informações.
  • Criar um webserver:
    • Simplificadamente, é possível criar um site que você pode acessar para enviar e receber informação do esp. Em aulas futuras aprenderemos a fazer isso.

Características do NodeMcu/esp8266

Agora vejamos algumas características do NodeMcu e, indiretamente, do esp. Primeiro, veja a pinagem da placa abaixo:

Seguindo a imagem, a placa tem as seguintes características:

  • Há apenas 1 pino analógico (ADC0) que possui precisão de 10 bits (0 a 1023) igual ao Arduino:
    • O pino de leitura analógica do esp8266 suporta apenas tensões de 0 a 1 V. Entretanto, o NodeMcu possui um divisor de tensão no pino ADC0 que permite que a leitura de tensões de 0 a 3,3 V. 
  • Há 13 pinos digitais para entrada e saída;
  • Há vários pinos para comunicação:
    • Os pinos GPI01 e GPI03 são os mesmo que o computador utiliza para enviar e receber os dados da placa. Portanto, é bom evitar de utilizá-los. Eles são iguais aos pinos 0 e 1 do Arduino;
    • I2C nos pinos D1 (SCL) e D2 (SDA);
    • SPI nos pinos D5 a D8:
      • Os pinos SPI do lado esquerdo da imagem acima são relativos à comunicação do esp com a memória flash do módulo e, portanto, devem ser evitados.
  • Os pinos de 3,3 V e GND podem ser utilizados para alimentar componentes, módulos e sensores;
  • Os pinos Vin, 3,3 V e GND podem ser utilizados também para alimentar a placa:
    • Ligue uma fonte de 7-12 V em Vin ou uma fonte de 3,3 V em qualquer pino de 3,3 V;
    • O terra da fonte deve ser ligado no GND.
  • Memoria de gravação: 4 MB;
  • Velocidade padrão do clock interno: 80 MHz:
    • É possível dobrar essa velocidade (160 MHz).
  • Tamanho do NodeMcu: 48×25 mm.

Esses três últimos atributos comprovam que ele é bem poderoso para seu tamanho (compare com o Arduino Uno para ter ideia). Ele se torna ainda mais interessante quando consideramos seu preço.

Como programar - Firmware

Existem várias formas de programar o esp: usando a IDE do Arduino, programando via MicroPython ou programando em Lua, mas, como eu disse no início do post, o foco deste curso será a IDE do Arduino.

Se você já mexeu com a IDE do Arduino para programar outra placa de desenvolvimento, você verá que o processo com o esp8266 não é muito diferente. O que muda é que agora temos mais comandos, em especial àqueles de conexão às redes Wi-Fi. Então, a maior dificuldade é aprender cada comando e como utilizá-los.

Caso a IDE do Arduino seja algo novo pra você, dê uma olhada no curso introdutório do Arduino aqui do site.

Enfim, na próxima aula veremos como configurar a IDE para começar a programar o esp.

Como começar a programar o ESP8266 – Aula 2 – EA