Blog

III Jornada sobre Daño Cerebral Adquirido

El pasado sábado tuvo lugar una jornada sobre Daño Cerebral Adquirido (DCA) en A Coruña, organizada por ADACECO y la Fundación Maria José Jove.  En esta jornada se profundizó en el conocimiento del DCA y su aspecto multidisciplinar. Se trataron las últimás novedades médico-sanitarias, tecnológicas, implicaciones legales, así como el aspecto emocional y social de los afectados.

Responsables de ADACECO, Fundación María José Jove, FEDACE y Conselleira de Política Social.

El B105 participó en la jornada a través de la ponencia “Robótica y Daño Cerebral Adquirido” impartida por Alvaro Araujo. En esta ponencia presentamos la línea de investigación que estamos desarrollando para la implementación de una red neuronal inalámbrica que permita ayudar a usuarios con problemas neurológicos. Pudimos comprobar el interés de los asistentes en la investigación y el apoyo para seguir desarrollando la misma.

Pudimos comprender mejor a los afectados por DCA y sus familiares, así como compartir diferentes experiencias con todos los profesionales involucrados que nos ayudarán a mejorar en nuestra labor.

Alvaro Araujo presentando la ponencia “Robótica y Daño Cerebral Adquirido”

Becas Cátedra BQ 2018/2019 2o Cuatrimestre

Fruto de la colaboración del B105 con BQ se lanza esta nueva convocatoria de becas para el segundo semestre del curso académico 2018/2019 (ver documento adjunto).

Los interesados en alguna de las becas deberán enviar un correo electrónico a la dirección  catedra.bq.upm@bq.com con la siguiente información:

  • Asunto: [Becas Cátedra  BQ].
  • Curriculum Vitae.
  • Beca/s en las que estás interesado y la motivación.
  • Situación actual del candidato: curso, asignaturas pendientes, limitaciones de horarios, interés en realizar PFC, TFG, TFM, Prácticas en Empresa, etc.

Información de interés:

  • Fecha límite de recepción de CV: 24 de Febrero de 2019
  • Fecha de inicio de las becas: Preferiblemente 1 de Marzo de 2019.

Os esperamos!

Desarrollo e integración de nuevos servicios para sistemas IoT de recolección y gestión de grandes datos

At the present time a massive amount of data is being generated by many kinds of devices such as wearables, mobile phones, temperature or humidity sensors and many others. Data could be treated and represented in order to understand and analyse the information the carry within it. The aim of this project is to carry out the software development needed to bring new utilities to the data management and representation platform deployed in the B105 Electronic Systems Lab. Data used by the platform is generated on an IoT environment by different type of sensors. There are many tools developed by third parties in charge of data management and representation, but this project pretends to extend the system developed in the B105 Electronic Systems Lab based on an own web service.

In other to achieve the objectives of this project, some new utilities are going to be developed and the bugs of the previous versions of the platform will be corrected. These include the implementation, among others, of: an authentication mechanism to the platform, a system to export and import data in a simple way or a system to calculate some data statistics. To do so, JavaScript will be used in addition to client-server and server-databases communications.

TFM: Development of a protocol for the wireless communication of monitoring data for real- time representation

With the development of the IoT, the number of devices of different nature and size
that are distributed throughout the environment has increased enormously, generating data
continuously. These data can often be processed where we generate them. However
sometimes we can not have enough computing power to do it or we want to access them
remotely to see the correct functioning of a system or for example to store them in a
database.
With this background it makes necessary to develop an electronic system that can be
conected in an easy way to the place where we are generating the information and transport it
to our central node. For our particular case, we aspire to establish a real time stream in order
to represent the data in a graphic, in order to give to the user a proper view of the
performance of his sensor node.
We have developed a WIFI gateway that allows this automation that we have
explained. We have used the Zentri AMW 106, an ultralow consumption WIFI module who fits
perfect in our requirements. We can attach via serial (using UART) to our electronic system to
the module where we generate the data and creating a TCP-IP client send to our server
wirelessly.
We have also made an effort in develop an user friendly application in the server side.

This application has the ability of representing the data we are sending in real time and at the
same time to store in a file having a register. This register can be accessed to consult the
values obtained in a certain time.

PFC: Analysis and Design of a Control and Management System of the Integrity and Load of Trains in the Underground Work based on a Wireless Sensor Network (WSN)

Building or remodelling large underground areas, such as tunnels, are very complex
projects where there are some very specific needs and dangers.
Historically it has been considered that tunnels were dangerous places and therefore it
was inevitable that fatal accidents took place during construction works. In fact, there
have been many casualties in tunnels under construction. However, nowadays, tunnel
safety is an essential aspect all over the European countries and particularly, in Spain.
Also, it is equally important the construction work management during construction
phase: effective management of resources (workers, raw materials, tools, etc.) within
the tunnel and the machinery involved, with the ultimate goal to improve the
effectiveness and efficiency of the construction site. Most of the mentioned resources
are moved by trains, due to their great ability to transport huge amount of materials
using less time/effort.

 

Many of the measures taken in tunnels, and particularly on trains dedicated to this kind of works, are done manually and with the constant intervention of operators and maintenance personnel which may, in some cases, lead to errors, planning delays and as a result, to increase the final cost of the work. In the case of traffic control and railway equipment inside tunnels, mechanisms for monitoring and management are scarce and usually insufficient for proper operation; these environmental, structural and traffic control mechanisms, become critical during indoors construction work.

Therefore it is necessary the development of a system able to: firstly, immediately detect any problem in the train or in the tunnel infrastructure, react quickly and mitigate effectively the possible consequences; and secondly, able to manage train traffic, detecting at all times the position of each train or other machinery(such as trucks) accurately and safely. The system shall manage and act effectively and quickly with all those measures, parameters and location coordinates.

The first objective of this project was to provide key solutions for wireless seamless connectivity and interoperability in rail tunnel infrastructures by considering everyday physical environments of trains which will significantly contribute to decrease incidents and accidents at work, as well as to the optimization of the works of the rail machinery in terms of time, project costs and operation and maintenance of the equipment and facilities.

As a result of the project, it was implemented a prototype capable of managing freight trains at construction work sites, able to prevent disasters and accidents at building (or refurbishment) stage in large underground areas such as tunnels.

The solution designed and developed is able to reduce the effort and time required for integrating WSN solutions and services into tunnel works, railway safety-related and multipurpose systems, and to reduce maintenance costs of on-board WSN services by providing a single general integration indoor platform for wireless sensors and wireless communication services, with centralized and standard interfaces for existing systems.

STM32F4: Cómo utilizar el ADC con DMA

Para este post, continuando con los post de esta placa, veremos los primeros pasos a dar para comenzar a obtener datos del ADC utilizando el DMA.

Pero la primera pregunta que debemos contestar es ¿qué es el DMA? El DMA (Direct Memory Access) es una forma de leer o escribir en memoria sin utilizar la CPU de la que disponen ciertos elementos como el ADC. Esto significa que no estamos perdiendo tiempo de CPU en procesar las muestras, por lo que éstas se procesan en background y mientras podemos estar haciendo otra cosa. Además, esto permite que las muestras de una señal no se pierdan por tiempo de procesado de la CPU.

CONFIGURACIÓN INICIAL

Abrimos CubeMX y habilitamos el ADC como en pasados tutoriales, pero esta vez habilitamos la opción de DMA Continuous Requests.

Configuración ADC

En ese momento, en la pestaña de DMA Settings tenemos que añadir un stream que tenga las características que se muestran en la imagen y después comprobar que en NVIC Settings de éste está habilitado. Es importante prestar atención al tipo de buffer a utilizar. Para esta primera prueba utilizaremos el normal, y después pasaremos al circular, puesto que es el que nos permite tener una captación de datos continua y renovada.

Ajustes para usar el DMA con el ADC

Tenemos que mantener el timer interno funcionando como en el tutorial anterior, ya que así garantizamos que estamos tomando las muestras correctamente, pero también se puede utilizar el ADC con DMA sin timer.

LECTURA Y REPRESENTACIÓN DE LA SEÑAL

Empezamos arrancando el timer y el ADC, pero para este último, utilizando las funciones que están relacionadas también con el DMA (como HAL_ADC_Start_DMA). Esta última función tiene como uno de sus argumentos el tamaño de los datos que vamos a leer.

Tras esto, haciendo uso de las funciones relacionadas con el DMA y el ADC, podemos controlar cuando ha terminado la lectura para, en ese momento, guardar los datos. De hecho, podemos controlar tanto la transacción completa como la mitad de la misma. Se deja la implementación al lector.

Finalmente, representamos estos datos para saber si lo estamos haciendo bien, (considerando que la configuración del timer es la misma que en el ejemplo anterior y la señal de entrada también). Manteniendo esta configuración y cambiando el buffer del DMA a circular en adc.c (hdma_adc1.Init.Mode = DMA_CIRCULAR;), lo que conseguimos es que el array donde se actualizan los datos esté en continuo cambio, pero hasta que no se detecta el fin de la transacción, no se guarda. La representación sería la misma en los dos casos (normal y circular).

Representación de los datos procesados por el DMA del ADC

 

Nota: la imagen de la portada se ha obtenido de CocoaStream Technologies.

STM32F4: Configuración del ADC con un timer

Este tutorial debe seguirse después de haber realizado el tutorial sobre la configuración y el uso básico del ADC, el cual se encuentra en la lista de tutoriales de la placa de desarrollo STM32F4.

 

CONFIGURACIÓN INICIAL

Timer externo:

En este caso, en CubeMX, también seleccionamos el pin PA1 como pin de entrada al ADC, pero además, en las opciones de la izquierda que se muestran al desplegar el ADC1, debemos seleccionar External-Trigger-for-Regular-Conversion. Esto se debe a que vamos a utilizar un timer para controlar cuando realizamos las lecturas del ADC. Por lo tanto, tenemos que habilitar este timer también. Podría ser cualquiera de los que muestra cubeMX, nosotros hemos elegido el timer 1, canal 1. Entre las opciones posibles para su configuración, hemos elegido PWM generation CH1, para así utilizar la información de uno de los anteriores tutoriales, aunque ésta no sería la única opción.

Todo esto puede verse reflejado en la imagen siguiente, donde encontramos los pines ADC1_TIM1, TIM1_CH1 y ADC1_EXTI11, la casilla de External-Trigger-for-Regular-Conversion marcada y el timer configurado como PWM.

Pinout ADC – PWM Timer

Al activar estas opciones, la configuración del ADC y del timer es la que encontramos en las imágenes siguientes. En cuanto al timer, hemos impuesto una frecuencia de 1 KHz y un ciclo del 50%. Sabiendo que la frecuencia del sistema es de 96 MHz, nos queda la siguiente igualdad:

(Preescaler + 1)x(Periodo + 1) = fclk/fPWM

Donde suponemos el preescalado y el periodo y obtenemos el pulso.

Configuración del ADC y del PWM Timer

Se deja al lector la implementación del timer externo sin configuración PWM.

Timer interno:

Para este otro caso, seleccionamos un timer que no tenga muchas funcionalidades, como el timer 2 (TIM2). En la opción clock source, seleccionamos Internal Clock, y después en la pestaña de configuración, ponemos la misma configuración que teníamos con el PWM en los campos que sean iguales.
Es importante seleccionar en “Trigger Event Selection TRGO” la opción de Update Event.

 

LECTURA Y REPRESENTACIÓN DE LA SEÑAL

Timer externo:

Ahora conectaremos el pin asociado al TIM1_CH1 con el pin asociado al ADC1_EXTI11 con un cable externo, y el generador de funciones en la entrada del ADC (PA1). Estas señales se pueden visualizar en el osciloscopio para comprobar que efectivamente es como esperamos.
Pasamos la configuración de CubeMX a Eclipse. Ahora no solo tenemos que iniciar el ADC sino también el timer. Después, la toma de datos sería de la misma forma que en el anterior tutorial. Se deja al lector la tarea de implementar el código, sería necesario el código del tutorial anterior del ADC y del tutorial relacionado con el timer.

Sin embargo, aquí tenemos que tener en cuenta el teorema de Nyquist, puesto que ahora tenemos una frecuencia de muestreo conocida. La señal de entrada será de 50 Hz, ya que así dispondremos de 20 muestras por período. El array en el que se guardan será de 100 muestras, por lo que tendremos 5 períodos de una representación muy aproximada de la señal, como bien puede observarse en la imagen.

Señal de 1 KHz procesada por el ADC

Timer interno:

En este caso no sería necesario conectar ningún cable adicional.
Tras pasar la configuración a Eclipse, iniciamos el timer de una forma diferente a la anterior, utilizando la función HAL_TIM_Base_Start(&htim2). Y ya podríamos correr nuestro código.

 

Nota: la imagen de la portada se ha obtenido de Jóvenes Científicos

Jornadas sobre Ciberinteligencia

En las Jornadas sobre Ciberinteligencia organizadas por la Guardia Civil y el Instituto Universitario de Investigación sobre Seguridad Interior que tuvieron lugar el 16 y 17 de Octubre participamos en la mesa redonda “El potencial de los algoritmos para el desarrollo de herramientas de ciberinteligencia” con la ponencia “IoT en Ciberinteligencia”.

B105 Diptico-Jornada-Ciberinteligencia-GC

B105 IoT en Ciberinteligencia