Gå til innhold

Bygge et enkelt støymålerverktøy for bruk i barneskole


Anbefalte innlegg

Jeg jobber som lærer på en barneskole, og har merket meg at måling av støynivå i klasserommet er noe som ofte fenger elevene og motiverer til økt arbeidsinnsats. I det siste har jeg tegnet et diagram på tavla og plottet inn hvordan støyen i klasserommet er (for meg som lærer) ca hvert 5. minutt. I en klasse som over lang tid har slitt med klager fra andre lærere pga høyt støynivå falt støynivået i klasserommet til et sted mellom "arbeidsstøy", som spørring av sidemann om hjelp på en oppgave, blafring med papir etc, og "Så stille at vi kan høre en mus nyse" (hey, det er 3. klasse :p) rimelig raskt. Siden dette funket så bra fikk jeg lyst å prøve ut et enkelt program som måler støynivået i klasserommet i dB, og dytter dataene inn i et regneark som automatisk genererer en graf som vi så kan vise via en projektor eller bare på PC-skjermen. Dette er mest bare som et leketøy for min egen underholdning, men hvis det viser seg å fungere bra er det noe jeg kan være interessert å putte inn i klasserommet mitt.

 

Så kommer det virkelige spørsmålet. Har GNU/Linux et enkelt program som kan registere lyd og dytte dette ut i et lettfattelig format som kan implementeres i f.eks. OpenOffice Calc? Eller finnes det bedre alternativer enn det jeg har tenkt?

Lenke til kommentar
Videoannonse
Annonse

Vil tro at det kan gå an å bruke en vanlig (men følsom) mikrofon, og ettellerannet som måler amplituden på waveformen som mottas (alt av lydopptakssoftware bør kunne brukes til dette i større eller mindre grad). Problemet med et slikt oppsett kontra en "dedikert desibelmåler", er at du må kalibrere den for at den skal bli noe i nærheten av nøyaktig.

Lenke til kommentar

Dette kan være litt jalla, men bør funke ganske bra:

 

- Ta opp lyd med en mikrofon. (Mikrofonen må stå på samme sted hver gang, etc)

- Analysér lyddataene som kommer inn (volum).

- Kalibrér slik at lydvolumet som beregnes tilsvarer den reelle dB.

- Logg til fil i et format som enkelt kan parses av OOCalc.

 

Om det finnes programvare som gjør akkurat dette spesifikt vet jeg ikke, men kodingen av det grunnleggende bør ikke ta mange timene.

 

EDIT: Litt for treig :V

Endret av TheMaister
Lenke til kommentar

Man har alltids måleinstrumenter med USB og logging (plug'n'extract), disser koster vanligvis fra 100usd og oppover (finnes sikkert billigere hvis man leter litt). Kanskje litt vel dyrt for et hobbyprosjekt, men tenkte iallefall å nevne det.

Lenke til kommentar

#include <stdio.h>
#include <unistd.h>
#include <stdint.h>
#include <math.h>

#define LEN(x) (sizeof(x)/sizeof(x[0]))
#define OFFSET (0.0) // Kalibrering :')

float db_rms(int16_t *buf, int num, float offset)
{
  float sum = 0.0;
  float db;

  int i;
  for ( i = 0; i < num; i++ )
     sum += (float)buf[i] * (float)buf[i];

  sum = sqrtf(sum/num);
  db = 20.0 * log10(sum / 0x7FFF);

  return db + offset;
}

int main(void)
{
  int16_t buf[2048];

  int has_read;
  int tmp_read;

  int active = 1;

  while(active)
  {
     has_read = 0;
     while ( has_read < (int)sizeof(buf) )
     {
        if ( (tmp_read = read(0, (uint8_t*)buf + has_read, sizeof(buf) - has_read)) <= 0 )
        {
           active = 0;
           break;
        }

        has_read += tmp_read;
     }

     printf("%.1f\n", db_rms(buf, LEN(buf), OFFSET));
  }

  return 0;
}

 

Denne C snutten tar lyddata fra stdin (signed 16-bit PCM, mono) og printer ut RMS verdi i dB til stdout. Kan brukes til noe.

 

Kompilér med

gcc -o db db.c -lm

 

EDIT: Fiksa liten bug.

Endret av TheMaister
  • Liker 3
Lenke til kommentar

Haha, whaaaat! Gjorde du det der i natt TheMaister? Konge :) Takker og bukker :D

 

Olear, jeg var inne på tanken. Spørsmålet er bare om noe sånt funker med GNU/Linux. Kjipt å måtte gamble.

 

Da er det bare å vente på en liten tidsluke så jeg får fikle litt :)

Lenke til kommentar

Olear, jeg var inne på tanken. Spørsmålet er bare om noe sånt funker med GNU/Linux. Kjipt å måtte gamble.

Erfaringsmessig er det vell større sjanse for at utstyret fungerer lett i GNU/Linux enn i Windows når man taler om slike måleinstrumenter.

Lenke til kommentar

Ref. kalibrering; er det egentlig så tissetrengt i dette tilfellet? Har er det jo hovedsaklig for å vise forskjeller og endringer, og de blir jo (naturlig nok...) målt med det samme appapratet. Han trenger ikke å vite at 75dB faktisk ER 75dB. Unøyaktighetene øker selvsagt med økt lydtrykk, men...

Lenke til kommentar

Ref. kalibrering; er det egentlig så tissetrengt i dette tilfellet? Har er det jo hovedsaklig for å vise forskjeller og endringer, og de blir jo (naturlig nok...) målt med det samme appapratet. Han trenger ikke å vite at 75dB faktisk ER 75dB. Unøyaktighetene øker selvsagt med økt lydtrykk, men...

Øker de virkelig med økt lydtrykk? En dobling vil tilsvare 3db uansett hvor på skalaen du er.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...