lundi 8 février 2016

Création d'une horloge temps-réel pour Rasberry Pi

Afin de transformer un Raspberry Pi 1 modèle B en serveur de stockage de données pour l'acquisition des données de ma future station météo, j'ai voulu ajouter un composant particulièrement important et utile pour tout système informatique : une horloge temps-réel, ou Real-Time Clock (aussi dénommé « RTC »). Une RTC permet à un système, et donc au Raspberry Pi, de toujours être à l’heure, de manière exacte et très précise, sans avoir besoin d’internet.

Un module RTC se compose principalement d'un module RTC, d’un oscillateur à quartz et d’une pile de sauvegarde, qui permettra au module RTC de rester alimenté quand notre Pi sera éteint (et donc de garder l’heure en mémoire). On utilise généralement une RTC dans tout système qui a besoin d’accomplir des tâches dans des timings bien précis (un ordinateur, par exemple).

Je me suis principalement inspiré des 2 tutoriels de Adafruit :

Le but est de créer un module supplémentaire se connectant sur le Raspberry Pi en utilisant le bus I2C soit via le connecteur d'extension principale P1 ou via le connecteur P5. Afin de conserver libre le connecteur P1 pour une utilisation future (un écran LCD, par exemple), j'ai décidé d'utiliser le connecter P5. Sur ce dernier, les broches du connecteur sont : raspi_P5pinout.png

Les principaux composants sont donc :

  • un CI RTC MAXIM DS1307 (fiche technique) dialoguant en série (I2C) et alimenté en 5V
  • un quartz de 32.768kHz
  • un support de pile bouton CR2032 de 3V
  • une plaque d'essai perforée double couche
  • un condensateur de filtrage en céramique de 0.1µF
  • 2 résistances de 2.2kOhm

Le schéma de principe électronique de ce module est : rtcpi_schema.png

La vue du dessin et la vue de dessus de la platine : RTCpi1.jpg

La vue de dessous de la platine : RTCpi2.jpg

La vue du module installé sur le Raspberry Pi : RTCpi3.jpg

Pour en savoir plus :

lundi 25 janvier 2016

Création d'une breadboard de programmation pour ESP-01

C'est quoi l'ESP-01?

L’ESP8266 est un microcontrôleur à cœur Tensilica L106 (RISC 32bit) produit par la société chinoise Espressif Systems intégrant un module Wifi. Initialement cette puce était un « simple » module Wifi permettant à un microcontrôleur équipé d’une liaison série, tel un Arduino, de disposer d’une connectivité Wifi. Mais depuis Octobre 2014, Espressif a publié un kit de développement (SDK) permettant de reprogrammer la puce supprimant ainsi la nécessité d’un microcontrôleur séparé ! On peut donc maintenant développer sur ce microcontrôleur autonome en C++ natif, en Arduino, en Lua, etc…

Le module “ESP-01” produit par la société AI-Thinker embarque un ESP8266 qui se présente sous la forme d'un circuit imprimé minuscule (1,4cm x 2,4cm) équipé d'un connecteur double 4 broches (au pas standard de 2,54mm) avec une antenne intégrée et une puce de mémoire flash.

Le connecteur est composé de :

  • deux broches pour l’alimentation en 3,3V (Vcc et Gnd)
  • deux broches pour la connexion série (Tx et Rx)
  • une broche RST (reset) pour réinitialiser la puce en le connectant à la masse
  • une broche CH_PD (chip power-down) qui doit être alimenté en 3,3V pour activer le Wifi
  • deux broches GPIO pour vos I/O (GPIO0 et GPIO2)

Le GPIO0 a un autre rôle : il peut servir également à entrer dans le mode programmation (dit "Flash mode"). Pour cela, il faut le connecter à la masse. Ainsi l’ESP8266 ne démarrera pas son programme mais entrera dans l'"UART download mode", c’est-à-dire qu’il écrira tout ce qu’il reçoit sur la liaison série dans sa mémoire. De ce fait, pour programmer la puce, il faut redémarrer l’ESP en "Flash mode" afin de pouvoir écrire un nouveau firmware.

Une carte de programmation

C’est pourquoi, pour faciliter les opérations, je me suis fabriqué une carte de programmation afin de simplifier chaque manipulation/programmation de l’ESP. Il s’agit d'une carte réalisée dans une plaque d'essai avec un connecteur sur lequel on branche l'ESP-01.

Cette carte dispose de :

  • 1 connecteur de 6 pins femelles pour y connecter l’interface FTDI/USB facilement (seul les broches Vcc/Gnd/Rx/Tx sont utilisées)
  • 1 module de régulation AMS1117 5V->3,3V disposé sur 2 connecteurs (Vin(5V)/GND et Vout(3,3V)Gnd) pour l'alimentation (non nécessaire si l'adaptateur FTDI est en 3,3V)
  • 1 connecteur de 3 pin femelles pour les GPIO0, GPIO2 et GPIO16 (RST)
  • 1 bouton poussoir RST (celui du haut) pour faire un reset de l’ESP sans avoir à débrancher l'interface FTDI ou l'alimentation
  • 1 bouton poussoir PROG (celui du bas) pour entrer dans le “Flash mode” afin de charger le nouveau firmware dans l'ESP

De plus, on y trouve aussi:

  • 1 condensateur de 10µF sur l'alimentation en 3,3V pour servir de condensateur de filtrage
  • 2 résistances de rappel de 10kOhm pour mettre les bornes CH_PD et RST à l'état haut

Voici le brouillon du schéma de la carte : IMG_20160125_205048.jpg

Voici le schéma définitif de la carte de programmation : breadboard_esp01.png

Le recto/verso de la carte : IMG_20160125_201440.jpg

La breadboard complète : IMG_20160125_201315.jpg

En savoir plus :

dimanche 13 décembre 2015

Création d'un adaptateur pour mettre un ESP8266 ESP-01 sur une breadboard

Vu qu'il n'est pas possible de brancher un ESP-01 sur une platine d'essai à cause du connecteur, il m'a fallut créer un adaptateur comme celui-ci : IMG_20160219_230651.jpg

En savoir plus :

vendredi 23 octobre 2015

Un DAC audio à base Raspberry Pi

Je viens de m'offrir un petit ensemble audio (ampli + enceintes + lecteur CD + platine vinyle) fort sympathique pour mes oreilles. Or la totalité de ma musique (tous mes CD et mes morceaux achetés sur Internet) est hébergée dans mon NAS (un Synology DS414) sous forme de fichiers aux formats OGG et/ou FLAC. Donc pour accéder à cette musique dématérialisée, j'ai besoin d'un lecteur réseau audio équipé d'un DAC et capable de lire de la musique HiRes 24bits.

En parcourant des articles sur le site de Qobuz, je tombe sur beaucoup de lecteurs qui utilisent une solution à base de Raspberry Pi. Rien de tel pour me convaincre, surtout quand j'ai des Rapsberry Pi qui dorment dans les tiroirs. Mais les Raspberry Pi ont une qualité sonore très mauvaise (par la sortie Jack analogique), il va donc falloir lui rajouter une carte son.

Quelques questions de base

Qu'est-ce qu'un DAC?

Un DAC (pour Digital Analog Converter ou convertisseurs numérique-analogique) est un appareil (une puce électronique ou un dispositif plus complet) qui s’intercale entre une source numérique (lecteur CD, fichier audio numérique, sortie numérique audio d’un ordinateur) et l’amplificateur, pour opérer la conversion en analogique.

Les DAC Audio représentent la meilleure solution pour exploiter la musique contenue dans une bibliothèque musicale numérique avec une réelle qualité Hi-Fi. Ces petits boîtiers convertissent la musique de votre ordinateur ou de votre lecteur MP3 ou même de votre smartphone, en un signal analogique parfaitement adapté à votre chaîne Hi-Fi. Les DAC audio USB permettent de substituer la carte son de votre ordinateur pour que la musique retrouve toute la richesse de l'enregistrement original. (source : DAC Audio USB sur Son-Video.com)

Qu'est-ce qu'un lecteur réseau audio?

Les lecteurs réseau audio servent à lire des fichiers audio numériques ainsi que les radios web et les services de musique en ligne tels que Deezer, Spotify ou Qobuz. Équipés de convertisseurs audio numérique-analogique (DAC) de grande qualité, les lecteurs réseaux musicaux sont voués à remplacer les lecteurs optiques CD, SACD ou Blu-ray pour l'écoute musicale. (source : Lecteurs réseau audio sur Son-Video.com)

Mes recherches d'une solution

Coté matériel

Les recherches d'une carte son pour Rapberry Pi se soldent par les résultats suivants :

  • HiFiBerry est basé sur un DAC Burr-Brown (High Quality - 24 bit/192 KHz, supporté par la plupart des distributions Linux) et existe en différents modèles DAC+ (sorties analogiques) et Digi+ (sortie digitale TosLink, Circuit intégré d'interface S/PDIF dédicacé support jusqu'à 192KHz et résolution 24 bit). A voir sur https://www.hifiberry.com/
  • IQaudIO est basé sur un DAC Texas Instrument PCM5122 (Full-HD 192kHz / 24bit) et existe en différents modèles (sorties analogiques, sorties amplifiées 2x35W). A voir sur http://www.iqaudio.co.uk/
  • Différents modules à base de DAC Sabre ou TI sont présents chez Audiophonics dans la section DAC DIY

Coté logiciel

Il existe différentes distributions Linux complètes qui permettent de prendre en charge la partie multimédia du DAC avec la possibilité de la prise de contrôle à distance via une interface web ou une application mobile :

  • Raspbian : c'est la distribution de base des Rapsberry Pi et prends en charge naturellement ces DAC (voir la compatibilité sur les sites des cartes).
  • Volumio (anciennement RaspyFi), Max2Play et RuneAudio sont des solutions complètes clé-en-main de player multimédia contrôlable à distance et compatible avec le Raspberry Pi, le Beaglebone et le Cubox.
  • OpenElec et OSMC (anciennement RaspBMC) sont des distributions Linux permettant le montage d'un médiacenter basée sur Kodi (anciennement XBMC)
  • Pi MusicBox est un player réseau pour les site de steaming (Spotify, Google Music, SoundCloud, Webradio, Podcasts et d'autres) basé sur le serveur de musique Modipy (en python) et controlable via une interface web
  • piCorePlayer est un player réseau Squeezebox multiroom compatible avec le serveur Logitech Media Server

Mon Choix

Mon choix s'est donc porté sur les éléments suivants :

  • le boitier Audiophonics Boîtier DIY pour Raspberry Pi et DAC PCM5102,

  • une distribution piCorePlayer pour en faire un périphérique SqueezeBox, car j'ai déjà un serveur Logitech Media Server qui tourne sur mon NAS pour ma radio Logitech SqueezeBox Boom,
  • un dongle wifi Netgear WNA1000M-100FRS Micro Adaptateur USB Wifi-N 150 Nano Simple band 802.11n jusqu'a 150Mbps - compatible raspberry pi

IMG_20150602_193004.jpg

Le montage a été simple, il a fallu souder le connecteur GPIO sur le Raspberry Pi et y visser l'espaceur en pastique (encadrés en rouge) : IMG_20150602_193101.jpg

Vous noterez que j'avais déjà équipé la Raspberry Pi de refroidisseurs passifs sur les différents circuits intégrés.

Mon RaspDac en cours de fonctionnement connecté à ma chaîne Hifi : 20160104_230211.jpg

Conclusion

Au bout de plusieurs mois, je suis très satisfait de mon RaspDac qui a une très bonne qualité sonore et une bonne réactivité. A noter toute fois que le niveau de la sortie audio est un peu faible, car à même volume sur l'ampli, ma platine CD a un son plus fort que le RaspDac même avec le volume sonore réglé au maximum. Il me reste à voir le problème de lecture de certain fichier FLAC HiRes, je soupçonne plutot un problème de débit du réseau wifi dans ce cas.

L'évolution sera l'ajout d'un écran LCD (à voir la compatibilité avec piCorePlayer et le passage en Ethernet.

Propulsé par Dotclear

Sauf mention contraire, les contenus de ce site sont publiés selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International.
Licence Creative Commons I love Free Software!