Introducción
En este post, empezaremos a trabajar con la programación de la tarjeta micro SD para el almacenamiento de datos en un PLC Arduino. En primer lugar, te presentaremos la biblioteca utilizada para manejar la programación de la micro SD y, finalmente, veremos y comentaremos dos ejemplos para que puedas escribir y leer desde tu tarjeta uSD.
La tarjeta SD es una buena manera de guardar la información dentro de tu controlador industrial, sin pensar en el espacio de memoria o en las desconexiones de la línea de suministro. Hay muchos tipos diferentes de tarjetas, desde unos pocos megabytes hasta gigabytes, que te permiten dimensionar tus sistemas según lo necesites.
Primeros pasos
Antes de empezar los ejemplos básicos con la tarjeta SD, ten en cuenta que te será útil leer los siguientes blogs:
Para saber programar tu PLC con Arduino IDE: Instalar las placas de Industrial Shields en el Arduino IDE
Para saber cómo conectar la tarjeta SD a tu PLC: Cómo conectar una tarjeta SD a un PLC Ethernet de Industrial Shields
Requisitos
Para poder trabajar con una tarjeta SD, debes tener un PLC industrial Arduino de alguna de estas familias:
Software
Lo primero que debes hacer es incluir la biblioteca de Arduino que contiene las funciones de la tarjeta SD:
#include <SD.h>
Debes iniciar la SD con el siguiente comando. Ten en cuenta que el número junto a las funciones significa dónde se encuentra el chip CS. Para nuestros productos, el número 53 es el que necesitas:
SD.begin(53);
Para una utilidad extendida, puedes capturar el número devuelto de esta función, y comprobar si el proceso de inicio fue correcto:
if(!SD.begin(53))
Serial.println("Initialization failed"); while (1)
{
;}
Para crear un archivo o abrir uno existente para escribir, debes poner la siguiente línea:
File myFile = SD.open("test.txt", FILE_WRITE);
Puedes buscar errores durante la apertura del archivo:
if (!myFile)
{
Serial.println("File opening failed"); while (1) ;
}
Escribir en un archivo abierto:
myFile.println("Test text");
Cerrar un archivo:
myFile.close();
Abrir un archivo para su lectura::
File myFile = SD.open("test.txt");
Leer un carácter:
myFile.read();
Saber el tamaño de un archivo:
myFile.size();
Cuando se cierra el archivo, puedes eliminar un archivo existente:
SD.remove("test.txt");
Ejemplos
En los siguientes párrafos, puedes ver ejemplos de redacción y escritura de bytes:
Escribir información en la SD
// SD Write Example
// This example writes a test text in the SD card
#include <SD.h>
// Counter variable
int n = 0;
// Setup function
void setup()
{
// Set the speed of the serial port
Serial.begin(9600UL);
// Init the SD Card
if (!SD.begin(53))
{
// Error during SD init
Serial.println("Card failed, or not present");
while (true)
;
}
}
// Loop function
void loop()
{
// Open the file
File dataFile = SD.open("test.txt", FILE_WRITE);
// Check if the file opening was fine
if (!dataFile)
{
// Error during the opening Serial.println("Card failed, or not present"); while (true) ;
}
dataFile.println("Test text"); dataFile.close();
// Program end
while (true)
;
}
Leer información desde la SD
// SD Read Example // This example read a file in the SD card #include <SD.h> // Counter variable int n = 0; // Setup function void setup() { // Set the speed of the serial port Serial.begin(9600UL); // Init the SD Card if (!SD.begin(53)) { // Error during SD init Serial.println("Card failed, or not present"); while (true) ; } } // Loop function void loop() { // Open the file File dataFile = SD.open("test.txt"); // Check if the file opening was fine if (!dataFile) { // Error during the opening Serial.println("Card failed, or not present"); while (true) ; } // Read each byte of the file for (int n = 0 ; n < dataFile.size() ; n++) Serial.println(char(dataFile.read())); dataFile.close(); // Program end while (true) ; }