Ce projet est un sonomètre connecté utilisé dans la salle des machine d'Eirlab à l'ENSEIRB-Matmeca (33). Il permet d'avertir les utilisateurs en cas d'intensité sonore trop importante, via une LED RGB et un afficheur LCD.
L'ESP32 lance un serveur répondant aux URI /sound
et /history
. Ceux-ci sont utilisés par le serveur web lancé sur une autre machine, qui fait une requête toutes les secondes pour mettre à jour la page web.
L'interface utilisateur affiche la valeur en décibels actuelle, ainsi qu'un historique des valeurs moyennes sur 5 secondes sur la minute passée.
Le fichier à envoyer à l'ESP 32 est situé dans le dossier code. Remplissez le ssid et le mot de passe de votre réseau et envoyez le via l'IDE Arduino de votre choix. À l'initialisation, l'ESP 32 envoie sur le port Serial son adresse IP locale. Celle-ci est à reporter dans la variable ESP32url
du fichier app.py
.
L'installation du serveur se fait via uWSGI (plus d'infos ici).
Cette fonction permet de faire le lien entre l'amplitude mesurée (ampl). Pour plus de précisions, modifiez-la en testant avec vôtre micro. Ici j'ai opté pour une approche linéaire par morceaux, mais la vraie manière de calculer le volume en décibels est d'utiliser sa définition logarithmique, si vôtre micro est assez précis.
int matchDB(double vol)
{
if (ampl < 150)
{
return 38;
}
if (ampl < 500)
{
return 0.062 * ampl + 39;
}
double temp = 0.02 * ampl + 60;
if(temp > 100) temp = 100;
return temp;
}
- L'interface web utilise le thème bootstrap SB Admin 2. Merci à Start Bootstrap pour leur travail.
- Merci à Eirlab pour l'accueil et la mise à disposition du matériel.