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:
- ESP8266 atualizando o firmware de um STM32;
- Acendendo automaticamente a luz de um cômodo;
- Entre outros que não estão documentados no site.
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:
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:
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.
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:
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
primeiramente parabéns pelo site e pelo material, muito bom.
Sobre o CI do ESP tenho uma dúvida
Um chip mpu6050 QFN é igual ao modulo mpu6050 de arduino?
O módulo tem alguns resistores smd nele, me pergunto se o QFN já tem tudo isso embutido no encapsulamento.
Muito obrigado, Joao!
O QFN não tem esses componentes embutidos. O módulo é chamado de MPU6050, mas MPU6050 se refere ao chip, que apresenta um encapsulamento QFN. Ou seja, o módulo possui o CI QFN com os componentes adicionais. No ESP ocorre a mesma coisa, o módulo é chamado de esp8266, mas o esp8266 é na realidade o CI que tem por trás dele. Veja aqui uma foto que tinha tirado da parte interna do ESP12-F (repare que o nome completo do CI é ESP8266EX).
Normalmente, os módulos utilizam um circuito típico, que é recomendado pelo fabricante do chip. Por exemplo, na página 22 do datasheet do MPU6050, tem um circuito base.
valeu pela atenção, acabei descobrindo ao perguntar ao ChatGPT rsrsrss.
Cara, vc conhece algum local pra comprar sensores e mcus além do Alyexpres, pq comprar direto dos EUA é proibitivo por causa das taxas, e alguns itens não consegue encontrar aqui no BR nem no Ali, exemplo é o Infineon TLE493D.
Obrigado!
Por nada! Muito bom, cara. O ChatGPT é mágico mesmo né. Também tô usando ele pra aprender umas coisas novas.
Conheço um local que o preço é mais ou menos, mas é mais barato que nos EUA. É a loja LCSC. É uma equivalente da “Mouser” na china. O frete lá é um pouco carinho (mesmo o mais barato), mas se vc for comprar muito componente, vale a pena. Recomendo pegar o frete “Global Direct” deles que vc não deve pagar imposto. Normalmente compro pelo Aliexpress, mas já comprei da LCSC uma vez. Pro meu azar, tinha ganhado uma promoção de frete e peguei o mais caro (DHL). Acabei pagando uma fortuna de imposto por conta disso…
Obrigado pela recomendação do lcsc, só esperando os componentes chegarem 😉
A propósito, vc tem alguma recomendação para confecção de placa e montagem de componentes smd, tenho um protótipo funcional mas gostaria de miniaturizar, até conheço alguns mas só trabalham com pedidos grandes e preciso de 10 à 20 no máximo.
Vc tem algum contato ou e-mail? gostaria de uma assessoria ou mentoria.
Ah, e obrigado pela prestatividade.
Por nada! Fico feliz em ajudar.
Você pode usar a JLCPCB, que é da mesma empresa/grupo (algo assim) da LCSC. Uma PCB simples (2 layers) sai por uns 16 reais no fim das contas (cada unidade) e é possível encomendar até no mínimo 5 placas. Eles também fornecem serviço de montagem das placas, então seria uma alternativa pra você lidar com o desafio da montagem de componentes SMD. Não sei dizer se vale a pena, pois nunca testei essa montagem deles, mas já vi vídeos de projetos que usaram o serviço e funcionou bem.
Para você começar a projetar projetar placas com componentes SMD, é importante conhecer os formatos mais usuais. Aqui no site tem um post apresentando os principais, sugiro dar uma lida: Componentes eletrônicos SMD e PTH.
Tenho sim, é o mundoprojetado@gmail.com