Microbit kasse

Neopixel med temperatur og fugtighedssensor

clock 120 min
user 7. - 9. klasse
Svær
I dette forløb skal du bygge en klimamåler med en DHT11 - Temperatur og luftfugtighedssensor og to Neopixels. Klimamåleren kommer til at kunne måle både temperaturen og luftfugtigheden, hvormed to Neopixels vil indikere, om det er varmt eller koldt og om der er for fugtigt, så du kan lufte ud.
Materialeliste
Det skal du bruge:

Introduktion

Når du er færdig med lektionen:

  • Kan du bruge en Micro:bit med en DragonTail .
  • Kender du til, hvordan Neopixels virker.
  • Kender du til, hvordan en DHT11 - Temperatur og luftfugtighedssensor virker.
  • Kan du hente data fra en DHT11 - Temperatur og luftfugtighedssensor.
  • Kan du programmere Neopixels.
  • Kan du programmere funktioner.

Hardware

DHT11 - Temperatur og luftfugtighedssensor

En DHT11 - Temperatur og luftfugtighedssensor kan måle både temperatur og luftfugtighed, der hvor den er placeret.

Komponenten indeholder både en luftfugtighedssensor og en termistor til at måle temperaturen. Komponenten kan kobles til en micro:bit, og så kan micro:bitten forstå hvad temperaturen og luftfugtigheden er.

DHT11 måler bedst luftfugtighedsværdier mellem 20 - 80 %, og den måler bedst temperaturer mellem 0 - 50 °C.

DHT11 er på billedet herunder, den har fire pins. Første pin VCC er den pin til komponentens strømforsyning, anden pin er data-pinnen, som sender data til micro:bitten, tredje pin N/C skal ikke forbindes, N/C betyder no connection "ingen forbindelse". Frerde pin er komponentens GND-pin.

DHT11

 

Opsætning af DHT11

DHT11 sættes i breadboardet. Første pin forbindes til VCC. Anden pin, data-pinnen, forbindes til P0 på Dragontailen. Fjerde pin forbindes til ground på breadboardet .

 

dht11frit

 

Neopixel

En neopixel er en komponent, der indeholder tre lysdioder og en microcontroller. Neopixel kan vise RGB farver, og flere neopixels kan sættes i en række, så man kan styre flere fra en pin på micro:bitten, hvis man vil.

En neopixel har tre ben på venstre- og højre side. Signalerne løber fra venstre mod højre. I denne gennemgang sætter vi ikke flere neopixels sammen i en serie, men kobler to neopixels op hver for sig. Den ene kommer til at virke afhængigt af temperaturen, og den anden kommer til at virke afhængigt af luftfugtigheden. Af den grund bruger vi derfor kun tre af neopixelens pinne.

Vi bruger VCC på venstre side, som er strømforsyning til neopixelen, vi bruger IND, som er input-pinnen, som er forbundet til micro:bitten, og så bruger vi GND på højre side, som forbinder komponenten til ground.

Skaermbillede 2022 11 20 115533

 

Opsætning af Neopixels

Neopixel sættes i breadboardet, VCC på venstre side af neopixelen forbindes til VCC på breadboardet. IND forbindes til P14 på Dragontailen. Neopixelens GND på højre side forbindes til ground på breadboardet.

 

1neo

 

Hele opsætningen

DHT11 og højre neopixel er sat op på nøjagtig samme måde som ovenfor. Der skal sættes en til neopixel i breadboardet. VCC på venstre side af neopixelen forbindes til VCC på breadboardet. IND forbindes til P13 på Dragontailen. Neopixelens GND på højre side forbindes til ground på breadboardet.

Hele hardwareopsætningen ses herunder:

samlet

 

Software

Introduktion

Du skal i denne step by step guide programmere et indeklimasystem.

Programmeringen foregår i Makecode.

Når du er færdig med at programmere, vil dit program se sådan ud:

Skaermbillede 2022 11 21 112042

 

Tilkobling af micro:bit

Før du kan begynde at programmere dit indeklimasystem, skal du have sat din micro:bit op til at modtage din kode fra computeren:

 

Step 1

Forbind din micro:bit til din computer med USB-kablet.

 

Step 2

Åben Google Chrome browseren, for at være sikker på, at det hele virker som i denne guide.

Gå ind på Makecode.

Tryk "nyt projekt" og kald dit projekt "Indeklima".

 

Step 3

Indsæt "Vis ikon"  i kodeblokken "når programmet starter" og vælg dit eget ikon eller ikonet vist på billedet.

Vis ikon 'flueben'

 

Step 4

Tilkobl din micro:bit til browserprogrammet ved at trykke på de 3 prikker:

Skaermbillede 2022 10 28 133739

 

Step 5

Tryk derefter "par enhed".

Nu vil din micro:bit blive vist, som på følgende billede. Du skal nu connecte din micro:bit. Det gøres ved at trykke på BBC micro:bit og trykke connect.

Skaermbillede 2022 10 28 134051 Skaermbillede 2022 10 28 134413

 

Step 6

Du kan nu overfører koden fra Makecode til din micro:bit ved at trykke "Hent":

Skaermbillede 2022 10 28 133739

 

Du er nu klar til at programmere.

 

 

Programmering af indeklimasystem

Vi starter med koden til at få DHT11 sensoren til at virke. For at kunne programmere den, skal du først installere et ekstra kodebibliotek.

 

Step 1

Klik på knappen "Udvidelser" i kodemenuen i venstre side:

udvidelser

 

Step 2

Skriv "DHT11" i søgefeltet og vælg "DHT11_DHT22":

DHT11vaelg

 

Step 3

Du vil se tilføjelsen i kodemenuen:

nyikodemenu

 

Step 3

Start med af fjerne koden fra afsnittet "Tilkobling af micro:bit", så du kun har "når programmet starter" og "for altid" tilbage.

starter

 

Step 4

Tryk på det nye bibliotek, tryk på den store blok:

Skaermbillede 2022 11 20 131059

 

Og træk den ind i "for altid":

Skaermbillede 2022 11 20 131442

 

Step 5

Tryk på "mere" ved det nye bibliotek, og tryk derefter på "Temperature type":

Skaermbillede 2022 11 20 131658

Og placer den i "for altid". Vælg også Celcius, da det er den måleenhed, man bruger til at måle temperatur i Danmark:

Skaermbillede 2022 11 20 131855

 

Step 6

Nu skal vi have temperaturen til at blive skrevet i konsollen. Tryk på "Avanceret" og "Seriel":

Skaermbillede 2022 11 20 132459

Og vælg "seriel skriv linje":

Skaermbillede 2022 11 20 132627

Placer den i "for altid":

Skaermbillede 2022 11 20 132843

Tryk nu på biblioteket tilhørende DHT11, og vælg anden blot med "Read":

Skaermbillede 2022 11 20 133038

Og placer den på den tomme plads i "seriel skriv":

Skaermbillede 2022 11 20 133242

 

Step 7

Under "grundlæggende" tryk på "pause" og indsæt den nederst i koden:

Skaermbillede 2022 11 21 112246

 

Step 8

Du kan teste om sensoren virker, ved at hente koden til din micro:bit. Det er en rigtig god ide at teste sine komponenter og kode løbende, når man laver et større projekt, for hvis det ikke virker, når man har bygget det hele, kan det være meget svært at finde hvor fejlen er.

Når du har trykket på "Hent" kommer "Show data Enhed" frem. Tryk på den og du kan se at temperaturen bliver skrevet i konsollen:

Skaermbillede 2022 11 20 134121

Der blev målt 22,06 grader.

 

 

Step 9

Hvis du vil have, at temperaturen skal blive skrevet på micro:bittens LED-display, kan du under "Grundlæggende" vælge "vis streng" og indsætte den i koden som her:

Skaermbillede 2022 11 21 112358

 

Step 10

Vi vil også kunne læse luftfugtigheden på samme måde som temperaturen i konsollen.

Dupliker de tre sidste kodeblokke og indsæt dem efter pausen. I stedet for temperatur vælg "humidity" som betyder luftfugtighed på engelsk:

Skaermbillede 2022 11 21 112556

Nu kan du også læse luftfugtigheden i konsollen.

 

Step 11

Det er tid til at begynde at programmere neopixelene. For at kunne gøre det, skal du have et til nyt bibliotek. Tryk på "Udvidelser" og søg på "neopixel". Tryk derefter på "neopixel":

Skaermbillede 2022 11 20 135939

Du vil kunne se tilføjelsen i kodemenuen:

Skaermbillede 2022 11 20 140206

 

Step 12

Tryk på "Neopixel" og vælg første kodeblok:

Skaermbillede 2022 11 20 140450

Og indsæt den i "når programmet starter", vælg pin-nummeret og skriv 1 på antal:

Skaermbillede 2022 11 21 093508

 

Step 13

Man kan både styre neopixelens farve og lysstyrke med programmering. For at programmere lysstyrken skal du finde kodeblokken "set brightness". Tryk på "mere" under Neopixel i kodemenuen og vælg kodeblokken:

Skaermbillede 2022 11 21 094242

Og indsæt den i programmet:

Skaermbillede 2022 11 21 094505

Du bestemmer selv, hvilken lysstyrke du vil have. Hvis lysstyrken er 0, så lyser din neopixel ikke, og hvis lysstyrken er 255, så lyser din neopixel, alt hvad den kan.

 

Step 14

Nu skal du programmere, hvilken farve din neopixel skal have fra start. Tryk på "mere" under Neopixel i kodemenuen og vælg kodeblokken:

Skaermbillede 2022 11 21 095044

Og indsæt den i programmet:

Skaermbillede 2022 11 21 095207

I mange programmeringssprog tæller man fra 0, så 0 er den første. Vælg at neopixlens farve er hvid fra start.

 

Step 15

For at neopixlen får lysstyrken og farven, som du har valgt, skal du under Neopixel i kodemenuen finde kodeblokken "show" og indsætte:

Skaermbillede 2022 11 21 095836

Din ene neopixel vil lyse hvid, når programmet starter.

 

Step 16

Kodeblokkene til din anden neopixel skal sættes op på samme måde. Dupliker de fire kodeblokke og ændre de fire nye kodeblokke, så de hører til "strip2" med pin 14:

Skaermbillede 2022 11 21 100739

Nu vil begge dine neopixels lyse hvid, når programmet starter.

 

Step 17

Nu er koden klar til at du kan programmere to funktioner. Funktioner er kodeblokke, man helt selv bestemmer, hvad der skal være i, som man kan sætte ind i sin anden kode, ligesom man kan med alle de kodeblokke, du har brugt indtil nu.

Den ene funktion vi starter med skal få din neopixel, tilhørende "strip", til at lyse rød hvis det er mere end 24 grader ellers skal den lyse blå.

Tryk på Avanceret og "Funktioner" i kodemenuen:

Skaermbillede 2022 11 21 101658

Opret en funktion og kald den "temperatur", tryk på "Færdig":

Skaermbillede 2022 11 21 101929

 

Step 18

Tryk på Logik i kodemenuen og vælg kodeblokken:

Skaermbillede 2022 11 21 102248

Indsæt kodeblokken i din nye temperatur-funktion:

Skaermbillede 2022 11 21 102454

 

Step 19

Tryk igen på Logik og vælg første kodeblok under "Sammenligning":

Skaermbillede 2022 11 21 102735

Placer den der hvor der står "sand":

Skaermbillede 2022 11 21 102912

For at funktionen kan vide hvad temperaturen er fra DHT11-sensoren, skal du have "Read" fra DHT11-biblioteket i kodemenuen:

Skaermbillede 2022 11 21 103259

Placer den efter "hvis". Der ud over skal du ændre = til > og 0 til 24:

Skaermbillede 2022 11 21 103514

Det betyder, hvis temperaturen som sensoren læser er større end 24, så skal du have funktionen til at gøre noget.

 

Step 20

Hvis temperaturen er mere end 24, vil vi have din neopixel til at lyse rød. For at opdatere farven på en neopixel, skal man først slette den farve som den har med kodeblokken "clear". Kodeblokken ligger under Neopixel i kodemenuen. Derefter tryk på "mere" ved Neopixel og vælg kodeblokken "set pixel color at 0 to red", og opdater farven med kodeblokken "show":

Skaermbillede 2022 11 21 104555

 

Step 21

Hvis temperaturen ikke er over 24, vil vi have din neopixel til at lyse blå:

Skaermbillede 2022 11 21 105013

 

Step 22

Temperatur-funktionen er færdig og skal kaldes i din kodeblok "for altid". I programmering kalder man det at en funktion skal kaldes, når man vil have en funktion aktiveret.

Tryk på Funktioner i kodemenuen og vælg "kald temperatur". Indsæt blokken her:

Skaermbillede 2022 11 21 112743

 

Step 23

Nu skal du kode funktionen for fugtigheden. Dupliker temperatur-funktionen og kald den fugtighed. Vi vil have denne funktion til at gøre noget, alt efter hvor fugtigt det er. Ændre temperatur til humidity, som betyder fugtighed på engelsk.

Hvis fugtigheden er mere end 60, vil vi have din anden neopixel, som tilhører "strip2" til at lyse orange, ellers skal den lyse grøn:

Skaermbillede 2022 11 21 110114

 

Step 24

Fugtigheds-funktionen er også færdig og skal kaldes i "for altid". Tryk på Funktioner i kodemenuen og vælg "kald fugtighed". Indsæt blokken her:

Skaermbillede 2022 11 21 112905

 

Step 25

Tryk på "Hent". Du er nu klar til at prøve dit færdige indeklimasystem.

 

Brug indeklimasystemet

Introduktion

Når du har bygget og programmeret dit indeklimasystem, er det klar til brug. Et indeklimasystem kan gøre en opmærksom på, om man skal skrue op eller ned for varmen indenfor, eller om man skal lufte ud.

 

Step 1

Sørg for at have Makecode åben i browseren og at din micro:bit er forbundet som i afsnittet Opsætning af micro:bit.

 

Step 2

Du er klar til at prøve dit system.

 

Opgaver

Opgave 1

  1. Ændre i funktionerne, så de to neopixel lyser nogle andre farver.
  2. Ændre lysstyrken via kode på dine neopixels.
  3. Test dit indeklimasystem forskellige steder, fx ved radiatoren og ved køleskabet.

Opgave 2

  1. Skriv videre på temperatur-funktionen, så din neopixel lyser blå, når der er mindre end 15 grader, den lyser gul fra 16 til 22 grader, og den lyser orange fra 23 grader.
  2. Skriv videre på fugtigheds-funktionen, så hvis der måles en fugtighedsværdi under 45, er der en smiley på micro:bittens LED'er.
  3. Skriv videre på fugtigheds-funktionen, så hvis der måles en fugtighedsværdi over 45, er der et krys på micro:bittens LED'er.
  4. Lav en ny funktion, som får neopixlen tilhørende temperaturen til at blinke, hver gang den målte temperatur er forskellig fra temperaturen, du målte for 2 sekunder siden.