- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
*概要 [#e2e25820]
時計の文字盤に12個のLEDを付けて、雨の降る時刻を教えてくれるシステムです。
- 1時間毎の天気予報データをxml形式でWEBから取得します。
- rubyでパースして、1時間毎に雨の予報かどうかを判定します。
- 雨の予報であれば、その時刻のLEDを点灯させます。
*外観 [#tde66cb0]
#ref(IMG_20140823_133109.jpg)
- 4時から6時に雨が降る予報を示しています
*回路図 [#x13394b1]
#ref(お天気時計回路図.PNG)
- シリアルパラレル変換ICである74HC595を2個使用して12個のLEDを制御しています
*プログラム [#program]
- cronで1時間に1度実行させます
#!/usr/bin/ruby
require 'rexml/document'
require 'open-uri'
require 'pi_piper'
# 市町村コードで天気予報データを取得(21202:大垣市)
url = "http://api.tenki.jp/api/blog/parts/point_clock/forecast_map_point_21202.xml"
doc = REXML::Document.new(open(url))
# 現在時刻の取得 JST(+9h)
now = Time.now + 9*60*60
# シリアルパラレル変換にGPIO 23,24,25pinを使用
$pins = {
:ser => PiPiper::Pin.new(:pin => 25, :direction => :out), # serial data
:sck => PiPiper::Pin.new(:pin => 24, :direction => :out), # shift register clock
:rck => PiPiper::Pin.new(:pin => 23, :direction => :out) # latch clock
}
def shift(key)
$pins[key.to_sym].on
$pins[key.to_sym].off
end
def reset
$pins.values.each{|pin| pin.off}
end
def send_bits(data)
printf "0x%04x\n",data
0.upto(15) do |byte|
if ((1 << byte) & data) == 0
$pins[:ser].off
else
$pins[:ser].on
end
shift(:sck)
end
shift(:rck)
end
puts now
bits = 0
for i in 1..11 do
t = now + 60*60 * i
str = t.strftime("%Y-%m-%d %H:00:00")
id = doc.elements['//forecast[public_datetime="'+str+'"]/weather/id']
h = t.hour % 12
if id then
wid = id.text.to_i
print h, "\t", wid, "\n"
# 強雨(3)または弱雨(4)ならLED点灯
if (wid == 3 || wid == 4) then
bits |= 1 << (15-h)
end
end
end
puts ""
reset
send_bits(bits)
- &ref(forecastclock.rb); ダウンロード用ファイル
*Ogaki Mini Maker Faire 2014 [#s96eca42]
- Ogaki Mini Maker Faire 2014に出展しました。
&ref(IMG_20141006_113532.JPG);
&ref(お天気時計.png,zoom,50%);
- Ogaki Mini Maker Faire 2014では、意外に多くの方から、「これ欲しい」「売り出さないの?」といった声をかけて頂きました。ハードウェアは初心者レベルですが、実用的な物が作ることができました。
*第1回みんなのラズパイコンテスト [#f3fb8904]
第1回みんなのラズパイコンテストでアイディア賞を頂きました。
- 第1回みんなのラズパイコンテストの結果 http://coin.nikkeibp.co.jp/coin/itpro-s/seminar/LIN/rpic15/
- お天気時計の紹介・作り方 http://itpro.nikkeibp.co.jp/atcl/column/15/030400035/030400004/
*NT京都2015 [#wb8e917f]
- NT京都2015に出展しました。 http://wiki.nicotech.jp/nico_tech/?NT%E4%BA%AC%E9%83%BD2015
- NT京都2015まとめ前編 2:39~2:50 http://www.nicovideo.jp/watch/sm26052763