2013年2月4日

RS232初體驗--二氧化碳濃度計

去年年底學校採購了一個CO2濃度計,翻使用說明書的時候發現這個機器有RS232的輸出功能。


在此之前沒摸過RS232的什麼東西,只是約略知道這可以讓訊號送進電腦。要說類似的東西,大概就是像Arduino把訊號送進電腦那樣。如果可以把CO2計接上電腦,那之後的應用面就蠻多的了,因為可以長時間的紀錄。

不過面臨到第一個問題就是沒有連接線,得要自己作,還好說明書寫的很清楚,只要一個3.5mm的公接頭插進機器,中間的pin接到RS232  9pin接頭的pin 4  ,Ground接到  pin 2,然後pin 2和pin 5之間串聯一個2.2K電阻。這個不算太難,後來我買了一個公對母的連接線,把公頭拆了照著上面的作法來接就成了。

這要特別紀錄一下,剪下接頭之後,哪條線屬於哪個pin,一時還搞不清楚,因為9條線就有9種顏色,但是忽然間想起了電阻的顏色代碼,黑棕紅橙黃綠藍紫灰白,該不會就跟這有關係吧。用三用電表一測,啊!果然有關。pin 2是棕色、pin 4是橙色、pin5是黃色。

接好了線之後,下一步就是電腦要跟它連線了。

因為平常我用Linux,但是以後給學生用的話,可能還得用windows,所以兩個系統都得找軟體來相連。


Linux
linux下最簡單的方式就是用cat ,直接下指令   cat /dev/ttyS0 
如果還要設baud rate 為9600 ,那就用   stty -F /dev/ttyS0 9600 ,不過預設就是9600,所以不需要設。要看設定值,就用 stty -F /dev/ttyS0 

但是這樣有點麻煩,於是找了Serial port的軟體 cutecom來玩,設定還蠻簡單的,也很容易就從機器裡得到數值,但是有另外的問題出現了,那就是沒有時間戳記。對一個Date Logger 來說,沒有時間戳記就像是少了手腳一樣。

後來從這個論壇文章中找了一些指令來下,此外,這篇文件也寫了一些方法。
cat /dev/ttyACM1 | awk '{print strftime("%Y-%m-%d %H:%M:%S "), $0; }'>>com.txt
cat /dev/ttyACM1 | awk '{print strftime("%T"), substr($1,12,8); }'>>com.txt
awk '{print strftime("%T"), substr($1,12,8); }' /dev/ttyACM1>>com.txt

另外可開一個視窗,用這個指令來檢查
tail -f com1.txt


另外方法是用jpnevulator去接收,下面這樣是可以同時有timestamp,也有機器數值,但是輸出的文字檔案不夠漂亮,得再整理過才行。
jpnevulator -g --tty /dev/ttyS0 --read  > com1.txt


Windows

windows下的就簡單很多了,只要用Tera Term,照著設定就可以有Timestamp的Log檔囉。

Serial Port 的設定



Terminal要設定換行,不然就看不到歷史數據了



紀錄檔的設定



選擇存放位置,另外左下角的時間一定要打勾



這樣就有一系列的數據可供使用了
 

後來我找其他RS232的硬體時,看到我以前買的那台Garmin 60CSx也有RS232的輸出功能,只要找個Garmin connector,或者自己做一條,程式處理一下就可以把GPS的訊號和二氧化碳、溫度訊號結合在一起,那麼這樣也許可以有什麼發展呢!