Como conectar una memoria USB al Amazon Fire Stick


Amazon Fire TV es uno de los dispositivos más originales de Amazon  pues por un precio razonable ( dado que esta sufragado  en parte por Amazon  para  que consumos contenidos  suyos,) , este gadget   nos permite  llevar todo el material multimedia a un mismo punto  y ademas gobernándolo con un sencillo mando

Algunas de las plataformas accesibles desde este dispositivo son:

  • Con la suscripción a Amazon Prime, se tiene acceso a Prime Video, que ofrece miles de películas y episodios de series sin ningún cargo adicional.
  • Se puede acceder a fotos en Prime Photos sin ningún coste adicional y verlas en su televisor HD con el Fire TV Stick Basic Edition.
  • Permite usarlo como plataforma de juegos causal gracias a apps disponibles en  el portal de Amazon  como  Stranger Things: The Game, Galaxy Zero, Asphalt 8 o incluso algún Final Fantasy como el III, V o VI , estas ultimas de pago ( lo ideal  usar un mando bluetooth),
  • Se pueden instalar  miles  de aplicaciones  directamente desde el propio dispositivo  gracias  a la vinculación del Fire TV Stick , con su cuenta de Amazon
  • Se puede acceder a redes sociales como Facebook, Reddit ,eyc asi como a  millones de otros sitios web usando navegadores web como Silk o Firefox ya preinstalados en el propio stick .
  • Se puede disfrutar  de otros servicios ajenos a Amazon  tan populares como Netflix, Youtube, Spotify  etc
  • Se  puede disfrutar de  Movistar + sin descodificador  como vimos en este blog

 

 

La versión vendida en muchos paises fuera del ámbito anglosajón como por ejemplo en  España,es la denominada Basic Edition, la cual en realidad es la segunda generación del producto  contando  con un  Mediatek 8127D (cuatro núcleos Cortex-A7 a 1,3 Ghz) y gráfica ARM Mali-450 MP4   o capaz de decodificar contenido en H.265 por hardware, si bien la resolución en esta version es Full-HD (1920×1080). Asimismo cuenta con unas muy buenas capacidades de conectividad  siendo compatible con Wifi-AC (Dual Band) y Bluetooth en su versión 4.1.

Respecto a la interfaz  interfaz de Fire OS 5 es cómoda y fluida,cuenta a con un buen número de funciones preinstaladas que pueden ser extendidas mediante la descarga de aplicaciones adicionales a través de Amazon Appstore como cometabamos al principio de este post.

Al estar basado en la versión 5 de Android (Lollipop), es posible también instalar manualmente aplicaciones Android (mediante archivos APK), aunque su funcionalidad dependerá de como de bien se adapten al control desde el mando a distancia.
Dispone además de 1 Gb. de memoria RAM y 8 Gb. de almacenamiento eMMC no ampliables lo cual pude ser un problema  sino fuera por un truco que  vamos a  ver a continuación basados en la extensión de OTG que es soportada por este .

 

 

 Instalación de un  cable OTG

Los  componentes  que  se  incluyen con  el  Fire TV Stick    aparte del dongle   y el mando son las dos pilas para el mando  y dos cables:uno  para  alimentarlo a 5v desde un usb ( ojo si  la tv no tiene usb  habrá que conectarle  un adaptador usb)    y  un extensor de hdmi para el caso de  que no entre el conector directamente en el conector del tv)

componentes

La instalación  como vemos es minimalista  ,pues en el caso ideal el dongle se conecta directamente a un conector hdmi del tv    y solo requiere la alimentación que se hace  por medio de cualquier conector usb que tenga el TV ( aprovechando los 5v DC de la conexión usb) o bien desde un alimentador externo USB  , en caso sobre todo si pretende conectar un disco duro externo al Fire TV

instalacion.PNG

Aunque sus dimensiones son reducidas  , para evitar  problemas a la hora de conectar el conector de video   Amazon entrega  un extensor HDMI permitiendo así  que el dongle pueda ir  en otra posición .

Con todo listo y conectado , una vez encendida la TV y haya cargado el sistema operativo ,en primer lugar  tendremos que ir a la configuración de red  para conectarnos a nuestra red wifi ( el Fire TV Stick   cuenta  Wifi de doble banda y doble antena, compatible con 2×2 MIMO 802.11a/b/g/n/ac )   de modo que  una vez le hayamos configurado la red  y la contraseña ya  todo  ya estará listo.Respecto a las credenciales de Amazon nos las   podemos ahorrar el introducir nuestros datos de Amazon  ya  que al adquirirlo  incluye nuestra cuenta de Amazon ya configurada como ocurre con los Kindle .Como valor añadido  gracias a la conectividad integrada  nos ofrece la posibilidad de conectar dispositivos bluetooth como auriculares, altavoces o mandos de juegos,

Una vez comprobado su funcionamiento del stick  ,  es hora de conectar un cable OTG ( USB  micro USB) que incluya alimentación mediante micro-usb hembra pues de otro modo no podríamos alimentar al el Fire TV Stick

Este tipo de cables OTG  con alimentación suelen ser algo mas caros que los cables OTG’s normales,   pero dado la configuración del dispositivo , al no incluir batería interna comO ocurre en lo smartphone  y tabletas  , este debe  alimentarse exclusivamente por el conector micro-usb , por lo  que es fundamental poder proporcionar los 5v DC por este medio también , así que debemos adquirir este cable también( menos de 8€ en Amazon Premium)

Respecto  al conexionado de este adaptador no puede ser mas sencillo pues lo interconectaremos entre el cable de alimentacion al que  conectaremos la hembra usb del cable   y el otro extremo conectaremos al Fire TV Stick

IMG_20181007_223639[1]

 

Como se puede en la imagen, uno de los  dispositivo ideales para usar con el Fire y el adaptado, son las memorias externas USB , por ejemplo para poder visualizar nuestras fotos o vídeos  favoritas directamente en nuestra TV  desde el Fire TV usando el mando  incluido

Por cierto para visualizar las fotos y  vídeos,   o inspeccionar archivos incluidos en la memoria externa USB que conectemos al Fire via OTG , existe  una aplicación gratuita muy útil  instalable desde la propia interfaz del Fire Stick  en Utilidades  llamadas  File Explorer disponible gratuitamente y  que permite no solo ver el contenido del medio sino también visualizar  por ejemplo las fotos en pantalla completa  y avanzar con el propio mando.

 

IMG_20181007_223530[1]

Aunque conectar memorias externas o discos externos  al el Fire TV Stick es una de las utilidades mas notables  del adaptador OTG , podemos conectar otros dispositivos muy diferentes compatibles con Android 5.0  como pueden ser:

  • Gamepad  usb
  • Tarjetas de red usb
  • lectores de microsd
  • Capturadoras de video ,
  • etc

 

Como construir display gigantes


En efecto podemos construir nosotros mismos nuestros propios Display de  leds  de la medidas que necesitemos  simplemente con una placa Arduino  ( y todos  su derivados) o una  Raspberry Pi ( y todos su clónicos y derivados ) y !por supuesto  un poco de bricolaje!

Un dígito led  en realidad esta formado por  7 segmentos  o mas   y es un componente que se utiliza para la representación de caracteres o números en muchos dispositivos, debido en gran medida a su simplicidad y bajo coste

Aunque externamente difiere considerablemente de un led típico, internamente están constituidos por una serie de leds con unas determinadas conexiones internas, estratégicamente ubicados de tal forma que forme un número ‘8’.

Cada uno de los segmentos que forman la pantalla están marcados con siete primeras letras del alfabeto (‘a’-‘g’), y se montan de forma que permiten activar cada segmento por separado, consiguiendo formar cualquier dígito numérico

Por ejemplo para representar el numero 15 lo conseguiremos , activando los segmentos B y C del primer dígito  y  los segmentos AF,G C y D  para el segundo dígito

 

15

 

En la imagen podemos ver el desmontaje de la estructura interna de un display led de 4 cifras comercial, apreciándose unos puntos minúsculos que en realidad son leds SMD (lo demás es un plástico difusor que se coloca encima).

Los displays de 7 segmentos pueden ser de dos tipos principales: ánodo común y cátodo común. En un display de ánodo común, todos los ánodos de los segmentos están conectados juntos y cada segmento se activa encendiendo el cátodo correspondiente. En un display de cátodo común, todos los cátodos están conectados juntos (es decir el positivo) y cada segmento se activa encendiendo el ánodo correspondiente (o negativo). La elección entre estos tipos depende del diseño del circuito y las preferencias del diseñador, pero es obvio que sólo no son compatibles unos modelos con otros especialmente en el aspecto de que sean de cátodo o ánodo común.

En la siguiente imagen mostramos un display muy conocido ( el 5643BS) de ánodo común y que usaremos en la reparación de una olla de cocción lenta. Claramente lo importante es destacar la correspondencia de los pines : los 7 segmentos A,B,C,D,E, F (que se conectan a negativo) y las 4 cifras: D1,D2,D3 y D4 ( que se conectan al positivo común de cada cifra ).

5643BS

Existen dos diferentes métodos para controlar los displays de 7 segmentos:

    • Multiplexación: Esta técnica implica alternar rápidamente los dígitos mostrados, creando la ilusión de visualización simultánea de múltiples dígitos. Esta técnica es la mas comúnmente utilizada en casi todos los electrodomésticos serie blanca. Es especialmente habitual cuando usamos microcontroladores pues se necesitan mucha menos electrónica para su control (normalmente 7 segmentos mas 1 línea más por cada cifra) .
    • Decodificadores BCD: Los decodificadores BCD convierten datos binarios en señales de control específicas para activar los segmentos individuales, representando así el número deseado.

 

Montaje

Ahora que entendemos como funciona un display de 7 segmentos, la idea  es realmente sencilla  pues básicamente  consiste en auto-construirnos  dicho dígito  pensando en los  7 segmentos    de los que lo compone   usando para ellos  7 leds  acoplados a un caja  con    difusores para todos los leds  ¿sencillo verdad ?

Para el montaje  necesitaremos los siguientes elementos:

  • Trozos de cartón
  • Trozos de cartulina
  • 7 LEDs difusa
  • 7 resistencias de 50 ohm
  • Cinta carrocera (usada por los pintores )
  • Pegamento
  • Soporte con Esquema del display
  • Cables
  • Arduino uno
  • Un trozo de papel contacto

Una vez que tengamos el dígito compuesto por 7 los leds lo conectaremos a 7 salidas binarias de Arduino  siguiendo el siguiente esquema de conexiones;

  • PD2  segmento a;
  • PD3 segmento b
  • PD4 segmento c
  • PD5 segmento d
  • PD6 segmento e
  • PD7 segmento f
  • PD8 segmento g

Y para facilitar la gestión del display  también dos pulsadores ( para avanzar o retroceder en el conteo):

  •  PP1
  • PB2

Y finalmente   en la siguiente imagen podemos ver el esquema donde se aprecian claramente las resistencias de 50ohm para los leds   y las de 10 K para los pulsadores.

 

arduino

 

Según la configuración ya decidida  para gestionar el display solo necesitamos mapear  cada combinación  de segmentos asociado a cada numero que queramos representar  ,  y por medio delos pulsadores incrementamos o decrementamos una unidas representando el siguiente o el anterior digito respectivamente

Como en muchos otros casos ,es de señalar que debemos controlar los rebotes en las pulsaciones para lo cual leeremos varias veces el valor de la entrada hasta asegurarnos que el valor esta estables.

Y finalmente en este vídeo  podemos ver el proceso constructivo al mas estilo casero y el sencillo  montaje en funcionamiento:

Veamos el código para nuestro proyecto

El código Arduino es bien sencillo:

//definiciones de segmentos con las primeras pines digitales puerto A

const int a = 2;
const int b = 3;
const int c = 4;
const int d = 5;
const int e = 6;
const int f = 7;
const int g = 8;

//Definición de pines de entrada para los pulsadores
const int botonIncremento = 9;
const int botonDecremento = 10;

//valor para controlar los antirrebotes

const int tiempoAntirebote = 10;

//Al encender parece este numero

int cuenta = 0;  
int estadoBotonIncremento;
int estadoBotonAnteriorIncremento;
int estadoBotonDecremento;
int estadoBotonAnteriorDecremento;

boolean antirebote(int pin) {
int contador = 0;
boolean estado;
boolean estadoAnterior;

do {
estado = digitalRead(pin);
if(estado != estadoAnterior) {
contador = 0;
estadoAnterior = estado;

}
else {
contador = contador + 1;
}
delay(1);
} while(contador < tiempoAntirebote);

return estado;

}

void actualizarNumero() {
switch(cuenta) {
case 0:     // digito 1
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
break;

case 1:// valor 2

digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
case 2:
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
break;
case 3: //digito 3
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
break;
case 4://digito 4
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
case 5: //digito 5
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
case 6: //digito 6
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
case 7: //digito 7
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
case 8: //digito 8
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
case 9: //digito 9
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
}

}

//programamos lo 7 primeros pines del puerto A como salida 

//y los dos primeros del puerto B como entrada 
void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(botonIncremento, INPUT);
pinMode(botonDecremento, INPUT);
}
void loop() {
estadoBotonIncremento = digitalRead(botonIncremento);
if(estadoBotonIncremento != estadoBotonAnteriorIncremento) {
if(antirebote(botonIncremento)) {
cuenta++;
if(cuenta > 9) {
cuenta = 9;

}
}
}
estadoBotonAnteriorIncremento = estadoBotonIncremento;

estadoBotonDecremento = digitalRead(botonDecremento);

if(estadoBotonDecremento != estadoBotonAnteriorDecremento) {
if(antirebote (botonDecremento)) {
cuenta–;
if(cuenta < 0)

{
cuenta = 0;
}
}
}
estadoBotonAnteriorDecremento = estadoBotonDecremento;

actualizarNumero();
}

Este código Arduino es un ejemplo de cómo controlar un display de 7 segmentos utilizando dos botones para incrementar y decrementar un número mostrado en el display. Te explicaré paso a paso qué hace cada parte del código:

  1. Definición de pines: Se definen constantes para los pines del Arduino que están conectados a los segmentos del display de 7 segmentos (a, b, c, d, e, f, g) y para los pines que están conectados a los botones de incremento y decremento (botonIncremento y botonDecremento).
  2. Variables y constantes adicionales: Se define una constante tiempoAntirebote que controla el tiempo de antirrebote de los botones, y algunas variables para el estado actual y anterior de los botones y el número que se está mostrando en el display (cuenta).
  3. Función antirrebote: Esta función se encarga de evitar los falsos disparos cuando se presionan los botones. Utiliza un contador que se incrementa cada vez que el estado del botón es igual al estado anterior, y devuelve el estado del botón solo si el contador supera el tiempo de antirrebote definido.
  4. Función actualizarNumero: Esta función actualiza los segmentos del display de 7 segmentos según el valor de cuenta utilizando un switch-case. Cada case representa un dígito del 0 al 9 y enciende o apaga los segmentos correspondientes para mostrar ese dígito.
  5. Configuración inicial en el setup: Se configuran los pines como entrada o salida en el setup().
  6. Bucle principal en el loop(): En el bucle principal se lee el estado de los botones de incremento y decremento. Si se detecta un cambio en el estado de alguno de los botones, se llama a la función antirrebote y se incrementa o decrementa el valor de cuenta según corresponda. Se asegura que cuenta no exceda los límites (0-9). Luego, se actualiza el número mostrado en el display llamando a la función actualizarNumero().

En resumen, este código controla un display de 7 segmentos para mostrar un número que puede ser incrementado o decrementado mediante dos botones, evitando falsos disparos utilizando la técnica de antirrebote.