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
- Teensy 4.1
- 1 dip switch de 2 entradas (funcionaran como sensores digitales)
- 1 potenciómetro de 1k (sensor analógico)
- 1 fotorresistencia (sensor analógico)
- 4 resistencias de 220 ohms
- 1 memoria microSD
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: