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

Højdemåler til faststof-raket

En letvægts-højdemåler baseret på trykmåleren BMP180. Tryk og temperatur måles og skrives på et SD-kort. Vægt og størrelse spiller en stor rolle. Diameteren på raketten er ca. 3 cm.

Af hensyn til vægten har jeg valgt en Arduino Nano. Og tre serieforbundne 3V knapcelle-batterier som strømforsyning. To er for lidt. Da der ikke er bevægelige dele, giver de tre netop nok spænding til at holde liv i systemet.

hojdemaaler
SD kortlæseren (Catalex) – Arduino:
VCC – 5V
GND – GND (ground)
MISO – Pin 12
MOSI – Pin 11
SCK – Pin 13
CS – Pin 10

BMP180 – Arduino
SDA – A4
SCL – A5
VCC – 3,3V
GND – GND

Desuden har jeg indsat en rød LED (og en 1 kOhm modstand) til fejlfinding og klarmelding. Her kunne jeg have brugt den indbyggede LED i Arduino-boarded, men den pin (D13) er optaget af SD-kortlæseren i dette setup. Den kunne formentligt frigøres.

Se koden nederst.

Nogle udfordringer har været:
* Højden over jorden har svinget med ca. 1 meters usikkerhed. Jeg har lagt et lille filter i koden (gennemsnit af 10 målinger) til at måle starttrykket, da det er afgørende for alle følgende bestemmelser af højden over jorden. Det filter giver ingen forbedring.
* Tænd/sluk kontakten SKAL sidde i enden af kredsløbet. Ligeledes skal SD-kortlæseren være der. Så det er muligt at betjene dem uden at tage al indmaden ud af raketten.

hojdemaaler2
* Lave en raketdel, som kan åbnes fx ved at den er tapet sammen. Jeg har brugt et lamineret A4, som materiale til payload kammeret (elev-ide).
* Kunne være fint med noget “padding” rundt om elektronikken. Det har der ikke været plads til.

Test#1:
Affyring med A6-4-motor (den mindste klasse jeg kan købe). Raketten fløj lodret til ca. 4 meters højde, vendte om og fløj mod jorden, som den borede sig 3 cm ned i. Derefter blev faldskærmen udløst. Glad for jeg ikke stod lige under.

wp_20160930_001

Selv om jeg har beskyttet lodningerne med lim fra limpistol, tror jeg ikke alle overlevede mødet med jorden. Kredsløbet så efterfølgende sådan ud:

unavngivet

SD-kortet, som var røget ud og lå for sig selv, indeholdt bl.a. følgende data:
Tid (s): 2 Tryk (Pa): 100619 Temp (gr,C): 19,84 Højde (m): -0,41
Tid (s): 3 Tryk (Pa): 100618 Temp (gr,C): 19,82 Højde (m): -0,32
Tid (s): 3 Tryk (Pa): 100621 Temp (gr,C): 19,82 Højde (m): -0,58
Tid (s): 3 Tryk (Pa): 100625 Temp (gr,C): 19,84 Højde (m): -0,92
Tid (s): 3 Tryk (Pa): 100618 Temp (gr,C): 19,82 Højde (m): -0,32
Tid (s): 4 Tryk (Pa): 100630 Temp (gr,C): 19,84 Højde (m): -1,35
Tid (s): 4 Tryk (Pa): 100628 Temp (gr,C): 19,84 Højde (m): -1,17
Tid (s): 4 Tryk (Pa): 100618 Temp (gr,C): 19,82 Højde (m): -0,32

Alle beregnede højder:
hoejdekurve

Hvad nu?
Alt i alt er der noget, der virker. Men raketten fløj mere end 2 meter op. Måske påvirker accelerationen den trykmåling der sker?
Brug en kraftigere motor, så den kommer højere op.
Kan jeg bruge noget sammen med elever? Selv fremstille motoren?

Kode (tilpasser codebender):

double pressure; //Variabel til tryk i Pascal (Pa)
double startpressure; //Variabel til tryk i Pascal (Pa)
double tempC;  //Variabel til temperatur i grader Celcius
//double starttempC;  //Variabel til temperatur i grader Celcius
double hojde; // variabel til højden i meter over havet
double tempK; //Variabel til temperaturen i Kelvin

const double gaskonstant = 8.31; // gaskonstanten i N*m/mol*K
const double tyngdeacceleration = 9.807; //tyngdeaccelerationen i m/s^2
const double molarmasse = 0.02896; //Molarmassen af luft i kg/mol
 
#include  <SD.h>// åbner biblioteker for at tale med SD-kortlæser og BMP180 chippen (I2C)
#include  <SPI.h>
#include "Wire.h"     
#include "Adafruit_BMP085.h" 
Adafruit_BMP085 mySensor;  // laver et objekt kaldet mySensor

int chipSelect = 4; // Pin til SD kortlæser?? Skal det være 10?
File mySensorData; // laver et fil-objekt, som kan gemme data

void setup(){
Serial.begin(9600); //åbner forbindelse til serial monitor
mySensor.begin();   // starter tryk-sensoren mySensor
//tempC = mySensor.readTemperature(); //  Måler STARTtemperaturen i grader C fra BMP180
for (int i=1; i <= 10; i++){
      pressure += mySensor.readPressure(); // Måler STARTtrykket i Pa 
//	Serial.println(i);
//		Serial.println(pressure);
      delay(100);
   } 
startpressure= pressure/10;
//Serial.println(startpressure);
//tempK = tempC + 273; // temperaturen i Kelvin

pinMode(3, OUTPUT); // Pin reserveres til LED.
pinMode(10, OUTPUT); // Pin 10 reserveres til SD kortlæseren.
SD.begin(10); // starter SD kortlæseren
  if (SD.exists("Hojde.txt")) // hvis filen "Hojde.txt" allerede findes på SD-kortet..
  {
  SD.remove("Hojde.txt"); // ..slet filen.
  for (int i=1; i <= 5; i++){
  digitalWrite(3, HIGH);   // sets the LED on
  delay(50);                  // waits for a second
  digitalWrite(3, LOW);    // sets the LED off
  delay(50);
  }
}
delay(1000);
}

void loop() {
tempC = mySensor.readTemperature(); //  Måler temperaturen i grader C fra BMP180
tempK = tempC + 273;
pressure=mySensor.readPressure(); // Måler trykket i Pa
hojde = -(tempK*gaskonstant/(molarmasse*tyngdeacceleration)) * log(pressure/startpressure);

mySensorData = SD.open("Hojde.txt", FILE_WRITE);  // åbn filen på SD-kortet
if (mySensorData) {
Serial.print("Tryk: ");
Serial.print(pressure);
Serial.println(" Pa");
Serial.print(" Højde: ");
Serial.print(hojde);
Serial.println(" meter");
//delay(250);   

//dataString = String("Tryk (Pa):") + String(pressure) + String(" ; ") + String("Temperatur (gr.C):") + String(tempC) + String(" ; ") + String("Højde (m):") + String(hojde);
mySensorData.print("Tid (s): ");  //skriv data til SD-kortet
mySensorData.print(millis()/1000);  //skriv data til SD-kortet
mySensorData.print(" ; Tryk (Pa): ");  //skriv data til SD-kortet
mySensorData.print(pressure);  //skriv data til SD-kortet
mySensorData.print(" ; Temp (gr.C): ");  //skriv data til SD-kortet
mySensorData.print(tempC);  //skriv data til SD-kortet
mySensorData.print(" ; Højde (m): ");  //skriv data til SD-kortet
mySensorData.println(hojde);  //skriv data til SD-kortet
mySensorData.close();           //luk filen på SD-kortet
digitalWrite(3, HIGH);   // sets the LED on
  delay(100);                  // waits for a second
  digitalWrite(3, LOW);    // sets the LED off
  delay(100);
}
}
Udgivet i Arduino | En kommentar

IoT #2

Sensoren står i vindueskarmen. Live opdatering hvert 20. sekund. Hvis diagrammerne ovenfor er tomme, er det fordi jeg har pillet sensoren ned, for at bruge den til noget andet.
Fra www.thingspeak.com:
data

Udgivet i Uncategorized | Skriv en kommentar