Projektforslag

Fra HTX-Arduino
Skift til: navigering, søgning
Video med forklaring til kapitlet

Det følgende er en række forslag til projekter, hvor Arduino UNO boardet kan anvendes. Der skal i alle projektforslag gennemtænkes hvordan systemet skal virke, og med herefter skal programkoden laves. I de fleste af forslagene er Arduino UNO boardet koblet sammen med hardware (lysdioder, trykknapper, relæ’er og lignende), så resultatet af projekterne kan i mange tilfælde interagere med omgivelserne.

Projektforslagene må bruges og ændres frit efter lyst og behov.

Lysshow / Løbelys

Formål

Introduktion til programmering af en mikroprocessor. Fortrolighed med helt basale dele, så som outputs på Arduinoboardet, tilslutning af lysdioder, og opbygning af et simpelt program.

Beskrivelse

Der skal laves et lysshow med 10 lysdioder. Lysdioderne skal blinke i et mønster

Kravspecifikation

  • Der skal indgå 10 lysdioder i projektet.
  • Hver af de 10 lysdioder skal kunne lyse individuel.
  • Lysene skal kunne blinke i minimum ét mønster.
  • Ekstra: Man skal via en trykknap kunne skifte mellem forskellige mønstre, som lysdioderne skal blinke i.
  • Ekstra: Blinkehastigheden skal kunne justeres - enten i et antal steps, eller trinløs.


Lyskryds

Formål

Introduktion til programmering af en mikroprocessor ud fra opstillede krav, og dermed gå fra idé til den fungerende prototype.

Beskrivelse

Der skal opstilles lysregulering ved et T-kryds. Krydset er vist på figur 1, og der skal opstilles i alt tre trafiklys. Der er mest trafik i vandret retning, hvorved det er mest hensigtsmæssigt at der er ”grønt” for denne retning i længere tid, end for tilkørslen.

T-kryds hvor der skal opstilles lysregulering.
Figur 1 T-kryds hvor der skal opstilles lysregulering.

Kravspecifikation

  • Trafiklyset skal kunne lyse i de på Figur 1 angivne retninger (der skal være lyssignal til hver af de 3 veje).
  • Reguleringen af lyskrydset skal foretages af én mikroprocessor.
  • Lysreguleringen skal skifte i overensstemmelse med ”rigtige” lyskryds.
  • Ekstra: Lav styringen, så trafiklysene kun skifter, når der er trafik fra tilkørslen. Det vil sige, at der er grønt lys for vandret retning, indtil der kommer en bil til tilkørslen.
  • Ekstra: Indtænk lys til fodgængere, cyklister og lignende.

Opgaven kan udvides til også at dække 3D print af “husene” til lysene, samt standere. Sidstnævnte kan med fordel i stedet for laves i stålrør.


Afstandsmåler

Formål

Opbygning af en lidt mere avanceret konstruktion, hvor man både skal bruge input og output på Arduinoboardet.

Beskrivelse

Der skal fremstilles en afstandsmåler ved brug af et ultralydsmodul (se figur 2 ). Et sådant modul (HC-SR04) indeholder både en ultralydssender og en ultralydsmodtager.

Modul til afstandsmåling med ultralyd.
Figur 2 Modul til afstandsmåling med ultralyd.

Når “Trig” benet på ultralydsmodulet sættes høj (dvs. forbindes til +5V) udsendes en ultralydstone, indtil “Trig” benet igen sættes lav (dvs. forbindes til GND).

“Echo” benet på ultralydsmodulet bliver høj, når der modtages en ultralydstone. Det vil sige, at hvis man kan finde ud af hvor lang tid et “bløp” fra ultralydssenderen tager om at blive reflekteret tilbage og opfanget af ultralydsmodtageren, så kan man udregne afstanden til den genstand der har stået for at reflektere ultralydspulsen. Det er noget med fysik, og lydens hastighed...

Kravspecifikation

  • Afstanden skal kunne udlæses i “Serial Monitor”, og angives i cm.
  • Afstandsmålingerne skal foretages kontinuert.
  • Hvis en genstand kommer indenfor 5 cm afstand, skal en lysdiode lyse op, og slukke igen, når genstanden er længere væk end 5 cm.
  • Ekstra: Der bruges et antal lysdioder til at indikere afstanden.
  • Ekstra: Udlæsningen af afstanden foregår via en LCD display.

Løsningseksempel i kode

Et eksempel på hvordan man kan måle afstend er vist på Afstand programforslag

Temperatur og Fugtmåler

Formål

Opbygning af en lidt mere avanceret konstruktion, hvor man installere og anvende et bibliotek .

Beskrivelse

Der skal fremstilles et måleudstyr der kan måle temperatur og luftfugtighed ved brug af en fugtsensor (se figur 3).

Fugt-sensor DHT11.
Figur 3 Fugt-sensor DHT11.

Et sådant modul (DHT11 eller DHT22) indeholder både en temperaturmåler og en luftfugtighedsmåler[1]. Man kan enten fremsøge biblioteket i Arduino IDE, ved at gå ind i Sketch - Include Library og søge på DTH som vist i figur 4. Her kan man vælge forskellige biblioteker, hvor man kan vælge hvilket bibliotek man har mest tillid til (det fra Adafruit er nok det bedste, men også det mest avancerede til UNO. Det til ESPx virker ikke til Arduino UNO).

Søgning af biblioteker som Arduino installationen kender
Figur 4 Søgning af biblioteker som Arduino installationen kender.

Et andet sted man kan finde biblioteker er på https://github.com hvor man kan søge på arduino dht11 og finde en ZIP-fil som man kan installere som bibliotek[2].

DHT-sensoren skal have GND og +5V tilsluttet, og kan så kommunikere via et databen, som skal have en 10kΩ modstand op til +5V.

DHT11 giver temperatur og luftfugtighed i hele tal. DHT22 giver temperatur og luftfugtighed med en decimal.

Der skal være en pause på ca. 1 sekund mellem hver aflæsning.

Kravspecifikation

  • Temperatur og luftfugtighed skal kunne udlæses i “Serial Monitor”, og angives i °C og % RH.
  • Målingerne skal foretages kontinuert med 1 sekunds interval.
  • Hvis temperaturen kommer under 20°C skal der tændes en lysdiode. Hvis temperaturen kommer over 25°C skal en anden lysdiode tændes.
  • Hvis luftfugtigheden kommer under 40% skal der tændes en lysdiode. Hvis luftfugtigheden kommer over 60% skal en anden lysdiode tændes.
  • Ekstra: Udlæsningen af temperatur og luftfugtighed foregår via en LCD display.

Termostat

Formål

Denne opgave er lidt mere selvstændig, hvor man skal anvende nogle af de ting der kan læres ved at man løser delopgaver, for at kunne bygge en termostat[3].

Beskrivelse

Den grundlæggende ide i en termostat er at den kan holde en temperatur på et bestemt niveau. Dette kræver normalt 3 elementer:

  • At den kan måle hvad temperaturen er nu
  • At ved hvad den ønskede temperatur er
  • At den kan varme op, hvis temperaturen er for lav

Der kan være andre principper i termostater f.x. i varme lande hvor en termostat i et klimaanlæg lige så tit vil skulle køle for at bringe temperaturen ned på det ønskede niveau. I denne opgave begrænser vi det til at varme op til en ønsket temperatur.

Måling af temperaturen

Her vil elementer fra Arduino termometer være meget relevant.

Den ønskede temperatur

Her kan man bruge noget indtastning fra Arduino AnalogOut til at indtaste den ønskede temperatur.

Opvarmning

Her kan det at afsætte noget effekt i en modstand som ved arduino udgangsforstærkning og anvende det til opvarmning i en mindre skala (man kan placere temperatur-føleren tæt på modstanden) - det vil være urealistisk at opvarme hele el-teknik-lokalet med effekt-modstande.

Kravspecifikation

For at man kan kalde det for en termostat, så er der en række grundlæggende krav der skal opfyldes:

  • Skal have en form for opvarmning (evt. af et lille rum)
  • Skal kunne måle hvilken temperatur rummet har
  • Skal kunne regulere opvarmningen, så temperaturen ligger på et bestemt niveau

Det gode ved termostat-opgaven er at den kan udvides med forskellige ganske relevante krav, der kan tilføje noget læring og differentiering ind i opgaven. I praktisk brug vil det være upraktisk at skulle have en PC tilsluttet enhver termostat. Derfor vil det være en god ide at kunne få arduinoen til at fungere uden at skulle vise temperaturen på PC'en og uden at skulle indtaste temperaturen på PC'en. Dette kunne føre til følgende krav:

  • Visning med en simpel indikation på f.x. 3 lysdioder der kunne repræsentere "for lav" "OK" og "for høj" temperatur.

Et alternativ til dette krav kunne være:

  • Visning på et arduino display, hvor man både skriver setpunkt og aktuel temperatur.

Det ville også være relevant at kunne bestemme setpunktet:

  • Angivelse af setpunktet med et potentiometer
  • Angivelse af setpunkt med to knapper - op og ned
  • Angivelse af setpunktet ved indtastningen af temperaturen på et matrix tastatur


UR

Formål

Det grundlæggende formål er at lave et ur, der kan vise tiden i et genkendeligt format. Det kan også være formålet at introducere anvendelsen af et display. Herefter er formålet at opnå bedre præcision i tidsmålingen, ved at man kan introducere forskellige metoder til registreringen af tid.

Beskrivelse

Uret skal kunne vise tiden i timer, minutter og sekunder i følgende format:

   HH:MM:SS
  • Visningen skal være som ved et normalt ur, så minutter og sekunder har foranstillede nuller, når tallet er under 10.
  • Der skal være mulighed for at indstille uret.
  • Man kan starte med visning i Serial Monitor, men kan udvide kravet til et LCD Display

Kravspecifikation

Uret skal fungere som et digital-ur

  • Optælling af sekunder og minutter skal gå fra 00 til 59 og starte forfra
  • Timer skal gå fra 00 til 23
  • Der kan tilføjes ugedag

Uret skal have en fornuftig visning

  • Man kan starte med udskrift i Serial Monitor
  • Visning på display

Uret skal kunne indstilles

  • Simpel indstilling med få knapper
  • Tidsafhængig betjening (holde knappen giver hurtig indstilling)
  • Indstilling af ugedag, timer, minutter og sekunder

Alarmfunktion

  • Indstilling af alarmtidspunkt, timer og minutter
  • Hverdag og weekend-alarm
  • Alarm til/fra
  • Alarm skal kunne give lyd

Eventuelt en døgn-timer (kunne anvendes til at begrænse børns TV-forbrug)

  • Skal tildele en fast tidsperiode hvert døgn
  • Skal kunne tænde og slukke for en udgang (relæ) som kunne tænde for et TV
  • Skal tælle ned i den tildelte tid
  • Skal slukke for udgangen, hvis tiden løber ud
  • Skal ikke kunne tænde for udgangen efter tiden er løbet ud, før der er tildelt ny periode
  • Evt. en visning af resterende tid

Arbejde med test af tidsfunktion

  • Start med delay
  • Tilpas tiden
  • tid med millis()
  • Nøjagtighed bedre end 1 sekund pr. time
  • Real-Time Clock

Referencer