miércoles, 10 de mayo de 2017

El salto del 4G al 5G en la comunicación móvil, ¿es realmente necesario?

¿Qué es el 5G?

Es la quinta generación de tecnología de transmisión de datos móviles, es decir, una mejora o actualización del actual 4G. La tecnología del 5G se encuentra todavía en fase de desarrollo y sin estandarizar. Este nuevo protocolo está siendo desarrollado gracias a la colaboración de varias empresas del sector de las telecomunicaciones, entre ellas Huawei, estando previsto que vea la luz en el 2020.

Pero… ¿Por qué necesitamos el 5G?

La pregunta que quizás se puede hacer el usuario final, <<Si yo actualmente casi ni utilizo el 4G, ¿para qué necesito el 5G?>> El 5G tendrá más aplicaciones y no únicamente está pensado para que los usuarios puedan ver vídeos en Facebook en el móvil con más velocidad, aunque también serviría para esto. El usuario se beneficiaría directa o indirectamente tras la implantación de la tecnología 5G a corto plazo.

Las principales mejoras del 5G son:
  • El número de conexiones por emisor. Pasando de miles en el 4G a millones en el 5G de usuarios por antena. 
  • La latencia bajaría desde los 100ms (3G), 50 ms (4G) a 1 ms para el 5G. 
  • Velocidad de descarga pico se incrementa desde 150 Mbits/s (4G) hasta 10Gbits/s. 
El incremento de conexiones por emisor soluciona el problema de la aglomeración de gente en un espacio concreto para eventos como por ejemplo un evento deportivo, fiestas populares o un concierto grande. En estos casos el sistema no está dimensionado para tanta gente, porque normalmente esto no pasa. En estas situaciones hay problemas de red, incluso pérdida de conexión. Con el 5G una antena podría dar servicio a mucha más gente en caso de ser necesario.

¿Qué campos de aplicación tendrá el 5G?

Muchos campos de aplicación como en los transportes públicos, aplicaciones médicas, almacenamiento en la nube o servicios en streaming, red eléctrica inteligente o smart grids, industria 4.0 en otros, pero me gustaría destacar tres aplicaciones que tendrán especial relevancia al usuario final:
  • El internet de las cosas (IoT, Internet of Things) 
  • Internet desde receptores en movimiento. Garantizar una conexión rápida y sin cortes desde, por ejemplo, coches, trenes o aviones. 
  • En sistemas interactivos de realidad virtual y realidad aumentada.

¿Qué futuro tiene el 5G con la realidad virtual?

La realidad virtual se está haciendo un hueco en el presente y cada vez tendrá más presencia en el futuro. En los últimos años ha aparecido un nuevo concepto: la realidad virtual interactiva, en la que dos o más usuarios serán capaces de interactuar como si estuviesen en el mismo lugar. Para un buen funcionamiento de un sistema de realidad virtual interactiva u online, es de suma importancia no sólo una velocidad rápida de transmisión de datos, sino que también la latencia, que jugará un papel importante en este tipo de aplicaciones.

La latencia se define como el tiempo que pasa desde que mandamos una petición y una respuesta del servidor es recibida. En realidad virtual la latencia es indispensable, ya que si pasa demasiado tiempo entre que ejecutamos una orden (nos movemos) y esta se convierte en realidad (lo vemos en las gafas o pantalla), no sólo bajará significativamente el grado de realismo, sino que será más fácil que nos equivoquemos en nuestra tarea. A nuestro cerebro le es difícil gestionar ese retardo provocado por la red. ¿Con qué velocidad tendría que responder un entorno virtual para que una persona no notase la diferencia con un entorno real? Algunas estimaciones apuntan a que se necesitan alrededor de 10 ms para estímulos visuales y unos 100 ms para estímulos acústicos.

Los mareos en realidad virtual son un problema de la tecnología de hoy, que se intentará evitar en el mañana. Los mareos se producen principalmente cuando la persona realiza un movimiento y el sistema no cambia de imagen lo suficientemente rápido, quedando de esta manera un desfase entre lo que vemos en la pantalla y lo que el cerebro espera ver. Este desfase o lag se le conoce como motion-to-photon y debe ser inferior en todo caso a los 20 ms para evitar esa sensación de mareo, aunque esta medida depende mucho de cada persona.

Para crear sistemas de realidad virtual interactivos con un buen grado de realismo, la velocidad de respuesta ha de ser en todo caso inferior a 10ms. Aquí entra en el juego el papel del 5G reduciendo el tiempo de latencia hasta 1 ms, en vez de los 50ms del 4G, aumentando de manera notable la velocidad de reacción. 

¿Qué papel juega Austria en el desarrollo e implantación del 5G?

Austria quiere estar entre los tres países más digitalizados de Europa y en el top 10 del mundo. Para ello quiere convertirse en un referente en 5G siendo pionera en implantación de esta nueva tecnología. Según un comunicado del gobierno en el consejo de ministros en diciembre de 2016, Austria pretende el año 2020 contar con redes 5G operativas al menos en todas las capitales de provincia.

Huawei está invirtiendo fuertemente en el desarrollo de esta tecnología que mejorará las comunicaciones. Para ello estiman en Huawei una inversión mínima de unos 600 millones de dólares en los próximos 5 años. La conocida marca china comenzó a invertir en 2009 en el 5G y ya presentó en el Mobile World Congress de 2011 y 2012 un prototipo líder del sector con unas velocidades de descarga de hasta 50Gbps. 

Huawei, en colaboración con T-Mobile Austria, lanzarán en 2018 una nueva red de transmisión conocida como “LTE advanced pro” también nombrada 4.5G, la antecesora de lo que será el 5G. Dos años después, allá en el 2020, deberá salir al mercado el esperado 5G.

jueves, 6 de abril de 2017

Tutorial: Cómo Programar y Simular la FPGA de ZYBO en VDHL con Vivado

En este tutorial explicaré como empezar un proyecto en Vivado para crear sencillos programas en la FPGA usando la placa ZYBO de Digilent. (aunque analogamente se puede usar para otros tarjetas de desarrollo como ZedBoard o otras basadas en Zynq).
La tarjeta ZYBO, y todos los Soc (System on Chip) cuentan con una parte FPGA y otra de Procesador. El FPGA se considera programar "Hardware" y el porcesador es un ARM de 2 núcleos que se programa con software, como cualquier otro microprocesador.
Al final veremos como simular nuestro código VHDL con la herramienta Vivado.

miércoles, 22 de marzo de 2017

Tutorial ZYBO-Linux (VI): Ejemplo de I2C con el sensor luminosidad TSL2561 de Adrafruit

 Esta es una continuación de la serie de tutoriales para ZYBO usando Linux.

En este ejemplo se muestra como leer un sensor I2C conectado a ZYBO (de Digilent) desde Linux. El sensor es en este caso el sensor de luminosidad TSL2561de Adrafruit.
Sensor de luminosidad I2C TSL2561

Los detalles de uso de este sensor se pueden leer en el datasheet, aunque resumiendo se han de seguir los siguientes pasos:

martes, 21 de marzo de 2017

tutorial ZYBO-Linux(III): Programar en Linux, usar los periféricos. Prender un led en dispositivos Zynq

Esta es la tercera parte del tutorial ZYBO-Linux para arrancar Linux desde la placa de desarrollo ZYBO de Digilent y crear pequeñas aplicaciones. Este tutorial consta de varias partes:
A continuación describiré los pasos para iniciar Linux en la ZYBO por una SD y comunicarse por Ethernet con la computadora. Después usaremos los periféricos de la placa como un led o un botón con sencillos programas.

lunes, 20 de marzo de 2017

Tutorial ZYBO Linux (II): Cómo crear una imagen de Ubuntu en un USB desde Windows 7 o windows 10

Esta es la segunda parte del tutorial ZYBO-Linux donde crearemos una imagen de Linux-Debian en una tarjeta SD para poder arrancar Linux desde la placa de desarrollo ZYBO de Digilent y crear pequeñas aplicaciones. Este tutorial consta de varias partes:

En este tutorial veremos cómo instalar a través de un USB Linux en un ordenador Windows.
Para crear una imagen de Linux Ubuntu necesitaras un USB vacío de al menos 4 GB.

domingo, 19 de marzo de 2017

Tutorial ZYBO Linux (I): cómo cargar linux-Debian en ZYBO (Zynq) con una tarjeta SD

Esta es la primera parte del tutorial ZYBO-Linux donde crearemos una imagen de Linux-Debian en una tarjeta SD para poder arrancar Linux desde la placa de desarrollo ZYBO (Zynq) de Digilent y crear después pequeñas aplicaciones. Este tutorial consta de varias partes:



1- Primero descárgate la imagen de Linux-Debian precompilada en el enlace. Imagen Debian-Linux y descomprímela (deberá ocupar 3,9GB). Esta imagen de Debian lleva precargada la configuración para conectar via Ethernet a través del terminal. La IP es 192.168.1.120.

miércoles, 6 de mayo de 2015

Actualización: Robot velocista

Robot velocista
          Este robot fue diseñado en el año 2011 con ayuda del departamento de electrónica de la Universidad de Cartagena para participar junto con el robot de sumo en la Liga Nacional de Robótica de Competición.  (http://lnrc.es )






Esquemas de Eagle de la placa de control:(click para ampliar)

 Placa de sensores:



Más información próximamente.

martes, 5 de mayo de 2015

Compilación: Robot de SUMO

Robot de SUMO
La construcción de este robot ha sido el principal

Los artículos relacionados con la construcción de 
 ruedas:




Para la electrónica:








Para la mecánica:


martes, 10 de febrero de 2015

¿por qué Python?

       Python: es un lenguaje de programación fácil de aprender, multiplaforma, libre y gratuito que está sustituyendo a software comercial (MATLAB, Mathematica, MAPLE…) en universidades norteamericanas tales como MIT, Stanford o Caltech, y que se utiliza ampliamente por empresas como Google, Dropbox o la NASA. Fue introducido en Febrero de 1991 por Van Rossum.

         Es un buen lenguaje para iniciarse en la programación, sobre todo por su simplicidad. Además hace más sencillo aprender más tarde un leguaje más complejo. Una vez que domine Python, la transición al entorno C parecerá mucho más natural.

         La sintaxis enfatiza la legibilidad del código, por lo que Python permite centrarse en otras habilidades sin tener que preocuparse demasiado acerca de la sintaxis.

        Algunos expertos coinciden en que C es aproximadamente 10 veces más rápido durante el tiempo de ejecución, aunque la diferencia de velocidad es apenas perceptible para la mayoría de aplicaciones. Pero, debido a que Python permite escribir partes del código en c, se puede realizar un análisis "profiling"   del código y saber dónde están los "cuellos de botella" para así poder depurar esas partes en C.



            En general un programa en python suele ser bastante más corto que su equivalente en lenguajes como C  y es considerado por muchos un lenguaje de programación de muy alto nivel. Lenguajes de alto nivel como Python o MATLAB están optimizados para humanos,  mientras que lenguajes de de nivel inferior, como Fortran y C, están optimizados para ordenadores. Esto significa que con Python es más rápido y sencillo para el programador, mientras que para el sistema es más complejo y viceversa para C.

¿Ventajas?
       

martes, 3 de febrero de 2015

IAR vs CCS

La pregunta para compara ambos conocidos compiladores: ¿descargar IAR  embedded workbench o Code Compose Studio CCS?

  • En general IAR produce un código más optimizado que CCS. (dicen que IAR es capaz de producir un código 30% o 40% más pequenio que el mismo producido por CCS)
  • Pero todo es cuestión de gusto y con que entorno se siente uno más cómodo. 
  • Limitacion de la versión de prueba, IAR tiene un código máximo de 8Kb en cambio CCS tiene 16Kb.
  • Precio CCS es más económico que IAR.


Descargar aquí la versión de Prueba de IAR

A continuación se pueden ver dos capturas de pantalla:


IAR Workbench

Code Composer Studio

Energia: MSP430 + Energia = Arduino :)

        Energia es un plataforma de programación, iniciada en Enero de 2012 por Robert Wessels para poder programar LaunchPad de texas instruments con el mismo entorno de Arduino. Programar las LaunchPad de TI (Msp430, TM4C, C200 y CC32000) con el lenguaje de Aruino y Wiring. Este lenguaje es mucho más sencillo y fácil de aprender, sobre todo para gente no iniciada en programación. En definitiva: No hace falta estudiar ingeniería para empezar a realizar projectos de aficionado. 


       La ventaja es que hay millones de usuarios de Arduino, desde hace anios, compartiendo funciones,librerías y códigos que ahora pueden ser usados para texas instruments. Para todo aquel que haya programado Arduino, no notará la diferencia (el cambio de color IDE, del azul al rojo)
Izquierda Arduino. Derecha Energia


       Energia sería la alternativa fácil a CCS o IAR Workbench. Sin embargo sólo lo recomendaría para aficionados, Hobyistas. Para estudiantes de Ingeniería/Ingenieroso o con conocimientos en programación que deseen aprender realmente cómo usar un microcontrolador, es mejor programar directamente en C. Ya que con Arduino/Energia sólo puedes acceder a funciones básicas y a un código ineficiente.


Ventajas/inconvenientes:

     

domingo, 1 de febrero de 2015

nueva LaunchPad Texas Instruments

        Texas instrument es una de las empresas lider en el sector de los semiconductores. La firma americana ofrece cuatro familias de microcontroladores en diferentes segmentos de mercado: 


      Desde 2010 Texas Instruments cambió ligeramente su política cuando un manager propuso desarrollar una placa de 10$. Desde 2009 TI tiene en el mercado productos de bajo coste, y en principio, bajas prestaciones. La llamada "value Line" 16 Bit-Controller cuenta únicamente con 512Byte de RAM. Dos años después se lanzó al mercado la C2000-LaunchPad por 15€ con un micro de 32Bit y 60MHz. Mas adelante salió la Hercules-LaunchPad con un doble núcleo, ideado para aplicaciones redundantes de alta seguridad.

       La nueva LaunchPad Msp430f5529 con un coste de 12,99$ (Enero 2015), que aunque en comparación por el mismo precio puedas conseguir una LaunchPad Tiva C-Series 32Bit ARM con núcleo Cortex-M4. La nueva LaunchPad tiene un microcontrolador más potente con 40 pines disponibles para conectar los llamados Booster Pack. Los BoosterPacks se puede comprar, en la misma página oficial o en otros fabricantes, y permiten conectar fácilmente diferentes sensores o dispositivos.

Pin Out


domingo, 30 de noviembre de 2014

Bit set, reset, toogle y masking en microcontroladores. Tutorial

Hay diferentes conceptos que hay que tener claro antes de empezar a configurar los registros de un microcontrolador.

Bit set

Para escribir un 1en un determinado bit, usamos la puerta lógica OR. Si anteriormente en este bit del registro teníamos un 1 el 1 se queda y si teníamos un 0 el bit 1 es escrito encima. 

En lenguaje C se usa el símbolo de la barra seguido de un igual:  |=
ejemplo:

ADC12CTL0 |= ADC12ENC;

Bit reset

Queremos escribir un 0, y usamos la puerta lógica AND.
El símbolo en C utilizado es:  &=

ejemplo:
 ADC12CTL0 &= ~ADC12SC

Como se puede ver arriba se ha utilizado el símbolo ~, que es equivalente a una puerta not, (una negación) Y esto es porque queremos escribir un 0.

Bit Toggle

Toggle significa cambiar de un estado al otro. Es decir si un led está encendido apagarlo y si estuviese apagado encenderlo. Para esto se utiliza la puerta OR-exclusiv. 

En lenguaje C el símbolo es: ^= 

Bit masking

Usamos puerta AND para comprobar un determinado bit.

domingo, 18 de noviembre de 2012

Cableado para multicopteros


        El cable utilizado está recubierto de  silicona pura, se pueden ver los diferentes grosores en la ilustración, y está muy extendido en el campo del aeromodelismo y sus principales características son:
·         Para igual amperaje son mucho más flexibles que un cable tradicional.
  •      Soportan 200 oC.
  •      Baja resistencia y por tanto alta conductividad.
  •    Están compuestos por cables de cobre muy finos, entre 0,06 y 0,08 mm, dependiendo del modelo.



           En el prototipo se han utilizado dos grosores: 12AWG y 16AWG en colores negro y rojo.
Tabla de corrientes máximas admisibles dada por el fabricante:
AWG
Área
Diámetro
Corriente Máxima
20
0.518mm²
0.812mm
Hasta 12A
18
0.82mm²
1.02mm
Hasta 20A
16
1.31mm²
1.29mm
Hasta 30A
14
2.08mm²
1.63mm
Hasta 45A
12
3.31mm²
2.05mm
Hasta 70A
10
5.26mm²
2.59mm
Hasta 120A




           

Tiempo de vuelo


             Se han usado baterías de polímeros de Litio, conocidas como LiPo. Esta tecnología de baterías es la evolución de las baterías Li-ion y han remplazado a la antiguas NiMh o NiCd, ya que dobla la densidad de energía y aumenta la capacidad de descarga. 

            Se quiere que el tiempo de vuelo ronde los 10 minutos. Como su cálculo sólo lo podemos saber a partir de datos experimentales, para calcular una estimación a la baja,  se procede de la siguiente manera:
La corriente máxima en continuo de cada motor, en nuestro caso, es 13.1A, (ver como cómo calcular los motores aquí) por lo que los 6 motores van a ser 78.6A.
Se suponen dos casos de baterías: 2 baterías de 4000mAh y 2 baterías de 5000 mAh.
               
            En el primer caso tendremos un total de 8000mAh, eso significa que con la batería se pueden obtener 8000 mA durante una hora.



En el segundo caso de  10000 mAh:


ESC: Electronic Speed Controler.


              Para controlar estos motores utilizamos los variadores ESC (Electronic Speed Controler), que están diseñados para dirigir a motores sin escobillas brushles. Estos pequeños controladores varían la corriente continua procedente de las baterías LiPo a corriente alterna de diferentes frecuencias, controlando así la velocidad de salida del motor. El principal parámetro para dimensionarlos es el amperaje máximo admisible, que debe ser superior  a la máxima corriente que van a consumir los motores en continua.

            Normalmente, poseen, internamente, un microcontrolador programable para configurar algunos parámetros. Esto depende de cada modelo. En este proyecto se han usado ESCs de la marca Turnigy, solamente programables con las tarjetas programadoras de la misma compañía. 


Los parámetros variables son:
·         Activar el freno (yes/no)
·         Tipo de batería (LiPo/NiMh)
·         Tipo de Corte ante batería baja (soft-cut/ off-cut)
·         Corte por voltaje (Low/Middle/High)
·         Mode de arranque (Normal/soft/very soft)
·         Temporizador (Low/Middle/High)
·         Música en function de las células de la batería (D/C/B/A)
·         Modo Governor (on/off)

viernes, 26 de octubre de 2012

C Code- Draft!

PARA UNA MEJOR LECTURA DEL CÓDIGO, COPIAR Y PEGAR EN LA VENTANA DE ARDUINO!



#include <APM_RC.h> // ArduPilot Mega RC Library
#include <FastSerial.h>
#include <SPI.h>
#include <Arduino_Mega_ISR_Registry.h>
#include <AP_PeriodicProcess.h>
#include <AP_InertialSensor.h>
#include <AP_IMU.h>
#include <AP_ADC.h>
#include <AP_Math.h>
#include <AP_Common.h>
#include <DataFlash.h>
#include <AP_Compass.h> // Compass Library
#include <I2C.h>
                          //para dataflash
#define HEAD_BYTE1 0xA3
#define HEAD_BYTE2 0x95
#define END_BYTE1 0xA2
#define END_BYTE2 0x4E
#define DF_SLAVESELECT 53 

#define ToRad(x) (x*0.01745329252)  // *pi/180
#define ToDeg(x) (x*57.2957795131)  // *180/pi


#define A_LED_PIN        35
#define C_LED_PIN        37
#define LED_ON           LOW
#define LED_OFF          HIGH

#define MIN 1235        //evitamos que los motores se paren
#define MAX 1500
#define CORTE 1200

Vector3f accel;   //viene de la libreria math.h y es un vector 3D
Vector3f gyro;
FastSerialPort(Serial, 0);

AP_Compass_HMC5843 compass;

lunes, 20 de agosto de 2012

Banco de pruebas para multicópteros


Con motivo de poder hacer pruebas e ir depurando código he estoy usando este soporte que utilizo como simulador.


Permite al hexacóptero moverse en los 3 ejes, Pitch, Roll y Yaw evitando posibles acidentes y daños materiales.