Manual

do

Maker

.

com

Sistema de arquivos FAT no ESP32 com PlatformIO

Sistema de arquivos FAT no ESP32 com PlatformIO

Quando temos uma dúvida e sabemos pelo quê pesquisar é incrivel. Os problemas começam quando não sabemos exatamente o que estamos procurando, que conceitos nos faltam e a quem perguntar. Não estou me referenciando ao FAT no ESP32, mas de outro problema que estou enfrentando relacionado a um projeto. Bem, uma das tentativas em solucionar o problema implica em testar o sistema de arquivos FAT no ESP32 para ver se resolvo a questão. Daí a configuração do sistema de arquivos se tornou um problema primário. Por sorte, de fácil solução.

SPIFFS ou FAT no ESP32?

Normalmente deixo o SPIFFS por padrão, já até escrevi alguns artigos bem elaborados como esse, esse e esse, por exemplo. Dessa vez estou me deparando com um problema (que virará outro artigo quando solucionado) e desconfio que a troca do sistema de arquivos seja a solução. Enquanto eu não confirmar isso, não tenho argumentos suficientes para dizer qual o melhor, mas se for para poupar tempo, deixe o SPIFFS como padrão. De outro modo...

Tabela de partições do ESP32

Escrevi esse artigo exclusivamente sobre a tabela de partições do ESP, agora vamos apenas fazer uma modificação nela.

No Atom, não sei de onde ele pega a tabela de partições por padrão. O arquivo com a tabela padrão se chama default.csv. Em uma busca rápida, encontrei em meu Linux esse arquivo alocado em ~/Documents, que é o caminho padrão para as plataformas e projetos que utilizo.

Primeiro, copie o arquivo para dentro do diretório de projetos. No meu caso:

cd /home/djames/Documents/PlatformIO/Projects/serialBinaryTransfer 
cp /home/djames/Documents/Arduino/hardware/espressif/esp32/tools/partitions/partitions_custom.csv .

Agora edite o arquivo copiado. No final dele, apenas troque spiffs, data, spiffs por ffat, data, fat. Salve o arquivo.

ffat.webp

Indicar a tabela de partições do ESP32 no PlatformIO

Quando criamos um projeto no PlatformIO, um arquivo chamado platformio.ini é criado no diretório do projeto. Esse arquivo pode receber diversos parâmetros, conforme pode ser visto na documentação. O que fiz foi simplesmente criar a seção env:custom_table, conforme pode ser visto no arquivo de configuração abaixo:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:esp32doit-devkit-v1]
platform = espressif32
board = esp32doit-devkit-v1
framework = arduino

[env:custom_table]
platform = espressif32
board = esp32doit-devkit-v1
framework = arduino
board_build.partitions = partitions_custom.csv

Sketch - Como usar o sistema de arquivos FAT no ESP32

No sketch a coisa é bem simples. Como estou utilizando a API do Arduino para programar o ESP32 (não confundir API com IDE), tudo o que precisa ser feito é executar uma rotina para ter o sistema de arquivos disponível no sistema:

void setup() {
     Serial.begin(115200);
    if (!FFat.begin(true)){
        Serial.println("Couldn't mount the filesystem.");
    }
}

Passando o parâmetro true para a função begin, o sistema de arquivos será formatado antes do primeiro uso. É mais prático que chamar FFAT.format().

A utilização básica é a mesma que a fornecida pelo sistema de arquivos SPIFFS, baseie-se nas referências supracitadas para iniciar leitura e escrita no sistema de arquivos.

Agora retorno à luta e, assim que obtiver sucesso, escrevo o próximo artigo. Até a próxima!

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.