martes, 25 de octubre de 2016

Componentes (8): Reproductor MP3 DFPlayer Mini

El componente que estudiaremos hoy es muy útil cuando queramos emitir sonidos en nuestro montaje. Se trata de un reproductor de MP3 (y otros formatos) completo que tiene un tamaño realmente reducido.


El fabricante original de este componente es DFRobot, una empresa china especializada en kits electrónicos y que tienen un gran soporte para el aficionado por medio de su extensa wiki.

El reproductor dispone de un slot para introducir una tarjeta de memoria microSD de donde leerá los ficheros de audio, y tiene conectores para:
  • Conectar directamente a un altavoz de pequeñas dimensiones (hasta 3W).
  • Conectar a un amplificador de sonido o toma de auriculares.
  • Conectarle directamente una serie de botones que nos encontramos normalmente en cualquier reproductor de MP3, como play, pausa, avance, retroceso, volumen, etc.
  • Conectar con un dispositivo USB.
  • Conectar con el puerto serie de un dispositivo externo como un Arduino desde el que lo podemos controlar.
Otras características del dispositivo son las siguientes:
  • Reproduce audio en formato MP3 y WMA (aunque en las especificaciones indican WMV).
  • Admite tarjetas de un máximo de 32GB.
  • Soporta ficheros organizados en hasta 100 directorios con 255 ficheros cada uno.
  • Incluye un ecualizador de 6 bandas.

Y todo esto en un tamaño de 2cm x 2cm.

Por tanto, el dispositivo puede funcionar directamente como reproductor independiente (simplemente si le conectamos una batería y unos botoncillos de nada) o bien como dispositivo programable y controlarlo desde un controlador como un Arduino.

Descripción de los conectores

Consultando en la Wiki de DFRobot, podemos ver la disposición de los conectores más importantes:

  • VCC: Conector de alimentación. Admite voltajes entre 3.3V y 5V.
  • RX: Entrada serie (lectura).
  • TX: Salida serie (escritura).
  • DAC_R: Salida de audio canal derecho (para auriculares o línea).
  • DAC_L: Salida de audio canal izquierdo.
  • SPK_1: Conector negativo para altavoz externo.
  • GND: Tierra.
  • SPK_2: Conector positivo para altavoz externo.
  • BUSY: Este conector es una salida cuyo valor lógico 0 indica que el dispositivo está reproduciendo. Se puede utilizar para controlar por ejemplo un LED.
  • USB- y USB+: No me queda muy claro si forman una salida USB (para conectarlo a un ordenador y acceder al almacenamiento) o bien una entrada (para reproducir a partir de un pendrive por ejemplo), aunque me inclino más por lo primero.
  • ADKEY_2: No me queda claro en la wiki. Literalmente "reproduce el quinto segmento". Supongo que será para ir al último fichero o algo así, ya lo probaré.
  • ADKEY_1: Igualmente, la wiki menciona "reproduce el primer segmento". Supongo que irá al inicio de la lista.
  • IO_2: Para conectarle un botón de "avance". Una pulsación corta avanza a la siguiente canción y una larga aumenta el volumen.
  • IO_1: Para conectarle un botón de "retroceso". Una pulsación corta retrocede a la canción anterior y una larta disminuye el volumen.

Utilización con Arduino

Para utilizar el dispositivo desde Arduino, utilizaremos el protocolo serie conectándolo a un pin para recepción y a otro para emisión. El dispositivo se controla mediante comandos por este protocolo serie como: "avanzar pista", "retroceder pista", "reproducir", "pausa", "modo de repetición", etc.

Todos los comandos se pueden consultar en la Wiki o bien en este documento.

Igualmente, en la misma Wiki podemos descargarnos una librería para no tener que utilizar los comandos sino funciones definidas para cada cosa. La librería también está disponible en Github.

Dónde comprar

Evidentemente, podéis comprar este componente en la propia web de DFRobot, concretamente en esta página, por $8.90, más gastos de envío:

O bien podéis hacer como yo y comprarlo en Aliexpress. A mí me salio por 6 dólares, pero los he visto aquí a partir de 3 dólares. Toda una ganga, ¿no?

domingo, 23 de octubre de 2016

Componentes (7): Dispositivo Wifi ESP8266

Pues sí, tenéis razón: tengo el blog completamente abandonado desde hace casi un año. Pero es que ha sido un año muy complicado y cargado de todo tipo de cosas.

Así que hoy que es Domingo, está lloviendo y estamos encerrados en casa, he decidido desempolvar el arduíno, el portátil y el blog y ponerme a escribir un ratito.

Retomo hoy la serie que empecé hace tiempo acerca de componentes electrónicos que conectar a nuestros "cacharros" y le dedico hoy un rato al ESP8266.

Introducción

El ESP8266 es un dispositivo (SoC o System on a Chip) que permite incorporar funcionalidad Wifi a cualquier aparato. Se trata de un componente de muy bajo coste y alta miniaturización producido por el relativamente recién llegado fabricante chino Espressif.

El chip en sí mide 5x5 mm e incorpora:
  • Una unidad microcontroladora (MCU) a modo de CPU, de 32 bits.
  • Memoria RAM para instrucciones de 64KB, y para datos de 96KB.
  • Memoria Flash.
  • Un sistema operativo integrado de tiempo real.
  • Una pila de controladores software y hardware para WIFI b/g/n.
  • Conectores para antena y otros (entre ellos 16 puertos de entradas y salidas).
  • Amplificadores de potencia, filtros y gestión de energía de bajo consumo.
De hecho, el dispositivo posee tres modos de funcionamiento: activo, suspendido y sueño profundo (deep sleep), que permite un aprovechamiento óptimo de la energía, motivo por el cual ha sido adoptado en muchos dispositivos como "TV Sticks" que vienen de China.

El dispositivo puede funcionar conectado a un controlador, como un Arduino por ejemplo, o bien de manera autónoma puesto que es programable.

En el caso de funcionar conectado a un controlador, su manejo se realiza mediante comandos "AT" como si se tratase de un modem, utilizando el protocolo Hayes.

Presentación y conexiones

Como  hemos dicho, el chip mide 5mm de lado, y se puede soldar directamente sobre la placa, pero para nuestros propósitos, existe una presentación que se denomina ESP-01 (o ESP8266-01) que incluye el módulo ESP8266, un oscilador, y un interfaz con 8 pines de control (ver foto del párrafo anterior).

El conexionado de esta presentación es el que se muestra en la siguiente imagen:
  • RX: Recepción de datos.
  • GPIO0 y GPIO2: Estos dos pines son de entrada/salida, y se utilizan para arrancar el módulo en distintos modos: modo normal, programación, etc. Hay quien dice que deben conectarse a una alimentación de 3,3V con una resistencia de "pull-up", pero para las pruebas que yo he hecho (tengo uno funcionando desde hace más de un año) simplemente los dejo sin conectar y el módulo arranca correctamente.
  • GND: Tierra
  • VCC: Alimentación. OJO: debe recibir una alimentación de 3,3V (en las especificaciones indica un máximo de 3,6V).
  • RESET: Alimentar para reiniciar el dispositivo.
  • CHPD: Si este pin recibe un valor lógico de 1, el dispositivo se mantendrá en modo activo, mientras que si recibe un 0 permanecerá suspendido. En mis experimentos, sueldo este pin directamente con el VCC de alimentación, a 3,3V.
  • TX: Transmisión de datos.

Funcionamiento

El dispositivo puede funcionar tanto como un cliente, para conectarse a una red Wifi, o como un servidor (por ejemplo para montar un minúsculo servidor web).

Todas las funciones se pueden controlar por medio de comandos AT (también conocido como Hayes), que son comandos de texto que se envían mediante una conexión serie y comienzan todos con las letras "AT". La lista completa de comandos se puede consultar en este enlace, pero a continuación hago un pequeño resumen para ver qué podemos llegar a conseguir con él:

  • AT+CWLAP: Permite obtener una lista de las distintas redes Wifi disponibles.
  • AT+CWJAP: Nos permite conectarnos con una red especificando su SSID y contraseña.
  • AT+CIFSR: Nos permite consultar la dirección IP obtenida.
  • AT+CIPSTART: Inicia una conexión con una dirección IP remota.
  • AT+CIPSEND: Envía datos a la dirección especificada anteriormente.
  • AT+CIPCLOSE: Termina la conexión con la dirección remota.
  • AT+CIPSERVE: Inicia o finaliza el modo servidor.
Como se puede ver, su utilización es muy simple. Además, siempre podemos utilizar una librería que nos permita enviar los comandos necesarios.

Librerías

Para utilizar este módulo con Arduino, hay numerosas librerías; sobre todo considerando la posibilidad de utilizarlo como dispositivo independiente o como dispositivo serie conectado al Arduino.

La librería "oficial" de la comunidad ESP8266 es la siguiente:


Aunque la que yo he utilizado hasta ahora es esta otra (de James Sleeman) que es muy fácil de utilizar:


Precios

Finalmente, este módulo está disponible en una gran cantidad de sitios. Como siempre yo lo compré directamente a China en este enlace de Aliexpress, aunque parece que ya no lo tienen disponible. Da igual, en este otro enlace lo tienen aún más barato, a 1,70$ y es un éxito de ventas.