retrofit radio 70’s – DAB+

img_2196

Avec l’arrivée imminente du DAB+ dans ma région, ainsi qu’après le coup de jeune de l’agencement de notre cuisine (merci ikea), il est état temps de revoir le concept de ma radio DIY.

Comme j’avais envie de quelque chose qui ressemble à une vraie radio, mais qui devait avoir un peu de style (sans faire trop industriel ni trop plastique), je me suis mis à la recherche d’une radio ancienne. Après de longues recherches sur Ebay + Leboncoin et plusieurs hypothèses d’aspect (40’s, 50’s, 60’s, 70’s ou 80’s) mon choix s’est porté sur une radio typée 70’s pour trois raisons: c’est la dernière décennie où il était possible de trouver un boitier bâti avec des matériaux un peu nobles (bois, acier chromé), la généralisation du transistor depuis le milieu des années 60 faisait que les boitiers n’étaient pas trop volumineux (pas envie d’un truc de la taille d’un demi lave-vaisselle au milieu de la cuisine) et enfin, les formes de la hifi au sens large de cette décennie (70’s) était plutôt anguleuses et moins extravagantes que dans les 60’s où l’arrivée des moulages plastiques avait généré de nombreuses formes façon bio-design que l’on retrouva dans le monde de l’automobile des 90’s (bof bof).
C’est donc pour une poignée d’euros (une quarantaine) que j’ai pu acquérir via un vendeur belge (ebay) un magnifique poste KOYO 1661 qui marchait encore.
Mais il m’a fallu le désosser…..Argh !!!

img_2195

 

img_2194

img_2200

Je lui ai offert ensuite une nouvelle jeunesse !

 

 

 

 

ponçage des bois au grain 400 pour enlever le vernis hors d’âge, puis à la paille de fer pour l’aspect.
Passage au vernis nitrocellulosique en bombe + paille de fer + nouvelle couche de vernis pour redonner un fini bien lisse et satiné (façon bois ciré).

 

Pour les parties noires… un petit coup de peinture en bombe « noir mat » avec masquage du reste.

 

 

 

 

 

 

 

Certes, l’aspect extérieur cimg_2197ompte beaucoup dans cette opération, mais ce n’est pas l’essentiel. Le but reste quand même de capter le DAB+ dans ma cuisine !
Pour ce faire, je me suis tourné vers une solution pré-packagée, enfin presque…
Il s’agit en l’occurence d’un shield pour arduino baptisé dab shield et dialoguant via un port spi. Celui-ci est vraiment de bonne facture et possède deux gros avantages: il est livré avec une bibliothèque (ce qui est bien pratique) et son tuner embarqué est comptable DAB+ et FM ! Par contre, la bibliothèque est plutôt gourmande et j’ai du utiliser un arduino uno rev2 (basé sur un ATmega4809) que j’avais sous la main et qui offre une capacité de stockage 50% supérieur à un arduino uno classique. Ce n’est pas non plus folichon, on passe de 32kB à 48 kB, mais c’est suffisant pour héberger le programme qui dépasse les 30kB. Cerise sur le gâteau, la connectivité wifi permettra par la suite de potentiellement prendre le contrôle de l’arduino à distance (changer de station radio par exemple)

Bon recevoir la radio c’est bien, mais encore faut-il choisir une station, afficher ses caractéristiques (fréquence, nom etc..) et le principal: l’entendre. Pour réaliser ces trois opérations, l’idée était donc d’utiliser un encoder rotatif pour réaliser les opérations de navigation et de validation, un afficheur LCD  et enfin un ampli class D mono pour le son.

 

img_2192

Je m’attarde un peu plus sur l’écran LCD. J’ai voulu tester (et franchement, ça vaut le coup) un écran dit « intelligent » piloté par un port série. J’ai choisi un nextion NX4827T043 pour ce faire.

Alors comment cela fonctionne ? C’est plutôt simple: via un soft propriétaire sous windows (merci vmware sur mon mac) on conçoit un ensemble d’écrans avec différents types de zones (image, texte, texte défilant, barre de progression, vu-mètre…). Chaque écran (frame) possède son propre agencement de composants. Une fois l’ensemble conçu, il est compilé dans le soft puis transmis via le port série dans l’afficheur. Une fois cette opération faite, le port série permet d’interagir avec l’afficheur (changement d’écran, affichage de données dans les zones définies, etc..). coté Arduino la bibliothèque EasyNextionLibrary permet de simplifier au maximum ces opérations.

NB: pour le look, j’ai voulu reproduire l’aspect des vieux magnétoscopes avec leurs afficheurs VFD

Voila ce que cela donne en récupérant des données FM-RDS depuis le shield DAB et en les injectant dans l’afficheur via le port série.

img_2210Début de l’intégration de l’ensemble dans le  boitier :

vue de l’arrière:

img_2208

Voici le résultat final :-)) en situation dans la cuisine

img_2230

comme toujours, le code est dispo sur github:

https://github.com/Chnalex/arduino/blob/master/radioduino2.ino

Radio-réveil en bois…

20171230_174605

Mon radio-réveil ayant presque rendu l’âme, j’ai voulu construire moi-même le nouveau, mais en bois !!! Enfin presque ….
Je suis parti d’une base de boite à bijou, en bois brut, trouvée au rayon « loisirs créatifs » d’une grande chaine.

Jolies boite certes.. mais un peu triste. Comme l’aspect extérieur devait être sympa (quasi la première chose que je vois le matin.. après ma femme bien évidement 🙂 ), j’ai profité de la possibilité offerte par formulor.de d’utiliser un contre-plaqué de bouleau de 0.8mm (Cf. mes autres réalisations avec un casing fabriqué à partir de plaques d’acrylique découpées sur CNC laser) afin de réaliser un plaquage avec découpe et gravures sur deux faces (dessus et frontale).

img_1275

 

Pour l’électronique, rien de révolutionnaire pour le coup. Je suis parti de mon expérience avec la « RadioDuino » de ma cuisine. Le hardware est donc bâti à partir d’un arduino (un nano cette fois), d’un afficheur lcd 4×20 piloté par bus I2C, d’un tuner FM si4703 vendu par Sparkun (piloté également par bus I2C) et un petit ampli mono classe D basé sur un TPA2005D1 qui délivre 1.4W sous 8ohms.

20171230_174059

 

 

 

 

 

 

 

Afin de minimiser le nombre de pins utilisés sur l’arduino j’ai utilisé le principe des boutons poussoirs en parallèles munis, en série, d’une résistance afin de créer une pont diviseur de tension. Au final un seul port analogique permet de mesurer une tension différente pour chacun des boutons.

img_1596

Le changement d’heure d’été/hiver est assuré comme sur la domotique par la lecture régulière (chaque jour pendant la nuit) d’une table de dates de passage d’un mode à l’autre (déjà utilisé sur la domotique).

Pour la partie soft, le plus dur a été de trouver une police de très grand taille (en réalité une police composé de 3×3 caractères). Je me suis inspiré de l’article suivant: https://forum.arduino.cc/t/lcd-bigfont-numbers-over-2-or-4-lines/44538/12
en utilisant cette possibilité offerte par les afficheurs (sur base de contrôleur Hitachi HD44780) de pouvoir définir jusqu’à 8 caractères personnalisés (stockés dans la table interne du contrôleur sur les caractères de 0 à 7). 

les 10 chiffres utilisés sont stockés au sein de 3 tableaux de 10×3 valeurs. Par exemple pour afficher le chiffre 4 selon l’extrait de code ci-dessous, il suffira d’envoyer les caractères suivants (3 par ligne):
255,16,255
4,2,255
16,16,2

 

 

Ici les caractères 2 et 4 font partie de ceux crées. 255 est un rectangle plein (symbole en bas à droite du tableau ci-dessous b11111111) et le 16 un espace (1 symbole de la 3ème colonne b10000).
table ascii interne du controleur:

hd44780_characters_map

 

 

 

 

L’intégralité du code est disponible comme pour mes autres projets sur GITHUB:

https://github.com/Chnalex/arduino/blob/master/radio_reveil.ino

img_1597

 

Radioduino !!

radio-011-Large.jpg

Après le bureau, la cuisine !!!!
En trainant mes guetres sur le site de sparkfun, j’ai repéré un tuner FM piloté un bus I2C (changement de fréquence, recherche auto de station, données RDS), une nouvelle idée farfelue à germée….Réaliser une radio FM pour la cuisine avec pele-mèle: Un barometre, une horloge temps reel, un decodeur RDS avancé (refonte en profondeur de la bibliothèque d’origine fournie par sparkfun), un compte minute pour cuisiner, un ampli audio commandé par un simple potard, un joystick comme moyen d’interagir……et bien-sur, tout ça devant tenir dans un boitier de moins d’un mètre cube!!!!!!!!!!!!!

Pour changer un peu, j’ai utilisé un nouveau venu: l’arduino Micro, qui se distingue du nano par le fait qu’il intégrè le même microcontrôleur que l’arduino leonardo – un ATmega32u4. Cette puce a le gros avantage d’intégrer un port usb natif évitant de passer par un convertisseur série/usb, donc moins de composants sur le PCB. L’ATmega32u4 et sa gestion de l’usb permet aussi à l’arduino micro de simuler un clavier ou une souris.

radio 008 (Medium)

D’un point de vue composants/modules, beaucoup de déjà vu: horloge temps réel I2C snootlab, capteur de pression atmo Bosch BMP085, écran  LCD 4×20 sur bus I2C.

les trois nouveautés sont:
– le tuner FM I2C Si4703
– l’ampli miniature a base d’un TPA2005D1
joystick analogique avec click provenant des manettes de PS2

Pas de grand mystère pour le joystick, il est composé de deux potentiomètres dont on récupère la valeur de la tension issue du pont diviseur sur une entrée analogique de l’arduino.
Concernant le tuner FM, beaucoup de travail concernant la bibliothèque de traitement des signaux RDS. Celle fournie par sparkfun étant plutôt embryonnaire, il a fallu que je me plonge dans les spécifications de la norme RDS, afin de développer ma propre version de la bibliothèque pour afficher le RadioText en plus de la station (et pour ne pas m’arrêter en si bon chemin, j’ai implémenté la quasi totalité des fonctions RDS possibles AF-TA-PS-CT-RT-PI-TP-PTY). La bibliothèque est un fork de l’originale: https://github.com/Chnalex/Si4703_FM_Tuner_Evaluation_Board/tree/master/Libraries/Si4703_Breakout
elle est en court d’intégration dans le source initial….mais ce n’est pas très réactif coté sparkfun….. 😉
L’ampli, pour sa part,  est très simple d’emploi (entrée,sortie, emplacement pour un potentiomètre, alim). Il est de classe D, il fonctionne comme une alimentation à découpage (signal PWM comme pour l’horloge à galva) la bobine de l’HP servant à lisser le signal. Ce qui donne une très bonne qualité de restitution pour un ampli de cette taille (2cm X 2cm, conso quelques dizaines de mA, rendu 1.4W, rapport signal/bruit 97Db), et surtout sans effet de chauffe.

radio 007 (Medium)

La façade… c’est aussi une des composantes de la réussite du projet. J’ai trouvé sur un forum une référence à un site en Allemagne permettant de concevoir en ligne (via une appli web type CAO) des objets en 2D (découpe et gravure) sur différents matériaux :
http://www.formulor.de/createDesign
pour la façade, j’ai choisi une plaque d’acrylique très fine (1.5mm) de couleur noire

radio 005 (Medium)

un peu de scotch double-face avant d’appliquer la façade sur le boitier

 

 

radio 004 (Medium)

 

 

 

 

la façade avant

radio 006 (Medium)

 

 

 

 

 

le résultat ….

 

 

 

 

 

une petite vidéo du démarrage (init, splashscreen, infos RDS ->PS puis RT)

 

vidéo du fonctionnement  du compte-minutes ….. 😉

comme toujours, un petit tour par le source:

https://github.com/Chnalex/arduino/blob/master/radioduino.ino