Tenho dois módulos de cartão SD. Um para o formato micro SD card e outro para SD card normal.
Os módulos de cartões SD (sdcard) para os arduinos tem as seguintes caracteristicas gerais:
- Comunicam com o arduino por uma interface SPI, composta por 4 ligações;
- Necessitam da biblioteca SD para ler e escrever em sistemas de ficheiros FAT;
Biblioteca
SD
https://www.arduino.cc/en/Reference/SD
A bilioteca tem exemplos da programação necessária para utilizar o sd card.
Exemplos
- Card Info: exibe informações sobre o SD card;
- Datalogger: Faz o log de dados de sensores num ficheiro no SD card
- Dump File: Lê um ficheiro do SD card
- Files: Cria e elimina ficheiros no SD
- List Files: Lista os ficheiros numa pasta do SD card
- Read Write: Lê e escreve dados num SD card
Utilização de memória tipica dos exemplos
O rascunho usa 10912 bytes (35%) do espaço de armazenamento do programa. O máximo é 30720 bytes.
Variáveis globais usam 1008 bytes (49%) de memória dinâmica, restando 1040 bytes para variáveis locais. O maximo é 2048 bytes.
Ligações do módulo
SD – Arduino
- 5V – 5V
- GND – GND
- MOSI – pin 11 (pino fixo SPI)
- MISO – pin 12 (pino fixo SPI)
- CLK – pin 13 (pino fixo SPI)
- CS – pin 10 (pino SPI, qualquer pino digital)
Alguns módulos também têm um pino de 3.3 Volts, que, pelo que percebi e experimentei, não é necessário ligar.
Experiência de utilização
Experimentei os dois módulos com dois cartões diferentes, a ideia era avaliar os problemas encontrados, a memória usada e a velocidade de resposta.
Problemas
Não tive qualquer problema. Funcionou a primeira.
Memória
A memoria necessária para implementar a biblioteca e o mais simples exemplo de escrita e leitura revela que a sua utilização é impossivel num Nano 168. Usa cerca de 10 Kbytes de memoria de programa e cerca de 1k bytes de memoria de dados.
Velocidade
Usando um Nano 328p com um cartão antigo, que presumo lento:
volume, escrita, leitura
- 128, 128 bytes, 6 ms, 627 ms (com criação do ficheiro)
- 256, 128 bytes, 11 ms, 413 ms
- 512, 256 bytes, 21 ms, 416 ms
- 1024, 512 bytes, 39 ms, 417 ms
- 2048, 1024 bytes, 76 ms, 769 ms
Usando um Nano 328p com um cartão micro SD que presumo mais rapido:
volume, escrita, leitura
- 128, 128 bytes, 41 ms, 1699 ms (com criação do ficheiro)
- 256, 128 bytes, 45 ms, 68 ms
- 512, 256 bytes, 59 ms, 84 ms
- 1024, 512 bytes, 78 ms, 89 ms
- 2048, 1024 bytes, 121 ms, 107 ms