Bygge komplette kretser med sensorer, aktuatorer og mikrokontroller.
Prosjektarbeid med elektronikk
I dei føregåande kapitla har du lært om grunnleggjande elektrisitet, Ohms lov, koplingar, komponentar, mikrokontrollarar, sensorar og aktuatorar. No er det tid for å setje alt saman i eit prosjekt.
Prosjektarbeid er ein sentral del av teknologi og forskingslære. Det handlar ikkje berre om å byggje noko som fungerer – det handlar like mykje om å planleggje systematisk, dokumentere prosessen og reflektere over resultatet. I dette kapittelet lærer du ei strukturert tilnærming til elektronikkprosjekt, frå idé til ferdig produkt.
Eit elektronikkprosjekt følgjer typisk fem fasar:
1. Idé og kravspesifikasjon
- Kva skal prosjektet gjere?
- Kva for sensorar og aktuatorar trengst?
- Kva for avgrensingar finst (budsjett, tid, tilgjengeleg utstyr)?
2. Design og planlegging
- Lag eit blokkdiagram som viser hovuddelane i systemet
- Teikn eit koplingsskjema med alle komponentar
- Skriv pseudokode for programmet (logikken i klartekst)
3. Prototyping og bygging
- Bygg kretsen på breadboard (loddefri montering)
- Skriv og test programkoden trinnvis (éin funksjon om gongen)
- Test og feilsøk undervegs
4. Testing og forbetring
- Test at alle funksjonar fungerer som planlagt
- Mål yting og presisjon
- Gjer forbetringar basert på testresultata
5. Dokumentasjon og presentasjon
- Skriv ein prosjektrapport
- Dokumenter koplingsskjema, kode og resultat
- Reflekter over kva som fungerte og kva du ville gjort annleis
Blokkdiagram – den store oversikta
Eit blokkdiagram er ei forenkla teikning som viser hovuddelane i prosjektet og korleis dei heng saman. Det gir deg oversikt før du går inn i detaljane.
Døme – automatisk plantevatnar:
[Jordfuktighets- ] ──→ [Arduino Uno] ──→ [Vannpumpe ]
[ sensor (A0) ] [ ] [(via relé) ]
[ ]
[LCD-display ] ←── [ ] ──→ [LED (status)]
[(I2C: SDA, SCL) ] [ ] [(pinne 13) ]Blokkdiagrammet viser at:
- Inngang: Jordfuktsensoren sender data til Arduino
- Prosessering: Arduino les sensoren og tek avgjerder
- Utgang: Vasspumpe (via relé), LED og LCD-display
Start alltid med blokkdiagrammet – det hjelper deg å forstå heilskapen og identifisere kva for komponentar du treng.
Du vil lage eit system som måler temperatur og lysnivå i eit rom, viser verdiane på Serial Monitor, og aktiverer ein alarm (buzzer) dersom temperaturen overstig 30 °C. Lag ein kravspesifikasjon og eit blokkdiagram.
| Krav | Skildring |
|---|---|
| K1 | Måle temperatur med TMP36-sensor |
| K2 | Måle lysnivå med LDR |
| K3 | Vise temperatur og lysverdi på Serial Monitor kvart 2. sekund |
| K4 | Aktivere buzzer når temperatur > 30 °C |
| K5 | LED-indikator: grøn = OK, raud = alarm |
Komponentliste:
- Arduino Uno
- TMP36 temperatursensor
- LDR + 10 kΩ motstand
- Piezo-buzzer
- Grøn LED + 220 Ω motstand
- Raud LED + 220 Ω motstand
- Breadboard og leidningar
Blokkdiagram:
[TMP36 (A0)] ──→ [Arduino Uno] ──→ [Buzzer (pinne 8) ]
[LDR (A1)] ──→ [ ] ──→ [Grønn LED (pinne 10)]
[ ] ──→ [Rød LED (pinne 11) ]
[ ] ──→ [Serial Monitor (USB) ]Pseudokode:1. Les temperatur frå TMP36
2. Les lysverdi frå LDR
3. Skriv verdiane til Serial Monitor
4. Dersom temperatur > 30: slå på buzzer og raud LED, slukk grøn LED
5. Elles: slukk buzzer og raud LED, tenn grøn LED
6. Vent 2 sekund
7. Gjenta frå steg 1
Kva for rekkjefølgje bør fasane i eit elektronikkprosjekt følgje?
Trinn 1: Isoler problemet
- Er det eit maskinvareproblem (kopling) eller eit programvareproblem (kode)?
- Test med eit kjent, enkelt program (f.eks. Blink) for å sjekke at Arduino fungerer
Trinn 2: Del og hersk
- Test kvar komponent for seg, ikkje alt på éin gong
- Bruk Serial.println() for å skrive ut verdiar og sjå kva programmet gjer
Trinn 3: Sjekk dei vanlegaste feila
- Lause leidningar på breadboard
- Feil pinne i koden vs. koplinga
- Manglande GND-tilkopling (alle komponentar må dele felles jord)
- Manglande forresistans for LED-ar
- Feil retning på diodar, LED-ar, transistorar
- Syntaksfeil i koden (manglande semikolon, feil parentesar)
Trinn 4: Dokumenter og lær
- Skriv ned kva feilen var og korleis du løyste han
- Neste gong sparar du tid ved å kjenne att feilen
Serial.println() – det viktigaste feilsøkingsverktøyet ditt
Det kraftigaste verktøyet for feilsøking av Arduino-program er Serial.println(). Ved å skrive ut verdiar, tilstandar og meldingar til Serial Monitor kan du «sjå» kva programmet gjer innvendig.
Gode feilsøkingspraksisar:
void loop() {
int sensorVerdi = analogRead(A0);
Serial.print("Sensor A0 = ");
Serial.println(sensorVerdi); // Se om sensoren leses riktig
float temperatur = (sensorVerdi * 5.0 / 1024.0 - 0.5) * 100.0;
Serial.print("Beregnet temp = ");
Serial.println(temperatur); // Se om konverteringen er riktig
if (temperatur > 25.0) {
Serial.println("→ OVER grense, motor PÅ");
digitalWrite(9, HIGH);
} else {
Serial.println("→ Under grense, motor AV");
digitalWrite(9, LOW);
}
delay(1000);
}Med slike utskrifter kan du raskt sjå om sensoren gir fornuftige verdiar, om utrekninga er rett, og om programflyten følgjer logikken du venta.
Skriv den komplette Arduino-koden for «smart romovervåkar»-prosjektet: TMP36 (A0), LDR (A1), buzzer (pinne 8), grøn LED (pinne 10), raud LED (pinne 11). Alarm ved temperatur over 30 °C.
// Smart romovervåker
// TMP36 på A0, LDR på A1
// Buzzer på pinne 8, grønn LED pinne 10, rød LED pinne 11
const int TEMP_PIN = A0;
const int LYS_PIN = A1;
const int BUZZER_PIN = 8;
const int GRONN_LED = 10;
const int ROD_LED = 11;
const float ALARM_TEMP = 30.0;
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
pinMode(GRONN_LED, OUTPUT);
pinMode(ROD_LED, OUTPUT);
Serial.begin(9600);
Serial.println("=== Smart Romovervåker ===");
Serial.println("Alarm ved temperatur over 30 °C");
Serial.println("");
}
void loop() {
// --- Les sensorer ---
int tempRa = analogRead(TEMP_PIN);
float spenning = tempRa * (5.0 / 1024.0);
float temperatur = (spenning - 0.5) * 100.0;
int lysVerdi = analogRead(LYS_PIN);
// --- Vis på Serial Monitor ---
Serial.print("Temp: ");
Serial.print(temperatur, 1);
Serial.print(" °C | Lys: ");
Serial.print(lysVerdi);
// --- Kontroller aktuatorer ---
if (temperatur > ALARM_TEMP) {
// ALARM – for varmt!
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(ROD_LED, HIGH);
digitalWrite(GRONN_LED, LOW);
Serial.println(" | ALARM!");
} else {
// Alt OK
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(ROD_LED, LOW);
digitalWrite(GRONN_LED, HIGH);
Serial.println(" | OK");
}
delay(2000); // Oppdater hvert 2. sekund
}Koden følgjer mønsteret: Les sensorar → Behandle data → Styr aktuatorar → Vis status. Dette er eit grunnleggjande mønster som blir brukt i dei aller fleste styringssystem, frå enkle hobbyprosjekt til industrielle kontrollsystem.
Kva for ein av desse er den beste framgangsmåten for å feilsøke ein Arduino-krets som ikkje fungerer?
God dokumentasjon er like viktig som sjølve prosjektet. Ein prosjektrapport bør innehalde:
1. Innleiing
- Kva er målet med prosjektet?
- Kva for problemstilling løyser det?
2. Kravspesifikasjon
- Kva skal prosjektet gjere? (funksjonskrav)
- Kva for avgrensingar finst? (tid, budsjett, utstyr)
3. Design
- Blokkdiagram (overordna systemvising)
- Koplingsskjema (detaljert kretsskjema)
- Pseudokode eller flytdiagram for programmet
4. Gjennomføring
- Steg-for-steg skildring av byggjeprosessen
- Bilete/teikningar av prototypen
- Komplett programkode med kommentarar
5. Testing og resultat
- Kva blei testa? Korleis?
- Fungerer prosjektet som planlagt?
- Målingar og data (tabellar, grafar)
6. Drøfting og refleksjon
- Kva fungerte bra?
- Kva ville du gjort annleis?
- Kva lærte du?
- Moglege forbetringar
Tips for god prosjektrapport
Bilete og skjermbilete:
- Ta bilete av prototypen undervegs (ikkje berre ferdig)
- Inkluder skjermbilete frå Serial Monitor som viser at systemet fungerer
- Fotografer koplingane på breadboardet
Kodekommentarar:
Koden i rapporten skal ha gode kommentarar som forklarar kvifor, ikkje berre kva:
// Dårlig kommentar:
int x = analogRead(A0); // Les A0
// God kommentar:
int tempRa = analogRead(A0); // Les TMP36-sensor (gir 10 mV/°C)Bruk tabellar for testresultat:
| Test | Venta resultat | Faktisk resultat | Status |
|---|---|---|---|
| Temp < 30 °C | Grøn LED, ingen lyd | Grøn LED, ingen lyd | OK |
| Temp > 30 °C | Raud LED, buzzer | Raud LED, buzzer | OK |
| Sensor frakopla | Vis feilmelding | Viser 0 °C | Må forbetrast |
Ærlegdom:
Skriv ærleg om det som ikkje fungerte. Det viser at du forstår prosjektet og har lært av prosessen. Ingen ventar eit perfekt resultat – det er prosessen og refleksjonen som tel.
Her er nokre prosjektidear med varierande vanskegrad:
Nybegynnar:
- Trafikklys med tre LED-ar og tidsbasert styring
- Nattlys som blir tent automatisk når det blir mørkt
- Terningkastar med 7 LED-ar og ein trykknapp
Middels:
- Automatisk plantevatnar med jordfuktsensor og pumpe
- Digitalt termometer med LCD-display
- Parkeringsassistent med ultralydsensor, LED-ar og buzzer
Avansert:
- Vêrstasjon med temperatur, fukt, lys og datalogging
- Linjefølgjande robot med IR-sensorar og motorar
- Smarthusstyring: lys, vifte og alarm via sensorar
Vel eit prosjekt som interesserer deg og som passar kunnskapsnivået ditt. Start enkelt, og bygg på etter kvart!
Oppsummering – Prosjektarbeid med elektronikk
Dei fem prosjektfasane:
1. Idé og kravspesifikasjon – definer kva prosjektet skal gjere
2. Design og planlegging – blokkdiagram, koplingsskjema, pseudokode
3. Prototyping og bygging – breadboard, trinnvis utvikling
4. Testing og forbetring – systematisk testing, iterativ forbetring
5. Dokumentasjon og presentasjon – rapport, refleksjon
Feilsøking:
- Isoler problemet: maskinvare eller programvare?
- Del og hersk: test éin komponent om gongen
- Bruk Serial.println() for å «sjå» kva programmet gjer
- Sjekk vanlege feil: lause leidningar, feil pinne, manglande GND
Dokumentasjon:
- Innleiing, kravspek, design, gjennomføring, testing, drøfting
- Bilete, koplingsskjema og kommentert kode
- Ærleg refleksjon over kva som fungerte og kva som kan forbetrast
Det viktigaste mønsteret i alle styringssystem:
Les sensorar → Behandle data → Styr aktuatorar → Gjenta
Gratulerer – du har no det teoretiske grunnlaget for å planleggje, byggje og dokumentere dine eigne elektronikkprosjekt med Arduino!
Vel eitt av prosjekta nedanfor og lag ein komplett prosjektplan: a) Automatisk nattlys, b) Parkeringsassistent med ultralydsensor, c) Temperaturalarm. Planen skal innehalde: 1) Kravspesifikasjon (minst 4 krav), 2) Komponentliste, 3) Blokkdiagram, 4) Pseudokode for programmet.
Skriv ein komplett prosjektrapport for romovervåkar-prosjektet frå dømet i dette kapittelet. Inkluder: a) Innleiing med prosjektmål, b) Kravspesifikasjon i tabellform, c) Blokkdiagram, d) Koplingsliste (kva for pinnar blir brukte til kva), e) Den komplette koden med kommentarar, f) Ein testplan med minst 3 testar og venta resultat, g) Refleksjon: minst to ting du ville forbetra.
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.