martes, 13 de septiembre de 2016

TRIPLES GANADORES DEL DESAFÍO STEM DE TELEFÓNICA.

TRIPLE STEM.


Nuestros tres proyectos resultaron vencedores en el concurso a nivel Nacional que proponía la fundación telefónica.

FINAL STEM.





Mira en las siguientes entradas para ver nuestro trabajo.

martes, 6 de septiembre de 2016

Liberamos la documentación del Monitor de Latidos Cardíacos y Temperatura Corporal.

Publicamos de forma libre todo el trabajo realizado durante el curso 2015/2016 correspondiente al premio desafío STEM convocado por fundación telefónica y en el que quedamos triples ganadores.
En los blogs:
http://scolamake.blogspot.com.es dejamos la documentación de Imibot, brazo robot que imita el movimiento.
http://scolamusic.blogspot.com.es/ dejamos la documentación del Arpa Laser.

En este Blog dejamos lo correspondiente al monitor de latidos cardíacos y temperatura corporal:



Esperamos que os guste y quedamos a vuestra disposición para cualquier duda.
 

domingo, 22 de mayo de 2016

Prototipo funcional.

Tenemos un prototipo funcional acabado. Porm lo pronto vamos a pausar el desarrollo de este proyecto, puesto que consideramos por ahora presentable al desafío. Dado que hay alumnos/as que están involucrados en otros proyectos (también del desafío) vamos a concentrar el esfuerzo en terminar los otros.
Cuando tengamos terminado los otros proyectos, centraremos los esfuerzos en mejorar y miniaturizar este trabajo.
Monitor T y LC
En la fase 4 explicaremos su funcionamiento.

Nota con el LM75.

Tuvimos un pequeño problema con el LM75, en un principio no leía bien la temperatura y se quedaba pausado en determinados rangos. Parece que se solucionó cuando soldamos unos pads que tiene el módulo en la cara de atrás de la pcb.
Estos pads marcan la dirección física del dispositivo en el bus I2C. Parece que dejarlos sin conectar no toma la dirección por defecto acabada en 000 como cabría esperar, hay que soldarlas para que la dirección sea correcta.
lm75a

Programando en el IDE de Arduino.

Si seguimos las instrucciones de instalación de la plataforma ESP en el IDE de Arduino, vemos que cuando tenemos finalizada la instalación y en el menú de tarjeta seleccionamos o bien ESP8266 Generic o nodeMCU, nos aparecen un montón de opciones. 
Una de las opciones es la cantidad de memoria flash destinada a programa y la dedicada a SPIFFS. El programa y los datos se suben de forma independiente. Los datos tienen que estar en un directorio llamado data dentro del directorio del sketch. 
Colocamos las páginas webs en el directorio data y generamos el programa. Después de algunos intentos y correcciones parece que la cosa funciona aceptablemente.
Para ver el código esperaremos a la fase 4 ... je, je.

Segundo esquema.

Sería como quedaría montado con el ESP (si nos da tiempo). En cuanto tengamos el prototipo con el nodeMCU lo daremos por válido y lo presentaríamos a concurso. Si nos da tiempo (tenemos muchos frentes) intentaríamos hacer una versión reducida que pretendemos que sea como la que sigue.
Scolahack esquema 2
Pronto veréis la versión física del esquema 1.
Saludos.

Esquema 1.

Veamos como quedaría el prototipo montado en una "breadboard". Hemos usado Fritzing para dibujarlo.
Prototipo Scolahack 1
Vemnos que el hardware es bastante simple. El sesnor de temperatura montado por el puerto SPI y el sesnor de pulsos conectado al único canal analógico que tiene el ESP. Lo difícil es el software ¡ je, je !.
Cada un de los elementos correctamente alimentado.

Un obstáculo.

Al experimentar con el sensor de pulsos, vimos que su salida no es digital como esperábamos. Da una curva analógica con los latidos del corazón.
Hemos comprobado distintas partes del cuerpo y parece que donde mejor funciona es en los dedos y lóbulos de oreja. No funciona muy bien en muñeca u otras partes del cuerpo.
Dado que es un prototipo y el sensor es barato, hemos decidido continuar con éste ya que parece que es válido para los talones de los bebés.
Hemos tenido que conectar el sensor al único pin analógico que disponen los ESP y utilizar las artes matemáticas para calcular la frecuencia cardíaca.
Veamos como es un pulso oximétrico analógico.
Pulso oximétrico
Para calcular la frecuencia (ya que es una onda periódica) detectamos el punto por encima de un umbral (hemos hecho pruebas y 700 unidades del pin analógico del ESp están bien) (sobre 1024). Añadimos una segunda condición y es que la velocidad de crecida sea suficiente ( y evitar los ruidos). Para ello tomamos muestras cada 10 ms, la dferencia entre tensiones entre dos muestras dividido por 10ms debe dar la velocidad de crecida de la curva. Para descartar los tramos de bajada, le ponemos además de condición que la velocidad sea positiva. Consideraremos que el pulso es correcto cuando pasemos por un segundo umbral (ya que estamos por encima de 700) que está por debajo de 700 (hemos puesto 600). Por último consideraremos que el tiempo transcurrido no es demasiado.
Ya os mostraremos el código en la fase 4.
Obviamente los valores se pueden ajustar mucho más, pero es cuestión dehacer muchas pruebas. Y por ahora los resultados son aceptables.
Dado que es complicado prototipar en un módulo con unas conexiones tan pequeñas, hemos decidido trabajar con una plataforma que contiene un ESP-12 de 4Mb de Flash conocida como nodeMCU.
Arduino IDE permite trabajar con esta plataforma al estilo Arduino. 
nodeMCU
nodeMCU pinout
Lo hacemos así simplemente para poder manipular los sensores y poder conectar sin soldar. En realidad esta plataforma no es más que un placa de desarrollo para ESP8266.
A diferencia de Arduino UNO, para poder grabar hay que pulsar momentáneamente al botón FLASH.

El SPIFFS.

Las siglas SPIFFS significan SPI Flash File System. Esta es una maravillosa característica que nos proporciona el entorno junto a las características del módulo ESP. Dependiendo del módulo que escojamos, disponemos desde 512Kb a 4Mb de memoria flash en el módulo. Parte de esta memoria puede ser dedicada para guardar archivos, como si de una pequeña tarjeta SD se tratase.
Vamos a aprovechar esta característica junto con a las librerías que permiten convertir al ESP en un pequeño servidor web para que el monitor se pueda visualizar en una página web con cualquier navegador.
Os remito a la página original del proyecto: https://github.com/esp8266/Arduino/blob/master/doc/filesystem.md

El ESP8266.



El ESP8266 es uno de los microcontroladores que va ganando adeptos a grandes pasos. Su característica principal es que tiene integrado la función WIFI y su precio es increiblemente bajo. Dispone de una gran memoria flash (entre 512Kb y 4Mb dependiendo del modelo).
Hace un timpo apareció el proyecto NODEMCU que instalaba un intérprete en lenguaje LUA y que permitía ejecutar scripts orientados a eventos en este microcontrolador.
Pero bajo mi punto de vista lo más revolucionario fué el proyecto que permitió que pudieramos programar a éste microcontrolador con el entorno IDE de Arduino y ¡al estilo Arduino!.
Éste proyecto ha permitido que nuestro proyecto se simplifique y que logremos quitar componentes (y por tanto reducir también).
Podemos encontrar muchos modelos del ESP8266, pero dado que necesitamos 2  o 3 pines para el LM75 y uno para el sensor de pulso, además de liberar los pines del puerto serie para programarlos nos decantamos por el ESP-07.
Este módulo además dispone de una antena cerámica integrada y un conector por si deseamos una antena externa con más ganancia para las zonas donde la wifi sea más débil.
No descartamos usar otro modelo, pero este nos gustó bastante.

El sensor de pulso.

Cómo todos los sensores orientados al campo digital digital, buscamos transformar una señal física a un dato digital interpretable por un microprocesador o microcontrolador.
El corazón en su bombeo puede emitir muchas formas de señales físicas que permiten ser digitalizadas:
1.- Sonido: Los médicos con el fonendoscopio auscultan a los pacientes, pero el cerébro de un médico está formado para diferenciar los distintos sonidos que se producen en el cuerpo humano. Luego el sonido no es limpio y procesar el conjunto de sonidos es muy complejo para un microcontrolador. Para nosotros no es una solución válida.
2.- Electrocardiomiográfico. Consiste en medir la diferencia de potencial que se produce cuando los nervios del corazón generan el impulso eléctrico de bombeo. requiere electrodos y amplificadores de precisión. Es caro, complejo y difícil de implementar y llevar.
3.- Oxímetro: la hemoglobina oxigenada refleja los infrarrojos cuanto más cantidad de oxígeno hay en sangre. Cada latido de corazón bombea una buena parte de oxígeno a los tejidos, de modo que cuando se produce un latido también aumenta el pico de reflexión del infrarrojo. Una combinación de un diodo LED y un fotodetector puede detectar los picos de oxígeno que relacionamos con los latidos. Afortunadamente podemos encontrarlos por unos euros y son módulos que disponen de eliminadores de ruidos integrados. Es la solución barata y cómoda para medir latidos.
Podemos ver una imagen en:
Este sensor, produce un impulso digital cada vez que el corazón late y puede ser medido por una entrada digital de Arduino.

El sensor de temperatura LM75.

El sensor LM75 es un sensor de temperatura de los que podemos denominar de bajo coste y puede entrar dentro de la categoría de los llamados "smartsensors". Llebva todo el sistema de conversión de señal integrado y además convierte la señal en digital almacenandolo en una memoria interna. LLeva un autocalibrador interno por lo que nos quitamos el problema de calibrarlo.
Usa el bus I2C pero no es un problema porque Arduino contiene dicha libería de comunicaciones. Se conoce como librería WIRE.
Usa dos cables de alimentación tolerante de 3V a 5V y dos cables de comunicación del bus I2C que son SDA y SCL (ver librería). Adicionalmente puede tener cables de reset y/o de activación del integrado (enable/disable o chip select).
Podemos ver el datasheet aquí: LM75 datasheet
No obstante tendríamos que fabricarle una placa pcb y eso lleva tiempo y problemas. Afortunadamente podemos encontrar módulos prehechos en muchas tiendas de electrónica.
Adjunto una imagen de google image. LM75 Module
Esta configuración nos permite usar el sensor simplemente cableando pines a Arduino.
La consulta de la temperatura también es fácil puesto que la infinidad de desarrollos alrededor de la plataforma Arduino son increibles.
Os dirijo a una librería que permite usar el sensor fácilmente en el sketch de Arduino.
PROS Y CONTRAS.
PROS:
  • Muy barato.
  • No requiere calibrado.
  • Lectura directa a digital.
CONTRAS
  • La resolución es baja 0.5ºC
  • La precisión es regular en torno a 1.5ºC
  • El módulo al contacto con la piel puede arañar.
LM75 NO ES el mejor sensor que podemos optar, pero dado que es un prototipo en principio haremos las pruebas con él. SI encontramos una opción mejor dentro de nuestro presupuesto simplemente cambiaremos el módulo.

Concreción de la idea 2.

Durante la investigación de nuestro proyecto, estuvimos viendo las librería que existían para comunicar via wifi con el ESP8266. Pero descubrimos algo sorprendente. El ESP8266 era un microcontrolador bastante potente ya en si. Además existía un proyecto que permitía programar al ESP8266 con el IDE de Arduino. Así que empezamoa a analizar dicha posibilidad. 
Las librerías y el lenguaje eran iguales o similares a Arduino por tanto nos sería muy fácil sustituir al Arduino Mini y dejar sólo al ESP8266. 
Tras unas pruebas con el ESP confirmamos que el trabajo se podía hacer así que manos a la obra.
Pedimos las piezas a tiendas asiáticas (nuestro presupuesto es muy limitado) y a esperar que lleguen. Mientras tanto a investigar y programar para probarlo en cuanto lleguen.
El esquema de bloques nuevo queda como sigue:
Esquema de bloques 2
Mucho más simple y adecuado a lo que buscábamos.

Concreción de la idea 1.

Reunidos todos para concretar la idea, generamos un esquema de bloques, como esta entrada es en diferido, presentamos la idea inicial. En la siguiente entrada presentaremos un pequeño giro de los sorprendentes en tecnología, que nos permitió simplificar el proyecto a la vez que darle más capacidad ¿sorprendente, no?
Dado que el proyecto debía ser "wereable" debía ser lo más pequeño posible, así que las opciones eran.
Lilypad, Arduino nano, Arduino Micro o Arduino Mini.
la capacidad wifi se la iba a dar un microcontrolador específico como CC3000 de Texas o ESP8266 de Espressif. Decidimos por precio que ESP8266 era el mejor candidato. 
ESP8266 tiene el leve inconveniente de que funciona a 3.3V, con lo que hay que adpatar la lógica para que Arduino funcionara correctamente con él. Pero había una alternativa usar un Arduino Mini de 3.3V con lo cual se entendería directamente con él. 
El esquema inicial de bloques quedaría del siguiente modo:
En cuanto a los sensores:
El sensor de pulso: Hay varis opciones, la más precisa se escaba de nuestras manos que la medición de los impulsos eléctricos que emite el corazón. Reuiqere mucho cabledo, amplificadores, específicos...descartado. 
La opción más sensata es el oxímetro de infrarrojos. Un led ilumina una zona irrigada, cada latido del corazón produce una sobrepresión de sangre en la zona aumentando la reflexión de infrarrojos debido al oxígeno.  Un fotodetector recibe un cambio en la luz cuando el corazón late...tenemos el pulso. Es una técnica usada también en los hospitales y lo mejor, el módulo con eliminación de ruido cuesta menos de 5€.
El sensor de temperatura: Necesitábamos un sensor que tuviese cierta precisión para poder medir décimas de grados. Había muchas alternativas, termómetro de resistencia de platino, PTCs, NTCs. La mayoría de ellos requieren calibración y la lectura varía con la longitud de los cables. ¿Y los smartsensors? Sensores que no requieren calibración y que dan una lectura directa digital. Desafortunadamente la opción que encontramos mejor fué el LM75 ¿por qué desafortunada? Las especificaciones dicen que la precisión es 0.125ºC, veremos si resulta adecuado. En cualquier caso no debemos olvidar que es un prototipo y que bastaría cambiar este sensor. La lectura dle LM75 se hace por el puerto i2C y funciona con 3.3V ¡A probar!.
En la siguiente entrada, un giro inesperado.

miércoles, 27 de abril de 2016



Por fin está hecho y la fase 3 terminada, poco a poco nos acercamos al final y esperamos que los esfuerzos tengan su recompensa. Ya solo queda llevar a cabo la fase 4 y votar para que nuestro proyecto llegue a lo más alto. ¡A por todas ScolaHack!

martes, 15 de marzo de 2016




Buenas tardes a todos,

Estas semanas hemos seguido adelante con nuestro gran proyecto con el grupo ScolaHack. Sabemos que lo más adecuado sería introducir una entrada nueva cada día pero, debido a que la mayoría de los integrantes estamos en 2 proyectos diferentes ocupamos la mayor parte del tiempo en el desarrollo e intentamos tener al día nuestro blog. 

Llega el momento de enfrentarnos a la fase 3 del Desafío Stem. ¡Ya queda menos para finalizar el proyecto!

En esta fase los participantes del grupo debemos poner en común los problemas que nos han surgido a lo largo de las semanas de trabajo y decidir la estructura para el nuevo vídeo, ya que queremos innovar en él. Por lo tanto, todavía seguimos indecisos en como será.  

Por otro lado,aunque no hayamos tenido muchos problemas algunos de los que nos han surgido por ahora han sido:


     - Creíamos que el sensor de ritmo cardíaco devolvía señales digitales, pero devuelve señales analógicas. 
     - La localización del sensor

miércoles, 2 de marzo de 2016





    En este enlace podéis acceder a la página de Desafío Stem y             registraros directamente. Votad, necesitamos todo el apoyo               posible. Gracias!

    Pincha aquí.



         Buenas a todos, el proyecto va mejor de lo que esperábamos ya       que hemos descubierto ciertas ventajas que facilitan y                       reducen el tiempo de elaboración del proyecto.
      En primer lugar y la más importante  el chif wifi se puede usar         como arduino.
      Por otra parte, hemos hecho pruebas con el termómetro y a               través de una página web y ambas funcionan por lo que                   pretendemos llevar a cabo el proyecto mediante una página web       por processing.





martes, 1 de marzo de 2016

A través de la asignatura de tecnología industrial nos han propuesto participar en el  “Desafío STEM” y nosotros hemos aceptado con mucha ilusión.
Al principio no sabíamos que proyecto realizar ni en que categoría centrarnos,  pero finalmente hemos decidido realizar un “Monitor de ritmo cardiaco y temperatura corporal vía wifi”
Y os preguntaréis ¿Por qué ese proyecto y no otro?
-         Es un proyecto útil que ayudaría a personas discapacitadas, ancianos y bebés, es decir, haría más fácil su día a día y el día a día de las personas de su alrededor, al igual que aportaría mayor seguridad ya que tendríamos controlada la temperatura y el ritmo cardiaco de estas personas que en muchos casos no son capaces de comunicarse por sí mismos.
¿Qué problemas podríamos solucionar?
-         Una frecuencia de ritmo cardiaco demasiado alta o baja puede indicar un problema de salud subyacente, este monitor nos avisará si hay alguna variación, ahorrándonos posibles disgustos.
-         Por otro lado, la temperatura mantiene el equilibrio de los líquidos y sólidos disueltos en la sangre como por ejemplo el colesterol que tiende a depositarse en las paredes de las arterias si se baja la temperatura, en este caso el monitor también nos avisará, al igual que en muchas más como:
-         Muerte súbita.
-         Fiebre.
-         Podríamos controlar toda una planta de un hospital mediante un solo dispositivo.
-         Controlar el ritmo cardiaco de las personas hipertensas e hipotensas.
-         Tener más controlada a personas con arritmia.



¿A quién se dirigirá?
-         Puede ser útil para todo tipo de personas pero desde nuestro punto de vista resultará más útil para personas discapacitadas, ancianos y bebés porque aparte de que en muchos casos no sepan comunicarse, en otros muchos no son capaces de distinguir si su cuerpo está sufriendo cambios ni que estos cambios afectan a su salud.

Parte técnica:
-         Usaremos un chip wifi que nos permite conectarnos a la red y usarlo como cliente o servidor. Puede funcionar como un arduino así que decidimos usarlo directamente, sin ninguna placa arduino adicional.
-         El sensor nos informará y medirá el ritmo cardiaco a través de un led infrarrojo y el bombeo del corazón.
-         El sistema irá alimentado con una pila de botón.