Sonometre connecté (ESP32+ micro I2S)

Bonjour
-> Utilise : une carte dotée d’un ESP32 , un microphone sur bus I2S (modèle INMP441), 5 fils, alimentation 5V
-> Présente en ligne, via ThingSpeak, l'évolution du niveau sonore, en dBA
sono32.png

Résultat en extérieur (période de confinement, peu de circulation) et en intérieur calme
balcon.png
jauge.png

intérieur calme.png

Dans mon quartier une association de riverains, en bordure d’une départementale 4 voies très fréquentée agit depuis plus de 10 ans pour réduire les importantes nuisances sonores (réduction de vitesse à 70 km/h obtenue, compléments nécessaires, peut être un mur anti bruit en particulier au niveau d'une ecole maternelle dont la cour de récréation est peu utilisable)

J’avais dans l’idée de leur donner un ‘sonomètre connecté’ qui, par une mise en ligne en temps réel du niveau sonore, les aiderait à renforcer leurs effectifs en mettant en évidence sur leur site la situation en temps réel et souligner des épisodes particuliers.

Après avoir entrevu la piste du ‘hacking’ d’un sonomètre du marché (on trouve des réalisations pour certains modèles) je suis récement tombé sur un excellent code de sonomètre pour ESP32 sous IDE Arduino utilisant divers modèles de microphones I2S dont le mien, INMP441 de TDK
INMP441.png
J'ai présenté le microphone INMP441 ( sortie sur bus I2S) dans ce fil :

Le code, d’Ivan Kostoski est içi (utilisation explicite de RTOS)

Après acquisition du son (micro sur bus I2S) il applique deux filtres numériques dont celui de la pondération "A" Toutes les secondes il délivre le niveau sonore en dBA (cf Wikipedia)

J’ai eu très peu de choses à faire pour envoyer vers ThingSpeak le niveau sonore (à une cadence compatible avec la gratuité du service >15s)

Je met mon code en PJ vu la taille, dans celui-ci la visualisation sur écran OLED est désactivée, les paramètres d’accès à la box et à ThingSpeak sont à éditer…...

Toute carte à ESP32 convient. A noter que les signaux I2S, dans le cas de l’ESP32, ne sont pas figés sur broches particulières.

Utilisant içi une carte "Mini32" au format des D1 Mini j’ai choisi une disposition qui me permettra de faire un ’shield INMP441’ utilisable sur D1 Mini(ESP8266) ou ESP2

// I2S pins - Can be routed to almost any (unused) ESP32 pin.
//            SD can be any pin, inlcuding input only pins (36-39).
//            SCK (i.e. BCLK) and WS (i.e. L/R CLK) must be output capable pins
//
// Below ones are just example for my board layout, put here the pins you will use
//
#define I2S_WS            18
#define I2S_SCK           23
#define I2S_SD            19

// I2S peripheral to use (0 or 1)
#define I2S_PORT          I2S_NUM_0

Reste à faire : étalonner avec un authentique sonomètre, retoucher au besoin le code, tester sur ESP8266

sono32.png

extérieur.png

intérieur calme.png

Sono_32_ThingSpeak_PUB.ino (19 KB)

balcon.png

INMP441.png

jauge.png

Réservé pour des compléments

Très intéressant, merci pour le partage.

Tu peux envisager de le mettre dans un boîtier, avec une batterie, et gérer le sommeil pour une durée de vie aussi longue que possible.

c'est à l'étude !!

mais l'appareil sera installé à l'abri sur un balcon disposant d'une prise secteur, l'autonomie n'est pas la priorité.. et le boitier attendra...

je vais tester une jauge avec le service IO d'Adafruit qui permet,en version gratuite, de faire un envoi toutes les 2s, ça donnerait, si la latence est raisonnable, quelque chose de plus 'vivant', plus proche du ressenti que l'intégration du niveau sonore sur 1 minute environ...voire 15s avec la contrainte de ThingSpeak gratuit.

je reste volontairement pour l'instant sur l'option : "service tiers gratuit dans le nuage"