Becas Cátedra Kairós 2017/2018

KairosDS_Catedra_Logo_CMYK.ai

A finales del pasado curso se creó la Cátedra Kairós como colaboración entre la empresa Kairós Digital Solutions y los Grupos de Investigación “B105 Electronic Systems Lab” e “Internet de nueva generación“.  Como primera actividad para este curso se acaba de abrir una convocatoria de becas cuyas bases pueden consultarse en el siguiente link.

Becas_Kairos_09_2017

Los interesados en alguna de las becas deberán enviar un correo electrónico a cualquiera de las siguientes direcciones octavio.nieto-taladriz@upm.es o juaquin.salvachua@upm.es con las siguiente información:

  • Cover letter
  • 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 TFG, TFM, Prácticas en Empresa, etc.

Información de interés:

  • Fecha límite de recepción de la documentación: 18 de Septiembre de 2017
  • Fecha estimada de inicio de las becas: 26 de Septiembre de 2017

Vuelta al cole 2017

PuestaSolFinVerano2017mod

Tras el parón vacacional, en el B105 estamos desde hace algunas semanas regresando a la actividad normal.

Durante estas semanas pasadas de vacaciones los planes que hemos hecho los diferentes miembros del grupo han sido muy variopintos. Viajes turísticos por Europa, inmersiones submarinas, planes de playa, montaña, salidas en bici, noches pasadas a la intemperie bajo un manto de estrellas y siempre buena comida son algunos ejemplos. Momentos que ahora recordamos con entusiasmo por haberlos disfrutado y con un poquito de nostalgia también.

En este nuevo curso, y como todos los anteriores, tenemos nuevos retos con los que seguir aprendiendo y creciendo como grupo de investigación. Además cada curso que empieza conseguimos afrontar proyectos en campos en los que la electrónica está cada vez más presente y que son nuevos para nosotros.

Esta componente de “novedad” en nuestra actividad es algo que a todos los que formamos el grupo nos resulta altamente motivadora porque nos obliga a escapar de nuestra zona de confort y mantenernos activos desde un punto de vista de incorporar soluciones creativas.

Nuevos monitores personales para aumentar la seguridad de trabajadores, digitalización en 3D de piezas para la detección automática de imperfecciones, nodos adaptados a las nuevas redes NB-IoT y otros muchos retos individuales y colectivos nos esperan este nuevo curso que se suman a los que ya tenemos. Recordar también la importancia que le damos a nuestra actividad docente así como a la investigadora que realizan nuestros doctorandos con un gran esfuerzo y dedicación.

Tenemos los pies en la tierra y sabemos que el camino hasta el próximo verano será complicado. En este camino, como todas las temporadas, trabajaremos, investigaremos, innovaremos, unas veces nos equivocaremos y otras acertaremos pero siempre tendremos presente cual es nuestro objetivo. Un objetivo que desde los “no jefes” del grupo siempre se nos ha inculcado desde hace muchos años. Y un objetivo que llevamos impreso en las dos caras de nuestra camiseta:

FAILURE IS NOT AN OPTION

 

Becas Cátedra BQ 2017/2018

Logo_Cátedra_RGB

Un curso más continúa la colaboración del B105 con BQ. Dentro de las actividades de la cátedra BQ se contempla el establecimiento de un programa de becas en áreas de interés para la empresa y que complementen el proceso formativo de los estudiantes.

Por lo tanto, se lanza esta convocatoria de becas para el curso académico 2017/2018 (ver documento adjunto).

C20172018-ConvocatoriaBecasCBQ

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: 13 de Septiembre de 2017.
  • Fecha de inicio de las becas: Preferiblemente 18 de Septiembre de 2017.

Os esperamos!

Matrículas de Honor en los TFM/PFC/TFG del curso 2016-17

matriculas

En la Comisión de Ordenación Académica de esta mañana se han concedido las Matrículas de Honor correspondientes a los TFM/PFC/TFG de este curso 2016/17. Las Matrículas de Honor correspondientes al Departamento de Ingeniería Electrónica son:

  • Master Universitario en Ingeniería de Telecomunicación
    • Javier Casatorres Agüero
  • Ingeniero de Telecomunicación P94
    • Santiago Real Valdés
  • Grado en Ingeniería de Tecnologías y Servicios de Telecomunicación
    • Jesús Aparicio Oliver
    • David Sandoval Rodríguez-Bermejo

Y a esto hay que añadir la Matrícula de Honor del Master Universitario en Ingeniería de Sistemas Electrónicos que correspondió a:

  • Francisco Javier Álvarez García

Nuestra más sincera enhorabuena tanto a los recompensados por los méritos realizados como a sus tutores y en general a todos los miembros del B105 por el excelente trabajo que estáis haciendo. Espero y deseo que estos honores nos sigan impulsando a conseguir metas todavía más elevadas.

I Foro Internacional de Género y Ciberseguridad

clausuraForo

The Instituto Nacional de Ciberseguridad (INCIBE), in cooperation with the Organización de Estados Americanos (OEA), organized the l “I Foro Internacional de Género y Ciberseguridad: creando un mundo digital más inclusivo v1.0”, in the Auditorio Ciudad de León, on June 5th and 6th, 2017. Representants of 21 countries were present on this Forum where conferences and working groups performed a quite important task.

Main Forum objectives were the following ones:

  • Promote information exchange and the development of knowledge on gender and cibersecurity
  • Analyce current situation and the gender problems both at national and international levels in relation to the cibersecurity field
  • To debate on the main problems in gender violence over the digital world

Among the different activities, the B105 participated in the Working Group 1: “Mejores prácticas para sensibilizar a las jóvenes en la importancia del mundo digital, especial referencia a la Ciberseguridad, carreras tecnológicas, y medios de comunicación” where our collegue Octavio worked as member of the group.

More information on the web https://www.incibe.es/foro-genero-ciberseguridad

 

ESP8266 (Parte 2) : Programación en C, Simba y FreeRTOS

nodemcu_pins

 

En este segundo artículo voy a contar dos soluciones para programar en C el módulo ESP8266. Estas soluciones son mucho más potentes pero también se tarda más en implementar los programas.

Simba

logo

Después de encontrarme con los problemas de memoria mencionados en la anterior entrada, busqué una forma de programar el ESP8266 en C, y encontré el sistema operativo Simba. Simba es un RTOS (Sistema Operativo de Tiempo Real) escrito en C y con numerosos drivers fáciles de usar.

La forma de usar Simba con el ESP8266 también es muy sencilla, solo hay que descargar e instalar el editor Atom y luego dentro de Atom añadir el paquete de PlatformIO (platformio-ide). PlatformIO es un ecosistema orientado a la programación de sistemas empotrados. La ventaja principal de este ecosistema es la facilidad de compilar, flashear el firmware y conectarse por puerto serie desde el propio Atom.

Para empezar a programar nuestro ESP8266, crearemos un nuevo proyecto de PlatformIO y seleccionaremos la placa que vamos a utilizar, en mi caso, NodeMCU 1.0 (ESP-12E Module). Si queremos usar Simba tendremos que abrir el fichero platformio.ini y cambiar el framework escribiendo “framework = simba”. Además tendremos que ir a la carpeta lib/ y abrir el fichero readme.txt donde sustituiremos todo el fichero por el árbol de ficheros que tenemos en la página de documentación de Simba: https://simba-os.readthedocs.io/en/latest/developer-guide/file-tree.html. Todo el código que queramos añadir se meterá en la carpeta src/ .

escritorio-simbaos

Por último solo tendremos que usar los siguientes botones:

Compilar

Flashear

Terminal puerto serie

 platformio-compilar platformio-flashear  platformio-puerto_serie

Pese a su sencillez de uso  y rápido aprendizaje, he dejado de usar este sistema operativo debido a que hay drivers que no están implementados completamente y algunos los he tenido que hacer yo mismo. En mi caso, hago uso de Websockets para la comunicación, y las funciones para conectar un cliente de Websocket a un servidor del mismo tipo no estaban correctamente implementadas. Además me he encontrado funciones muy útiles que no funcionaban y al mirar el código he visto que no estaban implementadas, solo estaban definidas.

Creo que es un sistema operativo muy fácil de aprender a usar y tiene la potencia de C a su vez, pero para llegar a ser mi primera opción tendrían que trabajar más con los drivers, no puede ser que publiquen drivers sin implementar.

Otro fallo que le he visto, sobre todo debido a que me interesaba trabajar a bajo nivel, es que el código del firmware se encuentra oculto en una carpeta. Personalmente sería más cómodo que ese firmware que se va a compilar apareciera en el proyecto directamente, por si fuera necesario adaptarlo o para consultarlo más cómodamente.

Toda la documentación se puede encontrar en los siguientes enlaces:

 

 

  1. FreeRTOS

logo_freertos

Por último, pero para mi la solución con mayor potencial es el framework ESP-OPEN-RTOS. Es un firmware basado en FreeRTOS y en el SDK oficial de Espressif. Ha sido desarrollado por la empresa SuperHouse pero es de código abierto. No solo incluye FreeRTOS, sino que además se agregan librerías probadas de terceros que aumentan su funcionalidad. Principalmente estas librerías son lwip, que implementa la pila TCP/IP para sistemas empotrados, y embedTLS para implementar los protocolos TLS y SSL.

Para comenzar a utilizar hay que seguir las instrucciones que se indican en el repositorio:

  1. Clonar el repositorio de esp-open-sdk y compilarlo con :

make toolchain esptool libhal STANDALONE=n

  1. Añadir al PATH la carpeta “esp-open-sdk/xtensa-lx106-elf/bin”.
  2. Clonar el repositorio de esp-open-rtos en modo recursivo:

git clone –recursive https://github.com/Superhouse/esp-open-rtos.git

  1. Compilar y cargar el proyecto desde la carpeta raíz del firmware:

make flash -j4 -C examples/http_get ESPPORT=/dev/ttyUSB0

 

Este framework contiene numerosos ejemplos con los que aprender cómo usar los drivers, por ejemplo, como conectarse a una red WiFi o usar determinados periféricos.

Su ventaja principal es que se puede controlar todo el sistema ya que es una ampliación del framework básico del fabricante. Además tiene buenas valoraciones en Github y sus actualizaciones son bastante recientes.

La desventaja de este framework es que se necesita un mayor conocimiento de programación y electrónica para usarlo, además de que su tiempo de desarrollo es mayor frente a las soluciones que expliqué en el primer artículo.

Toda la documentación de esta solución se puede encontrar en su repositorio:

Github: https://github.com/SuperHouse/esp-open-rtos

Si se desea utilizar una solución más sencilla pero a su vez más limitada, se puede consultar en la parte 1.

ESP8266 (Parte 1): Programación en Lua y Arduino

ESP8266 (Parte 1) : Programación en Lua y Arduino

NodeMCU_DEVKIT_1.0

 

Desde que llegara al mercado el módulo ESP8266, muchos desarrolladores han visto su potencial para crear nuevas aplicaciones sobre él gracias a su bajo coste pero gran funcionalidad, y seguramente todos ellos se hayan hecho la misma pregunta al principio, ¿cómo lo programo? Con estos dos artículos quiero contar las diferentes formas que he encontrado para programarlo, y así cada uno pueda usar la que más se ajuste a sus necesidades.

Antes de comenzar con la programación me gustaría comenzar por una breve explicación de la plataforma. Yo he trabajado con la placa de desarrollo NodeMCU, cuya única diferencia con respecto al módulo ESP8266 es que tenemos acceso a todos los pines del módulo y además cuenta con un microUSB para cargarle los programas. El ESP8266 lo fabrica la empresa Espressif y es un System-on-Chip (SoC) que integra el microcontrolador Tensilica L106 de 32bit. En la tabla siguiente podemos ver las especificaciones completas:

Procesador Tensilica L106 32bit RISC
Frecuencia 80 MHz OverClock 160 MHz
Memoria Flash 4 MB Memoria RAM 128 KB
Periféricos
GPIO 13 SPI 2
I2C 1 ADC 10 bit
PWM 4  UART  1
WiFi
Norma 802.11b/g/n Frecuencia 2,4 GHz

 

Todos estos datos se pueden consultar en la página oficial de Espressif:

https://espressif.com/en/products/hardware/esp8266ex/overview

 

En esta primera parte voy a explicar cómo programar el NodeMCU de las dos maneras más sencillas y más extendidas, usando el lenguaje de programación Lua y usando el framework de Arduino.

NodeMCU Firmware

nodemcu-style5-150px.png_150x150

Se trata de un firmware basado en el lenguaje de programación Lua. Ha sido implementado por los mismos desarrolladores que han creado la plataforma de desarrollo. Este firmware se encuentra escrito en C pero con instrucciones para que se usen con Lua, que es un lenguaje interpretado, como Python, por lo que es menos eficiente. La forma de programación es muy sencilla, por lo que es perfecto para proyectos poco complejos y ŕapidos, que no necesiten optimización.

Para usar este método, lo primero que tenemos que hacer es ir a la página de la documentación, al apartado de “Building the firmware” y crear nuestro firmware que cargaremos en la placa. El método más cómodo es usar su servicio basado en la nube, ya que indicamos qué módulos necesitamos, y nos envían por email el binario ya compilado que tenemos que flashear en la placa.

Después hay que flashear el firmware. Para ello el método que a mi siempre me ha funcionado es usar “esptool.py”. Leyendo el apartado “Flashing the firmware” encontramos cómo usar este programa sumamente útil. A la hora de cargar el firmware, es necesario ejecutar el script en modo superusuario para permitir acceder al puerto al que tengamos conectado el NodeMCU.

Por último, solo nos queda subir los scripts de Lua que hemos creado. Para ello la mejor herramienta es ESPlorer. La documentación para esta herramienta la encontramos en su página web: https://esp8266.ru/esplorer/ . Este programa cuenta con una zona donde escribir el código y otra que se conecta por puerto serie a la placa donde ver lo que imprimimos por pantalla desde el NodeMCU. Otras herramientas las podemos encontrar en el apartado “Uploading code”.

escritorio-esplorer

Yo personalmente descarté este método después de estar usándolo porque no tenía un control total de la memoria, sino que solo había un recolector de basura al que tú le indicabas cuando tenía que buscar memoria que liberar. Mi problema principal fue que el flujo de datos de entrada era más rápido que el tiempo que tardaba el NodeMCU en mandarlos por SPI, y se me llenaba la memoría.

La documentación de este firmware se encuentra en las siguientes páginas:

 

Arduino IDE

1200px-Arduino_Logo.svg

Una de las grandes razones por las que esta plataforma se ha hecho tan famosa, a parte del precio, es por ser conocida como “el Arduino barato con Wifi”, gracias a que los desarrolladores implementaron la compatibilidad para desarrollar programas en ella de la misma manera que con las placas de Arduino.

La ventaja de usar este método es que es muy sencillo y rápido de realizar, además cuentas con las numerosas librerías que se han desarrollado para Arduino y de una gran comunidad que puede ayudarte.

La desventaja es que tienes menos control de las capas más bajas del hardware y además cuentas con las limitaciones del IDE de Arduino.

Para desarrollar usando este método, hay que agregar la placa en el IDE como se hace habitualmente: Herramientas>Placa>Gestor de Tarjetas e instalamos el paquete “esp8266 by ESP8266 Community”. Una vez instalados los drivers, simplemente se programa, compila y suben los programas tal y como se hacen con el resto de placas de Arduino.

En el siguiente enlace dejo un tutorial en castellano que explica cómo utilizar este método, incluyendo algunos ejemplos:

https://programarfacil.com/esp8266/como-programar-nodemcu-ide-arduino/

 

En la siguiente entrada hablaré de métodos de programación usando C, donde se consigue un control mayor de todo lo que realiza el módulo.

ESP8266 (Parte 2): Programación en C, Simba y FreeRTOS

Introducción a la Impresión 3D. Parte 2: Impresión de modelos (Slicers)

screenshot cura

El pasado 7 de Marzo de 2017, nuestros compañeros Rutrilla y Jmartin llevaron a cabo una charla introductoria a la impresión 3D.

El objetivo era doble, por un lado el manejo básico de las impresoras 3D con las que cuenta el laboratorio B105: las Witbox2 de BQ, por otro, el manejo básico de las herramientas de laminado (slicers) para convertir las piezas STL en el gcode que entienden las impresoras 3D.

En el vídeo que os dejamos a continuación podéis encontrar la segunda parte de esta charla, centrada en el la impresión de modelos 3D haciendo usos de slicers o laminadores. Será una introducción al uso y configuración de Cura para generar los fichero .gcode para imprimir modelos.

Si lo deseas puedes continuar leyendo la primera parte de este pequeño curso.

Desarrollando con Google Tango

tango

Tango es una plataforma de visión artificial y realidad aumentada desarrollada por Google. Gracias a ella, dispositivos como smartphones y tablets pueden conocer y entender su posición en el mundo que les rodea sin necesidad de GPS u otras señales externas. Esto tiene múltiples aplicaciones como la navegación en interiores, el mapeo 3D, la medición de espacios físicos, el reconocimiento de objetos, etc.

El funcionamiento de la plataforma se basa en tres tecnologías principales: el seguimiento del movimiento (Motion Tracking) utilizando las medidas de acelerómetros y giróscopos en conjunto con las características visuales; el aprendizaje de área (Area Learning) que consiste en el almacenamiento de datos del entorno como espacios, paredes, puertas, etc; y la percepción de profundidad (Depth Perception) que permite entender las formas del entorno.

Para realizar todas estas acciones, Tango se basa principalmente en la información visual proporcionada por la cámara del dispositivo. Sin embargo, dado que los datos de profundidad y distancia a los objetos son clave, la plataforma no puede funcionar en teléfonos típicos con una sola cámara. De hecho, los dispositivos habilitados para ejecutar Tango cuentan además de con la cámara convencional, con un objetivo fish-eye para el seguimiento de movimiento y con un emisor-detector de infrarrojos para medir la profundidad. En la actualidad solo existe en el mercado uno de estos dispositivos, la phablet Lenovo Phab 2 Pro.

tango-phab-2-pro

En el laboratorio B105 hemos adquirido uno de estos dispositivos ya que vamos a utilizar Google Tango en uno de nuestros proyectos de investigación. En las siguientes imágenes se pueden ver algunas de las cosas que pueden hacerse con la plataforma y sus aplicaciones.

Introducción a la Impresión 3D. Parte 1: Manejo básico de la impresora

Manejo básico de la impresora 3D

El pasado 7 de Marzo de 2017, nuestros compañeros Rutrilla y Jmartin llevaron a cabo una charla introductoria a la impresión 3D.

El objetivo era doble, por un lado el manejo básico de las impresoras 3D con las que cuenta el laboratorio B105: las Witbox2 de BQ, por otro, el manejo básico de las herramientas de laminado (slicers) para convertir las piezas STL en el gcode que entienden las impresoras 3D.

En el vídeo que os dejamos a continuación podéis encontrar la primera parte de esta charla, centrada en el Manejo básico de la impresora: conocer sus partes, posible mantenimiento, funcionamiento del extrusor y del hotend, carga y descarga de filamento, cómo lanzar una primera impresión, adecuada configuración y calibración de la impresora para obtener una impresión perfecta.

Puedes seguir con la segunda parte de este pequeño curso.