4.3.4 Testeur de bruit intelligent

4.3.4.1 Aperçu

Img

Le testeur de bruit intelligent, également appelé sonomètre ou décibelmètre, sert à détecter le bruit. Le bruit est classé en différents niveaux, et le microphone du micro:bit détectera son intensité dans l’environnement en temps réel. En fonction des niveaux, le micro:bit les divise en plusieurs grades.

Dans ce projet, l’écran OLED affichera le niveau sonore actuel en temps réel, et la matrice de LED 5×5 allumera/éteindra certaines LED en fonction du niveau sonore.

Ce type d’appareil a considérablement abaissé le seuil technique et le coût de la surveillance du bruit, il est donc largement utilisé pour la surveillance du bruit ambiant, la santé et sécurité au travail, les chantiers de construction, les lieux de divertissement, etc.

Img

4.3.4.2 Connaissances des composants

Img

Microbit Microphone

Img

La carte micro:bit V2 est équipée d’un microphone qui détecte les sons et les signaux audio. Le microphone est placé en haut de la carte (le petit trou, qui sert à capter les signaux sonores ambiants, et un indicateur LED se trouve à côté du trou). La puce qui contrôle et traite le microphone est située au dos de la carte.

Lors de l’utilisation, placez simplement la carte micro:bit face vers le haut.

Img

Lorsque la carte détecte du son, l’indicateur LED du microphone s’allume.

Img

Img

4.3.4.3 Composants requis

Img

Img

Img

micro:bit V2 main board ×1

shield pour micro:bit ×1

OLED display ×1

Img

Img

Img

câble micro USB ×1

fil 4 broches ×1

porte-piles ×1

Img

Pile AA(préparées par vos soins) ×6

4.3.4.4 Schéma de câblage

⚠️ Lors du câblage, veuillez faire attention à la couleur des fils.

OLED display

wire color

micro:bit shield pin

micro:bit board pin

GND

black

G

G

VCC

red

V2

V

SDA

blue

20

P20

SCL

green

19

P19

Img

4.3.4.5 Logique du code

Img

4.3.4.6 Code de test

⚠️ Conseil 1 : Avant de télécharger le code sur la carte Microbit, veuillez importer le fichier de bibliothèque “oled_ssd1306.py” en vous référant àImporter la bibliothèque sur MU” .

Img

Code complet :

# importer les bibliothèques associées
from microbit import *
from oled_ssd1306 import *

# initialiser et effacer l'oled
initialize()  # initialiser l'oled
clear_oled()  # effacer l'oled

# fonction pour mapper une plage de valeurs sur une autre
def map(value, fromMin, fromMax, toMin, toMax):
    fromRange = fromMax - fromMin
    toRange = toMax - toMin
    valueScaled = float(value - fromMin) / float(fromRange)
    return toMin + (valueScaled * toRange)

# ensemble d'images pour un graphique à barres simple
graph5 = Image("99999:""99999:""99999:""99999:""99999")
graph4 = Image("00000:""99999:""99999:""99999:""99999")
graph3 = Image("00000:""00000:""99999:""99999:""99999")
graph2 = Image("00000:""00000:""00000:""99999:""99999")
graph1 = Image("00000:""00000:""00000:""00000:""99999")
graph0 = Image("00000:""00000:""00000:""00000:""00000")

allGraphs = [graph0, graph1, graph2, graph3, graph4, graph5]

# ignorer la première lecture du niveau sonore
# soundLevel = microphone.sound_level()
# sleep(100)

while True:
    # mapper les niveaux sonores de la plage 0-255 vers 0-5 pour choisir l'image du graphique
    soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
    display.show(allGraphs[soundLevel])
    clear_oled() # effacer l'OLED
    add_text(0, 0, "Acoustic Sound Level:")  # Afficher la chaîne de caractères à la position correspondante sur l'OLED
    add_text(0, 2, str(microphone.sound_level()))  # Afficher soundLevel à la position correspondante sur l'OLED
    sleep(200)

Img

Brève explication :

① Importer les bibliothèques microbit et oled_ssd1306.

from microbit import *
from oled_ssd1306 import *

② Initialiser les pixels de l’OLED, effacer l’OLED.

initialize()  # initialiser l'oled
clear_oled()  # effacer l'oled

③ Définir une sous-fonction map (pour mapper n’importe quelle plage de nombres sur une autre).

def map(value, fromMin, fromMax, toMin, toMax):
    fromRange = fromMax - fromMin
    toRange = toMax - toMin
    valueScaled = float(value - fromMin) / float(fromRange)
    return toMin + (valueScaled * toRange)

④ Définir un ensemble d’images pour un graphique à barres simple.

graph5 = Image("99999:""99999:""99999:""99999:""99999")
graph4 = Image("00000:""99999:""99999:""99999:""99999")
graph3 = Image("00000:""00000:""99999:""99999:""99999")
graph2 = Image("00000:""00000:""00000:""99999:""99999")
graph1 = Image("00000:""00000:""00000:""00000:""99999")
graph0 = Image("00000:""00000:""00000:""00000:""00000")

allGraphs = [graph0, graph1, graph2, graph3, graph4, graph5]

⑤ Mapper la plage de valeurs sonores de 0-255 vers 0-5 pour sélectionner l’image graphique.

soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
display.show(allGraphs[soundLevel])

⑥ Lire la valeur détectée et l’afficher sur l’OLED.

clear_oled() # effacer l'OLED
add_text(0, 0, "Acoustic Sound Level:")  # Afficher la chaîne de caractères à la position correspondante sur l'OLED
add_text(0, 2, str(microphone.sound_level()))  # Afficher soundLevel à la position correspondante sur l'OLED
sleep(200)

4.3.4.7 Résultat du test

Img

Après avoir câblé et alimenté via le câble micro USB, connectez une alimentation externe (6 piles AA) pour assurer une alimentation suffisante, puis cliquez sur “Flash” pour télécharger le code sur la carte micro:bit.

Img

Après avoir téléversé le code de test, appuyez sur le bouton reset au dos du micro:bit.

Img

Soufflez de l’air (ou faites un bruit très fort) dans le microphone de la carte Microbit (⚠️ rappel spécial : souffler de l’air a un effet plus visible), et l’affichage OLED montrera des informations en temps réel liées à l’intensité du souffle d’air (ou du bruit), permettant aux utilisateurs de comprendre intuitivement l’intensité du souffle (ou du bruit). Parallèlement, l’écran matriciel 5×5 LED de la carte Microbit augmentera ou diminuera progressivement le nombre de rangées de LED allumées en fonction de l’intensité du souffle (ou du bruit), produisant un effet d’indication de l’intensité.

Img

⚠️ Note : Les briques (building blocks) utilisées dans l’expérience ne sont pas incluses dans ce kit.

(Astuce : Si aucun résultat n’est observé, veuillez appuyer sur le bouton reset de la carte micro:bit.)

Img