Luftkvalitet i klassen

Der findes helt utrolig mange forskellig sensorer til Arduino. Jeg har for tiden kastet min kjærlighed på en CO2-gas specifik sensor.

En CO2-sensor kan bruges til at undersøge mange ting. Bl.a.:
* Udåndingsluft (afslører om man forbrænder fedt eller kulhydrat)
* Fotosyntese
* Respiration i jord
* Drivhus-effekt
* Luftkvalitet i klassen

Vernier sælger en sensor, men til omkring 3000,- pr. styk, har vi kun råd til nogle få.

Efter at have kæmpet noget tid uden held med CO2-sensoren MG811, faldt jeg over sensoren MH-Z14, som koster omkring 20 US dollars (ca. 150,- kr.):

Som ses kan den give output på flere måder. Jeg har været nødt til at vælge den ringeste: Analogt output, fordi mit board (Wemos D1) af en eller anden grund ikke kan arbejde med PWM (Arduino Uno kan godt). Men det analoge output, som er et tal typisk mellem 0 og 1023, har fungeret nogenlunde.

Den pin med det analoge output forbindes simpelthen til A0 på Wemos D1 (eller Arduino). Denne vejledning har hjulpet mig meget.

Den virker ved IR-absorption (NDIR) ved en bølgelængde på 426 nm. Her er det stort set kun CO2, som absorberer, hvorfor vi undgår signal fra andre gasser bl.a. vand, N2 m.m. Det er smart.

efter CC BY-SA 3.0, Link

Kalibrering:
Jeg kender kun tre blandinger med kendt CO2-indhold eller signal:
1) en CO2-fri blanding, opnås fx vha. gas fra en flaske helium eller bedre N2.
2) frisk luft. CO2-indhold = 400 ppm
3) sensoren kan max registrere 5000 ppm. Her over vil det analoge signal være max.
Ifølge dokumentationen er der en linær sammenhæng ml. signal og CO2-indhold.

Frisk luft giver et signal på ca. 170, som svarer til 400 ppm.
Mætning med CO2 (fra udånding) giver signal på ca. 420, som burde svare til 5000 ppm.
Så følsomheden er ikke så stor. 1 enhed svarer til et skift på ca. 20 ppm.

Jeg har brugt en “map” funktion til at omregne det analoge signal til ppm. Men det kan eleverne lige så godt selv gøre.

De fleste IR-sensorer er følsomme for større lys-spredende partikler fx vanddråber. Fx har jeg oplevet nogle pudsige målinger, som jeg tilskriver dug. Temperatur kan også have en betydning, og bør holdes konstant.

Resultaterne sendes via wifi til Thingspeak.com serveren, så de kan tilgås fra alle enheder og når som helst. (se koden nederst)

Eksempler:
CO2 målt i et klasseværelse over et par dage:

CO2 målt i en lukket beholder med en plante på en solrig formiddag m.v.:

Det sidste fald i CO2-indhold ud på natten, kan jeg ikke helt forklare. Under opvarmningen midt på dagen, blev der dannet en del kondens, idet jorden ved planten var gennemvædet. Kondensen har måske påvirket sensoren i de kølige nattetimer? Normalt ville jeg forvente at kondens fik signalet til at stige.

Til prisen virker det som en super sensor. Enkelt, specifik og tilstrækkelig følsom. Jeg har bestilt fem styks 🙂

#include <ESP8266WiFi.h>

/*
Wemos D1 -- MH-Z14
5V -- VCC
GND -- GND
A0 -- Analog output
*/

// replace with your channel’s thingspeak API key and your SSID and password
String apiKey = ""; //kode fra thingspeak.com
const char* ssid = ""; //netværk navn
const char* password = ""; //netværk kode
const char* server = "api.thingspeak.com";
WiFiClient client;

//const int PWM=3;
long co2ppm;
long co2volt;


void setup()
{
  Serial.begin(115200);
//Serial.println (" CO2 PWM program is running ..");
  pinMode(D4, OUTPUT);
Serial.println("begyndelse");
delay(10);
Serial.println("WIFI begin");
delay(1000); 
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
delay(1000); 
while (WiFi.status() != WL_CONNECTED) 
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
 }

void loop()
{
/*
while (digitalRead(PWM) == LOW); {}
  long startTime = micros();
  while (digitalRead(PWM) == HIGH);
  {
  long duration = micros() - startTime;
  //from datasheet
  //CO2 ppm = 5000 * (Th - 2ms) / (Th + Tl - 4ms)
  //  given Tl + Th = 1004
  //        Tl = 1004 - Th
  //        = 5000 * (Th - 2ms) / (Th + 1004 - Th -4ms)
  //        = 5000 * (Th - 2ms) / 1000 = 2 * (Th - 2ms)
        co2ppm = 5 * ((duration/1000) - 2);
    }
  
//  Serial.print(co2ppm);
//    Serial.println(" ppm fra PWM");
  //  delay (30000);   //wait  30 sekunds      
*/
  
  co2volt=analogRead(A0);
Serial.println(co2volt);
// Serial.println(" volt fra A0"); 
  
  co2ppm=map(co2volt, 170, 423, 400, 5000);
// Serial.println(co2ppm);
 //Serial.println(" ppm fra analog");
 //Serial.println(); 
  digitalWrite(D4, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(D4, LOW);    // turn the LED off by making the voltage LOW
 // delay(300000); 
 
  if (client.connect(server,80)) {
String postStr = apiKey;
postStr +="&field1=";
postStr += String(co2ppm);
postStr +="&field2=";
postStr += String(co2volt);
postStr += "\r\n\r\n";
 
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
//Serial.println("sender til web");
 }
client.stop();
 
//Serial.println("Waiting 30 secs");
// thingspeak needs at least a 15 sec delay between updates
// 30 seconds to be safe
delay(30000);
}

Udgivet i Arduino, biologi, bioteknologi | Skriv en kommentar

MS Classroom førstehåndsindtryk

Jeg har grebet årsskriftet og starten af studieretninger, til at prøve Microsoft Classroom med et hold.

Med Classroom forsøger MS fornuftigt nok, at tage det bedste fra flere af de services, som de tilbyder.

Eksempler:

Problem: websteder i sharepoint er tunge at redigere, som kan ligne noget fra 90’erne.
Classroom: har sin egen skal, som ligner Google Classroom, og som ikke kan redigeres, men har de mest nødvendige genveje indbygget. Tilgengæld snupper Classroom fildeling fra webstedet, og lader resten ligge 🙂

Problem: Klassenotesbog skal oprettes af læreren, og det kan være en barriere.
Classroom: Klassenotesbogen oprettes automatisk.

Problem: Det er svært at håndtere opgaver i websteder.
Classroom: Kan bruge klassenotesbog, men Classroom har også sin egen opgave-funktion med afleveringsmapper, og som er tilknyttet kalenderen med deadlines. Svært at anvende, så længe vi skal bruge Lectio, hvis jeg ikke vil lave dobbeltarbejde.

Problem: Det er svært at få eleverne til at checke nyhedsstrøm eller diskussionsfora i sharepoint.
Classroom: Har medlemmerne i en gruppe, som får beskeder ind i outlook. Jeg er ikke sikker på det er en god løsning, da vi netop bruger sociale medier, for at begrænse antallet af mails, og få dialogen til at flyde hurtigere og mere uformelt. Derfor er det netop rart at have mails i en app og sociale medier i en anden. Men måske er det blot et spørgsmål om vane, at se outlook som socialt medie?

Oprettelsen går rimeligt, når man bruger et par tricks til at få elevernes email-adresser copy-pasted (spørg Peter Olsen), og tilføjer dem i outlook-groups.

Jeg synes, at der er mange gode takter i Classroom. Der hvor man endnu ikke har ramt sømmet, er i tilladelses-styringen (rettigheder). Jeg kan ikke se, hvordan jeg kan ændre tilladelserne i dokumentbiblioteket.

Der vil altid være nogle filer, som eleverne ikke skal have mulighed for at ændre. Og så vidt jeg kan se har de redigerings-rettigheder til det hele. Der er ingen STOP-deling knap, og de avancerede indstillinger fører til en labyrint af muligheder. Fx en gruppe, som hedder members, men som ikke indeholder medlemmer.

Så inden længe, må jeg nok bede eleverne om at vi migrerer “tilbage” til et almindeligt holdsite og klassenotesbog i sharepoint, hvis jeg eller MS ikke finder en adgang til rettighedsstyring i Classroom.

Det MS skulle lave (og som måske er på vej), er en nem og overskuelig måde at se og ændre rettigheder på alle niveauer fra fil, mappe, webdel til site. Så rykker det.

Udgivet i Klassenotesbog, office 365 | Skriv en kommentar

Hour of Code aktiviteter

Der er rigtig mange aktiviteter at vælge imellem på www.hourofcode.com.

En del aktiviteter er desværre svære at bruge i undervisningen på en time enten fordi:
* Man skal downloade og installere noget
* Man skal oprette en konto
* De virker kun på bestemte enheder eller styresystemet fx Android
* En del er også så overfladiske, at de ikke er værd at bruge tid på (hvilket ikke afsløres af alders-kategoriseringen)
* Nogle er så komplicerede, at de ikke kan fungere på en time en tirsdag sidst på eftermiddagen, hvor eleverne gerne skulle få en oplevelse af succes.

Jeg har leget lidt med nogle af aktiviteterne, her listet fra mest til mindst velegnet til en time hour of code imo:

1. Write your first computer program (Angry Birds): Lige nu tænker jeg at begynde med denne simple og korte aktivitet. Bruger blokke. Online uden login. Grundige instruktioner via video+tekst. Al tekst på dansk. Loops og hvis-så-ellers sætninger.

2. Minecraft Designer: Nok mest til MineCraft fans. Engelsk (mest). Instruktionen er lidt rodet, så man skal af og til klikke lidt rundt omkring for at finde ud af hvad de egentlig mener man skal gøre. Den er meget sjov, når den er færdig, for så får man hele sandkassen af muligheder for at lave sin egen Minecraft-verden, herunder programmere Creepere m.m. Dog! det er ikke ægte MineCraft (heller ikke Pocket edition), det er et andet UI i en mere begrænset 2D-verden (ca. 100×100 felter). Men den kan åbnes på telefonen i en browser og ser ud til at virke.

3. Code Combat (Kithgard Dungeon): Gamificerede øvelser -du tjener diamanter pr. løst opgave. Øvelserne er rimelig nemme, men den bliver hurtigt noget tekst-tung, hvor jeg er nødt til at læse en del tekst for at løse en meget simpel opgave. Jeg har løst de første 20 opgaver. Python.

4. MIT App inventor: Vil desværre helst bruge en Google-konto og en Android telefon (der er workarounds). Internet Explorer og Safari er vist ikke understøttet. Der er både drag and drop af det grafiske udtryk af appen, og der er noget blok-programmering til at styre egne knapper o.l. funktioner, så det hele ikke er blackbox.

5. Code with Anna and Elsa: På dansk. Blokke. Online. Man skal tegne cirkler og andre former. Loops, men ikke hvis-sætninger.

6. Simple Encryption: Spændende emne. Kryptering og at bryde samme. Jeg nåede ikke at forstå meget af hvad der foregår i aktiviteten. Høj barre for mig.

7. Build Pong with AI: Jeg vil gerne lege med AI (vil AI lege med mig?). Aktiviteten er en masse drag and drop, med meget lidt info om baggrunden eller øvelse i kodning.

8. Build YOUR mobile App (Bloxmop): En masse drag-n-drop uden nogen logik. Klik her og klik her. Det kræver at man opretter konto, for at få lov at hente den app man laver ned til sin mobil (skal være Android).

Udgivet i Digital Dannelse | Skriv en kommentar

Stilladsering af noter

Når elever går ud af stx/hf, skal de bl.a. have lært at komme gennem en forelæsning. Nogle elever kan det allerede første dag, nogle skal lære det. Forelæsning er ikke den bedste måde at lære på, og tiden kan ofte bruges bedre fx via flipped classroom eller produkt-orienteret arbejde. Men forelæsning er bl.a. en øvelse i at kunne koncentrere sig mere end 5 minutter og findes stadig på de højere læreanstalter.

Særligt i HF kan det være en udfordring, fordi eleverne er mere uddannelsesfremmede end på stx. Men eleverne i HF kan komme til at elske forelæsninger, på godt og ondt, under de rette omstændigheder.

Sekvensen skal ikke være for lang. 20 minutter er passende. Niveauet skal være tilpasset, måske gennem undersøgelse af forhåndsviden -hvis niveauet er bare lidt for højt, står de hurtigt af. Indholdet skal helst være relateret til en konkret opgave eller projekt.

Et kendt trick til at komme gennem en forelæsning, er at tage noter. Så eleverne SKAL TAGE NOTER og evt. aflevere dem. Ikke så meget for at lave et resume af indholdet, for det står alligevel ofte i andre kilder. Men for at være aktiv deltager i forelæsningen, og her er det vigtigt, at eleverne ikke forsøger at skrive alt ned, men sorterer i informationen. Prøv benspænd a la “du må kun skrive 10 ord ned”.

Jeg synes, at det er en god ide at stilladsere elevernes notetagning ved at udlevere “Noteark“, som er et dokument, hvor noterne er disponeret på forhånd i større eller mindre grad. Progressionen ligger selvfølgelig i, at noteark med tiden indeholder mindre og mindre forhåndstekst.

Nedenfor to eksempler fra hhv. første til senere noteark. I første noteark skal der næsten kun udfyldes enkelte ord. Senere er der kun overskrifter og evt. relevante billeder. Målet er et blankt dokument, som eleven selv kan betitle og disponere.

 Start Senere
 noteark1  noteark2

Notearkene kan udvides med “Mål med noterne”. Og der kan arbejdes videre med i hvilken grad målene er nået og med selve noterne gennem selvevaluering, peer-review, exit-tickets, quiz, klassediskussion m.m.

Det vil være oplagt at bruge Klassenotesbog til noterne. Desværre virker mit add-in ikke p.t., hvorfor jeg ikke kan distribuere siden og vurderer, at det vil tage uforholdsmæssig lang tid for eleverne at kopiere siden til deres egen sektion. Så vi bruger docx.

Jeg kan godt være lidt bekymret for, at eleverne er kommet til at holde af forelæsninger og efterlyser dem jævnligt. Undervejs er de ret stille. De noterer meget (for meget i nogle tilfælde). De sidder i deres egen verden, og får en fornemmelse af at mestre den snævre viden, som de får serveret. Jeg tænker: De bliver ikke udfordret nok. Måske skal eleverne have valget mellem sekvenser, baseret på deres forhåndsviden.

 

Udgivet i biologi, HF, kemi, Klassenotesbog | Skriv en kommentar

Faste grupper

I en meget livlig klasse jeg underviser, er der som i alle klasser, nogle som er ret dygtige, og nogle som er på vej til at blive det. Usikkerheden, som sidste gruppe har, kan give anledning til, at de ikke magter at udstille sig selv fagligt og risikere at opleve nederlag igen.

Det har bl.a. ført til at jeg sjældent lader elever fremlægge for hele klassen. En anden grund er, at jeg synes for mange tilhørere spilder tiden, under sådan et oplæg.

Den sidste måned har vi til gengæld arbejdet i faste grupper a 3-4 elever, som jeg har defineret på baggrund af elevernes ønsker. Eleverne skulle gerne havne i gruppe med nogen, som de ikke normalt hyggesnakker med, hvilket skulle dæmpe ikke-faglig småsnak. Og de skulle gerne komme i gruppe med nogen, som de er rimelig trykke ved. Målet er, at de i små trygge fora skal turde udtrykke sig fagligt gennem formidling og meningsforhandling, med mindre anledning til småsnak.

De fleste grupper har fungeret efter hensigten, efter min vurdering. Der er mindre uro, lidt mere arbejde. Enkelte grupper har ikke fungeret, fordi de ikke har fungeret socialt (store faglige forskelle har ført til sociale spændinger) eller de har hygget sig lidt for meget.

Udgivet i biologi, kemi | Skriv en kommentar

En selvlærende robot

Jeg har leget med forskellige små robotter af skrot (Brushrobot, Beambots, Insect robots, Walkers m.m.). Bl.a. denne lille Walker af en Arduino Nano, et 9V batteri og to servo-motorer:
wp_20161021_005
Kredsløb og kode ses nederst.

Den er ret svært at få til at gå, da det er næsten umuligt at forudsige hvilke vinkler servoerne skal dreje til.

Som regel står den stille (forkerte eller for små udsving i benene) eller den vælter (for store bensving). Det tager nogle minutter, at prøve hvert sæt indstillinger, så det bliver jeg hurtigt træt af.

Jeg har derfor lavet en lille ret enkel kode, så den selv kan lære at gå. Det kaldes vist Robot Learning: Robotten har den tid og tålmodighed, som jeg ikke har.

For at kunne lære, skal den have et mål, som bruges som belønning/straf. Da jeg gerne vil have den til at gå fremad, skal den belønnes, når det sker. Her har jeg givet den en lyskilde, som den kan gå imod. Og en lyssensor (LDR) måler, hvor meget robotten kommer nærmere lyskilden.

Robotten får et sæt tilfælde parametre, som bruges til at tage tre “skridt”, hvorefter den vurderer, om den er kommet nærmere lyset. Derefter nye tilfælde parametre, tre skridt og ny vurdering. Det gentages 10 gange. Hver gang vurderer den desuden, om den har lavet en ny rekord i at komme nærmere lyset, så bedste resultat gemmes.

Rødt lys = der er strøm på.
Rødt blink = et nyt sæt tilfældige parametre er valgt.
Grønt blink = Rekorden er slået. Bedste resultat gemmes.
Grønt lys (blivende) = “Fri fra skole”. Bedste resultat af de 10 forsøg bruges til at gå(!) videre.

Der er desuden nogle præmisser, som jeg har valgt: Rækkefølgen og max antal grader servoerne skal bevæge sig. Den vej på robotten som jeg forventer er fremad. Dem kunne den også blive sat til at optimere. Eller den kunne få servomotorerne sat sammen på en anden måde.

Eksemplet her er tumpe-måden at lære på. Også kaldet Brute Force metoden. Skal der læres mere komplicerede ting, løber vi hurtigt tør for regnekraft. Så kan kunstig intelligens måske hjælpe med at forudsige parametrene, og pludselig er vi alle uden job. Mon ikke SIRI-kommissionen skal kigge på min skabning?

Kredsløb:
robot-walker-m-lyssensor_bb
Ups. Mangler grøn LED fra pin 2 til GND.

Kode:
Koden er delvist skrevet i mBlock, hvorfor nogle biblioteker og linjer måske er overflødige.

#include "Arduino.h"
#include "Wire.h"
#include "SoftwareSerial.h"
#include "Servo.h"

double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
Servo servo_10;
Servo servo_9;
double lys=0; //måles på pin A5.
int vinkel1;
int vinkel2;
int vinkel3;
int vinkel4;
int delta = 15;
int score;
int bestScore = 0;
int bestVinkel1;
int bestVinkel2;
int bestVinkel3;
int bestVinkel4;

void setup(){
  Serial.begin(9600);
  pinMode(2,OUTPUT); //LED grøn
   pinMode(13,OUTPUT); //LED rød
  servo_10.attach(10);
  servo_9.attach(9);

  //nulstille benene:
       servo_10.write(100); // den ene servo sidder lidt skævt
        delay(1000*0.5);
        servo_9.write(90);
        delay(1000*0.5);

  // nulstille bedste vinkel:
      bestVinkel1=0;
      bestVinkel2=0;
      bestVinkel3=0;
      bestVinkel4=0;
      
  for(int j=0;j<10;j++)
  {
    vinkel1 = (random(-delta,delta));
    vinkel2 = (random(-delta,delta));
    vinkel3 = (random(-delta,delta));
    vinkel4 = (random(-delta,delta));
    digitalWrite(13, HIGH);
    delay(1000);
    digitalWrite(13, LOW);
    lys = analogRead(A5);
    Serial.print("før: ");
    Serial.println(lys);
    for(int i=0;i<3;i++)
    {
        servo_10.write(100+vinkel1);
        delay(1000*0.5);
        servo_9.write(90+vinkel2);
        delay(1000*0.5);
        servo_10.write(100+vinkel3);
        delay(1000*0.5);
        servo_9.write(90+vinkel4);
        delay(1000*0.5);
    } // slut på lille for 

    score = lys - analogRead(A5); //bliver mere negativ jo nærmere den kommer på lyskilden.
    Serial.print("efter: ");
    Serial.println(score);
    
    if (score < bestScore) { // bliver der sat ny rekord?
      digitalWrite(2, HIGH);
      delay(500);
      digitalWrite(2, LOW);
      bestScore = score;
      bestVinkel1=vinkel1;
      bestVinkel2=vinkel2;
      bestVinkel3=vinkel3;
      bestVinkel4=vinkel4;
    }
    //nulstille benene:
       servo_10.write(100);
        delay(1000*0.5);
        servo_9.write(90);
        delay(1000*0.5);
        servo_10.write(100);
        delay(1000*0.5);
        servo_9.write(90);
        delay(1000*0.5);    
  } //slut på store for
}

void loop()
{
          digitalWrite(2, HIGH);
        servo_10.write(100+bestVinkel1);
        delay(1000*0.5);
        servo_9.write(90+bestVinkel2);
        delay(1000*0.5);
        servo_10.write(100+bestVinkel3);
        delay(1000*0.5);
        servo_9.write(90+bestVinkel4);
        delay(1000*0.5);

        
  
}

Udgivet i Arduino | Skriv en kommentar

Arduino vs. Raspberry Pi vs. Micro:Bit

Tre billige microcomputere eller -controllere, som ofte bruges i undervisning om robotter, programmering, dataopsamling, IoT o.l., er Arduino, Raspberry Pi og Micro:bit. Sidste er produceret af BBC i samarbejde med bl.a. Microsoft og udleveret til alle engelske skolebørn medio 2016. Flere andre firmaer er også ude med lignende enheder bl.a. Intel og Texas Instruments, omend de ikke er så populære.

Hvilken af de tre enheder skal vi satse på i undervisning? Det korte svar er: alle tre, det kommer an på forudsætninger, rammen og indholdet i øvrigt, da hver enhed har sine fordele og ulemper mht. teknik og tilgængelighed.

Men hvilken enhed skal vi som regel bruge i ungdomsuddannelserne? Her er min vurdering.

Raspberry Pi (Zero):
Pi Zero
Raspberry Pi er en microcomputer (eget styresystem og hukommelse), og kan derfor næsten ikke sammenlignes med de andre dimser, som er microcontrollere (uden styresystem, skal styres fra en computer).

Den kræver en skærm og et keyboard. Den har hukommelse og processerkraft, så den kan utrolig meget fx arbejde med video eller fungere som en server. Det er trods alt projekter, som vi sjældent laver i almindelig undervisning. Desuden har den kun digitale ind-/udgange, så måling fra nogle sensorer er lidt mere besværligt.

Da den kom frem i 2012, var det håbet, at lærere og skoleelever ville tage Pi’en til sig for at lære om computere. Det er vist kun sket i ret begrænset omfang. Barren ligger for højt for begge grupper.

Arduino:

Arduino Uno - R3.jpg
By SparkFun Electronics from Boulder, USA – Arduino Uno – R3, CC BY 2.0, Link

Arduino er en microcontroller, som er meget alsidig. Den har mange både digitale og analoge ind-/udgange (pins), så den kan kommunikere med mange komponenter, herunder sensorer. Det er ikke nødvendigt at lodde, men ledninger skal afisoleres i enden. Den kræver min. 6V (gerne mere) for at fungere, så et USB-kabel eller et 9V batteri er som regel nødvendigt, hvilket giver mulighed for 40 mA output.

Der er et stort community omkring Arduino både blandt undervisere, makere og forskere, og anvendelserne strækker sig bl.a. fra robotter og droner over IoT og 3D-printere til satellitter.

Micro:bit:
microbit-gif-870-pix
Micro:bit er den nye dreng i klassen. Den har 20 ind-/udgange, hvoraf de 3 nemt kan tilgås med krokodillenæb. Resten skal tilgås via et skjold. Desuden har den indbygget nogle af de mest anvendte sensorer: temperatur, gyro, accelerometer, lys, kompas og to trykknapper. Bluetooth indbygget. Og der er et 5×5 LED display, som kan vise tal, tekst og simpel grafik. What’s not to like?

De indbyggede komponenter gør, at det er let at komme i gang, men øger blackbox-effekten. Micro:bit har kun behov for 3-4 V fx. fra et knapcellebatteri. Det lave strøminput betyder også, at den ikke kan levere særlig stor strøm (3,3 V og 20 mA siger rygtet). Det er måske årsagen til (?), at den ikke bliver brugt sammen med visse eksterne komponenter fx motorer, displays, sensorer, SD-kortlæsere, som ofte kræver større spænding/strømstyrke.

wp_20161019_001

Fx. virker dette setup (ovenfor) netop, når enheden er tilsluttet computer via USB-kabel, men ikke når den kører på batteri. Der er dog en række skjolde, som gør det muligt at bruge de nævnte komponenter alligevel. Nogle skjolde forhandles af Podconsult.dk.

Programmering er rimelig nem (ligesom Arduino), men når programmet er downloaded til dimsen, bliver kommunikationen afbrudt, og giver ikke umiddelbart mulighed for at opsamle mange data. Det er en skam. Der er en “record” funktion, som kan lagre data, og disse kan hentes ud, som vist i dette eksempel og dette, men det er ikke helt nemt og kræver p.t. tredjeparts software. Måske kan de trådløse muligheder eller et “Data Collection” skjold hjælpe.

De indbyggede komponenter gør Micro:bit nem at gå til, og med div. skjolde begynder den at ligne en Arduino.


Micro:Bit er indtil videre mest et britisk projekt, som lige er begyndt. Der er derfor et meget begrænset community, som også indikeres af Google Trends data ovenfor. Og den del af videndeling, som BBC står for, er p.t. forbeholdt britiske undervisere. Partnerne bag projektet har stillet i udsigt, at både soft- og hardware bliver open source, så der kan udvikles og fremstilles internationalt, som det kendes fra Arduino. Dér er vi ikke helt endnu, men mon ikke de snart åbner op?

Konklusion:
Valg enhed afhænger bl.a. af om fokus er på leg, programmering, dannelse eller maker-kompetence (er der noget der hedder sådan?), og en afvejning af tid, økonomi og elevforudsætninger mhp. at opnå en succesoplevelse.

Raspberry Pi er til projekter, hvor der kræves en hel computer, mest for universitet eller faget informatik imo.

Micro:bit ser ud til, at være et rigtig godt sted for folkeskoleelever at begynde med microcontrollere. Den er designet til undervisning, ser venlig ud og er let at komme i gang med, selv om elevforudsætningerne måske er små. Den er ny og savner derfor noget udvikling mht. community og hacks.

På ungdomsuddannelserne vil vi noget mere og med mindre blackbox, og her er Arduino ofte det rette valg. Den giver flere muligheder for anvendelser og tilpasninger, herunder dataopsamling. Men den dag kan hurtigt komme, hvor vi vender os mod Micro:bit, når den er lidt mere udviklet. Den er både lettilgængelig, men har også endnu uforløste muligheder for avancerede projekter.

Hvorfor sætter det danske skolesystem eller magthavere ikke gang i et projekt lignende det britiske Micro:bit? Ifølge Danmark Statistik er der p.t. 66670 8-årige børn i Danmark. Hertil ca. 3000 lærere. En Arduino-klon koster ca. 20-25,- i Kina, men er forhåbentlig (lidt) billigere at producere. Hvis man antager en pris på 30,- pr. styk, hvilket er højt sat, giver det en udgift på ca. 2 millioner kr. Til fem årgange er det ca. 10 millioner kr. Det er småpenge, i forhold til det boost, som det kan give vores digitale kompetencer, selv om en del enheder nok vil samle støv i skufferne rundt omkring.

Udgivet i Arduino | Skriv en kommentar

80 meter over jorden

Den faststof raket, jeg har modificeret vejer 41 g uden motor. En motor (A6-4) vejer 16 g. Elektronikken, som skal måle tryk og skrive til et SD-kort vejer 32 g. Dvs. elektronikken udgør næsten en fordobling af vægten, så det er måske ikke så underligt, at den har svært ved at flyve.

Jeg har prøvet med en kraftigere motor (B4-4):

Det gav pæne resultater mht. tryk, og en beregnet flyvehøjde på ca. 80 meter over jorden:
hoejde-mod-tid
Temperaturen svinger noget. Måske har sollys noget at sige?, det er trods alt ret små ændringer der ses. Et generelt fald i temperautur med lavere tryk kan dog ses (kun målinger fra flyveturen):
temperatur-mod-tryk
Efter sigende skulle temperaturen falde med små 1 grad Celcius pr. 100 meter, så det passer nogenlunde.

Ved lejlighed må jeg kalibrere højdemåleren.

Udgivet i Arduino | Skriv en kommentar

Internet of Things #3

Dette er ikke en noob-guide. Hvis du ikke er bekendt med Arduino, vil jeg foreslå du begynder et andet sted. Fx her.

Mål
Projektets mål var, at lægge data ud på en offentlig og lettilgængelig webside. Hvorfor netop disse eller andre data skal på nettet, og hvordan jeg involverer eleverne, må komme senere.

Tjenesten Thingspeak, er designet til at lægge målinger på nettet og opdatere dem live fx i forbindelse med internet of things.

Jeg har brugt:
* Wemos D1, som er en Arduino-klon (mikro-computer) med WIFI-antenne, som giver forbindelse til nettet, og som koster ca. 20 kr. Wemos D1 er måske ikke den bedste platform (NodeMCU er måske bedre), men et godt sted for mig at begynde, da den er forholdvis enkel.
* 3 ledninger
* DHT11 sensor, som kan måle temperatur og luftfugtighed.
* Et breadboard (fumlebræt, ikke strengt nødvendigt)
Alle dele købt hos AliExpress.com

Samles i kredsløb:
dht11
Wemos D1 – DHT11
5V – VCC
GND – GND
digital pin 1 – pin 2 fra venstre, når sensoren holdes med forsiden mod dig.

Kodning og opsætning:
Wemos D1 skal programmeres via en computer fra Arduino IDE, som kan downloades.
Programmet skal have et plugin for at genkende Wemos D1. Her kan du bl.a. se hvordan man henter og installerer det. Jeg mener at der samtidig installeres et ESP8266WiFi.h bibliotek. Hvis ikke, skal det også hentes og installeres.

Boarded, som du vælger i Arduino IDE, skal være “Wemos D1 R2 & mini”. Upload speed: 115200.
Koden ses nedenfor. Husk at skrive navnet på dit netværk (case-sensitive) og kodeordet til netværket.

For at DHT11 sensoren skal virke, skal du formentligt hente og installere et “DHT.h” bibliotek til Arduino IDE. Se evt. her hvordan.

thingspeak oprettes en profil (gratis) og derefter en kanal. Kanalen har en kode (Writing API), som også skal ind i koden nedenfor.

Kopier koden nedenfor ind i Arduino IDE og upload den til Wemos D1. Afbryd evt. forbindelsen til computeren derefter. Tilslut en anden strømkilde fx en 9V adapter, computeren er ikke længere nødvendig for Wemos D1.
wp_20161006_001

I thingspeak.com oprettes to felter, da thingspeak jvf. koden nedenfor, modtager to data (temperatur og luftfugtighed). Hvordan thingspeak lige oversætter den streng den får tilsendt til disse to felter, ved jeg ikke. Det er en af konsekvenserne ved at bruge en “smart” tjeneste. En anden er, at det er sk… nemt.

Derefter kan leges med hvordan data skal afbildes. Afbildningerne kan integreres i hjemmesider fx et sharepoint website, som en iframe.
data
(statisk billede her, da jeg skal bruge min Wemos til et andet projekt)

Hvad nu?
Senere prøve andre sensorer. CO2- eller støjmåler i klassen. En klimastation til vores vandrende pinde. Finde ud af hvordan eleverne kommer med. Måske bliver jeg teknisk set begrænset af at Wemos D1 kun har en analog port (A0).

Thingspeak er en MEGET enkel måde at komme i gang med IoT. Tjenesten virker ikke til at være så god til, at fjernstyre ting fx motorer i kredsløbet, men mægtig fint til at afbilde data live.

 

#include <DHT.h>
#include <ESP8266WiFi.h>
 
// replace with your channel’s thingspeak API key and your SSID and password
String apiKey = "KODE FRA THINGSPEAK HJEMMESIDEN";
const char* ssid = "NAVNET PÅ DIT NETVÆRK";
const char* password = "KODEN TIL DIT NETVÆRK";
const char* server = "api.thingspeak.com";
 
#define DHTPIN 1
#define DHTTYPE DHT11 
 
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
 
void setup() 
{
Serial.begin(9600);
Serial.println("begyndelse");
delay(10);
dht.begin();
Serial.println("dth begin");
 delay(2000);
WiFi.begin(ssid, password);
Serial.println("WIFI begin");
delay(1000); 
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
 
WiFi.begin(ssid, password);
 
while (WiFi.status() != WL_CONNECTED) 
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
 
}
 
void loop() 
{
// float h = 50;
// float t = 20; 
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) 
{
Serial.println("Failed to read from DHT sensor!");
//return;
}

 Serial.print(h);
 Serial.println(t);
  
if (client.connect(server,80)) {
String postStr = apiKey;
postStr +="&field1=";
postStr += String(t);
postStr +="&field2=";
postStr += String(h);
postStr += "\r\n\r\n";
 
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
 
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" degrees Celsius Humidity: ");
Serial.print(h);
Serial.println("Sending data to Thingspeak");
}
client.stop();
 
Serial.println("Waiting 20 secs");
// thingspeak needs at least a 15 sec delay between updates
// 20 seconds to be safe
delay(20000);
}
Udgivet i Arduino | Skriv en kommentar

Hvornår brister Tech-boblen?

Jeg er vældig begejstret for teknologi, særligt digital teknologi, som har en fysisk dimension fx robotter. Mest fordi det er sjovt at udforske -Dora the explorer bor indeni mig. Og derfor er jeg nok ikke den rette til at analysere tech-området, but anyways..

Tech-boom
Verden set gennem mine øjne, bliver mere og mere fyldt med digital teknologi. Nogle få eksempler er støvsugerrobotter, smartphones, landbrugsdroner, insulinpumper, 3D-printere, sociale medier.
Algoritmer eller mere advanceret kunstig intelligens dukker op i mange felter: sundhedsvæsnet, finansverden, læremidler, biler, billed- og talegenkendelse, FB. Jeg kunne blive ved.
Så tech boomer. Vores behov for underholdning, velfærd og forbrug driver udviklingen. Derunder ligger en tro på teknologien, som man også så i 1960’erne. Og givet at de fleste fænomener udbredes i cyckler -må der komme en modreaktion. Måske kommer vi alle til at leve som bonderøven om føje år.

Hvordan skal vi behandle tech i stx?
Man kan med rette fremføre, at htx er mest en teknisk uddannelse og stx er mest en boglig uddannelse. Fx i et stxfag som bioteknologi er hovedmålet ikke, at blive god til at arbejde i laboratoriet. Hovedmålet er at analysere data og litteratur. Eleverne uddannes (i en perfekt verden) med henblik på forsker- og lægejobs, hvor laboranter og studerende laver forsøg og betjener teknologien, mens forskeren sidder i Elfenbenstårnet og analyserer og lægger strategi.

Min påstand er dog, at tech nu fylder så meget i Verden, at vi ikke kan ignorere det i stx. Vi kan ikke nøjes med at analysere og vurdere på konsekvenser eller prøve at komme med innovative ideer til nye anvendelser. Vi er nødt til, at få fingrene ned i teknologien. Lodde. Kode. Forbinde. Ud over det alment dannende indeholder tech mange kreative udfordringer, og en kobling mellem det abstrakte og konkrete, mellem teori og praksis, som vi også ser bl.a. i naturvidenskab.

Dotcom-boblen
Før vi kaster os ud i alt for meget tech-humlumhej i stx, og uddanner en hel generation til ingeniører, må vi kort overveje om tech-boomet er en bobbel? Uddanner vi til arbejdsløshed, fordi trenden skifter? Vi uddanner til jobs, som endnu ikke findes, men kommer de til at ligge indenfor tech?
Vi så dotcom boblen i 90’erne. Alle skulle lave hjemmesider og webtjenester. Kurserne steg til boblen bristede. Det var måske på baggrund af en overoptimistisk tro på teknologien (og markedet), a la den vi ser i dag?

Hvornår brister tech-boblen?
Tech ikke er en bobbel, med mindre vi kommer til at opleve uforudsete begivenheder, som ændrer alt fx en stor økonomi- eller energikrise. Tech vil nok opleve mindre tilbagegange og setbacks, men alle prognoser peger på generel vækst, med faldende priser og mere AI. Tech-branchen i dag er mere divers end dotcom var, og prøver i højere grad at løse reelle problemer. Makerbevægelsen er måske en af vores tids modbevægelser, men den bruger også tech. Så kod du bare videre i stx.

Dermed ikke sagt, at alt generelt er godt. Hvis AI skal træffe flere beslutninger for os, hvem har så ansvaret? Bliver vi udkonkurreret af robotter og anden tech, hvad skal vi så leve af? Og hvad skal vi lave? Bliver underviserne fritstillet til fordel for video og adaptive kursusforløb? Heldigvis først når AI bliver så dygtig, at den også kan stå for den sociale relation til eleverne -læring er også en emotionel proces.

Udgivet i Digital Dannelse | Skriv en kommentar