{"id":522,"date":"2023-02-13T11:48:04","date_gmt":"2023-02-13T10:48:04","guid":{"rendered":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/?page_id=522"},"modified":"2023-02-13T14:47:07","modified_gmt":"2023-02-13T13:47:07","slug":"automatisk-potteplantevanning","status":"publish","type":"page","link":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/?page_id=522","title":{"rendered":"Automatisk potteplantevanning"},"content":{"rendered":"\n<p>Av Sigurd Rage, USN<\/p>\n\n\n\n<h5>Introduksjon<\/h5>\n\n\n\n<p>I denne aktiviteten skal vi se p\u00e5 hvordan vi kan bruke en microbit til \u00e5 styre en vannpumpe basert p\u00e5 sensordata fra en jordfuktsensor. F\u00f8rst kommer en beskrivelse av et nesten ferdig system med fuktsensor og pumpe koblet ferdig koblet til microbiten, deretter kommer et forslag til hvordan dette prosjektet kan gjennomf\u00f8res i klasserommet. Prosjektet krever at man har tilgang p\u00e5 et &#8220;breakout board&#8221; for microbit, ellers er det utstyret som kreves hyllevare og relativt billig i anskaffelse.<\/p>\n\n\n\n<p>Hele prosjektet, med halvferdig kode kan lastes ned her:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.tinkercad.com\/things\/0w034yFNd52?sharecode=QMJCpwQsSBU0375orkOx1ITjqXw1VgHsDG9D1CzmHjE\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.tinkercad.com\/things\/0w034yFNd52?sharecode=QMJCpwQsSBU0375orkOx1ITjqXw1VgHsDG9D1CzmHjE<\/a><\/p>\n\n\n\n<h5>Kompetansem\u00e5l (LK2020)<\/h5>\n\n\n\n<ul><li>designe og lage et produkt basert p\u00e5 en kravspesifikasjon (4. trinn)<\/li><li>utforske teknologiske systemer som er satt sammen av ulike deler, og beskrive hvordan delene fungerer og virker sammen (4. trinn)<\/li><li>designe og lage et produkt basert p\u00e5 brukerbehov (7. trinn)<\/li><li>utforske, lage og programmere teknologiske systemer som best\u00e5r av deler som virker sammen (7. trinn)<\/li><li>bruke programmering til \u00e5 utforske naturfaglige fenomener (10. trinn)<\/li><\/ul>\n\n\n\n<p>Aktiviteten passer nok best for elever fra 7. trinn og oppover som er vant til \u00e5 bruke tilleggssutstyr til microbit, feks TinkerKit eller tilsvarende. Det er ogs\u00e5 et opplegg som kan kobles til elektrisitets- og kretsl\u00e6re.<\/p>\n\n\n\n<p>Forkunnskaper:<\/p>\n\n\n\n<ul><li>Kjennskap til makecode og generell microbit-programmering<\/li><li>Kjennskap til koblingsbrett og kretsl\u00e6re<\/li><li>Programmering, sl\u00f8yfer og if-tester<\/li><\/ul>\n\n\n\n<h5>Utstyrsliste<\/h5>\n\n\n\n<ul><li>Microbit (V1 eller V2)<\/li><li>Breakout board<\/li><li>Koblingsbrett<\/li><li>Jordfuktsensor (resistiv type)<\/li><li>Motstand 2.2 k\u03a9<\/li><li>Transistor NPN (feks BC377)<\/li><li>Vannpumpe (3 &#8211; 5V)<\/li><li>Eksperimentkabler<\/li><li>Krokodillekabler<\/li><li>Slange til vannpumpe<\/li><li>Vanntank<\/li><li>Potteplante<\/li><\/ul>\n\n\n\n<h5>Koblingsskjema<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"746\" src=\"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/Automatisk-potteplantevanner-1024x746.png\" alt=\"\" class=\"wp-image-531\" srcset=\"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/Automatisk-potteplantevanner-1024x746.png 1024w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/Automatisk-potteplantevanner-300x219.png 300w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/Automatisk-potteplantevanner-768x560.png 768w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/Automatisk-potteplantevanner.png 1190w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Koblingsskjema med microbit og komponenter<\/figcaption><\/figure>\n\n\n\n<p>I dette skjemaet er jordfuktssensoren koblet til P0 og pumpestyringen koblet til P1. Transistoren virker som en bryter for pumpestyring, og f\u00e5r styringssignalet fra P1. Mellom P1 og transistoren ligger en motstand p\u00e5 2.2k\u03a9, da transistoren kun trenger bittelitt str\u00f8m for \u00e5 &#8220;sl\u00e5 inn&#8221;<\/p>\n\n\n\n<h6>Jordfuktsensor:<\/h6>\n\n\n\n<p>I dette prosjektet brukes en s\u00e5kalt resistiv jordfuktssensor, som er den enkleste og billigste typen. Denne sensoren har normalt 3 eller 4 koblingspunkter ut fra modulen. VCC kobles til 3V og GND kobles til 0V. AO (analog out) vil gi en spenning inn p\u00e5 P0 avhengig av hvor fuktig jorden i potteplanten er. P\u00e5 noen sensortyper st\u00e5r det SIG istedet for AO p\u00e5 signalpinnen (se kretstegning)<\/p>\n\n\n\n<p>Noen slike sensorer har ogs\u00e5 en DO (digital out), denne skal ikke brukes.<\/p>\n\n\n\n<p>Sensoren m\u00e5ler elektrisk motstand i plantejorda. N\u00e5r jorda blir fuktig vil den lede mer str\u00f8m mellom elektrodene enn hvis den er t\u00f8rr. Typisk vil spenningen fra AO v\u00e6re h\u00f8yere ved t\u00f8rr jord og lavere ved fuktig jord. Denne spenningsverdien blir avlest som en digital heltallsverdi av microbit, som vi kan bruke i styringsprogrammet til \u00e5 ta en avgj\u00f8relse om potteplanten trenger vanning. For \u00e5 en fornuftig terskelverdi for vanning b\u00f8r man teste denne sensoren i jord.<\/p>\n\n\n\n<p>En svakhet med denne typer sensorer er at de korroderer i fuktig milj\u00f8, som gir de en noe kort levetid. Det finnes ogs\u00e5 kapasitive jordfuktsensorer, som koster noe mer og har litt mer komplisert tilkobling.<\/p>\n\n\n\n<h6>Vannpumpe<\/h6>\n\n\n\n<p>Dette er en vannpumpe som drives av en DC-motor (likestr\u00f8msmotor) som krever mellom 3 og 5V. Pumpemotoren trekker en god del str\u00f8m, og kan derfor ikke styres direkte fra pinnene til microbiten. Istedet kobles motoren rett p\u00e5 microbitens innebygde str\u00f8mkilde, pinnene 3V og 0V, men for \u00e5 kunne styre den, legger vi en transistor imellom. Da vil transistoren fungere som en elektronisk bryter til pumpen.<\/p>\n\n\n\n<p>Microbit sine tilkoblingsporter kan maksimalt levere 10mA str\u00f8m, mens 3V &#8211; pinnen kan levere 90mA (V1) eller opptil 120mA (V2).<\/p>\n\n\n\n<p>En annen ting \u00e5 ha i bakhodet er at denne pumpen er relativt svak, s\u00e5 vannreservoaret b\u00f8r v\u00e6re i samme h\u00f8yde som potteplanten.<\/p>\n\n\n\n<h6>Transistor<\/h6>\n\n\n\n<p>Transistoren er en av det 20. \u00e5rhundrets st\u00f8rste oppfinnelser og har muliggjort alle de avanserte digitale enhetene vi omgir oss med til daglig. Det er en halvlederkomponent, og har 3 tilkoblinger: Base, Collector og Emitter. I denne kretsen fungerer transistoren rett og slett som en elektronisk bryter, som kan styre om det skal g\u00e5 str\u00f8m igjennom eller ikke. Base kobles til +3V og Emitter kobles til 0V (eller GND). Hvorvidt det g\u00e5r str\u00f8m gjennom transistoren eller ikke styres av Collector. Det skal sv\u00e6rt lite str\u00f8m til p\u00e5 Collector for at transistoren leder, derfor kobler vi en relativt stor motstand i serie foran denne terminalen (tilkoblingen).<\/p>\n\n\n\n<h5>Kretsskjema<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"439\" src=\"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/potteplantevanner-kretsskjema-1024x439.png\" alt=\"\" class=\"wp-image-537\" srcset=\"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/potteplantevanner-kretsskjema-1024x439.png 1024w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/potteplantevanner-kretsskjema-300x129.png 300w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/potteplantevanner-kretsskjema-768x329.png 768w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/potteplantevanner-kretsskjema.png 1054w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Kretsskjema for prosjektet<\/figcaption><\/figure>\n\n\n\n<p>Over ser vi et mer standardisert kretsskjema for prosjektet. I sammenligning med koblingsskjemaet lenge opp er det mer abstrakt, men selve sammenkoblingen av komponentene er mer tydelig og oversiktlig.<\/p>\n\n\n\n<h5>Reell oppkobling (kabelspaghetti)<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"768\" height=\"1024\" src=\"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/IMG_20230213_113029472-768x1024.jpg\" alt=\"\" class=\"wp-image-538\" srcset=\"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/IMG_20230213_113029472-768x1024.jpg 768w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/IMG_20230213_113029472-225x300.jpg 225w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/IMG_20230213_113029472-1152x1536.jpg 1152w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/IMG_20230213_113029472-1536x2048.jpg 1536w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/IMG_20230213_113029472-scaled.jpg 1920w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><figcaption>Hvordan det egentlig ser ut<\/figcaption><\/figure>\n\n\n\n<p>Alle skjematiske fremstillinger av kretser ser som regel mye ryddigere ut p\u00e5 papir enn hvordan den faktiske kretsen blir seendes ut p\u00e5 brettet. Hvordan komponentene kobles sammen p\u00e5 koblingsbrettet, og hvordan man f\u00e5r koblet de eksterne delene inn p\u00e5 kretsen krever noe kunnskap om p\u00e5 hvilke m\u00e5ter dette kan gj\u00f8res. I litteraturen om teknologi i skolen kalles dette for &#8220;handlingskunnskap&#8221;.<\/p>\n\n\n\n<p>I dette eksempelet har vi brukt eksperimentkabler, som er ferdig lagde kabler med hann- og hunnterminaler som passer til brettet, samt krokodillekabler for \u00e5 koble p\u00e5 pumpen.<\/p>\n\n\n\n<p>Det er ogs\u00e5 fullt mulig \u00e5 koble at sammen kun med krokodillekabler, uten koblingsbrett, da blir kabelsalaten tilsvarende mer rotete \ud83d\ude42<\/p>\n\n\n\n<h5>Programmering av styringsenheten<\/h5>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" width=\"489\" height=\"602\" src=\"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/pumpestyring-makecode.png\" alt=\"\" class=\"wp-image-553\" srcset=\"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/pumpestyring-makecode.png 489w, https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/wp-content\/uploads\/2023\/02\/pumpestyring-makecode-244x300.png 244w\" sizes=\"(max-width: 489px) 100vw, 489px\" \/><figcaption>Eksempelkode for pumpestyring<\/figcaption><\/figure>\n\n\n\n<p>Programmet over kan v\u00e6re et godt utgangspunkt for styring av pumpen, men den er ikke ferdig. Likevel, et par viktige momenter \u00e5 ta med seg:<\/p>\n\n\n\n<p>Sensorverdier fra jordfuktsensoren leses som analogverdi fra P0<\/p>\n\n\n\n<p>Styring av pumpen skjer ved \u00e5 sette digital verdi p\u00e5 P1 til 1 (3V) for \u00e5 starte pumpen, og digital verdi P1 til 0 (0V) for \u00e5 stoppe den.<\/p>\n\n\n\n<p>I blokken &#8220;ved start&#8221; setter vi styringssignalet til pumpen til LOW, eller 0V for \u00e5 v\u00e6re helt sikre p\u00e5 at pumpen ikke starter av seg selv<\/p>\n\n\n\n<p>For \u00e5 kunne lese av den digitale verdien fra jordfuktsensoren har vi en kodeblogg &#8220;n\u00e5r knapp A trykkes&#8221; som skriver denne verdien til skjerm. Dette kan v\u00e6re nyttig for \u00e5 finne ut hva slags verdier som denne sensoren gir fra t\u00f8rr eller fuktig jord.<\/p>\n\n\n\n<p>Selve pumpestyringen skjer i &#8220;gjenta for alltid&#8221;-sl\u00f8yfen. I denne eksempelkoden er grensen for at pumpen skal starte satt til verdien 500, men den reelle grenseverdien m\u00e5 finnes ved utpr\u00f8ving p\u00e5 en reell potteplante.<\/p>\n\n\n\n<p>Dersom avlest verdi er h\u00f8yere enn grenseverdien vil if-testen sl\u00e5 inn, og pumpen kj\u00f8res i 5 sekunder. Denne verdien m\u00e5 ogs\u00e5 finnes ved eksperimentering: hvor mye vann pumpes per tid, og hvor mye vann trenger potteplanten per vanning.<\/p>\n\n\n\n<p>Deretter venter systemet i 1 minutt f\u00f8r den sjekker fuktigheten i potteplanten p\u00e5 nytt. Dette er nok alt for kort tid i en reell situasjon, og systemet trenger kanskje ikke \u00e5 sjekke for vanning mer enn et par ganger om dagen. Dessuten trenger potteplanten noe tid for at vannet skal fordeles jevnt i jorden.<\/p>\n\n\n\n<p>Alts\u00e5:<\/p>\n\n\n\n<ul><li>Man m\u00e5 finne en reell grenseverdi for jordfuktsensoren slik at vanning kommer p\u00e5 \u00f8nsket t\u00f8rrhet<\/li><li>Man m\u00e5 beregne hvor mye vann som trenges for hver vanning, og hvor lang tid dette tar for pumpen<\/li><li>Man m\u00e5 legge inn en generell forsinkelse slik at planten ikke overvannes. Typisk trenger man ikke \u00e5 sjekke jordfukten mer enn en gang om dagen.<\/li><\/ul>\n\n\n\n<p>Koden kan lastes ned fra makecode.org her: <a href=\"https:\/\/makecode.microbit.org\/_bfKHo6A08Ecc\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/makecode.microbit.org\/_bfKHo6A08Ecc<\/a> <\/p>\n\n\n\n<h4>Forslag til gjennomf\u00f8ring i klasserommet<\/h4>\n\n\n\n<p>I teknologi i naturfag<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Av Sigurd Rage, USN Introduksjon I denne aktiviteten skal vi se p\u00e5 hvordan vi kan bruke en microbit til \u00e5 styre en vannpumpe basert p\u00e5 sensordata fra en jordfuktsensor. F\u00f8rst kommer en beskrivelse av et nesten ferdig system med fuktsensor og pumpe koblet ferdig koblet til microbiten, deretter kommer et forslag til hvordan dette prosjektet [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":523,"parent":103,"menu_order":100,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/index.php?rest_route=\/wp\/v2\/pages\/522"}],"collection":[{"href":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=522"}],"version-history":[{"count":11,"href":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/index.php?rest_route=\/wp\/v2\/pages\/522\/revisions"}],"predecessor-version":[{"id":557,"href":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/index.php?rest_route=\/wp\/v2\/pages\/522\/revisions\/557"}],"up":[{"embeddable":true,"href":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/index.php?rest_route=\/wp\/v2\/pages\/103"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/index.php?rest_route=\/wp\/v2\/media\/523"}],"wp:attachment":[{"href":"https:\/\/web01.usn.no\/~sir\/programmeringiskolen\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}