- Materiales necesarios:
- Diagrama de circuito:
- Explicación del programa Arduino:
- Explicación de trabajo:
Como ingenieros / desarrolladores, siempre confiamos en los datos recopilados para diseñar o mejorar un sistema. Registrar datos y analizarlos es una práctica común en la mayoría de las industrias, aquí estamos construyendo el Proyecto Arduino Data Logger donde aprenderemos cómo podemos registrar datos en un intervalo de tiempo específico. Usaremos una placa Arduino para leer algunos datos (aquí temperatura, humedad, fecha y hora) y guardarlos en una tarjeta SD y en la computadora simultáneamente.
Los datos guardados se pueden abrir fácilmente en una hoja de Excel para realizar análisis adicionales. Para mantener la fecha y la hora usaremos el famoso módulo RTC DS3231 y para obtener la Temperatura y Humedad usaremos el Sensor DHT11. Al final del proyecto aprenderás
- Cómo registrar datos en la tarjeta SD con fecha, hora y valores de sensor.
- Cómo escribir datos directamente en una hoja de Excel en una PC mediante comunicación en serie.
Materiales necesarios:
- Tablero de circuitos
- Arduino UNO (cualquier placa Arduino)
- Sensor de temperatura DHT11
- Módulo RTC DS3231
- Módulo de tarjeta SD
- tarjeta SD
- Cables de conexión
- Computadora / Laptop
Diagrama de circuito:
El diagrama de circuito para este proyecto de registrador de temperatura Arduino se muestra a continuación.
Como se muestra en el diagrama del circuito, las conexiones son muy simples ya que las hemos usado como módulos y las podemos construir directamente en una protoboard. Las conexiones se clasifican además en la siguiente tabla.
Pin de Arduino |
Pin del módulo |
Sensor de temperatura - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Carolina del Norte |
Carolina del Norte |
Afuera |
Pin 7 |
Módulo RTC DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Pin A5 |
SDA |
Pin A4 |
Módulo de tarjeta SD |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
Pin 12 |
MOSI |
Pin 11 |
SCK |
Pin 13 |
CS |
Pin 4 |
Puede reemplazar el sensor de temperatura DHT11 con cualquiera de sus sensores desde los que necesita registrar los valores. Puede verificar LM35 con Arduino para leer la temperatura.
El módulo RTC DS3231 está interconectado con Arduino usando la comunicación I2C (SCL, SDA) y el módulo de la tarjeta SD está interconectado usando la comunicación SPI (MISO, MOSI, SCK, CS). Los pines 4 y 7 están definidos como el pin CS y el pin de salida por el programa Arduino, puede cambiarlos a cualquier otro pin si es necesario. Anteriormente interconectamos la tarjeta SD con Arduino en el proyecto del reproductor de música.
Explicación del programa Arduino:
Tenemos que escribir el programa Arduino que puede hacer lo siguiente.
- Lea los datos del sensor DTH11 (o cualquier otro dato que desee registrar).
- Inicialice el bus I2C para leer datos del módulo RTC.
- Inicialice el bus SPI para conectar el módulo de la tarjeta SD con Arduino.
- Guarde la fecha, la hora, la temperatura y la humedad en la tarjeta SD.
- Almacene la fecha, la hora, la temperatura y la humedad en una hoja de Excel que se ejecuta en una computadora / computadora portátil.
Los pasos anteriores pueden parecer complicados, pero son muy fáciles ya que tenemos las bibliotecas para hacer el trabajo difícil por nosotros. Tienes que descargar las siguientes dos bibliotecas
- Biblioteca de sensores DHT11 de GitHub
- Biblioteca de módulos DS3231 RTC de Rinky-Dink Electronics
Una vez que haya descargado la biblioteca, agréguelas a su IDE de Arduino siguiendo
Sketch-> Incluir biblioteca -> Agregar biblioteca.ZIP
Para alimentar los datos de Arduino en una hoja de Excel en la computadora, también necesitaremos instalar un software llamado PLX-DAQ proporcionado por Parallax Inc. Siga el enlace para descargar el archivo e instalarlo según su sistema operativo. Esto debería haber creado una carpeta llamada PLS-DAQ en su escritorio. Nos ocuparemos de ello más adelante en nuestra sección de trabajo.
Ahora, después de agregar ambas bibliotecas y después de instalar el software, puede usar el Código completo (que se encuentra en la parte inferior del tutorial) y cargarlos en su Arduino. He hecho todo lo posible para mantener el código lo más simple posible y las explicaciones también se dan a través de secciones de comentarios. Además, explicaré los segmentos importantes a continuación.
1. Lectura de datos de DS3231:
DS3231 es un módulo RTC (reloj en tiempo real). Se utiliza para mantener la fecha y la hora de la mayoría de los proyectos de electrónica. Este módulo tiene su propia fuente de alimentación de celda de moneda con la que mantiene la fecha y la hora incluso cuando se desconecta la alimentación principal o la MCU ha pasado por un restablecimiento completo. Entonces, una vez que establezcamos la fecha y la hora en este módulo, siempre lo mantendrá al día.
Usar este módulo es muy fácil debido a la biblioteca proporcionada por Arduino.
// Inicie el DS3231 utilizando la interfaz de hardware DS3231 rtc (SDA, SCL); void Initialize_RTC () {// Inicializa el objeto rtc rtc.begin (); // #### las siguientes líneas se pueden descomentar para establecer la fecha y la hora por primera vez ### / * rtc.setDOW (VIERNES); // Establezca el día de la semana en DOMINGO rtc.setTime (18, 46, 45); // Establezca la hora en 12:00:00 (formato de 24 horas) rtc.setDate (6, 30, 2017); // Establecer la fecha al 1 de enero de 2014 * /}
Nota: Cuando utilice este módulo por primera vez, deberá configurar la fecha y la hora. Puede hacerlo simplemente eliminando los comentarios como se mencionó anteriormente y escribiendo la fecha y la hora. Asegúrese de volver a comentarlos y cargarlo, de lo contrario, cada vez que ejecute el tablero, la fecha y la hora se establecerán nuevamente. También puede usar RTC IC DS1307 para leer la hora con Arduino.
2. Lectura de datos de DHT11:
DHT11 es un sensor de temperatura y humedad. Envía los valores de temperatura y humedad como datos de 8 bits en serie a través del pin de salida del módulo. La biblioteca lee estos datos utilizando la función de serie del software del Arduino.
#define DHT11_PIN 7 // El pin de salida del sensor está conectado al pin 7 dht DHT; // Objeto sensor denominado DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Aquí he conectado el pin de salida al pin 7 como ejemplo, puede elegir cualquier pin que admita Software Serial. Llamando a DHT.read (número pin); leerá el valor de temperatura y humedad y lo almacenará en el parámetro DHT.temperature y DHT.Humidity respectivamente. También consulte esta medición de temperatura Arduino basada en DHT11.
3. Inicialización del módulo de tarjeta SC:
void Initialize_SDcard () {// ver si la tarjeta está presente y se puede inicializar: if (! SD.begin (chipSelect)) {Serial.println ("La tarjeta falló o no está presente"); // no hagas nada más: return; } // abre el archivo. tenga en cuenta que solo se puede abrir un archivo a la vez, // por lo que debe cerrar este antes de abrir otro. Archivo dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // si el archivo está disponible, escríbalo: if (dataFile) {dataFile.println ("Fecha, hora, temperatura, humedad"); // Escribe la primera fila del archivo de Excel dataFile.close (); }}
Usar una tarjeta SD con Arduino es fácil debido a la biblioteca de tarjetas SD que se agregará al IDE de Arduino de forma predeterminada. En la función de inicialización de la tarjeta SD crearemos un archivo de texto llamado “LoggerCD.txt” y escribiremos la primera fila de nuestro contenido. Aquí separamos los valores usando un "," como delimitador. Lo que significa que cuando se coloca una coma significa que tenemos que pasar a la siguiente celda en la hoja de Excel.
4. Escribir datos en la tarjeta SD
void Write_SDcard () {// abre el archivo. tenga en cuenta que solo se puede abrir un archivo a la vez, // por lo que debe cerrar este antes de abrir otro. Archivo dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // si el archivo está disponible, escríbalo: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Almacena la fecha en la tarjeta SD dataFile.print (","); // Mover a la siguiente columna usando un "," dataFile.print (rtc.getTimeStr ()); // Guardar la fecha en la tarjeta SD dataFile.print (","); // Pasar a la siguiente columna usando "," dataFile.print (DHT.temperature); // Almacena la fecha en la tarjeta SD dataFile.print (","); // Pasar a la siguiente columna usando "," dataFile.print (DHT.humidity); // Almacena la fecha en la tarjeta SD dataFile.print (","); // Pasar a la siguiente columna usando "," dataFile.println (); // Fin de fila pasa a la siguiente fila dataFile.close ();// Cierre el archivo} else Serial.println ("¡OOPS! Error al escribir en la tarjeta SD"); }
Como se dijo anteriormente, nuestra intención es guardar la fecha, la hora, la temperatura y la humedad en nuestra tarjeta SD. Con la ayuda de la biblioteca DS3231 y la biblioteca DHT11, nuestro Arduino será capaz de leer estos cuatro parámetros y almacenarlos en los siguientes parámetros como se muestra en la tabla a continuación.
Fecha |
rtc.getDateStr ()); |
Hora |
rtc.getTimeStr ()); |
Temperatura |
Temperatura DHT. |
Humedad |
Humedad DHT. |
Ahora podemos usar directamente estos parámetros para almacenarlos en la tarjeta SD usando la línea de impresión
dataFile.print (parámetro);
Puede notar que cada parámetro está separado por una coma para que parezca legible y un dataFile.println (); se utiliza para indicar el final de la línea.
5. Escritura de datos en PLX-DAQ
PLX-DAQ es un software de complemento de Microsoft Excel que nos ayuda a escribir valores desde Arduino directamente en un archivo de Excel en nuestra computadora portátil o PC. Este es mi favorito personal por dos razones:
1. Puede escribir y monitorear los datos al mismo tiempo y nos proporciona una forma de trazarlos como gráficos.
2. No necesita un módulo RTC como DS3231 para realizar un seguimiento de la fecha y la hora. Simplemente puede usar la fecha y la hora que se ejecutan en su computadora portátil / computadora y guardarlas directamente en Excel.
Para usar este software con Arduino, tenemos que enviar los datos en serie en un patrón específico al igual que mostrar el valor en el monitor en serie. Las líneas clave se explican a continuación:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // borra los datos que quedan de proyectos anteriores Serial.println ("ETIQUETA, Fecha, Hora, Temperatura, Humedad"); // escribir siempre LABEL, para indicarlo como primera línea} void Write_PlxDaq () {Serial.print ("DATA"); // escribir siempre "DATA" para indicar lo siguiente como Data Serial.print (","); // Pasar a la siguiente columna con "," Serial.print ("FECHA"); // Almacenar la fecha en Excel Serial.print (","); // Pasar a la siguiente columna usando un "," Serial.print ("HORA"); // Almacenar la fecha en Excel Serial.print (","); // Pasar a la siguiente columna usando "," Serial.print (DHT.temperature); // Almacenar la fecha en Excel Serial.print (","); // Pasar a la siguiente columna usando "," Serial.print (DHT.humidity);// Almacenar la fecha en Excel Serial.print (","); // Pasar a la siguiente columna usando "," Serial.println (); // El final de la fila pasa a la siguiente fila}
El software puede reconocer palabras clave como LABEL, DATA, TIME, DATE, etc. Como se muestra en la función Inicializar, la palabra clave “LABEL” se usa para escribir la primera FILA de la hoja de Excel. Más adelante en la función Escribir usamos la palabra clave “DATOS” para indicar que la siguiente información debe ser considerada como DATOS. Para indicar que tenemos que pasar a la siguiente fila tenemos que usar coma (","). Para indicar el final de la fila tenemos que enviar un Serial.println ();.
Como se dijo anteriormente, podemos escribir la fecha y la hora del sistema enviando las palabras clave "FECHA" y "HORA" respectivamente como se muestra arriba.
Nota: No utilice un monitor en serie cuando utilice este software PLX_DAQ.
Explicación de trabajo:
El funcionamiento del registrador de datos Arduino es sencillo. Una vez que el hardware y el software están listos, es hora de grabar el programa en su placa Arduino. Tan pronto como se cargue su programa, sus valores de temperatura y humedad comenzarán a almacenarse en su tarjeta SD. Debe seguir los pasos a continuación para permitir que PLX-DAQ inicie sesión en la hoja de Excel en la computadora.
Paso 1: Abra el archivo “Plx-Daq Spreadsheet” que se creó en su escritorio durante la instalación.
Paso 2: Si hay un bloqueo de seguridad, haga clic en Opciones-> Habilitar el contenido -> Finalizar -> Aceptar para obtener la siguiente pantalla.
Paso 3: Ahora seleccione la velocidad en baudios como "9600" y el puerto al que está conectado su Arduino y haga clic en Conectar. Sus valores deberían comenzar a registrarse como se muestra en la siguiente imagen.
Puede dejar esta hoja de Excel abierta y controlar los valores a medida que se registran. Mientras esto sucede, nuestra tarjeta SD también habría guardado los mismos valores. Para comprobar si está funcionando, simplemente retire la tarjeta SD y ábrala en su computadora. Debería encontrar un archivo de texto llamado “LoggerCD.txt” en él. Cuando se abriera, se vería así.
Este archivo tiene datos, pero sería difícil analizarlos en un bloc de notas. Por lo tanto, podemos abrirlo en Excel como un archivo CSV (valores separados por comas), lo que lo hace más efectivo. Abrir en Excel
1.Abra Excel. Haga clic en Archivo-> Abrir y seleccione "Todos los archivos" en la esquina inferior derecha y seleccione el archivo "LoggerCD" de la tarjeta SD. Esto abrirá un asistente de importación de texto.
2. Haga clic en "Siguiente" y seleccione una coma como delimitador. Haga clic en "Siguiente" nuevamente. Luego Termina.
3.Ahora sus valores se abrirán en un archivo de Excel como se muestra a continuación
He registrado los valores cada 5 segundos; puede registrarlos durante el tiempo que desee cambiando la función de retraso en el programa. Para una comprensión detallada del funcionamiento, mire el video a continuación.
Espero que te haya gustado el proyecto, si tienes alguna duda escríbela en la sección de comentarios a continuación y te ayudaré.
Mejora adicional: registro de datos inalámbrico con Arduino:
Una vez que haya tenido éxito hasta este punto, con algunos avances y simplemente agregando algunas líneas de código, puede registrar datos de forma inalámbrica.
Simplemente conecte un dispositivo Bluetooth como HC-05 y escriba los datos en PLX-DAQ a través de Bluetooth en lugar de en serie. Eso es reemplazar Serial.print (parámetro); con BluetoothName.print (parámetro); y conecte su computadora portátil a su módulo Bluetooth y seleccione el puerto COM al que están conectadas sus computadoras portátiles Bluetooth y Taadaaa… Tiene un sistema de registro de datos inalámbrico funcionando en poco tiempo.