Manual
do
Maker
.
com
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.
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...
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.
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
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.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.