Is er nog ruimte voor een zelfbouw-geluidsmeter?

Ik vind het leuk om dingen te verzinnen en te pionieren met nieuwe technologie.

Begin 2019 heb ik een proof-of-principle gemaakt van een geluidsmeter bestaande uit een digitale microfoon en een ESP32-bordje. De ESP32 is de krachtiger broer van de ESP8266 die in de luftdaten node gebruikt werd. Deze heeft meer geheugen en meer processorkracht en kan bijvoorbeeld een FFT-berekening uitvoeren waarmee je het relatieve geluidsniveau per afzonderlijke frequentieband kan bepalen. Met deze kennis zou je bijvoorbeeld kunnen compenseren voor eigenschappen van de microfoon of de behuizing. Ook kan je zo een weging toepassen, bijvoorbeeld een A-curve, waarbij de lage en de hoge tonen minder meetellen bij de omrekening van objectief naar subjectief geluidsniveau. Er bestaan ook al kant-en-klare ESP32-bordjes met LoRa aan boord, die gebruik ik nu ook al om fijnstofmeters uit te lezen en de data over LoRa naar sensor.community te sturen.

Dit project is destijds een beetje stil komen te liggen, om verschillende redenen.
Mijn voortgang heb ik gedocumenteerd op: EspAudioSensor - RevSpace

De firmware van de sensor.community ondersteunt inmiddels een ander type geluidssensor. Een korte blik daarop vertelt me dat je daarvoor een speciale PCB moet laten maken. Is zie dat er geen prijs genoemd wordt, het lijkt mij dat dit waarschijnlijk > 50 Euro moet gaan kosten.

De aantrekkingskracht van de oorspronkelijke luftdaten fijnstofsensor was nou juist de eenvoud en de prijs, je kon zelf een module in elkaar zetten en de prijs was (met slim inkopen) nog onder de 50 euro.
Ik denk dat dat met mijn ontwerp ook weer haalbaar is.

Zou het nog de moeite waard zijn om een dergelijk project weer op te pakken?
Met welke geluidsensoren wordt nu in het samenmeten project eigenlijk gemeten?
Heeft iemand een overzicht van de verschillende typen geluidssensoren die nu gebruikt worden?

Geluidsmetingen: er zijn er vele, veelal via I2C-bus gekoppeld aan je microprocessor en dat maakt het PCB bordje eenvoudig. PCB bordjes zijn met wat publiek beschikbare software prima te ontwerpen en er zijn services waar je je ontwerp heen kan sturen voor een 10-tal bordjes tegen redelijke prijs: orde grootte 10 euro per stuk.
Echter elke geluidsmeetexpert zal zeggen: gebruik je smartphone die is stukken beter en snel beschikbaar.

ESP32. Mij is niet niet duidelijk welke ESP32 met LoRa je op het oog hebt. 4 jaar geleden hebben we hier waarschijnlijk je bordje uitgeprobeerd in het RIVM vuurwerk project om te kijken of LoRa ipv wifi een DIY haalbare kaart was. Helaas: net als bij de ESP8266 te antieke en te beperkte ondersteuning (bijv C van 35 jaar geleden), teveel embedded firmware kennis eis, en belangrijker: LoRa werkte wel (max ca 2.5 km bereik) maar de chip gebruikt een on board antenne die sterk richtingsgevoelig is (dus veel uitval) en niet echt bestand tegen gebruik buitenshuis. De redenen waarom we gebruik maken in MySense van de op ESP32 gebaseerde PyCom LoPy-4 processor met als zeer belangrijk verschil: hogere computertaal Python-3, ruim geheugen, standaard en openbare software modules met makkelijk en standaard te gebruiken interface via FTP en Telnet, of IDE. Iets duurder (ca 40 euro) maar dat betaalt zich an gemak heel snel terug.
Ander voordeel: de LoPy heeft wifi, LoRa, Bluetooth en enkele andere communicatie on board zodat je bijv hem uit kan breiden in een soort mesh achtige cloud van meetkits. Bijv een super meetkit met de LoPy en enkele satelieten die via een simpel en batterij gevoede Bluetooth kanaal hun gegevens doorgeven.

Ik heb inmiddels wat rondgekeken, en de twee projecten die mij opvielen zijn:

  1. De sensor.community “DNMS” sensor, die als een soort add-on op de sensor.community fijnstofnode aangesloten kan worden: GitHub - hbitter/DNMS: Digital Noise Maesurement Sensor
  2. De geluidssensor die door Marcel Meek is ontwikkeld: GitHub - meekm/LoRaSoundkit: This Soundkit sensor measures continuously audible sound by analyzing the data using FFT

De DNMS sensor levert 1 geaggregeerde intensiteit op, die via een “slave” I2C interface beschikbaar wordt gesteld aan de sensor.community fijnstofnode en dan via WiFi naar sensor.community wordt gestuurd. De DNMS sensor heeft naar mijn idee diverse nadelen, voornaamste is dat er maar 1 getal uitkomt en je dus helemaal niks meer kan zeggen over de aard van het geluid (hoge frequenties, lage frequenties). Zit bovendien gekoppeld aan een fijnstofnode. Ik heb het I2C protocol bekeken en dat ziet er eerlijk gezegd nogal merkwaardig uit, met o.a. een CRC per data woord.

De sensor van Marcel Meek levert een intensiteits-spectrum op (dus geluidsintensiteit per octaaf of fractie daarvan) en stuurt de data zelf op via LoRaWAN.

Het plan is nu:

  • De sensor van Marcel gebruiken / verder ontwikkelen
  • De sensor stuurt zelf data over LoRaWAN, dus geen verplichte koppeling met een fijnstofnode, geen WiFi-afhankelijkheid. Natuurlijk wel coverage nodig van bijvoorbeeld TheThingsNetwork.
  • De sensor stuurt een intensiteitsspectrum door in plaats van een enkele ge-aggregeerde waarde
  • We maken backend software die van TheThingsNetwork de data ontvangt, hieruit alsnog de “LAeq” waarde kan berekenen op basis van de A-curve (+ evt correcties) en deze doorstuurt naar sensor.community. RIVM pikt zo te zien de data weer automatisch op van sensor.community.

Qua hardware wordt hiervoor een ESP32-bord gebruikt, bijvoorbeeld een TTGO LoRa32 V1. Het kan in principe op allerlei bordjes die een ESP32 microcontroller combineren met een LoRa chip. De meeste hebben ook een OLED displaytje, handig voor bijvoorbeeld tonen actuele meetgegevens of inloggegevens TheThingsNetwork. Deze bordjes hebben ook allemaal een aansluiting voor een externe antenne.

De LoPy-4 ziet er inderdaad interessant uit, is uiteindelijk ook een ESP32, kan dus alles wat de eerdergenoemde bordjes ook kunnen en heeft daarnaast nog Sigfox ondersteuning. Voor mij persoonlijk voegt gebruik van python niet zoveel toe, en heb nog geen ervaring met Sigfox. Leuk om in het achterhoofd te houden in ieder geval.

We hebben een prototype-koppeling gemaakt, er is een werkende geluidsmeter en ik heb een applicatie gescheven die de gegevens (min, max, gemiddeld geluidsniveau volgens A-curve) vanaf TheThingsNetwork weer doorstuurt naar sensor.community volgens dezelfde conventies als de “DNMS” geluidsensor. Broncode is hier te vinden:

Het wachten is nu nog op sensor.community op toestemming/afstemming zodat deze data daadwerkelijk geaccepteerd wordt. Als het met sensor.community niet lukt, kunnen we misschien kijken of we de data direct bij RIVM kunnen krijgen.

Een mogelijk probleem voor sensor.community is dat je met TheThingsNetwork niet kan garanderen dat je tenminste 1x per 5 minuten data kan aanleveren, vanwege de “fair access policy” van TheThingsNetwork. Je kan maar beperkt data sturen en 1x per 5 minuten is onder bepaalde omstandigheden teveel. Van fijnstofsensoren op de sensor.community kaart is bijvoorbeeld bekend dat ze niet langer getoond worden als het langer dan 5 minuten geleden is dat er data is ontvangen. We gaan nog zien of dat een breekpunt wordt.

Eerste resultaten: de koppeling werkt, geluidsdata wordt opgestuurd naar sensor.community en RIVM pakt het nu al automatisch op: