Projets:Perso:2015:SoftMp3AlarmClock

(WiP - formattage et edition en cours - j'aime le mediawiki!)

= Presentation = Il s'agit d'un petit projet consistant a fabriquer un petit radio-reveil MP3 fiable et agreable.

= Besoin = Ce sont ceux que je m'impose:
 * Reveil en douceur: augmentation (tres) progressive du volume sur une plage (parametrable) de plusieurs minutes, afin de sortir tranquillement de sa torpeur
 * Controle et regulation de la puissance audio des morceaux joues
 * Support au minimum MP3 (mais pkoi pas theora/autres)
 * Qualite audio correcte (surtout aucun clic), pas de parasites
 * Interface simple et agreable
 * Fiabilite (RTC en cas de coupures de courant nocturnes)

= Plateforme Materielle = Il n' est pas question pour moi d'utiliser des modules MP3 tout faits, dont la qualite audio et les interface de pilotage laissent a desirer.

Je me suis donc oriente vers un decodage software (libmad en virgule fixe) sur un MCU suffisamment puissant (LPC176x: ARM @100-120MHz), la sortie audio numerique etant envoyee en I2S vers un DAC, puis amplifiee par un petit ampli du lointain-est.

Microcontroleur
Pour l'instant j'ai le medium gun: du LPC 1768/1769, qui est un ARM Cortex-M3 (32bits) 512KiB flash, 64KiB sdram. Plein d'IOs (100pins). C'est le microcontroler utilise par le projet Smoothie, donc tres overkill pour un reveil, mais je compte m'en servir pour un autre projet d'imprimante multifonction, et je veux le maitriser a fond.

J'ai 2 devboards avec ce MCU:
 * une LPCxPresso http://www.embeddedartists.com/products/lpcxpresso/lpc1769_xpr.php (obsolete; son remplacant est a ~20E)
 * une carte Mini-DK2 (http://www.hotmcu.com/lpc1768minidk2-development-board-28-tft-lcd-p-12.html) avec le meme MCU, et un LCD tactile 2.8"

(et puis l'ARM c'est fun et baleze, meme si moins ouvert qu'un duino)

Il n'est pas exclu pour moi d'envisager de reduire le BOM dans le futur si des personnes sont interessees, en prenant par exemple du M4. (pour info, le LPC1768 nu coute quand meme 10E par 10 chez farnell).

DAC I2S
Tres simple a utiliser, supporte jusqu'a 24bits en 192kHz stereo. 3 euros le bouzin a l' unite chez farnell, que demande le peuple ?
 * Un WM8727 de wolfson (http://pdf1.alldatasheet.com/datasheet-pdf/view/90466/WOLFSON/WM8727.html)

Ampli
Pour l'instant un bete module chinois a un euro. A voir a terme, mais je n'ai aucun besoin de puissance

RTC
Idem un module achete il y a qq temps. pas besoin d'une super precision. Pilotage en I2C si mes souvenirs sont bons

Ecran
Pour l'instant le 320x200 de la carte mini-DK2, pilote en SPI. J'arrive a taper du 50FPS en DMA dessus, ca ne sera pas le point bloquant. Il faudra quand-meme travailler sur un pilotage efficace, car ca fait 64kpixels pour 64K de ram... Au pire peut-etre un LCD 2/4 lignes, mais bon le tactile c'est quand meme plus classe. Quelques bidouilles a faire au niveau de l' affectation des GPIOs, car il me semble qu' il y a des conflits entre la dalle tactile et l' I2S sur la mini-Dk2.

Stockage
Encore un bete module chinois a 1 boule, en spi, avec n'importe quelle carte SD. Peut etre une interface mass-storage via l'USB du MCU, mais pas prioritaire.

Alimentation
La je me tate. L' alim par usb actuelle est suffisante pour le dev. J' envisage des options piles/batteries, mais pour un reveil fixe, un petit transfo et un bete regul sont amplement suffisants (voir les evolutions possibles)

Et le reste
HPs, boitier, ... a voir

= Plateforme logicielle =
 * C++ barebone (plus fun!)
 * libmad pour le decodage mp3 en FFP (Fixed-floating point). Pas de FPU sur le MCU, evidemment !
 * GUI a definir, soit home made, soit autre si je trouve un truc vraiment light et pas trop hideux
 * Transferts I2S en DMA, pas le choix !

= Idees futures = - detecteur luminosite pour reduire la conso du backlight - Reduire le BOM serieusement: MCU moins cher, ecran moins cher ? - problematiques licence mp3 - besoin switcher en ogg-only si vendu ?
 * Travailler sur l'alim (batteries) pour eventuellement pouvoir en faire aussi un lecteur MP3 autonome (avec prise casque)
 * Voir si un interet pour en faire eventuellement un kit electrolab (long-term):

= Avancement =
 * 12/11/2015: QQ problemes de bits de bits de poids faible qui bavent d'un canal a l'autre sur le DAC
 * 19/11/2015: Enfin une belle sinusoide a 440Hz en sortie du DAC en clippant les bits, mais c' est un probleme de conf je pense