ESP32

SPIFFS com ESP-IDF para manipular arquivos

SPIFFS com ESP-IDF

Vou começar falando a real; é mais fácil e indolor utilizar os recursos da API do Arduino para ESP32 se quiser utilizar o sistema de arquivos para gravar seus próprios arquivos. Esse artigo só tem o propósito de informação, eu prefiro esse outro artigo a respeito.

É muito legal utilizar os recursos nativos do ESP-IDF, menos a manipulação de arquivos, que exige uma quantidade considerável de esforço. Nesse post, estou utilizando a UART, task, SPIFFS e o display OLED onboard do ESP32 da CurtoCircuito. Ainda não tem? Que dó. Mas você pode pegar o seu nesse link. Aproveite e dê uma olhada nos outros modelos, tem coisas muito bacanas relacionadas ao ESP32.

Includes

Não se assuste com a quantidade de includes. Conforme você for se acostumando, saberá de onde vem cada recurso e fará automaticamente seus includes. Pra esse artigo, tem esse tantinho:

Inicializar o SPIFFS

Para inicializar o SPIFFS, você precisa primeiramente indicar um diretório na raiz e sempre apontar o caminho completo para esse diretório. No caso, estou utilizando “/spiffs”. Esse diretório sempre deve ser precedido por “/”.

Outra coisa muito comum no ESP-IDF é a utilização de estruturas com tipos próprios. Para o SPIFFS, uma manipulação básica dessa estrutura pode ser:

Não é necessário especificar um label e utilizar a opção format_if_mount_failed é uma ótima escolha para o caso de uma inicialização direta pelo firmware. Se você criar o SPIFFS no computador para depois fazer o flashing, essa opção pode ser dispensada.

Depois, lá no setup() inicializamos o SPIFFS e validamos sua criação:

Configurando a UART

Já descrevi os detalhes dessa configuração nesse outro artigo, não vou detalhar tudo de novo. Basicamente, montamos a estrutura:

Depois inicializamo-la no setup:

Criar uma task para manipulação do SPIFFS

Uma task é como uma thread, que possui execução assíncrona. Já escrevi alguns artigos sobre diversas formas de utilizar as tasks, dê uma olhada no menu ESP32 para conferir.


Para criar essa task, primeiro precisamos declarar a função que será chamada. Fiz algo bem simplório:

Depois basta iniciar a task sempre que desejar. Eu só fiz uma chamada no setup():

 

Escrever no display OLED do ESP32

Também escrevi alguns artigos a respeito. Mais uma vez, dê uma olhada no menu ESP32, ou se quiser algo um pouco mais elaborado, tem esse tema de natal que escrevi recentemente. Nele, utilizo um buzzer para tocar Jingle bell e fiz um floco de neve para a animação no display.

Para escrever, simplesmente use essa função:

Teste

O teste ainda está cheio de bugs, não estou fazendo todos os tratamentos de erros possíveis, mas é uma prova de conceito funcional, quando eu tiver um projetinho divertido, vou melhorar isso e explicar o que poderia acontecer baseado nesse artigo. Como você pôde ver na declaração da task, estou escrevendo um arquivo, renomeando-o e posteriormente lendo-o.  Dentro da função readFile aproveitei a linha da leitura do arquivo e exibi o resultado no display, que resultou na imagem de destaque do artigo.

Não é muito empolgante, mas eu precisava fazer essa referência para assimilações nos próximos artigos relacionados a data logger etc.

O código de teste:

Nos próximos artigos relacionados será mais empolgante, só assimile a ideia de que você pode guardar código para reuso, assim não precisamos reescrever as estruturas sempre que formos programar. Com isso, em 5 passos temos esse processo todo pronto. As funções de escrita, leitura, exclusão de arquivos e renomeação sempre podem ser reaproveitados também, inclusive podemos criar uma classe para isso. Mas se for para criar uma classe, acredito ainda que a melhor opção é utilizar o SPIFFS através do artigo citado logo no início, com os recursos da API do Arduino mesmo.

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/

Próximo post a caminho!