InicioTarjetas de DesarrolloLectura de datos usando la Teensy 4.1

Lectura de datos usando la Teensy 4.1

En esta nueva practica aprenderemos a usar varias de las funciones de la nueva y potente tarjeta de desarrollo Teensy 4.1, empleándola en un proyecto muy interesante que consistirá en la lectura datos y su almacenamiento en una tarjeta micro SD, estos datos vendrán de un conjunto de sensores.

Esto nos ayudara a aprender sobre el manejo de funciones básicas de la Teensy, así como de algunas de sus características mas particulares.

Introducción

La Teensy 4.1 es una de las tarjetas de desarrollo basada en microcontroladores más potentes disponibles en mercado; poseyendo un procesador ARM Cortex -M7 a 600MHz, es una gran opción para aplicaciones que requieran una capacidad de procesamiento muy alta, como lo pueden ser: aplicaciones MIDI, simuladores de vuelo, radio definida por software (SDR), procesamiento de audio y video, etc.

Algo importante a mencionar sobre esta tarjeta, es que es compatible con el entorno de desarrollo de Arduino, solo hay que instalar el manejador de la tarjeta.

Características principales de la Teensy 4.1

  • Voltaje de alimentación de 3.3 a 5 V
  • Voltaje de operación y de salida de los pines (analógicos y digitales) 3.3 V nunca conectar los pines analógicos a más de 3.3V
  • Corriente de trabajo 100 mA y de entrada 250 mA
  • Procesador: ARM Cortex-M7
  • Frecuencia de Reloj: 600MHz
  • Memoria:
    • RAM: 1024 K
    • Flash: 8MB
  • EEPROM: 4K
  • FPU: 64 y 32 bits
  • 55 pines I/O
  • 3 puertos CAN, 3 SPI, 3 I2C, 8 UART
  • Entradas Analógicas (ADC):  18 (10 bit)
  • RTC Reloj de tiempo real: 1
  • SD Socket: Incluido
  • SD Bit: 14 nativos

Con esta información general sobre la Teensy, es momento de pasar a la práctica.

Desarrollo

Para la practica como se mencionó al inicio, grabaremos en una memoria micro SD datos leídos de varios sensores (analógicos y digitales) esto ayudándonos del socket para microSD que la Teensy tiene integrada.

 Materiales

Diagrama de conexiones 

Haciendo uso de una protoboard conectaremos los componentes de la forma que se muestra en el diagrama mostrado.

Software

Como se mencionó al inicio, primero es necesario instalar el manejador de placa correspondiente a la Teensy 4.1, esto lo hacemos directamente desde el Arduino IDE en la pestaña de boards manager.

Algo a destacar es que la Teensy es compatible con un gran número de librerías para Arduino, por lo que no será necesario descargar librerías especiales para su uso con esta tarjeta.

Preparación de la tarjeta micro SD

Algo a resaltar cuando queremos usar una memoria micros SD o SD con un microcontrolador, es que esta debe de estar en formato FAT 32. Esto es muy fácil de hacer y a continuación se muestra cómo hacerlo.

Al conectar nuestra memoria solo es cuestión de ir a dispositivos y unidades, dar clic derecho sobre la memoria y seleccionar formatear

Al hacer esto nos desplegara una ventana en donde seleccionaremos la opción FAT32 en la ventana sistema de archivos; posterior a esto solo daremos clic en iniciar. Este proceso dejara nuestra memoria lista para su uso, pero hay que tener en cuenta que este proceso eliminara todos los archivos presentes en ella.

Código para la lectura de datos y su almacenamiento

Para esta aplicación haremos uso de las librerías “SD” y “SPI” las cuales nos permitirán tener accesos a la memoria microSD, en caso de no tener instalada la librería “SD” puedes instalarla directamente del library manager.

#include <SD.h> //librería para el manejo de una tarjeta SD, es la misma que utilizan las tarjetas Arduino 
#include <SPI.h>//librería para la comunicación vía protocolo SPI

const int chipSelect = BUILTIN_SDCARD; //declaración del pin CS embebido de la tarjeta 

String dataStringA0 = ""; //cadena de datos para almacenar el valor del primer sensor análogo
String dataStringA1 = ""; //cadena de datos para almacenar el valor del segundo sensor análogo
String dataStringD6 = ""; //cadena de datos para almacenar el valor del primer sensor digital
String dataStringD7 = ""; //cadena de datos para almacenar el valor del segundo sensor digital

void setup()
{

  Serial.begin(9600); //iniciamos la comunicación serial 
  pinMode(6,INPUT);   //declaramos al pin 6 y 7 como entradas digitales
  pinMode(7,INPUT);


  while (!Serial) {
    ; //esperamos a que el puerto serial responda 
  }

  Serial.print("Initializing SD card..."); //inicializamos la comunicación con la tarjeta micro SD

  if (!SD.begin(chipSelect)) {             //en caso de algún fallo en la inicialización desplegamos un mensaje de alerta 
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

}

void loop() {
    int sensorA0 = analogRead(A0); //leemos datos del primer sensor analógico en el pin A0 
    dataStringA0 = String(sensorA0); //almacenamos estos datos en una cadena
    int sensorA1 = analogRead(A1); //leemos datos del segundo sensor analógico en el pin A1
    dataStringA1 = String(sensorA1); //almacenamos estos datos en una cadena

    int sensorD6 = digitalRead(6); //leemos datos del primer sensor digital en el pin 6 
    dataStringD6 = String(sensorD6); //almacenamos los datos en una cadena 
    int sensorD7 = digitalRead(7); //leemos datos del primer sensor digital en el pin 7
    dataStringD7 = String(sensorD7); //almacenamos los datos en una cadena 


  File dataFile = SD.open("datos1.txt", FILE_WRITE); //creamos y abrimos un archivo donde guardaremos los datos de todos los sensores 

  //Si el archivo esta disponible escribiremos datos en el 
  if (dataFile) {
    dataFile.print(dataStringA0);   //Escribimos los datos provenientes de todos los sensores
    dataFile.print(",");            //los datos estarán reparados por comas y cada lectura será escrita en un renglón
    dataFile.print(dataStringA1);
    dataFile.print(",");
    dataFile.print(dataStringD6);
    dataFile.print(",");
    dataFile.println(dataStringD7);
    dataFile.close();
    //Imprimimos los valores también en el monitor serial 
    Serial.print(dataStringA0);
    Serial.print(",");
    Serial.print(dataStringA1);
    Serial.print(",");
    Serial.print(dataStringD6);
    Serial.print(",");
    Serial.println(dataStringD7);

  } else {
    // Si el archivo presento un error al abrirlo imprimimos un mensaje de alerta
    Serial.println("error opening datalog.txt");
  }
  delay(500); //haremos lecturas cada 500 ms
}

Video de funcionamiento

En el video podemos apreciar tanto la correcta lectura de los datos entregados por los sensores con ayuda del monitor serie; así mismo hacia el final del video se puede ver la correcta escritura de los datos en un archivo de texto dentro de la memoria micro SD.

Conclusiones

Con esta sencilla practica logramos poner aprueba varias de las funciones de la Teensy 4.1, desde las más sencillas como lo son la lectura de datos analógicos y digitales, hasta algunas de las más avanzadas como lo son la escritura en una memoria micro SD la cual es una de las prestaciones más notorias de esta tarjeta de desarrollo; algo a resaltar sobre este modelo de la Teensy es que esta posesión de un socket para memorias nos permite el ahorrarnos el usos de módulos externos para este mismo fin lo que evita tanto gastos extras como una aplicación mas sencilla de estas funciones.

Aun así, esto no es todo lo que la Teensy nos puede ofrecer y sus potencial lo seguiremos explorando en futuros proyectos.

Para aprender más

Si quieres aprender más sobre la gran diversidad d tarjetas de desarrollo con las que contamos te invitamos a revisar los siguientes artículos:

TUTORIALES RELACIONADOS