SparkFun USB Weather Board V3 を買ってみた


 前回の記事で、USB-RH で取得した室温と相対湿度を ZABBIX で記録する件を紹介したが、ここまで記録したらいっそ自宅の気象情報を取りたくなってきた。そこでちょっと調べてみると、SparkFun から出ている USB Weather Board を使うと気温、相対湿度、気圧を取得でき、さらにオプションの Weather Meters を使えば風向・風力および降水量を取得できることが分かった。Strayberry Linux でも取り扱っているが、円高の昨今、サポートさえ気にしなければ個人輸入した方が安くつくかと思う。今回はとりあえず USB Weather Board のみ買ってみた。

USB Weather Board V3
USB Weather Board V3

 いろいろな Tips も載っているので、普段マニュアルを読まない人もデータシートには目を通した方がいいと思われる。

 そんな USB Weather Board だが、接続したら Power の赤 LED が点灯後、Status の緑 LED が 3 回点灯すれば正常に稼働していると判断してよい。この後、接続元のホストからは USB シリアルデバイスとして見える。Windows で接続した場合は ここからドライバをダウンロードすればよい。Linux の場合は、Device DriversUSB supportUSB Serial Converter supportUSB FTDI Single Port Serial Driver が組み込まれていればよい。ディストリビューションによっては、

modprobe ftdi_sio

でドライバが組み込まれる。ログに

usb 5-2: new full-speed USB device number 8 using uhci_hcd
usb 5-2: ep0 maxpacket = 8
usb 5-2: default language 0x0409
usb 5-2: udev 8, busnum 5, minor = 519
usb 5-2: New USB device found, idVendor=0403, idProduct=6001
usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 5-2: Product: FT232R USB UART
usb 5-2: Manufacturer: FTDI
usb 5-2: SerialNumber: A600****
usb 5-2: usb_probe_device
usb 5-2: configuration #1 chosen from 1 choice
usb 5-2: adding 5-2:1.0 (config #1, interface 0)
ftdi_sio 5-2:1.0: usb_probe_interface
ftdi_sio 5-2:1.0: usb_probe_interface - got id
ftdi_sio 5-2:1.0: FTDI USB Serial Device converter detected
usb 5-2: Detected FT232RL
usb 5-2: Number of endpoints 2
usb 5-2: Endpoint 1 MaxPacketSize 64
usb 5-2: Endpoint 2 MaxPacketSize 64
usb 5-2: Setting MaxPacketSize 64
usb 5-2: FTDI USB Serial Device converter now attached to ttyUSB0
drivers/usb/core/inode.c: creating file '008'

などと表示され、/dev/ttyUSB* が出ていればok。

 データ取得だが、普通にシリアルポートに接続すればよい。Windows の場合は TeraTerm で COM: ポートを指定するだけでデータを読み出すことができる。Linux の場合はシリアルコンソールを使うことになるが、うちでは C-Kermit を使ってみた。デバイスファイルと転送速度を指定してから接続すればよい。

C-Kermit 8.0.211, 10 Apr 2004, for Linux
 Copyright (C) 1985, 2004,
  Trustees of Columbia University in the City of New York.
Type ? or HELP for help.
(/root/) C-Kermit>set line /dev/ttyUSB0
(/root/) C-Kermit>set speed 9600
/dev/ttyUSB0, 9600 bps
(/root/) C-Kermit>set carrier-watch off
(/root/) C-Kermit>connect

 無事接続できれば、デフォルトの設定では 2 秒ごとにデータを計測する。

SHT15 temperature:		67.86 deg F 	    
SHT15 humidity:  		26% 		    
SHT15 dewpoint:  		32.15 deg F 
BMP085 pressure:		1225.62 mbar 	FAIL
BMP085 temperature:		69.84 deg F 	    
TEMT6000 light:  		1.3% 		    
Weather meters wind speed:	0.0 MPH 	FAIL
Weather meters wind direction:	-1 degrees 	FAIL
Weather meters rainfall:	0.00 inches 	FAIL
External power:  		0.00 Volts 	FAIL

 計測中は Status の緑 LED が点灯しているので、データを正しく取得できているかボードを見ただけで判定できるだろう。

測定中のUSB Weather Board
測定中のUSB Weather Board

 ここで問題がいくつかある。一つは温度表示が摂氏ではなく華氏であること、もう一つは気圧が明らかにおかしいこと。いずれも設定で何とかできる。Ctrl + Z を送信すると、設定画面に移行する。

SparkFun USB Weather Board V3 firmware version 1.2
free RAM: 138 bytes

1. Data format (ANSI)
2. General units (English)
3. Sample rate (5)
4. Pressure units (mbar)
5. Pressure type (relative)
6. Station altitude (1596 meters)
7. Baud rate (9600 baud)
8. Zero rain counter
9. Weather Meters attached (yes)
X. Exit (don't save changes to EEPROM)
S. Save (save changes to EEPROM)

 上記は SparkFun のサイトにあるファームウェア 1.2 を適用しているが、1.0 でも設定項目は変わらない。まず、華氏を摂氏にするには、2 を押してから 2 を選択する。これで表示が摂氏になる。

1. English
2. SI (metric)

 次に気圧が 1,200 hpa を超えている問題だが、これは USB Weather Board に設定された現在の高度を補正し、海抜0mでの気圧表示になっているのが原因になる。問題は、現在の高度のデフォルトが 1,596m になっていることなので、これを現在地の海抜に変更するか気圧の高度補正を外せばよい。現在地の海抜はマピオンか Google Earth で調べられる。(ただし、両者で微妙に差はある) 調べた海抜に USB Weather Board を設置している対地高度を加えた値を 6. Station altitude に設定すればいい。または、高度補正を外すには、5. Pressure typeabsolute に設定する。どちらかの設定で正しい数値が表示されるようになる。最後に S で設定を保存すれば上記設定が反映されたものが表示されるようになる。

SHT15 temperature:		20.30 deg C 	    
SHT15 humidity:  		26% 		    
SHT15 dewpoint:  		0.19 deg C 
BMP085 pressure:		1015.53 mbar 	    
BMP085 temperature:		21.37 deg C 	    
TEMT6000 light:  		1.3% 		    
Weather meters wind speed:	0.0 m/s 		FAIL
Weather meters wind direction:	-1 degrees 	FAIL
Weather meters rainfall:	0 mm 		FAIL
External power:  		0.00 Volts 	FAIL

 こんな感じで設定すれば希望のデータがとれるようになる。一通り堪能したらあとはスクリプトで処理しやすいように 1. Data formatCSV にしておくといいだろう。