Introduction
Afin de pouvoir utiliser mon RPi3 comme Baby Phone, il doit être capable d'écouter les bruits environnants et éventuellement pouvoir jouer des musiques ou des sons.
Le premier pré-requis est donc de pouvoir capturer et jouer un son avec le RPi3.
Cet article présente donc comment câbler une carte audio au Raspberry PI.
Audio Codec PROTO
Le Rpi3 n'est pas d'origine capable d'enregistrer un son, ni d'en jouer en qualité suffisante. La carte n'est pas pourvue d'un ADC ni d'un DAC.
Beaucoup de solutions existent pour ajouter une carte son. J'ai choisi d'utiliser la carte Audio Codec PROTO disposant d'un codec WM8731.
Celle-ci a l'avantage d'être déjà supportée par les overlays de configuration du Kernel linux fournie sur Rasbian. De plus, elle supporte l'amplification de l'entrée micro et une sortie audio amplifiée, suffisante pour une petit enceinte.
Branchements
La connexion de cette carte avec le Rpi3 est facile.
Un ancien câble en nappe de disque dur IDE de 40 points, quelques points de soudure, et voilà, une carte son fonctionnelle sur mon Raspberry Pi3!
La carte utilise les ports PCM et I2C du RaspberryPi présents sur le connecteur 40pins.
Description des pattes de la carte Audio Codec PROTO:
Pin | Description | Signal | Pin |
---|---|---|---|
SCK | Digital Audio Bit Clock | BCM 18 | 12 |
MISO | ADC Digital Audio Data Output | BCM 20 | 38 |
MOSI | DAC Digital Audio Data Input | BCM 21 | 40 |
ADCL | ADC Sample Rate Left/Right Clock | BCM 19 | 35 |
DACL | DAC Sample Rate Left/Right Clock | BCM 19 | 35 |
SDA | I2C Data | BCM 2 | 3 |
SCL | I2C Clock | BCM 3 | 5 |
3.3V | 3.3V | 1,17 | |
GND | GND | 34,39 |
Configuration
Une fois branchée, activez le driver en ajoutant cette ligne dans le fichier /boot/config.txt:
# Load Proto soundcard module
dtoverlay=rpi-proto
Cela va automatiquement activer et charger les modules du Kernel Linux nécessaires.
Utilisation
Ensuite, il ne reste plus qu'à capturer en utilisant arecord ou rec.
Le petit script shell ci-dessous permet d'enregistrer les sons provenant du micro connecté à la carte PROTO tout en détectant les silences.
#!/bin/bash
# Required by rec
AUDIODEV=hw:1,0
export AUDIODEV
# Run specific commands for PROTO board.
PROTO=1
[ $# -lt 1 ] && set -- "voice"
if [ $PROTO -eq 1 ]; then
# Input Mux: Mic
amixer -c 1 cset numid=14 1
# ADC Filter: off
amixer -c 1 cset numid=8 off
# Mic Capture Switch: on
amixer -c 1 cset numid=6 on
fi
# Record at 44100, splitting record at silence
rec -S -r 44100 -p channels 1 silence 1 0.5 5% 1 0:05 5% | \
sox -p -b 16 $1.wav silence 1 0.25 5% 1 2.0 5% : \
newfile : restart
if [ $PROTO -eq 1 ]; then
# Mic Capture Switch: off
amixer -c 1 cset numid=6 off
amixer -c 1 cset numid=14 0
fi
Vous pouvez aussi utiliser FFMPEG ou tout autre programme compatible avec la librairie ALSA.
Commentaires