前言
從很小的時候開始,我就莫名的喜歡「儀器」,喜歡可以測超音波的,可以測心跳,也喜歡溫度計、望遠鏡、放大鏡,光是溫度計,家裡就將近十種了。我一直想找一個可以記錄溫度的機器,也不只是為了做科展或專題,就只是為了做記錄。
曾經有想過用webcam拍攝數位溫度計的數字,然後再用軟體把數字辨別出來,這樣就可以有記錄溫度的功能了;後來甚至還買了專業級LabQuest的資料分析採集器,再加上溫度感應器、濕度感應器,這樣就將近30000元了(23000+1900+4500)。
可是我還是不滿意,我覺得應該有更平價的方式可以做到溫濕度的資料記錄功能。果然,最近在看我一直關注的arduino時,終於找到解決的方式了!
arduino,很多人一直以為我說的是android(手機的作業系統),其實它是一塊小小的板子。
可以做什麼呢?讓我引用Auduino.TW樂園的一段話
簡單的說,就是它可以寫程式進去,然後用來作互動溝通的電子作品,這個在互動藝術界裡已經佔有一席之地,很多藝術大學或是設計相關領域的學系裡已經開始開設課程在如何利用這個東西了。
甚至日本的大人的科學也出了一集用arduino做視覺暫留的玩具,不過它的板子改叫做japanino。我在幾年前就開始玩arduino,當然也買了那個japanino來玩,雖然板子名字不一樣,但基本能做的事情都一樣。
最近,我已經開始用它來做生物專題研究的東西,我有一組學生利用它來做跟光有關係的生物實驗,而在這裡我要介紹如何用arduino製作一個溫濕度記錄器,而總價只要商品級的1/10,甚至 1/20。
硬體
這次介紹的是直接和電腦連接的arduino溫濕度記錄器,價格合計:2290
Arduino UNO 1090
USB傳輸線 70
通用感測器連接線 兩條 30
SHT10數位溫度感測 780
感測擴充板V4.0 320
如果你有辦法去對岸的掏寶買原廠FlamingoEDA 电子设计艺术的商品,價格又會更低了。
所有材料就這樣而已,(中間那塊紅色板子就是Japanino,跟 arduino功能是一樣的)
軟體
需要的軟體有:
Arduino下載程式
Gobetwino
SHT10函式庫
溫濕度記錄程式
硬體組裝
硬體組裝的方式很簡單,先把感測擴充器裝在arduino上面,再把兩條連接線接到溫濕度感應器上
然後把連結SCK那條線接到感測擴充板的11號pin,DATA接到10號pin(顏色要插對)
插上USB連接線,硬體的部份就完成了
軟體設定
比較複雜的是軟體部分啦。
在windows下,你要先找到從裝置管理員那找出,接上arduino之後,電腦會把它當做是接在哪個連接埠,以我的例子來說,我是被電腦當做接在COM5這個埠
接下來就是打開下載的Arduino程式安裝溫濕度感應器的函式庫(SHT10函式庫)
把解壓縮出的SHT1x整個資料夾放在arduino安裝的資料夾裡的libaries
然後打開arduino.exe,先設定你用的板子是哪個,如果你買的是最新一款Arduino Uno那就要選Tools/Board/Arduino Uno,不過像我因為用的是Japanino,所以選的不是第一個,而是第三個。
再來是選擇連接埠,剛剛已經知道是接在COM5,所以就要在Tools/Serial Port/ 設定成COM5
接下來用file/open去開arduino資料夾裡的 \libraries\SHT1x\examples\ReadSHT1xValues\ReadSHT1xValues.pde
然後按下小圖式第6個的Upload,就可以把這個程式上傳到arduino的板子了
等到視窗下面出現Done Uploading,打開第七個圖式serial monitor,就可以看到感應器抓到的溫度和濕度了。
不過在serial monitor還要調整一個地方才不會顯示亂碼-右下角要調整成19200(雖然本來的程式設定的鮑率是38400 baud)
這樣其實已經達到用電腦顯示溫濕度的功能了,不過這樣還不夠好,因為缺少時間。這時我們還需要另外一個軟體的幫忙,就是Gobetwino,它可以用來接收arduino透過com埠傳來的訊號。
Gobetwino 的設定
打開Gobetwino,在settings/serial port先設定serial port為COM5,Baud rate為19200
- select command type選擇LGFIL(Log data to a file)
- Command name選LOGTEST
- File就選一個已經事先建立的空白文字檔
- Time stamp一定要打勾,才有時間的紀錄
接下來要回頭去重新改arduino裡頭的程式了,因為Gobetwino要接收特定的字串才能夠處理。以下的程式修改自原本的ReadSHT1xValues.pde,其實最重要的只有改紅字而已,你可以直接在溫濕度記錄程式下載我修改的
-------------------------------------------------------------------------------/**
* ReadSHT1xValues
*
* Read temperature and humidity values from an SHT1x-series (SHT10,
* SHT11, SHT15) sensor.
*
* Copyright 2009 Jonathan Oxer <jon@oxer.com.au>
* www.practicalarduino.com
*/
#include <SHT1x.h>
// Specify data and clock connections and instantiate SHT1x object
#define dataPin 10
#define clockPin 11
SHT1x sht1x(dataPin, clockPin);
void setup()
{
Serial.begin(38400); // Open serial connection to report values to host
//Serial.println("Starting up");
}
void loop()
{
float temp_c;
float humidity;
// Read values from the sensor
temp_c = sht1x.readTemperatureC();
humidity = sht1x.readHumidity();
// Print the values to the serial port
Serial.print("#S|LOGTEST|[");
Serial.print(temp_c, DEC);
Serial.print(";");
Serial.print(humidity);
Serial.println("]#");
}
-------------------------------------------------------------------------------
應該會出現這樣的訊息。
(以下的圖片,我的溫度和濕度位置都是相反的:78點多那個是濕度,24點多的是溫度,不過我上面寫的程式,溫度是在前面)
接著關掉serial monitor,開啟Gobetwino,出現這樣的訊息,就代表資料已經成功記錄在文字檔了
打開文字檔,就長這樣囖,有時間、濕度和溫度
用Excel繪製圖形
若要利用Excel繪製折線圖,先用excel開啟文字檔,選擇用分隔符號
用空格和分號來分隔
(下圖是我記錄我房間從凌晨到下午六點多的溫濕度變化,在下午2點多之後溫度就開始上升了)
這一篇教的是連接電腦的溫濕度記錄器,但如果要一個不用電腦的呢?也是可以的,不過要再多一些零件,像是要加SD卡擴充還有Real Clock的模組,未來我會再介紹。
ps. 三年前,我的學生做專題需要的紀錄器,我到現在才找到解決的方案,啊~~