esp8266GeralIoTProgramação

Atualização de firmware via OTA para ESP8266

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:

ESP8266 – Como configurar atualização OTA por MQTT (1 de 2)

ESP8266 – Como configurar atualização OTA por MQTT (2 de 2)

ESP8266 – Upload sem cabos (OTA)

ESP8266 buscando atualização de firmware em servidor web

ESP8266 – Atualização sem fio pelo browser

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:

ESP8266 alá Arduino com Sming em um Container

Primeiros passos com o Sming dentro de um container (ESP8266)

Conectar o NetBeans ao container Sming do ESP8266

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:

Sming, um novo jeito de programar para ESP8266

E ainda relacionado, esse outro tutorial:

Compilar um novo firmware para ESP8266

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.

Próximo post a caminho!