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

Maskinlæring med JavaScript

Lineær regression med JavaScript

Jeg har længe ville lave en mere spiselig udgave til nettet af en maskinlæring-algoritme til lineær regression.

Klik i diagrammet for at tilføje flere punkter.

En svaghed ved algoritmen er, at linjernes ændring bliver meget voldsom for nye punkter med høje x-værdier, da algoritmen beregner ændringen af a (hældningen) ud fra deltax. På den måde virker algoritmen muligvis kun for mange punkter, som allerede ligger tæt på en ret linje. Eller måske kan algorimen videreudvikles.

Koden er skrevet via CodePen, som er et online miljø til at kode og vise resultatet af kode, som kan indlejres på websider. Lignende miljøer er Trinket.io, p5.js og repl.it.

See the Pen Linear regression with Machine Learning by Rasmus Kragh Wendelbo (@raskrawen) on CodePen.

Udgivet i Maskinlæring, Programmering | Kommentarer lukket til Maskinlæring med JavaScript

Programmering for lærere

Jeg følger p.t. kurset “Programmering for gymnasielærere” på AU. Sproget er Java. Gymnasielærer-delen ligger kun i, at undervisningen er organiseret i seminar-dage og ikke fordelt over 2-3 timers ugentlige sessioner. Der er ingen didaktiske tips på kurset.

De stiller store krav på kurset, og jeg kommer ikke sovende igennem. En mere retvisende titel på kurset kunne være “Introduktion for programmører”, fordi man på kurset lægger vægt på, at tænke som en programmør, frem for blot at få noget kode til at fungere.

Jeg er vant til, at når koden virker som forventet, er opgaven løst. Men på dette kursus, skal koden også være pæn og effektiv. Dertil er der nogle abstraktioner i systemerne vi udvikler, som er på højere niveauer, end jeg har været vant til. Det er en stor kvalitet i kurset -jeg lærer noget, som YouTube og korte introduktioner til JavaScript ikke kan give.

Det er som regel sundt, at sætte sig i elevernes sted for en stund. Her oplever jeg frustrationerne og smerten (ja), ved at have svært ved at forstå selve opgaveformuleringen og ved at genaflevere løsningsforslag igen og igen.

Welcome to the learning pit.

Udgivet i Programmering | Kommentarer lukket til Programmering for lærere

CO2-aftryk fra en Arduino

Et multimeter, er et lille sjovt værktøj, som kan bidrage til tanker om forbrug. Den måler strømforbruget på dimser, som får strøm via USB. Dvs. man kan måle, hvor meget det koster at:

  • lade min mobil op
  • et klik med min mus
  • køre en Arduino 
  • køre en Arduino i Deep Sleep-Mode 

Apparatet måler spænding (i V), strømstyrke (i A), tid og akkumulerede eller afledte værdier af disse fx effekt (i W) og energiforbrug (i Wh). 1 Wh er lig 3,6 MJ (megaJoule). Det koster ca. 7 dollars (ca. 60 kr) på AliExpress.

Her måler den på en opstilling af en CO2-måler med OLED og wifi-kobling via Arduino (Wemos D1), som sender data hvert 10. minut.

Målingen viser et akkumuleret energiforbrug på 0,754 Wh på 1 time og 20 minutter. Det kan omsættes til en pris på 3 øre i døgnet og et CO2 aftryk på 11 gram CO2 i døgnet. Se nedenfor.

Min Arduino wemos D1 i kredsløb med CO2-sensor:

energiforbrug i tidsperioden0,754Wh
minutter20minutter
timer1timer
samlet tid1,33tid i timer
energiforbrug pr. time0,5655Wh pr. time
energiforbrug pr. døgn13,572Wh på 24 timer
energiforbrug pr. døgn0,013572kWh på 24 timer
pris for energi2,29kr pr kWh*
pris for 24 timers brug0,0310kr for 24 timers brug
pris for 24 timers brug3,1ører for 24 timer brug
CO2 udledning pr. kWh800g pr. kWh**
CO2 udledning pr. døgn10,9g  
* baseret på fx https://www.se.dk/elpriser
** baseret på klimarådets meget konservative skøn, https://www.danskenergi.dk/sites/danskenergi.dk/files/media/dokumenter/2017-07/Analyse26_EffektAfElforbrugpaaCO2%20%282%29.pdf 

Er 11 g CO2 pr. døgn meget eller lidt? En dråbe i havet? Time will tell.

Udgivet i Arduino, Computational thinking, Elektronik, Maker | Kommentarer lukket til CO2-aftryk fra en Arduino