GRAVANDO DADOS NA SPIFFS COM A IDE DO ARDUINO DIRETAMENTE
Neste post explicarei como fazer com que a IDE do Arduino carregue um arquivo na memoria SPIFFS diretamente pela IDE usando a ferramente ESP8266 SKETCH DATA UPLOAD no menu de ferramentas do Arduíno.
Inicialmente precisamos lembrar das limitações do sistema FS
Limitações do sistema de arquivos:
A implementação do sistema de arquivos para o ESP8266 teve que acomodar as restrições do chip, entre as quais sua RAM limitada. Foi utilizado o sistema de arquivos SPIFFS devido ao tamanho físico do programa ser reduzido, custando menos memória e com isso, houve a necessidade de atender a algumas restrições do sistema.
O SPIFFS não suporta diretórios, apenas armazena uma lista “plana” de arquivos.
Mas ao contrário dos sistemas de arquivos convencionais, podemos utilizar o caractere ‘/’, permitindo que funções façam buscas na memoria indexando a busca pelo uso do mesmo, como por exemplo a função openDir(“/arquivo1”) basicamente o sistema filtra os nomes de arquivos e mantêm os que começam com o prefixo /arquivo1.
Existe tambem um limite de 32 caracteres no total para nomes de arquivos. Um '\0'
char é reservado para a terminação de string C, o que nos deixa com 31 caracteres utilizáveis.
Isso significa que é aconselhável manter nomes de arquivos curtos e não usar diretórios profundamente aninhados, já que o caminho completo de cada arquivo (incluindo diretórios, '/'
caracteres, nome base, ponto e extensão) deve ter 31 caracteres no máximo. Por exemplo, o nome do arquivo /ntronics/texto/post_informacoes_utes_spiffs
possui 44 caracteres e causará problemas se usado.
Aviso : Esse limite é facilmente alcançado e, se ignorado, os problemas podem passar despercebidos porque nenhuma mensagem de erro aparecerá na compilação nem no tempo de execução.
Para obter mais detalhes sobre os componentes internos da implementação do SPIFFS, consulte o arquivo leia-me DOCUMENTACAO DO SISTEMA FS .
Com essas restrições ao uso do SPIFFS bem observadas, podemos construir bons programas aproveitando o tamanho generoso da memoria inclusa no modulo do ESP8266.
Podemos cria mais de um arquivo no sistema SPIFFS, e com isso, se houver necessidade de criar varios arquivos no sistema mesmo sem organiza-los em pseudo-diretorios, podemos faze-lo. Ex:
wFile = SPIFFS.open(“/LOG1.txt”, “w+”);
Acima usamos a funcao SPIFFS.opem( para criar um arquivo chamado LOG1. Podemos utilizar a mesma funcao novamente para criar o LOG2, LOG2 e assim por diante.
wFile = SPIFFS.open(“/LOG2.txt”, “w+”);
wFile = SPIFFS.open(“/LOG3.txt”, “w+”);
Assim teremos a quantidade de arquivos que precisarmos.
Fazendo upload de arquivos para o sistema de arquivos:
Uma opção EXTREMAMENTE interessante no sistema de memoria SPIFFS é que podemos gravar na memória flash do ESP8266 na própria compilação do sketch qualquer informação na memoria FS utilizando uma ferramenta (ESP8266FS) que podemos instalar para tal na IDE do Arduíno.
O ESP8266FS é uma ferramenta que se integra ao IDE do Arduíno. Ele adiciona um item de menu ao menu Ferramentas para carregar o conteúdo do diretório de dados do esboço no sistema de arquivos flash ESP8266.
Abaixo está o passo a passo para utilizar essa ferramenta:
- Precisamos fazer o download da ferramenta para escrita no Github, clique no link a seguir para fazer o download: https://github.com/esp8266/arduino-esp8266fs-plugin/releases/download/0.3.0/ESP8266FS-0.3.0.zip.
- Após fazermos o download, precisamos abrir a pasta onde esta a IDE do Arduíno esta configurada para salvar seus sketchs, varia um pouco dependendo de como foi feita a instalação da IDE no seu computador mas por default essa pasta costuma estar na pasta DOCUMENTOS do windows. Entrando nesta pasta, crie uma pasta chamada tools, e dentro desta pasta copie o arquivo .rar que você baixo no link acima, descompacte ele nessa pasta. Será gerado uma pasta ESP8266FS. O caminho gerado ficara: C:\Users\nelso\Documents\Arduino\tools\ESP8266FS\tool\EPS8266FS.jar
- Feito a criação da pasta e o descompactamento do arquivo ESP8266FS, devemos fechar a IDE do Arduíno se a mesma estiver aberta e reabri-la. Em seguida precisamos abrir um sketch qualquer que tenhamos ou criar um novo. Após isso, vá em sketck e clique em Mostrar pagina do sketch ou simplesmente abra a pasta onde o arquivo source do seu programa esta salvo. Dentro dessa pasta, crie outra pasta chamada data em minusculo exatamente como esta escrito aqui.
- Após criada a pasta data coloque nessa pasta os arquivos que deseja que sejam gravados na memoria SPIFFS do ESP8266, em seguida vá para a IDE do Arduíno e, com o programa salvo onde você criou esta pasta, vá na aba Ferramentas e em seguida em ESP8266 Sketch data Upload lembrando que o seu ESP8266 deve estar ligado ao computador para receber a gravação do dado. A imagem abaixo mostra onde fica a opção de gravação:
- Feitos os passos acima, a IDE do Arduino irá gravar o arquivo na pasta data na memoria SPIFFS do ESP8266. Lembre-se de observar o tamanho do nome do arquivo para que não estoure o limite de 31 bytes.
Este post fica por aqui, dúvidas e sugestões deixe um comentário que responderemos o mais rápido possível.
Fontes/Referencias: Site ESP8266 Arduino Core
https://arduino-esp8266.readthedocs.io/en/latest/index.html
https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html