View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Programmer le pcDuino : Audio : Détecter un bruit.

Par X. HINAULT - Juin 2013

Ce que l'on va faire ici

  • Dans ce code, je montre comment pyduino permet de détecter simplement un bruit à l'aide d'un simple micro de webcam grâce à la fonction waitSound() qui permet notamment de fixer le seuil sonore de détection.
  • Couplée à d'autres fonctions Pyduino (capture d'image, envoi de mail, ...), cette fonction pourra s'avérer particulièrement utile.

Pré-requis

Schéma fonctionnel

  • L'entrée audio simple permet de détecter un son :

Matériel nécessaire

Système

  • Le pcDuino
  • Une entrée audio opérationnelle :
    • le micro intégré d'une webcam (le plus simple)
    • une carte audio USB avec entrée audio et un micro

E/S

  • aucun matériel

Instructions de montage

  • Simplement connecter le micro (ou la webcam) au mini-PC :

Le montage à réaliser

Le fichier *.py

Copier/coller ce code dans l'éditeur Geany :

#!/usr/bin/python
# -*- coding: utf-8 -*-

# exemple pyDUino - par X. HINAULT - www.mon-club-elec.fr
# Aout 2013 2013 - Tous droits réservés - GPLv3
# voir : https://github.com/sensor56/pyDuino

# test WaitSound

from pyduinoMultimedia import * # importe les fonctions Arduino pour Python + Multimedia

# entete declarative

#--- setup ---
def setup():
        return # si vide

# -- fin setup --

# -- loop --
def loop():

        Serial.println("Ecoute bruit... ")
        #waitSound() # attend un son... fonction bloquante - seuil detection par defaut = 10% pendant 0.1sec
        waitSound(25,0.1) # attend un son... fonction bloquante - seuil detection 25% pendant 0.1sec
        Serial.println("Detection de bruit ! Il est " + nowtime(":"))

        # lancer simultanement <pulse audio volume control> et regler les niveaux si besoin

# -- fin loop --

#--- obligatoire pour lancement du code --
if __name__=="__main__": # pour rendre le code executable
        setup() # appelle la fonction main
        while not noLoop: loop() # appelle fonction loop sans fin


 

Ce code est également disponible ici : https://github.com/sensor56/pyduino-exemples/blob/master/Audio/WaitSound.py

Utilisation

  • Connecter le micro (le plus simple = une webcam avec micro-intégré)
  • Vérifier les niveaux de son au préalable avec Audacity
  • Appuyer sur le bouton exécuter dans Geany
  • Une fenêtre de Terminal doit apparaître : un message indique alors que le programme écoute un bruit
  • Ouvrir, si vous voulez visualiser l'entrée audio sous forme graphique, le <pulse audio volume control> depuis le menu graphique "Sons et Vidéos" : placez vous dans l'onglet "recording". Sélectionner la bonne entrée audio si besoin : vous devez alors voir le niveau son varier
  • Si un bruit suffisamment fort est détecté, un message l'indique dans le Terminal.

Discussion technique

  • Un niveau sonore de l'ordre 20% donne de bon résultats sur un clap des mains.