Outils pour utilisateurs

Outils du site


wiki:tutoriels:jukebox_raspberry

Ceci est une ancienne révision du document !


Construire un Juke-box avec un Raspberry Pi

  • Porteur du projet : Damien MUTI DESGROUAS,
  • Date : Juillet 2018
  • Contexte : Apprentissage libre - Outil de développement de projet
  • Référence : ouvrage “Adventures in Raspberry Pi

Présentation du projet

Ce projet est tiré du chapitre 9 de l'ouvrage (en anglais) intitulé “Adventures in Raspberry Pi” disponible sur le lien suivant. Il s'agit d'un recueil de 10 projets permettant de se familiariser avec certains fonctionnalités de programmation et de traitement d'image de Raspberry Pi.

Ce projet permet de réaliser un Juke-box miniature à l'aide d'un Rasberry Pi. Il est composé d'une interface permettant de lire le titre des morceaux ainsi que le nom de l'artiste, via un écran LCD. L'interactivité s'effectue grâce à 4 boutons permettant de jouer ou mettre en pause (Play/Pause), stopper (Stop), avancer ou reculer dans la liste des morceaux à jouer.

Schéma du montage

Le schéma (fritzing) du montage est le suivant :

Les connections entre le Raspberry et les différents éléments (écran LCD, boutons, potentiomètre) sont les suivants (voir livre p201, 202, 212, 213):

  • A compléter…

Programme en Python

Le programme final permettant de contrôler la lecture des morceaux mp3 est le suivant :

#librairies
import glob, random, sys, vlc, time
import RPi.GPIO as GPIO
from Adafruit_CharLCD import *


#variables globales

# début du programme

#vérification des dossiers contenant de la musique .mp3
if (len(sys.argv)) <=1:
    print("Merci de préciser un dossier contenant des fichiers .mp3")
    sys.exit(1)

folder = sys.argv[1]
files = glob.glob(folder+"/*.mp3")
print(files)
if (len(files) == 0):
    print("Il n'y a pas de fichiers .mp3 dans le dossier ", folder)
    sys.exit(1)


# setup des pattes GPIO du raspbery
GPIO.setmode(GPIO.BCM)

PLAY_BUTTON = 11
STOP_BUTTON = 7
BACK_BUTTON = 4
FORWARD_BUTTON = 10

GPIO.setup(PLAY_BUTTON,GPIO.IN)
GPIO.setup(STOP_BUTTON,GPIO.IN)
GPIO.setup(BACK_BUTTON,GPIO.IN)
GPIO.setup(FORWARD_BUTTON,GPIO.IN)

# gestion de l'afficheur LCD
lcd = Adafruit_CharLCD()
lcd.clear
lcd.message("lancement de la musique !!")
print("lancement de la musique !!")



# mode shuffle : met dans un ordre aléatoire tous les fichiers .mp3 contenu dans le tableau "files"
random.shuffle(files)

#chargement des fichiers dans vlc
player = vlc.MediaPlayer()
medialist = vlc.MediaList(files)
mlPlayer = vlc.MediaListPlayer()
mlPlayer.set_media_player(player)
mlPlayer.set_media_list(medialist)

def handle_changed_track(event, player):
    media = player.get_media()
    media.parse()
    artist = media.get_meta(vlc.Meta.Artist) or "Artiste inconnu"
    title = media.get_meta(vlc.Meta.Title) or "Titre de la chanson inconnu"
    album = media.get_meta(vlc.Meta.Album) or "Album de la chanson inconnu"
    lcd.clear()
    lcd.message(title + "\n" + artist + " - " + album)

playerem = player.event_manager()
playerem.event_attach(vlc.EventType.MediaPlayerMediaChanged, handle_changed_track, player)



# boucle infinie

while True:
    #button = input("Appuyer sur la touche : 1, 2, 3, ou 4 ___ ")
    if GPIO.input(PLAY_BUTTON): #bouton Play/Pause
        print("Le bouton Play a été pressé")
        #print(title)
        if mlPlayer.is_playing():
            mlPlayer.pause()
        else :
            mlPlayer.play();
    elif GPIO.input(STOP_BUTTON): #bouton pause
        print("Le bouton Stop a été pressé")
        mlPlayer.stop() #arrêter la musique

        random.shuffle(files) #met dans un ordre aléatoire tous les fichiers .mp3 contenu dans le tableau "files"
        medialist = vlc.MediaList(files)
        mlPlayer.set_media_list(medialist)

    elif GPIO.input(BACK_BUTTON):
        print("Le bouton Back a été pressé")
        mlPlayer.previous()
        
    elif GPIO.input(FORWARD_BUTTON):
        print("Le bouton Forward a été pressé")
        mlPlayer.next()
            
    time.sleep(0.3)
    lcd.scrollDisplayLeft()
    

Le fichier fichier python peut être directement téléchargé sur le lien suivant :

Il est nécessaire de placer les morceaux de musique au format .mp3 dans un dossier “Musique” situé dans le dossier contenant le programme “jukebox4.py”.

Pour lancer le programme, il faut ouvrir un terminal et se placer dans le dossier contenant le programme “jukebox4.py” :

il faut ensuite lancer le code python dans le terminal :

sudo pyhton3 Jukebox4.py

wiki/tutoriels/jukebox_raspberry.1593443422.txt.gz · Dernière modification: 2020/06/29 17:10 de damien.muti