lunes, 18 de abril de 2016

Configuración de la shield ethernet SD de Arduino

     Después del pequeño proyecto de web de „Ruidos ambiente“ estoy empezando a desarrollar un servidor web con mi Arduino con la shield (circuito electrónico) ethernet SD de Arduino. Para manejar cualquier dispositivo desde una web.



     La cuestión está en que en la parte del código de configuración (void setup(){}) hay dos pines clave que se configuran:
CS (Chip Select) del controlador ethernet, denominado en código normalmente como CS_PIN, que va al pin 4.
SD controlador de la memoria MicroSD, denominado en código normalmente como DS_PIN, va al pin 10.
     Hay que configurar las dos en el bloque setup. En el siguiente ejemplo además se hace un pequeña lectura de la memoria:


#include <SPI.h>
#include <SD.h>
const int CS_PIN = 4;
const int SD_PIN = 10;
void setup()
{
    Serial.begin(9600);
    while (!Serial) ;
    // wait for serial port to connect. Needed for Leonardo only
    Serial.print("Probando SD card...");
    pinMode(SD_PIN, OUTPUT);     // Configuración necesaria para leer la tarjeta MicroSD
    // Esto es necesario aunque creas que no lo usas.
    if (!SD.begin(CS_PIN))
    {
        Serial.println("No hay tarjeta");
        return; // NO sigas
    }
    Serial.println("SD encontrada.");
    File dataFile = SD.open("archivo.txt");
    if (dataFile)  // Si ha podido abrir el fichero
    {
        while (dataFile.available()) // Mientras no llegues al final
          Serial.write(dataFile.read());  // Lee el fichero y envialo al serie
        dataFile.close();  // Cierra el fichero al acabar
    }
    else  // SI no puede abrir el fichero
        Serial.println("Error, no puedo usar archivo.txt");
}
void loop() { }


     En el libro „ARDUINO A FONDO“ no está la configuración correctamente indicada, ni está incluida la librería <SPI.h> necesaria para la comunicación con el dispositivo MicroSD. No he conseguido ver en ningún sitio en Internet esta configuración. Quizás porque no he buscado bien. Pero por eso, he hecho este pequeño artículo; para que cualquiera que esté con la misma shield no se vuelva loco buscando los problemas con los que se va ha encontrar, que no son pocos.

     Os remito también a un ejemplo básico para leer la tarjeta:
https://www.arduino.cc/en/Tutorial/CardInfo muy útil para detectar los datos básicos de tu tarjeta.

     Los comandos básicos para manejar la memoria SD son:
File.Available() Nos indica que si hemos llegado al fin e un fichero .
File.flush() Se asegura de que se escribe en la SD todo. Algo que hace automáticamente
al hacer close() .
File.read() Lee un carácter del fichero abierto y avanza a la siguiente posición .
File.write() Escribe un carácter al fichero y avanza la posición .
File.position() Te indica la posición donde escribirá/leerá el próximo carácter en relación al
principio el fichero .
File.size() Devuelve el tamaño de un fichero .
File.seek(pos) Coloca el apuntador que indica donde leerá/escribirá en la posición que le
indicamos a partir del inicio y siempre que este entre 0 y File.size() .
File.peek() Lee un char de la posición que marca el apuntador y no avanza .
File.isDirectory() Indica si el fichero abierto es o no un directorio .
Hay algún que otro método adicional que podéis consultar en la documentación de la SD library.

     Saludos y espero que os haya resultado de utilidad.

Entradas relaccionadas:
Entrada 124 - Programando una consola en Java con NetBeans 2/X
Entrada 123 - Como crear un proyecto con Swing en NetBeans 8.X
Entrada 120 - Proyecto Arduino ethernet SD + consola en Java 1/X

     @eltiopacote
Listado de entradas: http://www.pacovalverde.es/indice

No hay comentarios:

Publicar un comentario