Interphone wifi multi-postes avec un Raspberry Pi

0 titre1

Difficulté:

ReBonjour à tous, Voici un objet qui amuse bcp les enfants, mais qu'on peut aussi adapter pour un interphone de porte. J'ai beaucoup cherché une façon pour streamer de l'audio par le wifi, et finalement j'ai réalisé mon projet de la façon qui me semble la plus simple: en utilisant une connexion ssh et les commandes arecord/aplay du pilote ALSA de la sortie sonore de notre raspberry. Le principe est simple, on presse le bouton quand on parle, et notre interlocuteur nous entend :) Dans ma version j'utilise un bouton rotatif avec plusieurs interphones, mais on peut évidement n'en utiliser que deux et ainsi ne mettre qu'un seul bouton. Sinon j'utilise un micophone USB, un Haut-parleur amplifié, et un fichier python.

Matériel

1 titre2

Budget:

300 €

Fichiers techniques:

1-schema.png

Etape 1 : Liste du matériel (pour un interphone)

 Raspberry Pi 3

 Micro SD Card

 1 adaptateur secteur (moi j'ai utilisé un 5v 6A pour alimenter aussi l'ampli)

 1 Microphone USB

 1 Haut-parleur 8 Ohms 10W (en fonction de l'ampli)

 1 ampli pour le HP (moi j'ai utilisé celui d'Adafruit 20W MAX9744)

 1 câble avec 2 prises Jack

 1 Led rouge 10mm (témoin d'emission)

 2 Boutons poussoir au minimum (un pour parler et un pour éteindre le Raspberry)

 1 résistance de 100 Ohms

 1 résistance de 10 KOhms

 1 platine en bakélite

si plusieurs interphones:

 un encodeur rotatif de sélection

 plusieurs Leds (le même nombes qu'il y a de postes)

 2 Boutons poussoir (pour déclencher un buzzer, et le mode "absent")

 1 buzzer et son transistor NPN

 X résistances de 100 Ohms et 10 KOhms (le même nombes qu'il y a de postes)

Etape 2 : Le code python

2 code

Fichiers techniques de cette étape :

record-a.py tuto.py

Etape 3 : Le schéma électronique

1 schema

Etape 4 : Configuration du système

On modifie les noms des raspberry en "rasptalk-a", "rasptalk-b", "rasptalk-c" ...

 sudo nano /etc/hostname -> modifier le nom, puis dans sudo nano /etc/hosts -> idem tout en bas

Etape 5 : Mise en place d'un certificat SSH

Pour pouvoir utiliser une connexion ssh sans avoir à entrer un mot de passe, nous allons créer un certificat sous forme de clef privée, clef publique.

S’il n’existe pas, créer le répertoire .ssh

 mkdir $HOME/.ssh

 sudo chmod 700 $HOME/.ssh

Aller dans le répertoire .ssh

 cd $HOME/.ssh

Nous allons générer nos clés, -b 4096 permet d’augmenter la sécurité de votre clé au lieu de 2096 par défaut, le -C "commentaire" servira à

repérer la clef publique parmi d’autres dans le fichier ~/.ssh/authorized_keys que nous créerons plus tard sur le serveur.

 ssh-keygen -b 4096 -C "pi@rasptalk-a"

La commande nous demande d’indiquer le nom du fichier dans lequel sauver les clefs:

 On fait juste [ENTER] de sorte que la clef soie générée et placée dans le dossier .ssh/id_rsa

 Puis je laisse la passphrase vide afin qu'il ne la demande pas

Nous voilà avec une clé privée (id_rsa) et une clé publique (id_rsa.pub)

La clé privée doit être gardée dans le répertoire .ssh et la publique est celle à mettre sur le serveur qui veut se connecter.

Il faut maintenant ajouter de la clé publique au fichier authorized_keys situé dans le dossier /home/user/.ssh du serveur:

(Le fichier authorized_keys peut contenir plusieurs clés publiques)

 cat id_rsa.pub | ssh <USERNAME>@<IP-ADDRESS> 'cat >> ~/.ssh/authorized_keys'

La ligne est ajoutée au fichier ~/.ssh/authorized_keys du serveur sous la forme: ssh-rsa <LONGUE CLE CRYPTOGRAPHIQUE> commentaire

On va finir avec la modification de la configuration du service SSH: (donc en local pas sur le serveur..)

 sudo nano /etc/ssh/sshd_config

On dé-commente les lignes suivantes:

 PubkeyAuthentication yes

 RSAAuthentication yes

 AuthorizedKeysFile      %h/.ssh/authorized_keys

Maintenant une dernière chose, si on veut qu'un script exécuté par root puisse aussi utiliser la connexion ssh sans mot de passe:

Pour rendre possible la connexion à partir du compte administrateur d'un raspberry, il faut définir un mdp:

 sudo passwd root

puis se connecter en tant que root avec la commande:

 su

Vérifier que le dossier /root/.ssh existe (s'il n'existe pas: mkdir /root/.ssh)

Donnez-lui ces droits:

 chmod 700 /root/.ssh

Puis retourner dans $HOME/.ssh

 cd $HOME/.ssh

Envoyer les fichiers authorized_keys et id_rsa dans /root/.ssh

 cp authorized_keys /root/.ssh

 cp id_rsa /root/.ssh

Enfin on redémarre ssh:

 sudo service ssh restart

Etape 6 : Un synthétiseur pour vocaliser les erreurs

Installation d'un synthétiseur vocal qui lit les erreurs, par exemple si le correspondant est éteint:

 sudo apt-get install libttspico-utils

test de création du fichier .wav:

 pico2wave -l fr-FR -w fichier.wav  "Bienvenue en cette belle journée!"

lecture du fichier:

 aplay fichier.wav

Etape 7 : Configuer le microphone

2 rasp

vérifier que le micro soit vu sur le port USB:

 lsusb

qui donne genre: Bus 001 Device 008: ID 0d8c:0139 C-Media Electronics, Inc.

On peut vérifier que l'utilisateur pi soit bien dans le groupe audio:

 groups pi

Sinon on l'ajoute avec:

 sudo usermod -a -G audio pi

On va configurer le port du microphone et la carte audio:

 alsamixer

qui donne un shéma de réglage, utiliser F6 pour sélectionner la carte son:

bcm2835 est le raspberry (pour la sortie jack & hdmi)

et pour l'entrée mic: USB PnP sound device avec comme numéro de la carte: 1

Maintenant sur le shéma on peut monter le son du HP et du mic au moins à 50%

Tout à droite on peut enlever le ctrl automatique du gain en pressant la touche M (moi je le laisse auto)

Enfin enregistrer ces paramètres:

 sudo alsactl store 1

1 est le numéro de votre carte.

Pour tester l'enregistrement: un son de 4 secondes en 8 bit (venant du périphérique 1: -D plughw: 1):

 arecord -D plughw:1 -d 4 test.wav

et le lire avec:

 aplay test.wav

Voilà, une dernière petite chose à faire attention:

si vous utilisez comme moi un jack pour le son, on met la sortie audio du raspberry en analogique et non sur HDMI (bouton droit sur l'HP à coté de l'horloge)

Etape 8 : Pour booter directement sur un disque dur

3 ddur

Moi personnellement j'ai utilisé un pidrive, mais il est possible d'utiliser un vieux disque dur ou même une clé USB, voici un bon tuto:

http://www.framboise314.fr/boot-simplifie-sur-usb-avec-les-raspberry-pi-1-2-et-3/

Etape 9 : Conclusions

C'est fou comme une idée simple n'est jamais simple à mettre en oeuvre, mais qu'on fasse n'importe quel projet on apprend à chaque fois plein de choses :)

Une dernière chose, j'ai testé ce projet qu'avec Jessie et non avec Stretch, mais j'ai lu que PulseAudio et ALSA ne sont plus installé d'office sous Stretch, si quelqu'un peut me faire un retour..

Vous aimez ce tutoriel ?


Soyez le premier à poster un commentaire pour Interphone wifi multi-postes avec un Raspberry Pi


Recevez une fois par mois les meilleurs tutoriels Technologie dans votre boîte mail




S'inscrire:



En cliquant sur s'inscire, vous acceptez de respecter les conditions générales d'utilisation de Oui Are Makers.

  • Vues: 236
  • J'aime: 3