Hopp til innhald
Nynorsk
Oppgåve

NDLA-boksen: Støymålar

Støymålingssystem bruker vi til å overvake lydnivået i ulike miljø. Med Arduino, mikrofon og lysdiodar kan vi lage eit enkelt system som viser støynivået visuelt. Systemet kan bli utvida med eksterne lys via reléplater og med display for betre oversikt og varsling.

Korleis verkar eit støymålingssystem?

Eit støymålingssystem bruker ein mikrofon som konverterer lydsignal til elektriske signal. Arduinoen les signalstyrken og kan klassifisere han i ulike tersklar (nivå).

Du kan velje å lage ei fast oppdeling med grøn, gul og raud, eller som i forslaget vårt nytte ei RGB-stripe for å kunne forandre fargar og visning.

Klassifisering av nivå kan til dømes vere

  • grøn diode: lågt støynivå – behageleg lyd

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

  • raud diode: høgt 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 instruksjonar. Dersom du vil ha eit svar som er tilpassa den konkrete oppgåva du jobbar med, må du gi prateroboten så omfattande informasjon som mogleg om oppgåvekonteksten.

Instruks

Først må du fortelje prateroboten kva rolle han skal ha, slik at han veit korleis han skal hjelpe deg.

Forslag til rolleinstruks

Eg vil at du skal vere den digitale rettleiaren min og hjelpe meg med oppkopling og programmering av ein Arduino Uno R3.

Du skal bruke faguttrykk og elles eit språk og forklaringar som er tilpassa elevar i vidaregåande skule. Du skal vere engasjerande og motiverande.

Først skal du forklare korleis systemet eg spør om, verkar.

Så vil eg ha ei oversikt over komponentane eg kan ha bruk for når eg bygger dette systemet. Gi meg både namn og bruksmåtar.

Eg treng òg forslag til korleis systemet skal koplast saman. Gi meg instruksjonar om kva pinnar som skal nyttast på komponentane og Arduinoen, og om det er behov for resistorar i kretsen.

Du skal så lage ein programkode som kan nyttast på systemet. Først forklarer du godt kvar enkelt del av programmet. Så skriv du ein komplett programkode.

Eg ønsker at du lagar ei liste over eventuelle vanskelege fagomgrep og forklarer dei med eit enkelt språk.

Du skal òg lage ei liste med praktiske døme på bruk av eit slikt system i det verkelege livet.

Til slutt skal du lage eit samandrag av dei viktigaste punkta i svaret ditt.

Programkode

Når du har gitt prateroboten ei rolle, er du klar til å fortelje han kva du treng hjelp til. Du må då informere om kva komponentar som skal koplast til, og kva du vil at prosjektet skal gjere.

Forslag til instruks om programkode

Du skal lage ein programkode for Arduino Uno som skal måle lydnivå gjennom ein mikrofon. Måleresultatet skal visast på ei RGB-stripe med seks diodar, og eg vil at lågt støynivå skal bli vist med grøn farge, moderat lydnivå med gul farge og høgt støynivå med raud farge.

Det kan godt vere visning med mønster på diodane, men det er viktig at dioden blinkar kraftig ved raudt nivå.

Eg skal kunne justere sensibiliteten for dei ulike nivåa gjennom eit potensiometer.

Verdiane skal oppdatere seg ti gonger kvart sekund.

Tenk over

Mikrofonmåling: Mikrofonmodulen sender lydsignal som Arduino les gjennom den analoge inngangen (A0). Verdien varierer mellom 0 og 1023, der høgare verdi betyr høgare støynivå.

Terskelverdiar: Tre nivå blir definerte: lågt, moderat og høgt, med justerbare terskelverdiar.

Forslag til variablar til terskelverdiar:

  • lågt nivå (< 200): grøn LED

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

  • høgt nivå (> 800): raud LED

Det kan òg vere lurt å fortelje prateroboten kva nemningar komponentane du bruker, har, og kva tilkoplingspinnar dei har.

Døme: "RGB-stripa er ein AdaFruit NeoPixel Strip 6 med tilkoplingane 5V, GND og DIN".

Fagleg støtte

Prateroboten kan gi deg råd og rettleiing om korleis du skal kople leidningar og sensorar. Han kan òg forklare korleis programkoden er bygd opp, og kva kvar enkelt programlinje betyr.

Forslag til instruks om fagleg støtte

Gi meg ei god forklaring som beskriv korleis eg skal kople opp komponentane og Arduinoen. Eg vil òg at du skal gi meg ei god forklaring på kvar enkelt programlinje, slik at det blir lett å forstå korleis dette er programmert.

Bruksområde og utviding av prosjektet

Du kan òg spørje prateroboten om kva eit slikt prosjekt kan brukast til, og korleis dette kan utvidast ved å bruke fleire sensorar og system.

Forslag til instruks om bruksområde og utviding

Gi meg forslag til kva dette prosjektet kan brukast til i det verkelege livet, og korleis prosjektet kan utvidast med fleire komponentar.

Instruks til prateroboten

Når du snakkar med prateroboten, kan du altså stille mange delspørsmål for å komme fram til rett svar. Alternativt kan du samle alt som ein lang instruks, men då får du òg eit langt svar og mykje informasjon på ein gong.

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

Komplett instruks

Eg vil at du skal vere den digitale rettleiaren min og hjelpe meg med oppkopling og programmering av ein Arduino Uno R3.

Du skal bruke faguttrykk og elles eit språk og forklaringar som er tilpassa elevar i vidaregåande skule. Du skal vere engasjerande og motiverande.

Først skal du forklare korleis systemet eg spør om, verkar.

Så vil eg ha ei oversikt over komponentane eg kan ha bruk for når eg bygger dette systemet. Gi meg både namn og bruksmåtar.

Eg treng òg forslag til korleis systemet skal koplast saman. Gi meg instruksjonar om kva pinnar som skal nyttast på komponentane og Arduinoen, og om det er behov for resistorar i kretsen.

Dette er programmeringsoppgåva du skal løyse: Lag ein programkode for Arduino Uno som skal måle lydnivå gjennom ein mikrofon. Måleresultatet skal visast på ei RGB-stripe med seks diodar, og lågt støynivå skal bli vist med grøn farge, moderat lydnivå med gul farge og høgt støynivå med raud farge.

Det kan godt vere visning med mønster på diodane, men det er viktig at dioden blinkar kraftig ved raudt nivå.

Eg skal kunne justere sensibiliteten for dei ulike nivåa gjennom eit potensiometer.

Verdiane skal oppdatere seg ti gonger kvart sekund.

Gi meg ei god forklaring som beskriv korleis eg skal kople opp komponentane og Arduinoen. Eg ønsker òg at du skal gi meg ei god forklaring på kvar enkelt programlinje, slik at det blir lett å forstå korleis dette er programmert.

Gi meg forslag til kva dette prosjektet kan brukast til i det verkelege livet, og korleis prosjektet kan utvidast med fleire komponentar.

Illustrasjonar av støymålaren

Filer

I filene under finn du teikningar for å skrive ut sidevegger og lokk for å montere sensorane og displayet i denne øvinga.

Du kan òg laste ned eit ferdig koplingsskjema og ein ferdig instruks til bruk på NDLAs eigendefinerte praterobot.

Løysingsforslag for programkode

I boksen under ser du eit løysingsforslag for programmet ditt. Håpar du klarer å lage ditt eige før du ser på dette!

Programkode

#include <Adafruit_NeoPixel.h>

#define LED_PIN 6 // Pin for LED-stripe

#define NUM_LEDS 6 // Antal LED-ar 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å frå mikrofon

int potValue = analogRead(POT_PIN); // Les følsamheitsjustering frå potensiometer

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

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

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

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

if (micValue < thresholdLow) {

setLEDs(strip.Color(0, 255, 0)); // Grøn for lågt lydnivå

}

else if (micValue < thresholdHigh) {

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

}

else {

blinkRed(); // Blinkar raudt ved høgt lydnivå

}

delay(100); // Oppdatering 10 gonger 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++) { // Blinkar 3 gonger raskt

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

delay(100);

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

delay(100);

}

}

Relatert innhald

NDLA-boksen

NDLA-boksen er spesialdesigna for Arduino-programmering. Her får du høve til å lage din eigen boks til bruk i programmeringsøvingar.

RGB-diode

REG står for raud, grøn og blå. I ein RGB-diode kan du få lys i desse fargane, men også andre fargar ved å kombinere desse tre. Korleis gjer du det?

Skrive av Roger Rosmo.
Sist oppdatert 21.01.2025