Atualização de firmware via OTA para ESP8266

 

Não há dúvidas que a melhor maneira de atualizar um firmware é via OTA (Over The Air). Nada de conexão de fios, ainda mais usando ESP8266, onde a atualização se dá por WiFi. E para isso, utilizaremos um recurso nativo dele. Já escrevi outros artigos sobre OTA, caso não tenha acompanhado, você pode vê-los através dos links:

Como você pode ver, já escrevi bastante coisa, mas sempre tem novidades. Nesse artigo de hoje a diferença está no framework utilizado, o Sming, que oferece nativamente o recurso de updating via OTA utilizando o rBoot.

rBoot

O rBoot é um bootloader para o ESP8266, atualmente integrado ao Sming. Ele é opensource e é o que temos mais próximo do bootloader contido no SDK da ESPressif. Com esse bootloader, podemos ter mais do que uma aplicação rodando no ESP, com diferentes versões e funcionalidades, com atualização via OTA. Para esse objetivo, algumas informações prévias serão necessárias.

Conceitos importantes





O ESP8266 só pode mapear 1mb de memória flash por vez, portanto sua ROM deve caber dentro desse bloco de 1mb na flash. Porém, se sua ROM estiver dividida, você pode escrevê-la em diferentes blocos, utilizando o chamado “big flash mode”, através de linkagem da ROM.

Tem mais algumas coisas, mas irrelevantes nesse momento. Na verdade, o processo é mais simples do que a explicação.

Ambiente de compilação do Sming

Dessa vez não adiantará eu disponibilizar um firmware pronto, afinal a intenção aqui é que você possa fazer suas próprias compilações,  e para isso você tem opções entre “fácil” e “muito simples”. Uma destas opções é você utilizar um container Docker que já contém todo o ambiente pronto para trabalho. Se desejar esse modelo (que recomendo muito), você pode seguir esses tutoriais:

Está tudo aí, de maneira fácil e simplificada, basta seguir o tutorial, tendo como pré-requisito a instalação de um Linux (porque como já disse dúzias de vezes, só utilizo Linux há 20 anos da data desse artigo).

Se preferir compilar um ambiente em seu sistema nativo invés de criar um Docker, você pode seguir esse outro tutorial:

E ainda relacionado, esse outro tutorial:

Se estiver utilizando o Docker, você encontrará um exemplo pronto em /opt/sming/Basic_AirUpdate.

Sistema de arquivos SPIFFS para ESP8266

Esse sistema de arquivos lhe permite criar arquivos e acessá-los em seu ESP8266, como se fosse qualquer midia de armazenamento como HD, SSD, SD etc. Normalmente eu adiciono a montagem do sistema de arquivos na primeira linha da chamada init():

Básico e suficiente

Um sketch extremamente básico seria esse:

Com esse conceito, já podemos pensar em outras formas de fazer a atualização via OTA. Que tal utilizar o MQTT para informar ao ESP8266 para se auto-atualizar? Veremos em um próximo artigo!

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do bit Ao Byte – https://www.facebook.com/groups/dobitaobyte/

Projetos Arduino e Eletrônica – https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 BR – https://www.facebook.com/groups/ESP8266BR/

Próximo post a caminho!

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.