Hopp til innhold
Bokmål
Oppgave

NDLA-boksen: Støymåler

Støymålingssystemer bruker vi til å overvåke lydnivået i ulike miljøer. Med Arduino, mikrofon og lysdioder kan vi lage et enkelt system som viser støynivået visuelt. Systemet kan utvides med eksterne lys via reléplater og med display for bedre oversikt og varsling.

Hvordan virker et støymålingssystem?

Et støymålingssystem bruker en mikrofon som konverterer lydsignaler til elektriske signaler. Arduinoen leser signalstyrken og kan klassifisere den i ulike terskler (nivåer).

Du kan velge å lage ei fast oppdeling med grønn, gul og rød, eller som i vårt forslag benytte ei for å kunne endre farger og visning.

Klassifisering av nivåer kan for eksempel være

  • grønn diode: lavt støynivå – behagelig lyd

  • gul diode: moderat støynivå – oppmerksomhet nødvendig

  • rød diode: høyt støynivå – potensiell helsefare

Programmering med kunstig intelligens

For å få hjelp til å programmere dette prosjektet ved hjelp av kunstig intelligens må du gi prateroboten klare instruksjoner. Dersom du vil ha et svar som er tilpassa den konkrete oppgaven du jobber med, må du gi prateroboten så omfattende informasjon som mulig om oppgavekonteksten.

Instruks

Først må du fortelle prateroboten hvilken rolle den skal ha, slik at den vet hvordan den skal hjelpe deg.

Forslag til rolleinstruks

Jeg vil at du skal være min digitale veileder og hjelpe meg med oppkopling og programmering av en Arduino Uno R3.

Du skal bruke faguttrykk og ellers et språk og forklaringer som er tilpassa elever i videregående skole. Du skal være engasjerende og motiverende.

Først skal du forklare hvordan systemet jeg spør om, virker.

Så vil jeg ha en oversikt over komponentene jeg kan ha bruk for når jeg bygger dette systemet. Gi meg både navn og bruksmåter.

Jeg trenger også forslag til hvordan systemet skal koples sammen. Gi meg instruksjoner om hvilke pinner som skal benyttes på komponentene og Arduinoen, og om det er behov for resistorer i kretsen.

Du skal så lage en programkode som kan benyttes på systemet. Først forklarer du godt hver enkelt del av programmet. Så skriver du en komplett programkode.

Jeg ønsker at du lager ei liste over eventuelle vanskelige fagbegreper og forklarer dem med et enkelt språk.

Du skal også lage ei liste med praktiske eksempler på bruk av et slikt system i det virkelige liv.

Til slutt skal du lage et sammendrag av de viktigste punktene i svaret ditt.

Programkode

Når du har gitt prateroboten ei rolle, er du klar til å fortelle den hva du trenger hjelp til. Du må da informere om hvilke komponenter som skal koples til, og hva du ønsker at prosjektet skal gjøre.

Forslag til instruks om programkode

Du skal lage en programkode for Arduino Uno som skal måle lydnivå gjennom en mikrofon. Måleresultatet skal vises på ei RGB-stripe med seks dioder, og jeg ønsker at lavt støynivå skal vises med grønn farge, moderat lydnivå med gul farge og høyt støynivå med rød farge.

Det kan godt være visning med mønster på diodene, men det er viktig at dioden blinker kraftig ved rødt nivå.

Jeg skal kunne justere følsomheten for de ulike nivåene gjennom et potensiometer.

Verdiene skal oppdatere seg ti ganger hvert sekund.

Tenk over

Mikrofonmåling: Mikrofonmodulen sender lydsignaler som Arduino leser gjennom den analoge inngangen (A0). Verdien varierer mellom 0 og 1023, hvor høyere verdi betyr høyere støynivå.

Terskelverdier: Tre nivåer defineres: lavt, moderat og høyt, med justerbare terskelverdier.

Forslag til variabler til terskelverdier:

  • lavt nivå (< 200): grønn LED

  • moderat nivå (200–800): gul LED

  • høyt nivå (> 800): rød LED

Det kan også være lurt å fortelle prateroboten hvilke betegnelser komponentene du bruker, har, og hvilke tilkoplingspinner de har.

Eksempel: "RGB-stripa er en AdaFruit NeoPixel Strip 6 med tilkoplingene 5V, GND og DIN".

Faglig støtte

Prateroboten kan gi deg råd og veiledning om hvordan du skal kople ledninger og sensorer. Den kan også forklare hvordan programkoden er bygd opp, og hva de enkelte programlinjene betyr.

Forslag til instruks om faglig støtte

Gi meg ei god forklaring som beskriver hvordan jeg skal kople opp komponentene og Arduinoen. Jeg vil også at du skal gi meg ei god forklaring på hver enkelt programlinje, slik at det blir enkelt å forstå hvordan dette er programmert.

Bruksområde og utvidelse av prosjektet

Du kan også spørre prateroboten om hva et slikt prosjekt kan brukes til, og hvordan dette kan utvides ved å bruke flere sensorer og systemer.

Forslag til instruks om bruksområde og utvidelse

Gi meg forslag til hva dette prosjektet kan brukes til i det virkelige liv, og hvordan prosjektet kan utvides med flere komponenter.

Instruks til prateroboten

Når du snakker med prateroboten, kan du altså stille mange delspørsmål for å komme fram til riktig svar. Alternativt kan du samle alt som en lang instruks, men da får du også et langt svar og mye informasjon på en gang.

Vil du ha en komplett instruks, kan du bruke denne teksten:

Komplett instruks

Jeg vil at du skal være min digitale veileder og hjelpe meg med oppkopling og programmering av en Arduino Uno R3.

Du skal bruke faguttrykk og ellers et språk og forklaringer som er tilpassa elever i videregående skole. Du skal være engasjerende og motiverende.

Først skal du forklare hvordan systemet jeg spør om, virker.

Så vil jeg ha en oversikt over komponentene jeg kan ha bruk for når jeg bygger dette systemet. Gi meg både navn og bruksmåter.

Jeg trenger også forslag til hvordan systemet skal koples sammen. Gi meg instruksjoner om hvilke pinner som skal benyttes på komponentene og Arduinoen, og om det er behov for resistorer i kretsen.

Dette er programmeringsoppgaven du skal løse: Lag en programkode for Arduino Uno som skal måle lydnivå gjennom en mikrofon. Måleresultatet skal vises på ei RGB-stripe med seks dioder, og lavt støynivå skal vises med grønn farge, moderat lydnivå med gul farge og høyt støynivå med rød farge.

Det kan godt være visning med mønster på diodene, men det er viktig at dioden blinker kraftig ved rødt nivå.

Jeg skal kunne justere følsomheten for de ulike nivåene gjennom et potensiometer.

Verdiene skal oppdatere seg ti ganger hvert sekund.

Gi meg ei god forklaring som beskriver hvordan jeg skal kople opp komponentene og Arduinoen. Jeg ønsker også at du skal gi meg ei god forklaring på hver enkelt programlinje, slik at det blir enkelt å forstå hvordan dette er programmert.

Gi meg forslag til hva dette prosjektet kan brukes til i det virkelige liv, og hvordan prosjektet kan utvides med flere komponenter.

Illustrasjoner av støymåleren

Filer

I filene under finner du tegninger for å skrive ut sidevegger og lokk for å montere sensorene og displayet i denne øvelsen.

Du kan også laste ned et ferdig koplingsskjema og en ferdig instruks til bruk på NDLAs egendefinerte praterobot.

Løsningsforslag for programkode

I boksen under ser du et løsningsforslag for programmet ditt. Håper du klarer å lage ditt eget før du ser på dette!

Programkode

#include <Adafruit_NeoPixel.h>

#define LED_PIN 6 // Pin for LED-stripe

#define NUM_LEDS 6 // Antall LED-er i stripa

#define MIC_PIN A0 // Mikrofon tilkopla analog inngang A0

#define POT_PIN A1 // Potensiometer tilkopla analog inngang A1

Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {

strip.begin(); // Initialiser LED-stripe

strip.show(); // Slå av alle LED-er

Serial.begin(9600); // Start seriell kommunikasjon

}

void loop() {

int micValue = analogRead(MIC_PIN); // Les lydnivå fra mikrofon

int potValue = analogRead(POT_PIN); // Les følsomhetsjustering fra potensiometer

int thresholdLow = map(potValue, 0, 1023, 200, 400); // Juster terskelverdi for lavt nivå

int thresholdHigh = map(potValue, 0, 1023, 600, 800); // Juster terskelverdi for høyt nivå

Serial.print("Lydnivå: "); Serial.print(micValue);

Serial.print(" | Følsomhet: "); Serial.println(potValue);

if (micValue < thresholdLow) {

setLEDs(strip.Color(0, 255, 0)); // Grønn for lavt lydnivå

}

else if (micValue < thresholdHigh) {

setLEDs(strip.Color(255, 255, 0)); // Gul for moderat lydnivå

}

else {

blinkRed(); // Blinker rødt ved høyt lydnivå

}

delay(100); // Oppdatering 10 ganger i sekundet

}

void setLEDs(uint32_t color) {

for(int i = 0; i < NUM_LEDS; i++) {

strip.setPixelColor(i, color);

}

strip.show();

}

void blinkRed() {

for(int i = 0; i < 3; i++) { // Blinker 3 ganger raskt

setLEDs(strip.Color(255, 0, 0));

delay(100);

setLEDs(strip.Color(0, 0, 0));

delay(100);

}

}

Relatert innhold

NDLA-boksen

NDLA-boksen er spesialdesigna for Arduino-programmering. Her får du mulighet til å lage din egen boks til bruk i programmeringsøvinger.

RGB-diode

REG står for rød, grønn og blå. I en RGB-diode kan du få lys i disse fargene, men også andre farger ved å kombinere disse tre. Hvordan gjør du det?

Skrevet av Roger Rosmo.
Sist oppdatert 21.01.2025