domingo, 10 de julio de 2016

Banana PI – WiringPi TFT touch 320x240


Banana PI – WiringPi TFT 320x240

Banana PI + WiringPi (WiringBpi) + RPI 2.8 TFT Add-on (Display TFT 320x240 [ILI9323DS])


Consiste en leer archivos BMP RGB888 (24 bits) y convertirlos a RGB565 (16 bits) para presentarlos en un Display TFT 240x320 (Raspberry PI 2.8 TFT Add-on)
con controlador ILI9323DS. El Display se controla mediante los pines GPIO de la BananaPi/RaspberryPi.

La librería de Seeed technologies inicialmente trabajaba para AVR/Arduino pero aqui fue modificada para funcionar conjuntamente con WiringPi.

El proyecto consiste de cuatro archivos tft.c, tft.h, font.h y main.c. El proyecto lo compilamos con gcc:

$ gcc -Wall -c main.c tft.c
$ gcc -o tftb main.o tft.o -l wiringPi
$ rm main.o tft.o

o creando un archivo makefile:

tftbin: tft.o main.o
           gcc -o tftbin main.o tft.o -l wiringPi
tft.o: tft.c
         gcc -Wall -c tft.c
main.o: main.c
             gcc -Wall -c main.c
clean:
          rm main.o tft.o

 Descargar Código fuente
 Descargar Archivos BMP (RGB888)
 Descargar WiringBpi


FormatoBMP: Un archivo BMP es un archivo de mapa de bits, es decir, un archivo de imagen de gráficos, con píxeles almacenados en forma de tabla de puntos que administra los colores como colores reales o usando una paleta indexada.
La estructura de un mapa de bits es la siguiente:
  • Encabezado del archivo
  • Encabezado de información del mapa de bits (también llamado encabezado de información).
  • Paleta (opcional)
  • Cuerpo de la imagen 
Encabezado del archivo
El encabezado del archivo proporciona información acerca del tipo de archivo (mapa de bits) y su tamaño, así como también indica dónde comienza realmente la información de la imagen.
El encabezado comprende cuatro campos:
La firma (en 2 bytes), que indica que se trata de un archivo BMP con dos caracteres BM (42 4D en hexadecimal) que indica que se trata de un mapa de bits de Windows
El tamaño total del archivo en bytes (codificado en 4 bytes)
Un campo reservado (en 4 bytes)
El desajuste de la imagen (en 4 bytes), es decir, la ubicación del comienzo de la
información de la imagen en relación con el comienzo del archivo


Archivo .bmp visto en GHEX
Firma: BM
Tamaño: 0x38436
Reservado: 0
Inicio del campo de datos: 0x36

Encabezado de información del mapa de bits
proporciona información acerca de la imagen, en especial las dimensiones y los colores.
El tamaño del encabezado de información del mapa de bits en bytes (codificado en 4 bytes). Los siguientes valores hexadecimales son posibles según el tipo de formato BMP: 28 para Windows 3.1x, 95, NT
El ancho de la imagen (en 4 bytes), es decir, el número de píxeles contados de forma horizontal
La altura de la imagen (en 4 bytes), es decir, el número de píxeles contados de forma vertical
El número de planos (en 2 bytes). Este valor es siempre 1
La profundidad del modelo de color (en 2 bytes), es decir, el número de bits usados para codificar el color. Este valor puede ser equivalente a 1, 4, 8, 16, 24 ó 32
El método de compresión (en 4 bytes). Este valor es 0 cuando la imagen no está
comprimida.

 

Encabezado: 0x28
Ancho: 0xF0 (240)
Largo:0x140 (320)
Planos: 0x01
Bits: 0x18 (24)
Compresión: 0x00
 
El tamaño total de la imagen en bytes (en 4 bytes).
La resolución horizontal (en 4 bytes), es decir, el número de píxeles por metro contado de forma horizontal.
La resolución vertical (en 4 bytes), es decir, el número de píxeles por metro contado de forma vertical.
El número de colores de la paleta (en 4 bytes).




Tamaño: 0x38400
Resolución H: 0x0B13
Resolución V: 0x0B13
Paleta: 0x0
El número de colores importantes de la paleta (en 4 bytes). Este campo puede equivaler a 0 cuando todos los colores son importantes. 
Todo lo demás son los Datos.













sábado, 9 de julio de 2016

WAV PLAYER AVR


WAV PLAYER AVR
Reproductor de archivos WAVE  (LPCM) 

Reproductor  de archivos WAVE LPCM utilizando microcontrolador AVR (ATmega328P), tarjeta SD de 16GB, 2GB y micro SD de 16GB, este reproductor soporta archivos WAVE con muestras de 8 bits, mono/estéreo, frecuencia de muestreo máxima de 96 kHz.

El microcontrolador AVR trabaja con una frecuencia de reloj de 16Mhz y se encarga de leer la tarjeta SD en donde se encuentran almacenados los archivos WAVE (.wav). Se usaron dos temporizadores del ATmega328P con los cuales se implementa un DAC mediante señales PWM y un filtro pasa bajos de primer orden,  el microcontrolador extrae los datos de la SD y los envía al respectivo temporizador.

Se puede producir señales de audio usando 2 timer del AVR funcionando como comparador. Haciendo uso de modo modulación por ancho de pulso (PWM) en combinación con un filtro pasa bajos, la salida del comparador puede ser usado efectivamente como un DAC para producir señal analógica de audio. Si limitamos la señal analógica modulada dentro de frecuencias comprendidas en el rango que por los humanos es reconocido como audio. Aproximadamente 20Hz – 20KHz, obtendremos sonido.

 Circuito
 SDC

Existen en internet varias versiones de reproductores WAVE, los hay con PIC24, dsPIC30F, AVR, ARM, etc. El principio es el mismo, mediante los temporizadores y filtro pasa bajos se implementa un DAC.
Este reproductor esta basado en la librería de ELM-CHAN Petit FatFs R0.02a , las cuales soportan FAT12/16/32, las memorias de 16GB que se usaron aquí están formateadas en FAT32.


El entorno de desarrollo para el atmega328 usado en este proyecto es: AVR studio 4.19 y para la simulación PROTEUS 7.9, usar MMCIMG para crear la imagen que contiene el archivo .wav, esto con fines de simulación en proteus, tambien pueden usar este archivo .mmc que contiene 2 archivos wav, 1 .txt y 1 .csv. Archivo (.mmc) para la SD/MMC de proteus
Archivos WAVE

WAV (o WAVE), es un formato de audio digital normalmente sin compresión de datos propiedad de Microsoft y de IBM que se utiliza para almacenar sonidos en el PC, admite archivos mono y estéreo a diversas resoluciones y velocidades de muestreo, su extensión es [.wav].




Wav File Header

Es una variante del formato RIFF (Resource Interchange File Format, formato de fichero para intercambio de recursos), método para almacenamiento en "paquetes.
A pesar de que el formato WAV es compatible con casi cualquier códec de audio, se utiliza principalmente con el formato PCM (no comprimido) y, al no tener pérdida de calidad, es adecuado para uso profesional. Para tener calidad CD de audio se necesita que el sonido se grabe a 44100 Hz y a 16 bits. Por cada minuto de grabación de sonido se consumen unos 10 megabytes de espacio en disco. En la cabecera del fichero se indica la longitud del mismo con un número entero de 32 bits, lo que limita el tamaño del fichero.
En Internet no es popular, fundamentalmente porque los archivos sin compresión son muy grandes. Son más frecuentes los formatos comprimidos con pérdidas, como el MP3 o el Ogg Vorbis
 
Simulación Proteus 7.9

 
Señal PWM


  
MP3 to WAV (8 bits)
  
WinImage (wimg

Cuadro comparativo entre Hardware/software PWM, R2R y DAC externo.

Código fuente pff.h (Indicar las funciones y formatos necesarios )
Código fuente mm.c (Indicar en que pin de cual puerto va conectado CS, revisar tambien spi.c)
Código fuente lcd.h (configurar pines para el display ) 

Código fuente (Descargar)
Esquema del circuito (Eagle)
Esquema del circuito en .pdf
Archivo (.mmc) para simular SD con proteus. (Adentro vienen 2 pistas en formato WAV y 2 archivos de txt... Abrir con MMCIMG)
Programa para formatear SD (FREE), micro SD, etc.
Programa para convertir MP3 en WAV (FREE)
AVR calculator
Documento para comprender el PWM con timers del micrAVR
Documento sobre PWM
Programa para crear y ver la imagen que usa proteus para simular (MMCIMG)
Programa para ver los archivos WAV en hexadecimal
Archivo .wav 48Khz, 8 bits, stereo
 

 
Actualización: a 4 botones: stop, play/pause, back, next.
Al encender aparece en estado stop... en este estado el MCU permanece rotando un mensaje en la segunda fila del display. Al presionar play/pause cambia a estado play, si de nuevo presionan play/pause cambia a estado pause.
En la esquina superior derecha del display se muestra   (  (Archivo .wav actual) / (total archivos en folder).
 

Esquema en Eagle

Simulación Proteus

  
Fuses en AVRISPmkll