Interaktionsdesign og Netværk

“Interaktionsdesign og didaktik” er titlen på et kursus jeg har fulgt på SDU Kolding. Semesteret før (efterår 2019) fulgte jeg “Netværk og Sikkerhed” på SDU. To meget forskellige kurser, med det til fælles, at de dræner meget af min kreative energi. De ledige stunder jeg før brugte på egne projekter og udvikling, går nu til indholdet på kurserne.

Det første kursus har givet mig en række metoder inden for interaktionsdesign og inspiration til at arbejde videre. Særligt tre områder tænder mig: grafisk facilitering, embodiment og design thinking.

Grafisk facilitering er sjovt. Jeg har altid tegnet meget, og det ville være rart at få tilbage, som en del af min praksis. Jeg bilder mig ind, at tegning formidler og fokuserer indholdet på en anden måde end ren tekst, men jeg har endnu ikke fundet en undersøgelse, der efterviser det.

Embodiment handler om at have kroppen med i undervisningen. Hjernen er ikke et isoleret organ, og skolen har nok en tendens til at overfokusere på de intellektuelle forhold og glemme kroppen. Kroppen sanser miljøet og kan interagere med det. Kroppen kan bruges som et kognitivt stillads til læring, og nogle anbefaler at undervisning skifter mellem refleksion og “mindful action” (1).

Mindful action kan ske på mange måder. Rollespil er en udbredt måde. Tværfaglighed og fremmede objekter eller lokationer kan inspirere til nye måder, at inddrage kroppen.

Design thinking (engineering?) betragter jeg som en del af computatioal thinking (CT), som handler om at overveje hvordan digital teknologi kan bruges (herunder hvordan det virker) og hvad det gør ved os og samfundet. CT konkretiseres i bl.a. mønstergenkendelse og abstraktion. En vej dertil kan være ved at arbejde undersøgelses-baseret på komplekse problemer (wicked problems) i en iterativ tilgang, som kendes fra design. Alle digitale produkter er frembragt gennem design thinking.

Design thinking ligner på nogle punkter naturvidenskabelig metode -begge er iterative. I design thinking er det designeren (og andre interessenter), der skal co-designe en løsning. I naturvidenskab er det forskeren, som skal tolke data ud fra logik. Design thinking evaluerer, mens naturvidenskaben af- eller bekræfter en hypotese. Det er der lavet mange flotte diagrammer af fx dobbelt-diamanten. Design thinking kan bruges i design af forsøg.

Nogle sekvenser, som kunne udvikle grafisk facilitering, embodiement og/eller design thinking kunne være:

  • Forsøggange som storyboard eller rutediagram. Særligt velegnet ved gentagelser eller forgreninger
  • Design-metoder i elevernes udvikling af forsøg. Trinvis forbedring.
  • Brikker til rutediagrammer
  • Udklippede kodebrikker
  • Objekt-teater/bodygramming: Lad eleverne udspille projekter og programmer
  • Mere krop i undervisningen fx gennem tværfaglighed, nye objekter eller lokationer
  • Netlogo til use-modify-create
  • Kode som brætspil
  • Line Have Mussaeus, som bl.a. arbejder med Netlogo
  • Scenarie- eller spilbaseret didaktik

Den overordnede pointe, som jeg har mødt, er at teknologiforståelse og informatik ikke skal være et programmeringskursus, men anvende give eleverne meta-strategier ifht. at anvende og analysere digitale produkter.

  1. Larson, D. J. (2015). Don’t Forget About the Body: Exploring the Curricular possibilities of embodied pedagogy . Innov High Educ(40), pp. 331–344.
Udgivet i Computational thinking, planlægning | Kommentarer lukket til Interaktionsdesign og Netværk

Informatik c -year ½

Jeg har nu undervist i informatik c i et halvt år: year ½. Mine to forløb har været hhv. oplevelsesteknologi (Escape Room) / spiludvikling (læringsspil til en målgruppe) og webudvikling (udvikle website til målgruppe). De største udfordringer har været:

  • Samarbejdet i grupperne. Forskelle i niveau og læringsstile, har gjort nogle af grupperne meget uhomogene, særligt i andet forløb, hvor jeg lavede grupperne tilfældigt.
  • Fagligt overblik. Fx forløbet om webudvikling krævede overblik over html og css-mulighederne, som jeg ikke havde. Det synes jeg, at jeg har nu.
  • Ramme balancen mellem tilpas simpelt system og frihed til at eleverne kan skabe. Fx er micro:bit simpelt, men det er svært at lave noget kompliceret med systemet. Modsat er fx en Arduino avanceret -stejlere læringskurve, men kan bruges til mange ting.

Efter julen (2019) skal jeg i gang med et forløb om fysiske IT-systemer, fordi den taktile del af et IT-system giver mulighed for øget kreativitet, analyse og feedback. Det bliver mere vedkommende at udvikle til den fysiske verden, end at lade det hele blive inde i den virtuelle verden.

Der er mange muligheder:

  • Lego-robotter. Follow the line og Kunstig intelligens fx med Roberta IDE’et online (særligt til robotter, indeholder simulator til EV3). Fordele: Ret let at komme igang. Kan udvides fra blokke til Python eller C kode. Ulemper: der er mindre kreativitet i den fysiske del af lego, dele skal passe sammen og vil aldrig ligne noget fra virkeligheden. EV3-klodsen er ret stor og uhandy.
  • mBot kodes fx med mBlock IDE online. Ulemper: mBot er et avanceret samlesæt. Der er ikke meget design eller kreativitet i den. Fordele: Den kan udbygges med laserskårne dele fx for at give robotten et bestemt udseende. IDE arbejder både i blokke og i C++/python. Der er en Arduino udvidelse til IDE’et, men få biblioteker (DHT) og adgang til andre MCU-boards (fx er wemos-serien ikke tilgængelig), men ingen print.
  • Arduino. Kan kodes med Arduino IDE eller mBlock online. Mulige projekter: rum-/sundhedsdragt som målet temperatur, stok til svagtseende, robotbil. Fordele: Man kan lave næsten alt. Ulemper: sværere at komme i gang med, men blokkene i mBlock kan være en indgang (ligner mBit) – dog er der ikke adgang til fejlmeddelelser eller seriel monitor i mBlock. Ukorrekte og løse forbindelser kan frustrere.
  • Wemos D1 mini. ESP32 baseret IoT enhed. Fordele: Kan komme på nettet. Ulemper: pin layout er anderledes end Arduino. Kun Arduino IDE understøtter boarded.

Andre IDE’er er ScratchX og thinkerCAD, men de er begge for simple/mangler adgang til board/biblioteker. Arduino online IDE: Arduino Create: Den giver ikke adgang til wemos mini, men dog til lilypad. Vil den begrænsede compilerings-tid blive et problem? Eller vil clear cache i browser hjælpe?

Der er mange usikre elementer og derfor lander jeg på det sikre valg: Arduino IDE, tekstbaseret (y). Projektet kommer til at omhandle wearables og forhåbentlig kan der komme lidt digital produktion (laserskærer/3d print) ind over.



Udgivet i Arduino, Elektronik, Maskinlæring, Programmering | Kommentarer lukket til Informatik c -year ½

Vertikal vækst update

efter 3 uger i lyskasse

Der har været plantevækst i lyskassen. Men væksten er begrænset (ca. 50%) i forhold til planter i vindueskarmen, og bladene som spirer frem er krøllede og kompakte.

Derfor har jeg opgraderet(?) kassen indvendigt med alu-folie, som reflekterer lyset og dermed skulle give et større foton-udbytte. Det har i første omgang resulteret i, at planterne i kassen hurtigt er udtørret, hvilket jeg tolker som et godt tegn: mere energi (lys og varme) i kassen.

Dertil har jeg ændret farverne lidt, så kun hver fjerde LED lyser med blåt+rød (rgb 255,0,255) og de øvrige 3/4 lamper lyser rødt (rgb 255,0,0). Det siges at blåt lys inducerer vækst af blomsterstande og det ønsker jeg ikke.

De kommende uger vil afsløre om det forbedrer vækstforholdene i kassen. Næste trin bliver at udvikle en konduktivitets-måler til at følge mængden af næringsstoffer.

lyskasse 2.0

Udgivet i Arduino, biologi, bioteknologi, Maker | Kommentarer lukket til Vertikal vækst update

Vertikal vækst

Haver i flere etager (vertikalt) med kunstigt lys, som kræver mindre vand og gødning, og er mindre udsatte for sygdomme, har måske en fremtid i lokal fødevare-produktion.

Afgrøder kan vokse i Leca eller stenuld, hvorfor de mindre udsatte for jordbakterier og dermed sygdomme. Afløb af vand og opløst gødning siver ikke gennem jord, men kan opsamles og genbruges. Temperaturen kan reguleres og produktionen kan opretholdes året rundt.

Vertical Tower Aquaponic System

Ulemperne er energiforbrug til LED-belysning, pumper, varme og til at fremstille stenuld, LED’er, gødning m.m.

I undervisning vil jeg dele holdet i to, og lade den ene halvdel lave et system, der automatiserer vanding, og den anden halvdel lave et system, der tænder rød/blå LED’er, når der ikke er nok dagslys.

Lysmåling kan klares med en LDR (light dependent resistor) og en WS2818B-LED-strip, hvor hver LED kan programmeres individuelt mht. farve (RGB kode). Hver gruppe arbejder med een LED-strip (da Arduino ikke har strømstyrke til meget mere (max 40 mA pr. pin) og fastLED biblioteket fx sådan:

for (int i = 0; i < 30; i++) {
    leds[i].setRGB(255, 0, 0); // red light
    if (i % 2 == 0) {
       leds[i].setRGB(255, 0, 255); //red and blue light
    }
    FastLED.show();
  }

Kredsløbet kunne sættes sammen som:

P.t. kører jeg et lille forsøg, for at undersøge om 5V LED-strips leverer tilstrækkelig energi (fotoner) til at understøtte plantevækst. 5 strips i rød/blå farver lyser på en plante (basilikum) i en lukket papkasse. Dertil kontrolforsøg med planter i hhv. dagslys og i mørkt skab. Her forsøget med lyskasse:

Basilikum i LED-belysning

Foreløbig ser det ud til, at belysningen ikke er optimal, men dog brugbar til plantevækst, idet planten ikke er død (som den i det mørke skab). Jeg ved ikke hvordan eleverne skal arbejde med koden. Af use-modify-create er vi nok på modify-niveauet fx at arbejde med farvekoderne og med at indstille grænseværdien for lys-niveauet.

Der er nogle praktiske udfordring i, at lys fra LED'erne rammer LDR-sensoren, hvilket får LED-strippen til at slukke, hvorefter lyset er væk, så LED-strippen tænder, og slukker... LDR'en skal muligvis placeres et helt andet sted (IoT). Det kan også være et problem, at mange lokaler har meget elektrisk lys, hvorfor nedsat mængde dagslys kan være svært at registrere.

Dertil skal jeg finde ud af hvordan planterne kommer til at vokse vertikalt i et tårn, så det ser fedt ud. Måske ved hjælp af 1½ liters plastikflasker.

En opstilling (billedet ovenfor) trækker 2,3 Watt, når LED'erne er tændt (0,4 watt uden lys). Ved 24 timers brug med lys (hvilket ikke er realistisk, da LED'erne ikke vil være tændt hele tiden) koster det ca. 11 øre om dagen og 40 kr. pr. år:

https://strøm.dk
Udgivet i Arduino, biologi, Programmering | Kommentarer lukket til Vertikal vækst

Micro:bit i Escape room

Så er mit første forløb på i mit første år som informatik-underviser ved at være slut. Vi arbejder på et Escape Room bygget på Micro:bit enheder. Et favorit-område for mig, men ikke særlig velegnet til første forløb: Hardware og software og brugeroplevelse skal spille sammen, så der er mange steder det kan gå galt.

Målet var at udvikle et Escape Room til brug under Naturvidenskabsfestivalen, hvor skolen får besøg af utallige 7., 8. og 9. klasser, der bruger 25 minutter ved hver post. Informatik var en af disse poster, hvorfor vores Escape Room oplevelse skulle genbruges ca. 12 gange på en dag.

Trods det lidt barnlige udseende, er der flere fordele ved Micro:bit. Den kan kodes i blokke og tekst (JS). Den er ret let at tilgå fysisk fx med krokodillenæb, hvorfor jeg ikke var så bange for hardware-delen. Alligevel var der flere elever, som stødte på problemer. Bl.a. en gruppe, som arbejdede med servo-motorer, der måtte skifte spor, og en gruppe, som bøvlede en del med gyro’en (jeg tror, at vi kom frem til hvordan denne skal aktiveres).

Vi begyndte med en række fælles opgaver, som introducerede variable, datatyper, kontrolstrukturer, funktioner, eventHandlers, hardware-komponenter m.m. Jeg introducerede tre komponenter:

  • en arkade-trykknap,

  • en servo-motor og

  • en programmerbar LED-strip

Derefter turde eleverne (som er en del dygtige 3.g’ere) kaste sig ud i deres egne projekter.

Højt til loftet og vide vægge, som man siger. Mindre kreative elever kan benytte de indbyggede sensorer og feedback-muligheder. Elever, der gerne vil udfordres mere kan koble de introducerede komponenter til og andre kan selv finde komponenter på nettet. Flere fandt bl.a. på at koble højttalere til deres bit.

Undervejs introducerede jeg til arbejdsprocessen i udarbejdelsen af et IT-system, herunder brainstorm, programmering, IT-systemers feedback og tænke højt test. Elevernes projekter gav rigelige muligheder for at teste systemerne.

Elevernes opgave lød som:

Kravs-specifikation:

I skal udvikle et IT-system på Micro:bit, som ved hjælp af hardware og software giver brugeren (unge i alderen 13-20 år) en oplevelse af at løse en gåde (puzzle) på 2-15 minutter.

Systemet skal give feedback under brug fx ved hjælp af lys eller lyd, og systemet skal give tydeligt feedback (herunder et tal), når gåden er løst.

Hele systemet skal kunne genbruges -det må ikke være nødvendigt at ødelægge det for at løse gåden.

Jeres opgave i grupper a 2-3 personer:

Udvikle IT-systemet ovenfor gennem en række af prototyper og bruger-tests. Resultatet (tallet) fra hver gåde kan bruges til at åbne en kombinations-lås, som giver adgang til en præmie.”

Vi valgte at indrette vores Escape Room i en ubrugt del af skolens kælder, hvilket gav en god stemning. Temaet blev Halloween, og lidt udsmykning, en røgmaskine og nogle LED-strips gav rigtig gode effekter.

Jeg havde valgt at følge nogle af de trends, som findes blandt Escape Rooms, herunder: 1) Lad være med at låse folk inde: Kald det et Escape Game, og lad brugerne bryde ind i noget frem for ud. 2) Åben frem for linær vej: Lav et antal gåder, som skal løses uafhængigt af hinanden (vi havde fire kasser med kombinationslåse), så alt ikke står og falder med een gåde.

Selve dagen forløb over al forventning. Vi havde alle de mange folkeskoleelever igennem et stramt program: forhåndsundersøgelse (“Ved I hvad et Escape Room er?”), do’s and dont’s. 15 minutter i vores Escape Room og kort afsluttende evaluering: Alle meldte om en god og anderledes oplevelse.

Der var selvfølgelig noget teknik der drillede, men ikke mere end vi kunne lægge en seddel med et tal, og rette op på fejlen til næste besøg af brugere. Et spændende test-resultat var bl.a. at nogle børn ikke kender gruppen ABBA. Da vi testede på os selv, gav det ingen problemer, men børn på 13 år er anderledes 🙂

Eleverne havde lavet mange gode opgaver. De opgaver, som måske virkede bedst, var dem, der var ret fysiske og gav tydeligt feedback fx en “don’t touch the wire” opgave, hvor to stykker kobber-wire ikke må røre hinanden.

En anden vellykket opgave, hvor bittens gyro har koblet til en højtaler -det hele gemt i en flyttekasse. Systemet skulle drejes i forskellige retninger, og gav en lyd af højere og højere frekvens efterhånden som brugeren nærmede sig den rette manipulation. Hver rigtig bevægelse blev belønnet med et højlyd ding a la SuperMario.

GDPR = ingen billeder fra dagen.

Udgivet i Elektronik, Micro:bit | Kommentarer lukket til Micro:bit i Escape room

Sommerskole 2019

Sommerskole -et mødested for makers og andet godtfolk. I år havde jeg begge børn med og det var en blandet succes. Vi fik lavet nogle gode og hyggelige projekter, men der blev også set en del skærm.

Det er mere netværket der tæller, og der er blevet længere mellem tech-nyhederne for mig, men der er dog nogen:

  • En plade, som er printet i meget tyndt fx PLA, kan fungere som en trykknap, hvis der sidder en flad kontakt lige under.
  • Sådan en plade kan også fungere som et lysende felt, hvis der sidder en kraftig LED nedenunder.
  • Propellerne fra en drone kan bruges som ventilator.
  • Byggeprojekt: stue-springvand.
  • Et mikroskop med mini-skærm kan bruges til det fine elektronik-arbejde.
  • Ved serie-forbundne solceller, kan en diode forhindre, at en af cellerne går.

Næste år skal vi mødes i Vejle og se Johannes & Co’s faciliteter (y).

Udgivet i Elektronik, Maker, Programmering | Kommentarer lukket til Sommerskole 2019

NetLogo

NetLogo er et agentbaseret simuleringsværktøj, som jeg bruger til computational thinking (CT). Her taler vi den konkrete del af CT, som arbejder med kode. Trods mine forbehold overfor endnu en platform til kodning, er mine første erfaringer med NetLogo overvejende positive.

Netlogo har en ret letforståelig syntax. Der er få mystiske ord og tegn (fx er mange sprog fyldt med { } parenteser og semikolon-tegn) og ingen indryk (som kendes fra Python). Erklæringer og opdateringer klares med nøgleordet “set” og systemet er født med en tids-variabel (dt=1), som inkrementeres for hvert loop.

Mit konkrete forsøg omhandler simulering af logistisk vækst. Eleverne får udleveret en online model i NetLogo over eksponentiel vækst (dN = N*r*dt), som de skal forstå og skal modificere til at simulere en logistisk vækst (dN = (N*r_max*(1-N/K))*dt). Der plottes forskellige data mod tid fx antal individer, vækstrate, bæreevne). Simulationen er selvfølgelig ledsaget af nogle stilladserende spørgsmål, som sikrer faglig og taksonomisk progression.

Jeg har lavet samme system i Python, hvilket er meget let vha. Numpy biblioteket og platforme som fx trinket.io.

MEN.. NetLogo tillader implementering af ‘slidere’, så værdier som N(0) (start population), vækstrate, bæreevne m.v. kan manipuleres før eller under simuleringen. Det giver online Python ikke mulighed for (der findes et underbibliotek af Numpy, som ikke er en del af trinket.io).

NetLogo-applikationerne har jeg gemt i en onlineudgave, som hostes på en Github-side. NetLogo HTML koden er MEGET lang, så hverken et google-site eller github, kan vise hele teksten i HTML-filen, hvorfor ændringer bliver foretaget i notepad :-(, som derefter oploades til mit Github-repository og vises på siden.

Nu er jeg selvfølgelig spændt på hvad eleverne siger. Finder de det let at forstå og ændre koden? -De tog ret blandet imod opgaven. Givet de er 3g’ere i slutningen af skoleåret og gymnasiet, var motivationen ikke særlig høj. Ingen havde svært ved at løse opgaverne, men det var ret blandet hvor langt de nåede. Fx nåede de færreste opgaverne med forsinkelse indbygget i modellen. Nogen gav udtryk for, at det var sjovt..

Hele opgaven: https://raskrawen.github.io/Growth/

Senere fik jeg det råd, at lave en endnu mere grafisk model, hvor hvert individ er en prik. På den måde bliver det forhåbentligt tydeligere for eleverne at det er en population vi modellerer.

Udgivet i biologi, Computational thinking, Programmering | Kommentarer lukket til NetLogo

Kø i Micro:bit

Jeg påstår at en Micro:bit kan udføre de samme opgaver, som en Arduino. Dertil en Micro:bitten nemmere at komme igang med (indbyggede sensorer og LED’ere) og har mere hukommelse og hurtigere processor end Arduino.

Micro:bittens ry for “at være til børn” skyldes nok, at den er udleveret til 4. klasser, og de fleste online kilder er henvendt til børn. Micro:bit er yngre, og derfor er der mindre materiale, den er britisk, så det amerikanske og asiatiske marked udviser begrænset interesse. Dertil skal den ofte forbindes til et breakout-board for at lave avancerede ting.

Selv kodningen er også lidt anderledes. Arduino kodes traditionelt i et c++ lignende sprog, mens Micro:bit normalt begynder med blokke, derefter JavaScript og til slut MicroPython, hvis der skal meget funktionalitet på.

Et Arduino-program afvikles sekventielt fra A til B til C, der er ingen andre veje. Noget der har irriteret min underbevidsthed er, at på Micro:bit afvikles en start-sekvens og derefter et forever-loop. Men forever er ikke forever, for smider jeg en “onButtonAPressed” funktion ind bliver den afviklet, når knap A trykkes.

Forever afbrydes -der er noget ulogisk i den sekvens. Noget jeg ikke har kontrol over.

Eksemplet herunder kører netop et blinkende hjerte i forever-funktionen, men trykkes på knap A kommer et Happy-face pludselig frem.

Heldigvis har jeg fået genoprettet min logiske sindsro ved at lære om Micro:bits scheduler, som holder styr på, hvad der afvikles hvornår. Funktionerne på Micro:bit afvikles via en runtime-kø. Scheduleren checker hver 6. millisekund rækkefølgen i runtime-køen, og Forever-loopet har laveste prioritet (kører i baggrunden) i runtime-køen.

Dvs. når der sker en event køres en event-handler fx input.something, og denne kommer ind forrest i runtime-køen og bliver straks afviklet. Sker der andre events kommer de ind bag i køen. Funktioner der afvikler en pause stilles i en pause-kø og fortsættes, når pausen er slut. Imens der er pause, kan næste funktion i runtime-køen starte/fortsætte.

Derfor vil eksemplet herunder også vise et blinkende hjerte (forever-loopet). Men når der trykkes A, afvikles en event-funktion og en smiley vil straks fremkomme. Derefter går eventhandler-funktionen på 5 sekunders pause, og imens kører forever-loopet igen, indtil pausen er forbi, eventhandler-funktionen kører videre, som ses ved en sur smiley.

Arduinoen kan selvfølgelig noget lignende via Interrupts, der lytter efter events, men disse skal hardkodes, hvorimod Micro:bitten umiddelbart er født med interrupts.

Mere info: https://makecode.microbit.org/reference/event-handler, https://lancaster-university.github.io/microbit-docs/ubit/messageBus/

Udgivet i Arduino, Micro:bit, Programmering | Kommentarer lukket til Kø i Micro:bit

Bæredygtig Arduino

Melorme er måske en mere bæredygtig og proteinrig spise end animalsk kød dvs. hønse-, svine- og specielt oksekød. En af hovedårsagerne er, at melorme ikke er varmblodede, hvorfor de ikke spilder energi på at holde en konstant kropstemperatur. Dertil stiller de færre krav til miljøet -de bruger mindre plads og kan leve af mange forskellige fødekilder. Fx kan de efter sigende leve af ekspanderet polystyren, som er den type plastik vi finder i engangs-termokrus o.l. Mere om det senere.

Pengo [CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0)]

Givet at melorme er mere bæredygtige, vil vi gerne dyrke dem, og for at lette byrden vil vi monitorere dem. Men kan det være bæredygtigt, at bruge en masse strøm og dermed energi, på at holde elektronik i gang for at måle på ormene?

Konkret arbejder jeg (selvfølgelig) med Arduino. Strømstyrken og dermed energien, som enheden trækker kan fx måles med et multimeter, som forbindes serielt. En standard Arduino model (Uno) bruger i sig selv ca. 55 milli ampere (mA) uden at køre et program, hvilket er relativt meget. F.eks. kan et lille 5V batteri på 1000 mAh dermed holde en Arduino Uno kørende 1000mAh/55mA=18 timer dvs. ikke engang et døgn, før det skal genoplades.

Heldigvis kan energiforbruget i elektronik skrues meget ned. Der er en række ting man kan gøre:

  • Skifte til Arduino Nano eller Pro. Nano’en bruger i sig selv ca. 30 mA.
  • SleepMode. Arduinoen kan sættes i sleepmode, så processor og visse komponenter slukkes. Dog kører der et internt ur, som kan sættes til at vække Arduinoen med jævne mellemrum. Dette ur kan også slukkes, men så kræves et signal udefra fx tryk på en knap, for at vække Arduinoen. Det sænker strømforbruget til ca. 17 mA.
  • Afbryde forbindelsen til power-LED. De fleste Arduinoer har en LED, som er tændt, når der er spænding på enheden. Denne trækker efter sigende ca. 3 mA. Med en kniv kan forbindelsen til LED’en afbrydes.
  • Jeg vil gerne have et display i mit kredsløb. Et LCD display har baggrundslys m.m., som sluger energi. I stedet har jeg brugt et lille e-Paper, som kendes fra e-readere. Det kræver energi at opdatere det, men ellers ikke. Dvs. efter opdatering kan man slukke for strømmen, og ePaper displayet vil holde billedet i månedsvis.

Jeg har endnu ikke estimeret kredsløbets strømstyrke forbrug. Det svinger en del mellem sleepMode og awake, så jeg ville gerne bruge mit USB multimeter. Men når Arduinoen går i sleepMode, går multimeterets måling i stå, måske fordi strømforbruget bliver så småt. Men ender jeg på i snit 5 mA giver det en løbetid med et 1000 mAh batteri på 200 timer dvs. ca. 8 døgn.

Om det er bæredygtigt ved jeg ikke. CO2-neutral bliver den nok aldrig. Selv med energi fra en solcelle, og genbrug af komponenter, koster produktion og transport af enheden noget.

Udgivet i Arduino, biologi, innovation | Kommentarer lukket til Bæredygtig Arduino

LIVE: Danmarks CO2 udledning

Dette projekt er i hovedsagen en implementation af et projekt af Dybber, som kan findes på GitHub.

CO2-display

Projektet kredser om IoT og bæredygtighed. En mikrocontroller (MCU) med wifi adgang (wemos d1 mini med ESP32 chip), tilgår sitet www.electricitymap.org og henter opdaterede data om DK’s CO2 udledning i g CO2/kWh. Sitet virker troværdigt, men der vil altid være usikkerhed og evt. fejlkilder ved sådanne data. En strip af 30 stk ws2812b LEDs er koblet til microcontrolleren, som kodes til at vise CO2 udledningen med rød på en skala fra 0 til 30 LED’s svarende til 0 til 400 g CO2/kWh.

Da skolens wifi er svært tilgængeligt for IoT enheder, har jeg sat mit eget netværk op gennem netdeling fra en gammel smartphone (Samsung Galaxy 4s mini), som kører Android. Denne kan kun tilgås af 4 enheder, men jeg har kun en enhed. SSID og kodeord på netværket skal ind i koden på MCU’en. Jeg har forsøgt med en iPhone 4, men det virkede ikke.

Netværket udbydes via et taletidskort fra Lebara til 50,- i føtex. Der ligger et simkort i pakken med 10,- taletid på. Jeg kan ikke se nogen steder i dokumentationen, hvor meget data der følger med, men da det er meget meget lidt trafik projektet kræver, har jeg endnu ikke mødt problemer. Deres minimum i andre tilbud er vist 4 Gb data, og projektet her skal måske bruge 100 kb. Alternativt kan simkortet tankes op anonymt med 4 Gb data til yderligere 50,-. NB Alle Lebaras produkter SKAL bruges i løbet af 30 DAGE.


ESP8266
Billie Grace Ward from New York, USA [CC BY 2.0 (https://creativecommons.org/licenses/by/2.0)]

Mobiltelefonen skal stilles til at lade være med at opdatere noget som helst (ingen opdatering af apps, mails, notifikationer m.m.), wifi skal deaktiveres og mobilt hotspot aktiveres. Det mobile hotspot bliver holdt åbent, så længe MCU’en ofte henter data, men ønsker jeg at ændre timeout-tiden for mobilens hotspot, skal det gøres ved at gå ind i “mobile hotspot konfigurations” menuen på telefonen og trykke “apps” knappen nederst i venstre hjørne -der vises ingen ikon eller menu, som viser at man skal trykke her -men en dialog fremkommer, hvor man bl.a. kan vælge timeout = never.

Rækkevidden på hotspottet har jeg testet med en MCU (wemos ESP8266), og den er ret pæn a la de 25 meter, også gennem vægge. Det er ca. som jeg har læst mig frem til på nettet.

For at hente data på www.electricitymap.org, har jeg bestilt og modtaget et gratis API-token, og set på deres dokumentation ved API. Data hentes som en JSON-fil og token skal angives som header i en http get-request. Jeg bruger countrycode=DK-DK1, som er Fyn og Jylland.

Jeg forsøgte at kode MCU’en C++ (Arduino) til at tilgå nettet og hente data, ingen af de biblioteker jeg kunne finde tillod at have headers med i en get-request. Måske er det bare mig der ikke kender syntaxen.

I stedet har jeg koden den i MicroPython via editoren Mu, som Dybber også har gjort, og min kode er en variation over hans oplæg. Dertil har Dybber (vist) skrevet det bibliotek (Mode) til Mu-editoren, som tillader at kode ESP8266 og ESP32 med MicroPython. Ideen er, at der lægges en lille udgave af Python (kaldet MicroPython) ned på MCU’en og denne kompilerer og afvikler koden, efter den er downloaded til MCU’en. Det er forskelligt fra den traditionelle måde at styre en Arudino via C++, hvor koden kompileres på PC og kun afvikles på MCU’en.

MicroPython kommer ned på enheden via denne guide. Jeg brugte
og version 1.10 til ESP32 også version 1.10.bin til ESP8266, men inkl kommandoerne (-fm dio er vist afgørende) i windows command prompt (ikke powershell):

esptool.py –port com7 –baud 115200 erase_flash

esptool.py –port com7 –baud 115200 write_flash -fm dio –flash_size=detect 0 ./Desktop/esp8266-20171101-v1.9.3.bin (filen ligger på Desktoppen, og NB “–” er to streger efter hinanden.)

MicroPython har biblioteker for netværk, LED-strip (machine) og meget andet. Nogle afgørende punkter er, at connect() og disconnect() kræver noget tid (5-6 sekunder), for ikke at gå i stå midt en forespørgsel. Derfor er der utime.sleep(10), dvs. 10 sekunders pause, efter hver. Disconnect er måske ikke nødvendig, men det sparer nok noget energi at afkoble netforbindelsen (active(false) skulle nok også med). Hele koden kan ses på GitHub.

Jeg har ikke haft held med REPL-delen af Mu-editoren, som bl.a. kan skrive fejlbeskeder fra serial-forbindelsen til MCU’en. Eneste debugging har være en LED på MCU’en (GIO02), som kan blinke et antal gange.

.dxf tegning til lasercutter.

Lyskæden har jeg monteret i et laserskåret tårn i 3mm MDF, med påskriften “Hvor meget CO2 medfører DK’s forbrug af strøm” og tallene 400, 200 og 0 g CO2/kWh. Dertil en seddel med mere uddybende info.

Jeg er som altid spændt på hvordan eleverne tager opstillingen. Ænser de noget eller går forbi uden at kigge? Er teksten klar nok?

Update1: Da jeg skrev koden, var det koldt og CO2-udledningen lå nemt på 400 g CO2/kWh. Derfor satte jeg skaleringen til 500 g CO2=30 LEDs. Ugen efter blev det 20 grader og CO2-udledningen kommer aldrig over 250 g CO2/kWh. Årligt snit er 200 g CO2/kWh. Derfor har jeg nu skaleret aksen til 50-250 g CO2/kWh.

Derfor kom CO2 udledningen nogle gange over 250 g CO2/kWh, hvorfor antallet af kaldte LEDs blev over 30 på en LED-strip defineret til 30. Så smider programmet en undtagelse (exception) og standser.

Nu har jeg nu refaktoreret programmet, så skalerings-funktionen kan kun returnere værdier mellem 0 og 30.

Eleverne reagerer ikke og har kun skuldertrækninger tilovres for projektet. Måske fordi det endnu er i test.

Udgivet i Arduino, Maker, Programmering | Kommentarer lukket til LIVE: Danmarks CO2 udledning