O que é ESP8266 – A Família ESP e o NodeMCU
Que tal conectar seu projeto à imensidão da internet de forma simples e barata? Essa é a proposta do ESP8266 que têm sido cada vez mais usado em projetos de automação e robótica para conectar as mais diversas ideais à internet. Neste tutorial você irá conhecer a família de microcontroladores ESP8266 que é tendência no mundo dos Makers e nos mais diversos exemplos de Internet das Coisas (IoT), e também aprenderá como funciona a sua programação e dar o primeiro upload. Entre eles: ESP-01 A, ESP-7, ESP-12E e NodeMcu
[toc]
O que é ESP8266?
É possível que você já tenha ouvido falar sobre o ESP8266, ele tem se tornado cada vez mais popular entre projetos de Internet das Coisas!
Os ESP8266’s são microcontroladores que já possuem tudo que é necessário para se conectar a Internet. Ou seja, eles são como um Arduino com integração Wi-Fi.
Outro ponto importante é que eles são pequenos e isso viabiliza projetos pequenos.
Um exemplo é o ESP8266-01, esta minúscula placa, também chamado de “Módulo” por alguns, tem um potencial muito maior do que o aparenta, veja algumas especificações:
- CPU: 32bit RISC Tensilica Xtensa LX106 rodando à 80/160 MHz.
- RAM: 64 kB.
- FLASH: QSPI Externo – de 512 kB até 4 MB.
- WiFi: IEEE 802.11 – b/g/n.
Comparando diretamente com o Arduino, o ESP8266 tem um poder de processamento maior, porem há poucas GPIO’s para usar nesta versão. Esta versão, conta apenas com 4 GPIO’s para uso, sendo que dois são para comunicação Serial.
Para resolver esse problema de pinos insuficientes, existem versões mais robustas do ESP8266, como por exemplo, este ESP8266-12:
Este, é exatamente o mesmo que o anterior, mas conta com mais GPIO’s disponíveis para uso geral.
APLICAÇÕES DO ESP8266
O uso para esse Micro controlador beira ao “Infinito”, já que conta com poder de processamento e WiFi embutido. Com ele, também é possível ser usado como um “Módulo” com outros Micro controladores, isto pode ser feito através de comandos AT. Além disso, as versões menores, como o 01 ou 09, são muito usados como uma “Ponte Serial-WiFi“, já que contam com poucos pinos; sendo assim, é possível receber dados por um aplicativo/WEB e enviar estes dados para um Arduino e acender uma lampada por exemplo! O oposto também é possível, enviar dados do Arduino para um aplicativo ou página WEB.
Algumas aplicações interessantes:
- Automação residencial.
- Rede de sensores.
- Robótica.
- Comunicação Wireless entre MCU’s (Micro controller Unit).
- Aplicativos e Paginas WEB para controle geral.
- Monitoramento de Informações remotamente.
- E muito mais.
A Família ESP8266
Apresentaremos as principais características dos dois principais mais vendidos, que são: ESP8266-01 e o ESP8266-12 na versão NodeMCU.
ESP-01
Este pequeno ESP8266-01, conta com poucos pinos para uso geral, porém é muito usado por conta do seu tamanho como a “Ponte Serial-WiFi”, segue a explicação dos pinos:
GND: Terra-GND.
Vcc: Alimentação de 3,3V.
RESET: Reset ativo quando em LOW.
CH_PD: Chip enable, deve estar em HIGH para funcionamento do MCU.
RXD: Receive data, usado para receber dados da comunicação de outros MCU’s.
TXD: Tansmit data, usado para transmitir dados a outros MCU’s.
GPIO0: GPIO (General Purpose Input/Output), este pino é para uso geral, tanto como Entrada/Saída e até Digital/PWM. Deve estar conectado ao GND para novos Upload’s (Veja na Fig 4, Boot Modes).
GPIO2: GPIO para uso geral.
Para dar um novo upload à este carinha, você precisa de um conversor Serial (FTDI) para transmitir os dados até ele. As ligações são estas:
Lembrando que a alimentação deve ser feita com 3,3V, inclusive o Rx. Com isto, voce já sera capaz de dar upload de seus códigos.
NodeMCU
Esta versão do ESP8266-12 vem numa placa de desenvolvimento, chama-se de NodeMCU. Esta belezinha conta com conversor Serial e regulador de tensão próprio, não sendo necessário ambos como nas outras versões fora da placa. Também há pinos próprios para I2C, SPI, Analógico e outros.
GPIO’s ESP8266:
Esta imagem, mostra todas definições de GPIO’s do ESP8266, inclusive durante o boot, em que alguns pinos são mantidos em certos estados.
Mãos à obra
Este projeto é o “Hello world” no mundo de Microcontroladores. Você irá ensinar a dar o primeiro upload para piscar o LED_BUILTIN (LED OnBoard) do ESP8266-01 usando um FTDI externo. Pegue a pipoca e vamos la!
Componentes necessários
- 1 – ESP8266-01 ( ESP-01 A ).
- 1 – Módulo FTDI FT232RL – Conversor USB Serial.
- X – Jumper’s.
As ligações ficarão parecidas com esta:
Estas são ligaçoes básicas, porém, para cada novo upload, é necessário colocar o GPIO0 em GND, como foi mostrado no esquema, GPIO0 já esta em GND. Não se esqueça dele sempre que for fazer um novo Upload!
Preparando a IDE Arduino
Usaremos a Arduino IDE, mas você pode programa-lo com LUA, ou até a propria SDK.
1-) Vá em Arquivos>Preferencias, e adicione este link em “URLs Adicionais…”: http://arduino.esp8266.com/stable/package_esp8266com_index.json
2-) Vá em Ferramentas>Placa>Gerenciador de placas.
3-) Procure pelo ESP8266 e instale-o.
4-) Após instalar as placas do ESP8266, selecione-a em Ferramentas>Placa>Generic ESP8266 Module. (Estou usando o ESP8266-01, caso voce use por exemplo o NodeMCU, selecione NodeMCU…).
5-) Agora, é só configurar a placa, aconselho a usarem igual ao da foto. Testem primeiramente com o upload a 115200@bps, caso nao funcione, teste com outras velocidades! Não se esqueça de selecionar a porta que estiver seu FTDI.
Sua IDE esta pronta para funcionar com o ESP8266! Vamos ao código!
Código do projeto
void setup() { pinMode(LED_BUILTIN, OUTPUT);//Habilita o LED interno como Saida. } void loop() { digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//Inverte o estado do LED de acordo com a leitura. delay(250); }
Entendendo a fundo
Software
-Função pinMode()
pinMode(LED_BUILTIN, OUTPUT);//Habilita o LED interno como Saida.
Esta função define um pino, como saída ou entrada. Neste caso, definimos o pino do LED_BUILTIN como saída.
-Função digitalWrite() e digitalRead()
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));//Inverte o estado do LED de acordo com a leitura.
Aqui, estamos escrevendo um sinal lógico ao LED_BUILTIN. Neste caso, usamos a função digitalRead() que retorna o valor atual de um pino (1 para HIGH e 0 para LOW).
Usamos tambem um Inversor (NOT) “!” para inverter o estado de leitura, ou seja, caso o LED esteja ligado (1), invertemos para (0) e escrevemos isso à porta, assim, desligando-a.
-Função delay()
delay(250);
A função delay(), gera um atraso no código, fazendo com que o micro controlador trave naquela linha e fique até acabar o tempo. O tempo deve ser em mS, sendo que 1 Segundo = 1000mS.
De upload do codigo, e veja que o LED OnBoard (Azul) irá piscar a cada 250mS. Não se esqueça que para dar um novo upload, é necessário que o ESP8266 seja reiniciado com o GPIO0 em GND novamente.
Fechamento
Você aprendeu o que é este incrível microcontrolador e também como dar o primeiro upload à ele. Sinta-se à vontade para dar sugestões, críticas ou elogios. Lembre-se de deixar suas dúvidas nos comentários abaixo.
Você vai gostar de Conhecer o ESP32
Estudante de Engenharia da Computação pela USC, pretende se aprimorar e fazer a diferença nesta imensa área da tecnologia. Apaixonado por IoT, sistemas embarcados, microcontroladores e integração da computação nos mais diversos fins práticos e didáticos.
13 Comments
Deixe uma pergunta, sugestão ou elogio! Estamos ansiosos para ter ouvir!Cancelar resposta
Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.
Ola, bom dia ! Gostei bastante do topico, adquiri um esp8266-01 e um NodeMCU e venho buscando esse tipo de informaçao para que eu possa evoluir no conhecimento.
Sds, Arlindo
ola. deixe conectado na serial do arduino e veja o erro que ocasionar esse boot . geralmente mostra a mensagem de erro com um numero identificador .
Excelente artigo, parabéns.
vc sabe se seria possivel usar o esp8266 nodemcu como um mouse?
Sim
poxa, q top, vlw e ótimo post
Boa tarde Felipe estou com um trabalho parecido com o seu poderia me passar seu contato.
[email protected]
Olá, Alessandro!
Segue meu email: [email protected]
Entendi. Estou com muita dificuldade para resolver esse problema, já tentei descobrir a causa raiz, mas sem êxito.
Muito obrigado, José!
Já coloquei o IF para reconectar, mas nada faz. Eu não sei dizer se o estudo reinicia, até porque o SharePoint fica em local de difícil acesso. Eu li um post sobre colocar um capacitor desacoplador entre o 3.3V e o GND resolve o problems, mas eu não tenho conhecimento sobre isso e o post não era detalhado.
Sem você conhecer realmente o problema, é quase impossível resolve-lo assim com palpites… Sobre o capacitor de desacop. é importante sim, mas não deve ser este problema, já que só ocorre depois de várias horas. Este capacitor segura os picos de consumo do WiFi. Tente encontrar o que é o problema (conexão do wifi perdida, mcu travado e etc).
Boa tarde, José!
Estou com um problema enlouquecedor com o nodemcu.
Estou utilizando ele para monitorar temperatura de um equipamento através do blynkApp e CayenneMyDevices. O sensor que utilizo é um Termopar tipo K através do modulo leitor de temperatura MAX6675.
Estou utilizando a biblioteca WifiMananger para gerenciar as redes e estou utilizando uma placa base nodemcu a qual oferece opção de alimentação via Fonte de até 24V e expansão de pinos. Na minha aplicação estou utilizando uma fonte chaveada de 12V, uma fonte confiável de ótima qualidade.
O PROBLEMA:
O ESP8266 depois de um certo tempo (entre 10 e 12h) ele pára de enviar os dados é se desconecta do blynkApp e MyDevices e só retorna depois de ter que resetar no botão fisico da placa. Após resetar ele volta a funcionar, mas retorna a desconectar sendo que com um tempo bem menor que antes.
Já tentei resfriar com cooler, mas não funcionou, coloquei o watchDog, mas também não funcionou. Não sei mais o que fazer.
Sim, antes de utilizar a placa base eu alimentava ele com um carregador de celular via porta microUsb, mas o problema também já existia
O watchdog chega a reiniciar a placa após o problema ou não faz nada? Pode ser até coisa com o roteador que libera o IP após algumas horas. O watchdog só vai servir se travar completamente, o que é longe de um simples wifi parado. Veja se adicionando um IF para reconectar no WiFi caso a conexao seja perdida resolve!