martes, 29 de noviembre de 2016

2016/11/29. BLOQUE 1. Sistemas embebidos (Arduino)

El objetivo de esta primera aplicación dentro del estudio de caso es la creación de un sistema físico real del cual poder extraer datos para subir y almacenar en la nube. Dado que el análisis de sistemas embebidos no es objeto de estudio de esta asignatura, se propone un sistema muy simple basado en un microcontrolador Arduino Uno y un sensor de temperatura LM35.

El sensor LM35 es un sensor de temperatura analógico cuyas características se indican en el siguiente datasheet:


Para realizar una lectura simple de la temperatura, únicamente es necesario leer la información contenida en la primera página del datasheet. Concretamente, debemos fijarnos en identificar:
  • los pines según el tipo de encapsulado de nuestro sensor (TO-92)
  • la relación entre la temperatura y la señal analógica de tensión que entregada en el pin Vout: +10.0mV/ºC
  • la máxima temperatura que puede medir: 150ºC

Conectamos el sensor a Arduino de la siguiente forma:





















Abrimos Arduino IDE para escribir el programa que se cargará en el microcontrolador. Aparecen dos funciones predefinidas:
  • setup(). Se ejecuta después de un encendido o de un reset. Esta función se ejecuta una única vez.
  • loop(). Se ejecuta una vez haya finalizado setup(). Esta función se ejecuta de forma cíclica e ininterrumpida.
void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:
}

Para poder visualizar el dato de la temperatura en la pantalla del ordenador, se puede hacer uso de una comunicación serie. Una comunicación serie consta de dos extremos; siendo Arduino uno de dichos extremos, ¿cuál será el otro? Pues una aplicación en el ordenador. ¿Qué aplicación? Pues una que sea capaz de "hablar serie". Arduino IDE dispone de una aplicación para esta tarea: el monitor serie. El monitor serie no depende de Arduino y puede utilizarse para establecer una comunicación serie desde el ordenador con cualquier dispositivo o aplicación que "hable serie".

#define LM35 A0

int ADC_bits = 10;
float AREF = 5.0; // V
float LM35_output_scale_factor = 0.01; // V/ºC

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  pinMode(LM35, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  
  // getting the ADC reading
  int adc_reading = analogRead(LM35);  
  Serial.print("ADC value on pin A0: "); Serial.println(adc_reading);
    
  // converting that reading to voltage
  float voltage = adc_reading * AREF/pow(2,ADC_bits);
  Serial.print("Estimated voltage on pin A0: "); Serial.println(voltage);
    
  // calculating the temperature
  float temperature = (1/LM35_output_scale_factor) * voltage;
  Serial.print("Temperature based on estimated voltage: "); Serial.println(temperature);

  Serial.println("------------------");
  delay(1000);
}

2016/11/29. BLOQUE 1. Presentación

BLOQUE 1: "Sistemas de información para la investigación" 

Hoy en día, una problemática común a muchas áreas de investigación es la necesidad de analizar y gestionar grandes conjuntos de datos débilmente estructurados que se encuentran distribuidos en sistemas heterogéneos. En estos casos, suele ser necesario desarrollar herramientas a medida para extraer, almacenar, procesar, analizar y visualizar los datos, y transferirlos a otros sistemas.

En este bloque de la asignatura se adquirirán una serie competencias básicas relacionadas con el tratamiento de datos alrededor de un estudio de caso que tratará sobre la lectura de un sensor a través de un microcontrolador, y el almacenamiento y visualización de las muestras en la nube, y el análisis de los datos en local. Para ello, revisaremos el siguiente temario:
  • Sistemas embebidos (Arduino)
  • Aplicaciones multiproceso (Python)
  • Sistemas web (arquitectura REST y APIs web)
  • Análisis de datos (R y/o MATLAB)
  • Páginas web (HTML + JavaScript)
  • Aplicaciones móviles (Android)
A continuación se muestran tres aplicaciones prácticas que se realizarán durante el desarrollo del estudio de caso:

Almacenamiento y visualización de datos en la nube con ThingSpeak



Análisis de los datos almacenados en ThingSpeak con MATLAB
















Creación de páginas web para la visualización de datos con el API Google Charts