15 Comentários

Programando o ESP8266 em C no Eclipse

ESP8266 em C no Eclipse

Quem conhece o Arduino já deve ter ouvido falar do módulo ESP8266, que pode ser usado para integrar ao Arduino uma comunicação WiFi. Mas o ESP é mais poderoso que isso, ele pode ser programado diretamente na IDE do Arduino, onde você pode usar sua interface WiFi e controlar seus periféricos internos, assim como seus pinos de IO.

Mas ainda é possível avançar um pouco mais no desenvolvimento de firmware para o ESP8266. No artigo de hoje irei demonstrar o passo a passo de como integrar o ESP ao Eclipse utilizando um SDK (Software Development Kit) otimizado e o toolchain para o Xtensa (Chip no módulo ESP8266).

Requisitos

Para criação do ambiente, estou utilizando o Windows 7, mas o processo é muito parecido para as versões superiores. É necessário ter também:

  • O JDK java;
  • A IDE Eclipse para C/C++;
  • O GNU toolchain para Windows MinGW;
  • O toolchain para o Xtensa;
  • O SDK para o ESP8266.

Demonstraremos a seguir o processo e sequência de instalação de cada uma das ferramentas que irão compor nosso ambiente.

Existe um SDK oficial da Espressif (criadora do ESP), porém iremos utilizar um SDK criado por um Russo chamado Mikhail Grigorev. Ele criou um SDK otimizado para o ESP8266 que facilita bastante a utilização com o Eclipse.

Precisaremos de uma interface serial para comunicação do nosso sistema com o módulo, por esse motivo irei utilizar a placa NodeMcu. Essa placa é fácil de ser encontrada no Brasil, possui um ESP8266-12E, disponibiliza os pinos do módulo de forma fácil e conta com um chip conversor USB-UART integrado já no nível de tensão necessário para o ESP (funciona com 3,3V).

Instalação

Primeiro passo será instalar o JDK java. Acesse o site da Oracle, marque o aceite da licença e escolha a opção compatível com seu sistema operacional. Execute o arquivo baixado e siga o passo a passo de instalação (execute todas as instalações como administrador).

Tela do site da oracle onde pode-se baixar o Java JDK
Figura 1 – Download do Java JDK

Próximo passo é fazer o download da IDE Eclipse, a versão atual é a oxygen. Acesse a página de download do Eclipse para C/C++ e ao lado direito escolha a opção do seu sistema operacional. Na próxima página clique em Download para baixar o arquivo compactado (.zip). Após finalizar o download extraia o arquivo na raiz do computador para facilitar a busca (no meu caso ficou no C:).

Agora é hora do compilador, faça o download do instalador MinGw através do link, este é um instalador online, portanto você precisará de internet para instala-lo. Após conclusão do download, execute o arquivo e prossiga com a instalação. Não é necessário instalar o suporte gráfico, você pode desmarcar esta opção durante a instalação.

Usaremos a versão 2.0.9 do SDK para o ESP8266 que citamos acima. Existe uma versão mais atual, porém ela apresentou problemas com alguns exemplos, por isso optei por esta versão. Vamos fazer o download no repositório oficial do desenvolvedor neste link ao final da página.

Pagina de download do SDK do ESP8266 no repositório oficial do desenvolvedor.
Figura 2 – Download do SDK do ESP8266

Execute para fazer a instalação do SDK, ao final da instalação você terá uma pasta chamada Espressif na raiz do seu computador. Essa pasta contém uma série de arquivos que iremos utilizar em qualquer projeto.

Você irá precisar também de alguns pacotes adicionais do MinGw para compilar o firmware. O mesmo desenvolvedor do SDK que utilizamos disponibilizou um script para automatizar a instalação desses pacotes. Baixe o arquivo neste link, descompacte a pasta no seu computador e execute como administrador o arquivo install-mingw-package.bat (pode abrir o script no bloco de notas e ver o conteúdo). Uma tela do DOS irá se abrir e, após apertar a tecla enter, o sistema ira baixar e instalar alguns pacotes do MinGw.

Iniciando o Eclipse

Após instalarmos todos os softwares e pacotes necessários, é hora de iniciar o Eclipse. Vá até a pasta onde você descompactou a IDE, abra-a e inicie o arquivo eclipse.exe (pode adicionar um atalho na sua área de trabalho se preferir).

Ao iniciar, o eclipse ira perguntar onde será seu workspace, no meu caso eu criei uma pasta na raiz com o nome eclipse-workspace e a marquei como default para meus projetos. Escolha sua pasta e clique em Launch.

Após o eclipse carregar ele irá iniciar na tela de boas-vindas. Vá em File > Import, na janela que abrir selecione General > Existing Projects into Workspace e clique em Next. Na janela seguinte, marque Select root directory e busque a pasta examples que está dentro da pasta do SDK que instalamos anteriormente. Após isso, verifique se todos os exemplos estão selecionados e clique em Finish.

Janela onde os exemplos do ESP8266 são carregados para o Eclipse.
Figura 3 – Carregando os exemplos para o Eclipse

O eclipse irá abrir em sua tela principal com todos os exemplos do SDK que instalamos no lado esquerdo. Ao lado direito da tela, selecione a barra Build Targets, nela temos todas as ferramentas de gravação para cada exemplo. Na parte de baixo da tela, selecione a barra Console, nesta aba teremos todas nossas informações de compilação e gravação.

Ambiente do Eclipse com todos os exemplos para o ESP8266
Figura 4 – Tela do Eclipse com os exemplos do ESP

Gravação – Blink

Chegou a hora de fazer nosso famoso Blink, neste momento conecte sua placa com ESP8266 no computador (NodeMCU no meu caso) e descubra qual a porta COM foi disponibilizada para seu módulo no gerenciador de dispositivos do Windows. Caso não tenha, irá precisar buscar o driver no conversor USB-SERIAL usado na sua placa. No meu caso o chip utilizado é o CH340, o driver pode ser encontrado no site do fabricante.

Tela do gerenciador de dispositivos indicando a porta COM que devemos usar.
Figura 5 – Verificando a porta COM.

Ao lado esquerdo, em Project Explorer, selecione o projeto blinky. Nele existe a pasta user, nela temos o arquivo user_main.c, abra este arquivo. Nesse arquivo está o código do nosso blink.

Ainda em Project Explorer, dentro do nosso blinky temos o arquivo Makefile. Abra esse arquivo. Nele temos um parâmetro chamado ESPPORT, coloque o número da porta COM que seu módulo recebeu do computador e salve.

Ao lado esquerdo em Build Targets, selecione nosso mesmo projeto blinky. Nessa pasta temos todas as ferramentas para nossa placa.

Ponto do Makefile onde deve-se configurar a porta COM.
Figura 6 – Alteração da porta COM no Makefile

Um duplo clique no ícone flash irá compilar e, caso não tenha nenhum erro, gravar nosso código no ESP. Em poucos segundos devemos ter nosso blink funcionando.

Gif demonstrando o funcionamento do blink no ESP8266.
Figura 7 – Blink no ESP8266

Conclusão

Com esse conjunto de ferramentas funcionando temos a oportunidade de desenvolvermos projetos avançados com nosso ESP, inclusive usando o FreeRTOS e a stack LwIP por exemplo. Fique à vontade para explorar os exemplos e ver todas as possibilidades e não deixe de postar suas dúvidas, comentários e sugestões.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Software » Programando o ESP8266 em C no Eclipse
Comentários:
Notificações
Notificar
guest
15 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
João Victor Predebon
João Victor
31/03/2019 23:49

Ótimo artigo, já tinha tentado antes com a SDK no Linux, mas travei ao tentar gravar aplicações maiores. Acabei tendo um problema parecido, tento gravar algum firmware IOT e tenho problemas com o espaço da FLASH (irom0.text will not fit in region irom0_0). Mesmo alterando o tamanho do mapa da SPI e o tamanho do ESP_FS eu não consigo gravar.
Como faço para gravar essas aplicações maiores?

Alfonso Favoretti Fonseca
17/07/2018 22:33

Prezado Josemar, Obrigado, muito bom o seu tutorial. Funcionou tudo perfeitamente. Não sou programador especialista. Sou eletrônico com conhecimento em sistemas embarcados, mas sempre procurando utilizar um sistema que possa trazer facilidade, aliada a bons conteúdos e praticidade. Parabéns! O Blink funcionou, agora e continuar explorando. Abs.

André Feliciano
11/03/2018 21:27

Josemar, Ótimo artigo.

Consegui fazer colocar para funcionar os dois blinks de exemplos do Eclipse. Encontrei um site em inglês explicando como programar o FreeRTOS no Eclipse mas não carregou no nodeMCU.

Você tem alguma sugestão de tutorial ? Já tentei no Arduino IDE e no Eclipse

Augusto
Augusto
25/09/2017 18:43

Funciona com o ESP-07?

Josemar Alves de Carvalho
Josemar
Reply to  Augusto
26/09/2017 21:36

Ola Augusto.
Não testei pois não tenho o módulo, mas não vejo motivo para não funcionar.
Caso tenha algum problema avisa aqui.

Willians de Almeida Vieira
Willians De Almeida
15/09/2017 18:30

Muito bom seu artigo Josemar…. Abração

Josemar Alves de Carvalho
Josemar
Reply to  Willians De Almeida
26/09/2017 21:27

Obrigado Willians. Que bom que gostou.
Abraço.

Thiago Moreira
Thiago Moreira
12/09/2017 14:18

Será que a ESP8266 vem de fábrica com algum firmware onde posso me comunicar com comandos AT?

Josemar Alves de Carvalho
Josemar
Reply to  Thiago Moreira
26/09/2017 21:35

Ola Thiago.
Nunca usei o ESP com comandos AT, mas imagino que o firmware de fabrica funcione com comandos AT sim.
Você pode também reinstalar / atualizar o firmware do ESP, tem vários tutoriais em português.

Thiago Moreira
Thiago Moreira
Reply to  Josemar
26/09/2017 23:10

valeu Josemar. Ja to me comunicando com AT com a placa. Obrigado!

Arthur Staats
Arthur Staats
31/08/2017 18:46

Parabéns pelo artigo, excelente!

Josemar Alves de Carvalho
Josemar
Reply to  Arthur Staats
31/08/2017 20:43

Obrigado Arthur!

Pedro Henrique Bertoleti
phfbertoleti
30/08/2017 08:41

Muito legal!!

Josemar Alves de Carvalho
Josemar
Reply to  phfbertoleti
31/08/2017 20:42

Obrigado Pedro, não está no nível dos seus artigos mas eu tento rs.

Pedro Henrique Bertoleti
phfbertoleti
Reply to  Josemar
31/08/2017 20:47

Que nada, há nada de especial nos meus artigos. O seu ficou muito bom!

Talvez você goste:

Séries

Menu

WEBINAR
 
BlueNRG-LP – Bluetooth 5.2 de longo alcance para aplicações industriais

Data: 05/11 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link