Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Tutorial de registro de datos y tarjeta SD de Arduino

En este tutorial de Arduino aprenderemos a utilizar un módulo de tarjeta SD con la placa Arduino. Además, en combinación con el módulo de reloj en tiempo real DS3231, crearemos un ejemplo de registro de datos en el que almacenaremos los datos de un sensor de temperatura en la tarjeta SD y los importaremos a Excel para crear un gráfico con ellos. Puede ver el siguiente video o leer el tutorial escrito a continuación.

Cómo funciona

Primero echemos un vistazo al módulo de la tarjeta SD. Funciona con Tarjetas MicroSD estándar cuyo voltaje de operación es de 3.3 V. Por lo tanto, el módulo tiene un regulador de voltaje y un cambiador de nivel para que podamos usarlo con los pines de 5 V de la placa Arduino.

El módulo de tarjeta SD tiene seis pines, dos para alimentar el módulo, los pines VCC y GND, y cuatro pines más para la comunicación SPI. Así es como necesitamos conectarlo a la placa Arduino.

Tenga en cuenta que cada placa Arduino tiene diferentes pines SPI que deben conectarse en consecuencia.

Puede obtener los componentes necesarios para este tutorial de Arduino desde los siguientes enlaces:

Código del módulo de la tarjeta SD de Arduino

A continuación, tenemos que programar el Arduino. Aquí hay un código simple:

/*
 *  Arduino SD Card Tutorial Example
 *  
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 */

#include <SD.h>
#include <SPI.h>

File myFile;

int pinCS = 53; // Pin 10 on Arduino Uno

void setup() {
    
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
  
  // SD Card Initialization
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
  
  // Create/Open file 
  myFile = SD.open("test.txt", FILE_WRITE);
  
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.println("Writing to file...");
    // Write to file
    myFile.println("Testing text 1, 2 ,3...");
    myFile.close(); // close the file
    Serial.println("Done.");
  }
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening test.txt");
  }

  // Reading the file
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("Read:");
    // Reading the whole file
    while (myFile.available()) {
      Serial.write(myFile.read());
   }
    myFile.close();
  }
  else {
    Serial.println("error opening test.txt");
  }
  
}
void loop() {
  // empty
}Code language: Arduino (arduino)

Descripción del código:  Entonces, primero debemos incluir las bibliotecas SD y SPI estándar, crear un objeto "Archivo" y definir el pin ChipSelect del bus SPI, el pin 53 en mi caso para Arduino Mega Board. Para este ejemplo, queremos que nuestro código se ejecute solo una vez, por lo que todo el código se colocará en la sección "configuración", mientras que la sección "bucle" permanecerá vacía.

Entonces, primero debemos iniciar la comunicación en serie y definir el pin ChipSelect como salida. Tenemos que hacer esto porque el pin ChipSelect debe estar en "Bajo" para que funcione la comunicación SPI entre el módulo y el Arduino.

Luego, utilizando la función SD.begin(), inicializaremos la tarjeta SD y, si la inicialización es exitosa, la declaración "si" se volverá verdadera y la cadena "La tarjeta SD está lista para usar". se imprimirá en el monitor serie, de lo contrario, se imprimirá la cadena "Falló la inicialización de la tarjeta SD" y también se cerrará el programa.

Luego, usando la función SD.open(), crearemos un nuevo archivo llamado "test.txt", que incluye el argumento FILE_WRITE, lo que significa que podemos leer y escribir en el archivo. Si el archivo ya existe, la función SD.open() simplemente lo abrirá.

Entonces, si el archivo se ha creado con éxito, primero imprimiremos la cadena "Escribiendo en el archivo" en el monitor serie y luego usando la función myFile.println () imprimiremos el texto "Probando texto 1, 2, 3..." en el expediente. Después de eso, debemos usar la función close() para asegurarnos de que los datos anteriores escritos en el archivo se guarden físicamente en la tarjeta SD.

A continuación, veremos cómo podemos leer del archivo. Así que de nuevo usaremos la misma función, SD.open(), pero esta vez como el archivo “test.txt” ya ha sido creado, la función simplemente abrirá el archivo. Luego, usando la función myFile.read(), leeremos el archivo y lo imprimiremos en el monitor serial. La función read() en realidad lee solo un carácter a la vez, por lo que necesitamos usar el bucle "while" y la función myFile. Available() para leer todos los caracteres o todos los datos escritos previamente. Al final necesitamos cerrar el archivo.

Ahora, después de cargar el código en Arduino, si todo está bien, aparecerá lo siguiente en el monitor serie.

Como podemos ver, la tarjeta SD se ha inicializado con éxito, la escritura en ella también se ha realizado correctamente y también se ha leído correctamente la lectura de los datos escritos o la cadena "Testing text 1, 2 ,3...". Si abrimos la tarjeta SD en nuestro ordenador podremos ver el archivo “test.txt” creado y el texto escrito en él.

Registro de datos de la tarjeta SD de Arduino

Ahora hagamos otro ejemplo más interesante de registro de datos de un sensor de temperatura. Para ello, utilizaremos el módulo de reloj en tiempo real DS3231 que también tiene un sensor de temperatura incorporado. Puede encontrar más detalles sobre cómo conectar y usar este módulo en mi tutorial anterior.

Entonces, después de conectar los dos módulos al Arduino, echemos un vistazo al código de este ejemplo.

/*
 *  Arduino Temperature Data Logging
 *  
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 */

#include <SD.h>
#include <SPI.h>
#include <DS3231.h>

File myFile;
DS3231  rtc(SDA, SCL);

int pinCS = 53; // Pin 10 on Arduino Uno

void setup() {
    
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
  
  // SD Card Initialization
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
  rtc.begin();    
}
void loop() {
  Serial.print(rtc.getTimeStr());
  Serial.print(",");
  Serial.println(int(rtc.getTemp()));
 
  myFile = SD.open("test.txt", FILE_WRITE);
  if (myFile) {    
    myFile.print(rtc.getTimeStr());
    myFile.print(",");    
    myFile.println(int(rtc.getTemp()));
    myFile.close(); // close the file
  }
  // if the file didn't open, print an error:
  else {
    Serial.println("error opening test.txt");
  }
  delay(3000);
}Code language: Arduino (arduino)

Descripción del código:  Primero debemos incluir las bibliotecas necesarias para ambos módulos, luego crear los dos objetos y en la sección de configuración inicializarlos.

En la sección de bucle usando la función Serial.print() imprimiremos los valores de tiempo y temperatura en el monitor serial, con un carácter de “coma” entre ellos y una nueva línea después del valor de temperatura. Necesitamos esta forma de las líneas para que podamos importarlas fácilmente y hacer un gráfico en Excel. También tenga en cuenta que los valores de temperatura se convierten en números enteros.

Entonces, estos mismos valores también se escribirán en el archivo "test.txt" recién creado y, al final, solo debemos agregar un retraso que representará el intervalo de registro de los datos de temperatura.

Después de cargar el código, Arduino comenzará a almacenar los valores de temperatura cada 3 segundos. Después de un tiempo, podemos abrir la tarjeta SD en nuestra computadora para ver los resultados.

Para crear un gráfico en Excel, necesitamos importar este archivo y así es como lo haremos:

En el menú de datos, debemos hacer clic en el botón "Obtener datos del texto" y seleccionar el archivo de texto. Aquí elegiremos “Delimitado” y haremos clic en siguiente, y en el segundo paso, seleccionaremos la coma como delimitador y luego finalizaremos el asistente.

Entonces este proceso insertará los valores de tiempo y temperatura en columnas separadas. Ahora solo tenemos que seleccionar ambas columnas y, en el menú Insertar, seleccionar "Insertar gráfico de líneas". Esto creará el gráfico donde podemos ver los valores de temperatura cada 3 segundos.

Eso es todo por este tutorial, no dude en hacer cualquier pregunta en la sección de comentarios a continuación.


Proceso de manufactura

  1. [Video] Explicación del registro de datos y el panel de control de la máquina (PLC)
  2. Tutorial de bloqueo RFID de Arduino
  3. Cómo construir un monitor de energía Arduino y un registrador de datos
  4. Animación LCD y juegos
  5. Registrador de datos de temperatura y humedad
  6. Python3 y comunicación Arduino
  7. Radio FM usando Arduino y RDA8057M
  8. Tutorial del sensor de huellas dactilares Arduino
  9. Tutorial de Arduino:Mini piano
  10. Raspberry Pi y portátil Arduino
  11. Tutorial de Arduino 01:Primeros pasos