2015年10月29日

用asymptote自製顯微測微尺與顯微鏡教學用玻片

搭配顯微鏡的設備裡,有一種測微尺,有塞在目鏡裡用的,還有放在載物台上的。有好好學高中生物的,應該都會學過那種作法,那種設備一組好幾百元,以前我大概以為就只有那種可以用了吧,不過後來科學maker的江老師用雷射切割壓克力,做了顯微鏡的校正片,一公分見方的面積裡,畫了20x20的格子,所以每個格子就是0.5mm(500微米)。過去我還真沒想過用這樣的方式作顯微測微尺,以前最多是直接拿尺拍攝。過去我也特別為壓克力的校正片拍了一段怎麼進行顯微照片校正和標註比例尺,請見此影片
用手機顯微鏡的校正片標註顯微照片長度

IMAG0340


知道可以這樣用之後,心裡就惦記著,改天也來自己作一個。

後來有次參加BioTop的TopShow,看到文蘭老師拿出一個他們學校用的玻片,也是自己作的。當時我沒拍照,但是看我描述應該知道那是什麼回事。

一般玻片上,用膠帶黏了一片印了東西的透明片。透明片上也印了像上面那樣的格子,還印了AB和pq。有教生物的一看就知道,這個就是拿來讓學生練習看顯微鏡用的。AB和pq是用來看方向變化,格子是用來看不同倍率的物鏡下,看到的格子數目大小有所不同。真是一片滿足所有需求的好玻片,心裡又惦記著,一定自己來作一個。



後來也很巧,看到岩手県立総合教育センター,也有作這樣玻片標本,上頭還有漢字標示的上下左右,想一想還能作很多應用呢。而且他們也有提供pdf下載,用他們的就很好了,不過我就是不太滿足,很想要自己作一個。

作格子算簡單,我有作過,是用powerpoint畫格子,然後拼成20x20的格子群,再縮小到1cmx1cm。作一個算簡單,但是要複製貼上變成整頁A4就有點困難,不是動手困難,而是powerpoint在處理這種多向量的圖形有些障礙,貼個20、30個,CPU運作就已經滿檔了。


上面就是自己用powerpoint作的,下面是去印岩手縣作的文件。其實最近幾次的專研課,我在帶學生作顯微測量,就已經都用上面那種來作了。
IMAG0338


雖然自己已經有現成的檔案,不過我想想,還是應該用寫程式的方式來處理,於是上網找看看有沒有用命令列可以繪圖的軟體。一找果然有,就是Asymptote

看它範例的程式都非常精簡,也不算難,十幾分鐘可以上手,於是就有樣學樣做了幾個檔案,用程式語言的迴圈直接排版,乾淨俐落。

就像是這樣......
test-1


還有這樣......
test-2

黑乎乎一片,正常人應該都看不懂裡頭是什麼。一種是直接學日本的,但是學得不好,因為Asymptote沒找到可以輸出中文的方式,所以上下左右只好用英文簡稱代替。另外也加了AB和pq。

03

還有一種是單純作顯微測微尺用的

01



這種也是顯微測微尺,不過就沒有用紅線了
02


三種格式的測微尺程式碼和PDF檔就放在這個壓縮檔囉,若要印製請記得列印設定可不要調整大小喔,用原尺寸去印製,這樣才會準。
https://sites.google.com/site/pancala/Home/microScaleSource.zip?attredirects=0&d=1

2015年10月25日

用R作成績分析(1)

有一回參加科學素養新式評量的研習,講師帶大家用R作試題分析,那次的分析理論用試題反應理論,我自己也沒有很了解,所以就是學完了就沒再繼續用了。

後來查看看有哪些用R作試題分析的案例,看到有一個爸爸用R幫小孩的班級成績做了成績分析,他也把一些code詳細地寫出來,我只要照著改一改就可以用了。

正好第一次段考試我出題的,所以我就剛好可以拿來應用了。

準備好成績檔案之後,要先安裝RRStudio,然後貼code進去就可以了,全程不用10秒鐘就可以完成了,這就是文字界面的威力啊。以後再試試看用R來寫SP Table,這樣我就不用為了作試題分析,還特地去開windows來用了啊。



code在此!

=============================

setwd("/media/pancala/3T/試題分析/0test")
scores <-read.table("bio.txt",header=TRUE,row.names="學號")
View(scores)
attach(scores)
summary(成績)
aver <-tapply(成績,班級,mean)

png(file="成績直方圖20格.png", width=1500, height=850, res=120)
hist(成績,breaks=20,main="成績分佈圖",ylab="人數")
dev.off()

png(file="成績直方圖10格.png", width=1500, height=850, res=120)
hist(成績,breaks=10,main="成績分佈圖",ylab="人數")
dev.off()

png(file="成績頻率圖.png", width=1500, height=850, res=120)
plot(density(成績),main="成績頻率圖",ylab="頻率", col='blue', lwd=2)
dev.off()

png(file="各班平均成績.png", width=1500, height=800, res=120)
boxplot(成績)
#boxplot.stats(成績)
boxplot(成績~班級,data=scores,main="各班生物成績盒狀圖", xlab="班級", ylab="成績")
lines(tapply(成績,班級,mean),col='blue',type='b')
dev.off()

png(file="全年級成績盒狀圖.png", width=500, height=800, res=120)
boxplot(成績,main="成績盒狀圖",xlab="全年級", ylab="成績")
dev.off()

shapiro.test(成績) #檢測是否常態分佈,p小於0.05,表示為非常態分佈

用imagej的Macro量測線段的垂直線

五年前一個研究生網友寫信來問這樣的問題,他想要用imagej針對某一線段畫垂直線,不過當初我沒有找到方便的方式,只能跟他說就自己找直角,畫一條垂直線。(用angle tool畫90度的線,然後用Edit/draw去畫線)

最近開始用Macro,就去翻以前的信件,看到網友的這個問題,於是想著想著就把code寫出來。不過我不太好意思跟那網友說,欸,可以這樣作囉。

畢竟都是那麼久了,五年前是研究生,如果現在還需要這個功能的話,那......。

老樣子,底下影片是操作方式,最底下有code,複製貼上就可以。




macro "DrawVertical" { requires("1.37rk"); if(selectionType!=5) showMessage("Selection Must be staight Line"); Dialog.create("Setting"); Dialog.addNumber("line Width:", 10); Dialog.addChoice("Base Line Color:", newArray("cyan", "red", "green", "magenta", "blue", "yellow", "orange", "black", "white"),"yellow"); Dialog.addChoice("Vertical Line Color:", newArray("cyan", "red", "green", "magenta", "blue", "yellow", "orange", "black", "white"),"red"); Dialog.show(); LineWid=Dialog.getNumber(); Bcolor = Dialog.getChoice(); Vcolor = Dialog.getChoice(); getPixelSize(scale, pixelSize, trash); getSelectionCoordinates(x, y); setColor(Bcolor); setLineWidth(LineWid); drawLine(x[0], y[0], x[1], y[1]); leftButton=16; x2=-1; y2=-1; z2=-1; flags2=-1; logOpened = false; print("start"); while (!logOpened || isOpen("Log")) { getCursorLoc(seleX, seleY, z, flags); if (flags!=flags2) { s = " "; if (flags&leftButton!=0) { s = "<left>"; m1=(y[1]-y[0])/(x[1]-x[0]); m2=-1/m1; interX=(m2*seleX-m1*x[1]+y[1]-seleY)/(m2-m1); interY=m2*(interX-seleX)+seleY; setColor(Vcolor); setLineWidth(LineWid); moveTo(seleX,seleY); lineTo(interX,interY); lineLeng=pow((pow((interX-seleX),2)+pow((interY-seleY),2)),1/2); lineLeng=lineLeng*pixelSize; print("Length:","\t", lineLeng,"\t",scale); logOpened = true; startTime = getTime(); } } x2=x; y2=y; z2=z; flags2=flags; wait(10); } }

2015年10月24日

imagej用Macro測多層厚度

補:有新的作法,請見 imagej用Macro邊緣偵測後測量多層厚度

有網友寫信來問imagej的問題「怎麼測多層膜的厚度」

哎呦!那還不簡單,就一條一條畫線,然後用Analyze/Measure不就好了。如果有一百層,那就作一百次就好了啊。

如果真的這樣作,應該會死人吧?那怎麼作哩?

那就要靠coding了,imagej有提供Macros(巨集)的功能,線上也有詳細的說明書,另外還有幾百個範例檔。於是我研究了一下,寫一個簡單的程式就搞定了。

方法是這樣
先設定好你要的臨界灰階值是多少?意思就是用灰階值去區分你的不同層材料,比方說灰階值100以上就叫做A層,100以下叫做B層。那接下來就是用profile的功能去畫出x軸和灰階值的折線圖,然後去找出來這個折線圖和臨界灰階那條橫線的交會點。找到數個交會點之後,把x座標減一減,就可以得到各層的厚度了。

好的,我打賭應該看不懂我寫什麼,沒關係,反正那是寫給我看的。

底下有錄製一段影片,有需求的就自己看看,然後程式碼擺在本文章最底下,複製貼上自己改就行了。





macro "Measure Multilayers" {
    Dialog.create("Set Threshold");
    Dialog.addNumber("threshold:", 100);
    Dialog.show();
 
    thre = Dialog.getNumber();
    run("Clear Results");
    print("\\Clear")
    profile = getProfile();
    getPixelSize(scale, pixelSize, trash);
    xAxis=newArray(profile.length)
    x1=newArray(profile.length);
    var j=0;

    for (i=0; i<profile.length; i++)
        xAxis[i]=i*pixelSize;
        for (i=0; i<profile.length-1; i++){

            if(profile[i]<thre && profile[i+1]>thre) {
            x1[j]=i;
            j++;
            }

            if(profile[i]>thre && profile[i+1]<thre) {
            x1[j]=i;
            j++;
            }
        }

    k=0;
    while(x1[k+1]!=0){
        print(k+1,"\t",(x1[k+1]-x1[k])*pixelSize,scale);
        k++;
    }


    Plot.create("profile","Distance "+ scale, "Grey Value", xAxis,profile);
    Plot.show();
}

2015年10月18日

銅箔紙電路

玩電路最常用的就是用麵包板了,可是如果是對初學者來說,看懂電路圖到會用麵包板插線,其實是有一段距離的。再者,麵包板的價格也不是那麼便宜,想要在工作坊或是研習場合中玩一些簡單電路,花上一筆錢買麵包板,好像也不是那麼合算。有沒有替代方案呢?有的,就是銅箔膠帶!這也可以拿來作一些科技與藝術的結合呢。

以前我用paper circuit去搜尋時,就看到一些作法,有些是用導電墨水,或是用6B鉛筆塗抹紙張(石墨可導電),有的則是用銅箔膠帶。

使用銅箔膠帶的好處是,不用焊接,只要用銅箔膠帶、剪刀剪刀剪刀還有一般的透明膠帶,再加上一些電子零件(LED、電阻、電容),就可以做出很多電路應用。而且可以直接用銅箔膠帶貼在現成的電路圖上,就可以組出電路了。

比方說這個是上次寫的文章「超簡單的電風琴」裡的弛豫振盪器(relaxation oscillator)

IMAG0163

看看影片



材料很簡單,兩顆3V電池(2032),100k歐姆電阻、10uF電容、電晶體1815和1015、LED。
IMAG0165

幾乎就是照著電路圖貼就可以了。
振盪電路


如果想要作電池座和開關,也行!用現成的紙和銅箔膠帶就可以





IMAG0152

電池座是從這裡Paper battery holder tutorial看到的作法,剪一個這個東西,貼上銅箔膠帶,就可以做成一個電池座(作法在那個連結裡都有喔!)
IMAG0151


而開關的作法也很簡單,銅箔膠帶反折到底部的膠面,要短路的時候,就連結,平常的時候則是會翹翹的,就會斷路了。
IMAG0145



不要看銅箔膠帶兩面都是銅,以為都可以導電,其實銅箔膠帶一面是膠面,那邊導電效果很差,所以當你要作分叉或是轉角的電路,就要有一些特別技巧。
IMAG0178



比方說這個轉彎的電路,我從上面貼下來,本來要右彎,不過我得先拐左,折出一個角
IMAG0171


再往右邊貼過去
IMAG0172

其實貼起來的樣子是轉彎處會有一個小三角形,不過那平常是壓扁的,根本不會影響。作轉彎的電路,不要直接剪兩條銅箔再那邊互相重疊貼喔,記得膠面導電效果差喔。
IMAG0174



如果需要兩條銅箔膠帶互貼,那就把要蓋在上面的那條剪一個三角形
IMAG0175


然後把三角形反折貼在膠面
IMAG0176


這樣你貼在另外一條銅箔上的時候,才會又有膠面可以黏、又有金屬面可導電。
IMAG0177


作這種銅箔紙電路,用SMD的LED也相當方便,只要用透明膠帶貼住SMD,然後讓正負極可以碰觸到兩邊的銅箔就行了。SMD的LED和銅箔有時候會不容易接觸,可以在一開始就把左右兩條銅箔的末端反折,讓末端膨膨的,這樣就比較容易接觸LED了。
IMAG0150


底下這個影片就是用SMD的LED,電池還放在鈕扣電池的電池座裡,不過後來我覺得如果要作紙電路,還是就用紙來作電池座比較好。




也可以用不同色的LED,搭配出三原色
IMAG0170


上面蓋上一張紙,就可以作些創作了
IMAG0166

怎麼應用銅箔膠帶,這個影片講解得很清楚

這個作者Jie Qi(齊潔)有很多資料

http://highlowtech.org/?p=2505
http://simonetti.media.mit.edu/~jieqi/tutorials/
http://simonetti.media.mit.edu/~jieqi/2013/09/paper-circuits-with-copper-tape/

運用銅箔膠帶和卡紙,也可以做成電子積木
http://tinkering.exploratorium.edu/tinkering/2012/11/16/circuit-card-prototypes

和藝術創作結合在一起
http://tinkering.exploratorium.edu/paper-circuits/
http://technolojie.com/pu-gong-ying-tu-dandelion-painting/

把電路作在筆記本裡頭
http://www.nexmap.org/21c-notebooking-io

淘寶的產品,也有一些電路可以參考
http://tw.taobao.com/item/521700126533.htm?fromSite=main&spm=a310v.4.88.1

2015年10月15日

追蹤熱島效應

螢幕熱島圖
這是我利用Arduino、GPS模組和溫度感測器做出的新竹市熱島效應調查圖



 我在Make雜誌37期看到Forrest M. Mims III,寫的這篇Amateur Scientist: Tracking Heat Islands驚豔不已,也很想作一個。

Forris M.Mims 用的是Vernier LabQuest 2加上GPS功能,然後再用熱敏電阻去測溫,不過LabQuest的價錢...所以我要用比較平價的方式去達成。就決定用Arduino加上GPS模組和溫度感測器了。

其實不一定要用GPS模組,只要能接受GPS訊號的手機(要能存軌跡),再加上一個能每秒測溫度和紀錄時間的arduino。帶出去同時測量這些訊號之後,事後再用時間當索引,把每個溫度測定的座標抓出來也是可以用。

我使用的GPS模組是IM120417017 GPS模組,測溫是用LM35溫度感測器,裝在車子上載著繞一圈。得到GPS定位對應氣溫的資料後,再用QGIS這個地理資訊系統的軟體處理出圖。

IMAG0131


整個裝置就是這樣一盆,然後把溫度感測器接到車外,GPS天線靠近窗邊。供電用的是行動電源,因為輸出只有5V,所以我是連接到Arduino的USB port。
IMAG0095


得到的結果和預想的一樣,在大馬路交叉口(東大路和經國路交叉口)或是鬧區(新竹車站),溫度比較高。而在綠地附近,溫度就低了。當然這樣車載調查的前提是,這段調查期間溫度不至於隨時間變化太大。

放後照鏡旁邊,雖然測的時候是陰天,但是也有可能受到陽光照射影響,而且也有可能受到行車速度影響。陽光照射可以用個容器改善,但是速度要怎麼改善?



再來講一些程式細節的東西,GPS模組輸出的資料較難閱讀,所以需要TinyGPS++的函式庫來解讀。輸出的東西,同時輸出到Serial port、LCD和SD卡裡頭。

最後得到的文字檔,改個檔名變成csv,可以用Google地圖來作資訊視覺化。
從Google地圖的「我的地圖」,找到「建立地圖」,接著用「新增圖層」,用「匯入」的方式把csv檔送進去。然後指定經緯度的欄位之後,可以將不同的溫度範圍用不同色階表示。不過Google地圖一個圖層只能匯入2000個點,所以後來我改用QGIS來處理。


GPS和溫度的文字資料,用「Layer/Add Layer/Add Delimited Text Layer」來匯入

先到Plugins裡安裝OpenLayers Plugin,這樣才能使用Google Map的圖層來套疊(安裝與使用方式看這
Arduino的程式碼則是在此

#include <SD.h>
#include <TinyGPS++.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>


#define DHTPIN 4     // what pin we're connected to
#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);

const int chipSelect = 10;

TinyGPSPlus gps;

//LCD
LiquidCrystal_I2C lcd(0x27,16,2);


void setup()
{
  Serial.begin(9600);

  pinMode(10, OUTPUT);

  lcd.init();                      // initialize the lcd
  lcd.backlight();
  lcd.clear();

  if (!SD.begin(chipSelect)) {
    lcd.setCursor(0,0);
    lcd.print("No Card inserted");
    return;
  }
  Serial.print("lat");
  Serial.print(F(","));
  Serial.print("lng");
  Serial.print(F(","));
  Serial.print("date");
  Serial.print(F(","));
  Serial.print("time");
  Serial.print(F(","));
  Serial.print("humidity(%)");
  Serial.print(F(","));
  Serial.print("Temperature(C)");
  Serial.print(F(","));
  Serial.print("Heat Index(C)");
  Serial.print(F(","));
  Serial.println();

}

void loop()
{

  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  char temp = 0;

  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  if(dataFile)
  {
    while(Serial.available())
    {
      temp = Serial.read();
      if(gps.encode(temp))
      {
        displayInfo();

        Serial.print(F(","));
        Serial.print(h);
        Serial.print(F(","));
        Serial.print(t);
        Serial.print(F(","));
        Serial.print(hic);
        Serial.println();

        lcd.setCursor(0,0);
        lcd.print(gps.location.lat(), 6);
        lcd.setCursor(11,0);
        lcd.print(t);
        lcd.setCursor(0,1);
        lcd.print(gps.location.lng(), 6);
        lcd.setCursor(11,1);
        lcd.print(h);  

        dataFile.print(gps.location.lat(), 6);
        dataFile.print(F(","));
        dataFile.print(gps.location.lng(), 6);
        dataFile.print(F(","));
        dataFile.print(gps.date.month());
        dataFile.print(F("/"));
        dataFile.print(gps.date.day());
        dataFile.print(F("/"));
        dataFile.print(gps.date.year());
        dataFile.print(F(","));
        if (gps.time.hour() < 10) dataFile.print(F("0"));
        dataFile.print(gps.time.hour());
        dataFile.print(F(":"));
        if (gps.time.minute() < 10) dataFile.print(F("0"));
        dataFile.print(gps.time.minute());
        dataFile.print(F(":"));
        if (gps.time.second() < 10) dataFile.print(F("0"));
        dataFile.print(gps.time.second());
        dataFile.print(F("."));
        if (gps.time.centisecond() < 10) dataFile.print(F("0"));
        dataFile.print(gps.time.centisecond());
        dataFile.print(F(","));
        dataFile.print(t);
        dataFile.print(F(","));
        dataFile.print(h);
        dataFile.print(F(","));
        dataFile.println(hic);

      }

    }
    dataFile.close();
  }
}

void displayInfo()
{

  //  Serial.print(F("Location: "));
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
    Serial.print(F(","));


  }
  else
  {
    Serial.print(F("INVALID"));
  }

  //  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());

  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(","));
  if (gps.time.isValid())
  {
    if (gps.time.hour()< 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

}

















用蔬菜沙拉算熱量與測養分

教科書的課文和實驗在講養分與酵素時,都會提出熱量標示標籤還有利用米飯、芭樂等進行養分檢測實驗。不過我覺得這個課程可以更有整體性,而且要更能從其中得到生物學相關知識,於是我去數字超商買了一個蔬菜沙拉來作實驗了。

這是有什麼了不起的啊,只是把米飯、芭樂等換成蔬菜沙拉啊?

IMAG0126



當然一開始還是讓學生要知道六大養分是什麼,有什麼功能。接著就是由我提出任務,用這張照片,把每份熱量和每100公克熱量都遮蓋起來,讓學生計算。計算完後,提出一些問題。
IMAG0122


這份營養標示沒有列出什麼養分?為什麼?營養標示裡沒列出的東西包含水和維生素。維生素的含量其實很少,就以這份沙拉主成份的高麗菜去搜尋營養成分,高麗菜的維生素A、維生素C加起來都不到1g。(看標示怎麼知道主成份是高麗菜?答案是成份會按比例多少排列,高麗菜擺的是第一個。)
    維生素A98 IU維生素C36.6 mg
    40 mg0.5 mg
    維生素D0 IU維生素B60.1 mg
    維他命B120 µg12 mg

    每100公克的蔬菜沙拉,水的含量有多少呢?如何計算?
    經過簡單計算,水的含量有88.3%(這份沙拉50元,有44元是在買水,可以這樣說嗎?),計算水的含量,有什麼意義呢?蔬菜沙拉本質上就是由十多種植物的器官(葉、果實)所組成,意味著就是這些生物的水分含量有這麼多。(回想一下人有多少比例是水?)

    知道主要成份是水之後,再來是觀察營養標示,構成這些植物的成份,第二名是什麼?喔,是碳水化合物耶,植物裡頭主要的碳水化合物是什麼?為什麼碳水化合物底下又有寫糖?中間的差值是什麼?差值代表的其實是膳食纖維,不過計算熱量時,其實是連膳食纖維都一併計算進去了。

    組成成份第三名又是什麼?如果把這些成份化成圓餅圖,那代表的其實不只是「食物中的養分比例」,還代表的是「構成生物的主要物質」

    這就是我說,要從這個活動裡獲得更多的地方,因為我們的教材裡其實是沒有教構成生物體的主要物質是哪些,但其實只要轉化本來的教學素材就可以了。而在選擇素材時也要慎選,如果找蔬菜沙拉,不要找那種把沙拉醬的營養標示都算進去的,那樣的脂肪量會很高,超出本來要討論的「生物體的主要物質」應該有的含量,第二,不要選加工食品來當素材。

    當然用蔬菜沙拉會有的問題,就是你探討的的不是單一生物。如果要找單一生物,又有營養標示,倒是可以直接用Google搜尋那種食材或生物,比如豬肉空心菜......。搜尋頁面旁邊就有來自美國農業部(USDA)的營養成分表,或是可以用WolframAlpha去搜尋。


    我會選用蔬菜沙拉,其實還有一項用意,就是要利用它來進行接下來的養分測定實驗,為的是能讓學習有整體性(用同樣的材料看營養標示,然後進行養分測定),然後也因為是沙拉,種類多,可以讓我作團體的任務。

    一開始當然是先學一些測定基本方式,像是怎麼測澱粉。這次買了一些反應盤,使用上很不錯,因為凹槽小,學生自然而然就會取用少量的材料來進行測試。以前學生在小學或是補習班使用的經驗都是用梅花調色盤,凹槽很大,自然就會很豪邁地用大量的材料去測試。
    反應盤


    大家要作的任務,就是把蔬菜沙拉的品項都列出來,然後每個人合作去測出來這些食材含有哪些養分。
    IMAG0124

    脂質的測試,我是用花生和吸油面紙教學生怎麼測。吸油面紙沾一點水,看沾水的會變什麼樣子,再用吸油面紙包住花生,把花生壓碎,看看吸油面紙遇到脂質的樣子。

    然後討論植物的脂質都是從哪種器官萃取的,答案是種子,這只要想想有哪些植物油就知道了。然後再討論為什麼都是種子?種子裡的脂質有什麼用處?

    不過後續作沙拉裡的養分測定時,有幾個班我就沒繼續讓他們測定脂質了,因為那些蔬菜的水分含量很高,學生容易誤判它們含有脂質。

    蒐集了這些結果之後,再閱讀一次營養標示,再加上用Google搜尋個別食材的營養成分,這樣就知道那些碳水化合物含的是哪些醣類。

    這部份可以用Google試算表,讓學生把搜尋到的資料,共同在同一個檔案裡編輯。

    手上的口水分解澱粉的微型實驗

    IMAG0102

    這是「檢驗唾液分解澱粉」的實驗,材料有碘液(裝入點眼瓶)、封口袋、米飯、棉花。設計的目的是能在教室裡操作,而不需要被實驗室裡的設備綁住。


    1. 請學生拿一團棉花放在嘴裡,再拿幾顆米飯放進封口袋之後,倒入少許水,用手指隔著封口袋擠壓搓揉米飯。
    2. 等到米飯都揉碎了,再把嘴裡的棉花團吐到封口袋裡頭。接著用手握著封口袋,用手將它加溫。
    3. 一段時間後,滴入一些碘液,看看呈色反應。上圖左邊有加入含唾液的棉花團,右邊則是沒加入棉花團。
    可以用這實驗討論以下幾件事情
    1. 對照組的設計:此實驗的解釋是否只有「唾液能分解澱粉」一種?其實這也可以解釋為「棉花能分解澱粉」,但如何設計實驗排除此可能性呢?以下幾種設計,哪種較好?為什麼?
      a.把棉花放入封口袋,加碘液測試
      b.把棉花放入含有破碎米飯的封口袋,加碘液測試
    2. 此實驗和與課本實驗相比,執行上有什麼差別?此實驗是檢驗澱粉(反應物)是否完全分解,而課本的實驗是檢測麥芽糖(生成物)是否產生。為什麼課本不檢驗澱粉的分解,而是檢測麥芽糖的生成?若是澱粉沒有完全分解,則碘液就會有呈色反應。但如果檢測麥芽糖生成,則只要有生成,就會有反應。
    3. 此實驗也可以進行麥芽糖生成的檢驗,只要將實驗步驟第三步改成加入本氏液,再放進熱水裡泡著就可以。
    4. 可以用加入本氏液的此實驗進行挑戰任務,根據已知的科學原理,挑戰對唾液作處理,然後在某限定時間內,不可以檢測出麥芽糖。

    2015年10月10日

    超簡單的電風琴

    前幾週逛到「2012青少年のための科学の祭典」的資料-「超簡単な電子オルガン」-超簡單的電風琴,看到材料很簡單,所以也想跟著作一個。


    超簡單

    你說它哪裡吸引我呢?其實就是作者想到用5P母頭來取代焊接或是麵包板,焊接有危險性,初學者要學習一陣子,也不能全班玩,而麵包板又貴。而我自己實作時,則是換成用杜邦端子來作,電晶體則是換成2SC1815的NPN,和A1015的PNP。

    底下圖片的紅色代表杜邦端子母頭,藍色代表公頭。所以總共需要杜邦端子公母線5條,杜邦端子母母線4條。

    用杜邦端子作振盪電路簡圖

    這種電路叫做弛豫振盪器(relaxation oscillator),日文叫做「弛張型発振回路」
    振盪電路


    用最最生活化的譬喻就是用日本庭園常見的ししおどし(鹿威し),竹管慢慢注水進去,水滿了就會往下倒出水,並且因為敲擊石頭,發出聲音。如果竹管的容量很小,那麼倒水的頻率就會很快,相對的,竹管大,頻率就會低。

    在SC1815和A1015組成的relaxation oscillator中,電容就是竹管的角色,而電阻也控制了注水的時間。所以改變電阻和電容就可以改變發聲的頻率。如果喇叭換成LED,則就可以改變發光的頻率。


    在這篇文章裡,也有這個Relaxation oscillator的麵包板插法,不過是日文的。
    http://www.rlc.gr.jp/prototype/led/tenmetu/shichou/pika.htm


    我在搜尋Relaxation oscillator時,看到這個文件覺得很有趣。這是日本的學童科學雜誌「子供の科学」,其中的「KIDS電子工作」專欄文章,也是作這個Relaxation oscillator的發聲構造。從網站還可以看到其他文章。
    http://www.murata.com/ja-jp/campaign/ads/japan/elekids/ele/try


    製作過程很簡單,把五個杜邦端子線母頭用膠帶先固定在一起,然後把A1015的字面朝自己,插入端子母頭的中間三個洞

    IMAG0090


    A1015則是腳開開的,同樣面朝自己,右邊兩腳插入最右邊兩格,一格一腳。最左邊一隻腳,插入最左邊的洞
    IMAG0092


    再把電容插入第三腳和第五腳,如果電容是有極性的那種,負極則是要插最右邊喔。
    IMAG0094
    以上是最基本的部份,剩下就是連接電阻和電池。喇叭可以使用LED來替代,這樣就可以看閃爍發光了。



    電阻和電容可以先用這樣參數的零件來試試看,電容0.1uF,電阻100K歐姆,喇叭用8歐姆的。確定成功之後,可以把電阻換成在紙上塗抹的鉛筆碳跡。

    2015年10月6日

    Maker工作坊後的隨想-關於Maker與教育

    這是參加「進擊的Maker工作坊」之後寫下的一些心得,當天看到的實體物品在前篇講過了,這篇來說說聽到的演講心得,把聽的東西跟自己的經驗對應結合。


    學OO的目的
    很常聽到有人會說「學OO要幹嘛,以後又不會用到」,面對這種提問,最常見的回答就是「你怎麼知道以後不會用到,說不定.....」。不過你為什麼要花時間去學一個你未來不一定會用到的東西?

    我覺得這點要從那個OO說起,那個OO到底怎麼來的?我覺得OO最常出現的就是數學名詞,像是三角函數、微積分...,第二名可能就是物理名詞。至於化學名詞,可能不容易上排行榜,因為我們不斷地從食品安全事件中發現,原來我們一直在吃這些化學名詞。

    我講一個之前的經驗,我以前會好奇學畢氏定理(勾股定理)的實用性是什麼?知道那些之後能作什麼?上次去日本時,在書店的建築那區看了很久的書,看著看著,我領悟了道理,原來沒有電腦協助的情況下,只要懂得應用勾股,就能運用規和矩設計出複雜的建築,例如多層的屋頂 ,這個叫做「規矩術」。想細部了解,就看看這個 大工規矩術技能

    所以畢氏定理有沒有用?當然有用,只是現在的教育模式並不是為了蓋屋頂而設計的,而是單純去教你那些原理。要拿來應用嗎?頂多是寫寫所謂的「應用題」,但並不是讓你運用在真實的場域裡。

    小孩子:「我以後又用不到」,大人就會說:「以後的事你怎麼知道,說不定以後就用得到」。等小孩變大人之後,「以後」都一直還沒到。

    教育的目的難道就是為了等待一個將來不一定會用到的東西嗎?喔,不,其實我們可以把學習變成你的知識就是在用來解決現下的問題。

    關於解決的方法,那就要談到實作,用現在流行的詞語來說,就是maker了。


    Maker遇見教育
    Maker是自己製造製作物品,而這些物品的出現是為了解決問題而生(當然有時候只是為了好玩)。東西要收納,就做出一個櫃子,缺衣服,就自己打毛線、車布自己作一件,沒地方住,就自己蓋房子。(說到蓋房子,那一定要看看這個人怎麼進行野外求生,超精彩的啦。https://www.youtube.com/watch?v=rp3pSOkyZHk

    十二年國教課綱裡有很大的改變,高中自然領域的課程裡多了「探究與實作」的課程,國中則是刪了一些教材,要讓學生能多一些動手操作的機會(只是實際執行起來會怎樣,我覺得變數很大)

    在這次進擊的Maker工作坊當中,新加坡科學館的館長提到的一些課程,讓我覺得眼睛一亮,因為我所想做的就跟他舉的例子很像呢。

    教資優班會有每周兩節的專題研究課,所以我都得設計一些新的課程來玩學生讓學生學習。過去的專題研究課程哩,點狀的課程比較多,而課程之間的縱向關聯比較少,比較多是教科書內容的延伸。而我這次就是採用主題式學習的方式來作,增加專題課程本身之間的連結。

    作法就是以實作為主,課程中會安排製作顯微鏡、光譜儀、光度計、脈搏計、溫度記錄器、光影棒等。當然,這些課程都是對應現有教材的部份,要讓學生透過實作儀器來進行課程的探究。

    課程不是只是為了製作一個儀器而已,而是要利用這儀器進行探究。而要製作這些儀器就要學習一些基本課程。就像是我前面提到的蓋房子的過程,為了蓋好一個屋頂,所以要好好學畢氏定理,好好學木作,學很多相關的課程之後,才能蓋好那個房子。

    在實作顯微鏡的課程需要了解簡單的光學原理,知道單式複式複式顯微鏡的異同,了解顯微研究科學史的進展,然後用材料製作一台手機顯微鏡。再學習顯微攝影繪圖與量測等,再利用這個工具進行生物的調查研究。

    光度計、脈搏計、溫度記錄器等儀器則都是使用arduino來製作,光度計是量液體在不同波長光線的穿透度,應用在本氏液實驗的數位量測。課程裡會學基本電路與基本零件如光敏電阻,然後應用一些簡單數學作內插、統計繪圖...。

    脈搏計當然是對應生物量測,要學血液循環,紅外線的特性,認識不同的光學零件,像是IR LED,再多一些訊號處理的內容。

    溫度記錄器也是對應生物量測,學資料擷取方式,還有整合測量的方式。而製作這些儀器的同時,當然也學會了一些寫程式的能力。

    我的目標是要用這些實作課程去進行STEM的方向(STEM代表科學、科技、工程及數學),製作物件與專題學習是手段,而目的就是應用科學方法完成科學探究的歷程。

    製作的過程一定會卡關,像我自己做東做西的就常常卡住,可是啊,Maker工作坊裡的某館長說﹔:「失敗才是老師」,我們自己也說:「失敗為成功之母」,因為失敗了才能學到更多東西呢。

    另外,我也在想一個計劃,鎌倉Fablab的Yuka Watanabe說了「半學半教」(這是日本慣用的句型,像半農半X),然後我想到是「教學相長」。這個其實很多人都在做了,不算新東西,就是讓學生去教學生。

    我自己的課程裡就會想讓我的學生去教社區裡的小孩子那些自己花時間學會的東西,例如可以做顯微鏡的社區營隊。


    天生的科學家

    新加坡科學館的館長說了,嬰兒是天生的科學家,會探索、好奇,會發明。不過很有趣的是,怎麼大家說小孩越大,這種能力和意向都會越來越消失呢?不過我倒不這麼覺得,自然科老師常常說學生進實驗室就會搗亂,其實學生的搗亂就是在發揮好奇心,然後想辦法去探索,這不就跟小嬰兒一樣嗎?你遞給國中生一支叉子,說不定他也想把叉子插到插座裡頭。

    我一個也是當生物老師的朋友說,他很害怕帶學生進行顯微鏡的實驗,因為怕學生弄壞了顯微鏡。不瞞你說,我以前也很怕啊,不過後來我就看開了,因為顯微鏡沒有那麼容易壞。我現在上顯微鏡的課程前都是鼓勵學生盡量東轉西轉,只要幾個小事注意就好。等他們都玩過一次之後,再去教他們操作,這樣反而更專注於課程。

    所以你去想想喔,你說學生進實驗室會搗亂,但是到底學生搗什麼亂?為什麼搗亂?如何去搗亂?其實很多時候只是老師看不慣學生作的而已,他也不一定在搗亂就是了。

    小孩是天生的科學家,可以從哪些面向來看呢?就從Baby 的First time來看看吧(意思就是用這些關鍵字去youtube找影片)

    這些影片都很有意思喔,這是小嬰兒坐車時第一次進洗車機展現的好奇心,你看那雙眼睛張大大的樣子,多有意思啊。我們的課程能不能讓小孩展現這樣的好奇心呢?
    https://www.youtube.com/watch?v=OMspkwGM0LE

    淋雨?大人都會禁止小孩子去淋雨,可是第一次淋到雨的小嬰兒,意猶未盡,好想繼續再被淋雨。怎麼這麼有趣的事情,大人要禁止呢?
    https://www.youtube.com/watch?v=4mPEHKdfPuU

    影子這麼稀鬆平常的東西,第一次看到影子的小孩,居然會這麼驚訝啊。
    https://www.youtube.com/watch?v=BWKHzMPd2fY


    即使是那麼小的嬰兒,也已經懂得利用工具,從高高的床上爬了下來。
    https://www.youtube.com/watch?v=WTO2keu0DgA

    遇到困難時,還不會說話的小嬰兒,居然也能夠團隊合作,一個趴著一個站著,兩個就把門給打開了!
    https://www.youtube.com/watch?v=7K_0rF403vE



    順便找幾個特別的第一次,媽媽發現小嬰兒怎麼都還不會爬,於是找上醫生協助,經過診斷測試之後,醫生發現小嬰兒的視力有問題,看不清楚,也沒辦法聚焦。後來弄了輔助眼鏡讓小嬰兒戴上,這是他第一次戴上輔助眼鏡看清楚世界的過程。
    https://www.youtube.com/watch?v=84-Cuc-Tz2o

    這是一個更小的嬰兒,他有聽力障礙,在戴上助聽器之後,第一次聽見世界的聲音的樣子
    https://www.youtube.com/watch?v=2XLBA4UX51k

    這是集錦影片,看看這些靈長類幼獸第一次吃檸檬、第一次看鏡子(去找鏡子後面的東西)、第一次滑溜滑梯、第一次站起來、第一次淋雨的樣子。
    https://www.youtube.com/watch?v=hJsZe6anWPo


    當然除了靈長類幼獸外,也來看看其他哺乳類幼獸的第一次

    這是小犀牛第一次淋雨
    https://www.youtube.com/watch?v=WZcMVJa1ctw



    還有還有,這個是隻愛玩的小羊,一直玩溜滑梯
    https://www.youtube.com/watch?v=tKrGkB5Sy-k


    我看了這些影片之後,就有些體悟,不管大人小孩,就算不是人也一樣,大家都會好奇、想玩,期待第一次的不同,想要探索,願意探索。身為老師,你能夠把學生搞到失去好奇心,昏昏沉沉,彷彿死人一般,其實你也是很有才能啊。

    2015年10月4日

    進擊的Maker國際交流工作坊之展品紀錄

    這兩天去科教館參加了一個很棒的活動-「進擊的Maker。Let’s make it」國際交流工作坊。這個活動邀請好幾個國內外的博物館和社群來演講分享,還有辦一些實作課程。不過說是工作坊,我覺得比較像是研討會,然後內含工作坊那樣。

    看那些展品和課程,讓我眼界大開啊,又學到很多東西呢!

    這個是波士頓科學館的課程,波士頓科學館有Design Challenges的課程,參與者根據所給的題目,利用材料完成那個任務。像是比賽誰的船跑最快,誰的雪橇最快等等。Design Challenges的課程在網路上也提供了簡單的教案和給教育工作者的一些簡單資源。



    這個風洞裝置非常吸引我啊!因為以前我作過一個搞剛的垂直風洞,然後今天看到這個好簡單啊!
    風洞21


    結構是PVC管作的,然後用四通和L型轉接頭做成底層結構,再用泡綿管支撐上面的透明塑膠片,風力來源是循環扇上面覆紗網。
    風洞02


    外框有用壓克力和PVC管作固定,共作四邊
    風洞07


    塑膠片是用三組刺繡框圈起來
    風洞06


    丟進風洞玩的是用這些桌上材料做成的物體,像是降落傘、小花等。降落傘的傘繩是用毛根,底下是塑膠杯,調整用的重物則是科學館的圓形軟磁鐵,可以任意增減重量,也可以用滴管加水滴進杯中。

    風洞08


    目的是要讓那個物體在某個限定的高度漂浮

    在幾個博物館合作的網站LEARN X DESIGN有這個活動教案Soaring Satellites的說明。


    這個LEARN X DESIGN收錄的資料很豐富,可以花點時間去挖寶,找一些東西來玩,每一個都可以另外再寫文章來細講,這裡就先整理起來,有興趣的可以自己看。


    • Paper Circuit 紙電路,用銅箔膠帶、紙張、LED等,就能夠將科技與藝術創作結合
    • Dowels and Rubber Bands I 用木棍和橡皮筋做出一個高塔或是金字塔,技術好的,作一些巨大建築物都是可能的
    • Pterosaur Glider 了解翼手龍的解剖結構後,仿生做出滑翔的翼手龍,材料就用紙張和吸管就可以。參考資料來自國家地理的Pterosaur Glider Experiment
    • Tiny Drawings 顯微鏡不是只有看生物標本而已,這個活動是用顯微鏡去畫畫。用解剖顯微鏡看鉛筆繪畫時的筆觸變化,然後畫出一張小小的畫


    這些聚焦的就是在STEM(科學、技術、工程和數學)上面,用動手作去了解,而不只是單純的知識傳授。

    看這些活動,就讓我想到我們新竹市的科學奧林匹亞競賽或是遠哲科學競賽,其實作的就是這個方向。給定一些題目,讓學生在限定時間內,用限定材料達成。

    再來看看一些社群的作品

    這個部份有一些國內外的maker的作品,在科教館前些日子也有部份作品的課程
    原型工廠課程介紹01


    這個是webcam作的顯微鏡
    顯微鏡01

    用arduino製作的光度計
    IMAG0023


    比色管用的插槽是用雷切合板數個製成的
    光度計02


    這個小東西叫做openQCM,看似簡單,但可一點都不簡單哪。QCM是Quartz crystal microbalance,叫做石英晶體微天秤,可以用來偵測到分子的變化、液體黏度等等。這個openQCM完全開源,可以自己作一個,也可買套件來自作。

    原理是壓電效應,待測分子的吸附量會影響壓電晶體的頻率變化,感測的重量變化可以到0.1 奈克(nanograms),是分子的尺度了。
    openQCM_03

    上述這些資料都是開源的,可以從Hackteria.org找到資料。如果你跟我一樣愛科學,又喜歡作東作西,應該會跟我一樣很想把Hackteria講的各種生命科學的儀器都自己作一個啊。

    再來是偵測光度而發聲的構造
    聲頻02
    電路圖
    聲頻


    開放視鏡,是一種立體眼鏡,用來看平行視法的立體圖。照片不一定印出來,手機上自己拍自己組一張,也可以放在手機上面就來觀察。
    立體眼鏡_03

    TalkBox,簡單說就是把這個東西發出的聲音用風管灌到你嘴巴裡,再用你的嘴巴發聲。用talkbox去找youtube影片或搜尋中文網頁,就可以找到一些資料。改天實作一個再細細介紹。
    Talkbox_02

    Talkbox


    彈珠機械玩具
    彈珠台00


    一般看到這類型的玩具,有用壓條去製作的,這還是我第一次看到用風管和雷切木板就能製作的呢,還可以任意改變造型。應該看得出來彈珠是在兩條風管之間滑動吧?不是風管裡面喔。
    彈珠台


    真是佩服設計者的巧思,就用這樣簡單的結構就可以組出這個玩具了。我想這個對理化課應該有些幫助吧?
    彈珠台_03



    很迷你的3DP
    迷你3DP


    作者現在才高中生喔,也帶大家用瓦楞紙製作彎腰郵筒呢
    瓦楞紙模型


    創客與智高積木的結合
    智高積木


    製作光影棒,藉由閃爍LED加上人類視覺暫留現象,可以製作出空中秀字的效果,早就是已經有商品化的東西了,我倒是沒想過居然可以做成工作坊,因為我總是覺得要用複雜的材料才能做出,而且還要焊接什麼的,太麻煩了。但是賴國安老師和鄭之婷老師居然利用吸管、導電膠帶、杜邦線就解決掉大部分的問題了,還不用焊接耶,處理器用的是arduino namo。
    從他們的部落格CAI2可以看到他們提供的製作文件

    2D光棒