「多摩美 – バイオメディアアート・ワークショップ 2011 第4回:ネットワークとの連動 – センサーの情報をTwitterでつぶやく | yoppa org」を参考にArduinoで取得したCdSの値をTweetしてみました。昔,Javaをやっていた時期もあったので,Processingを使うのはほとんど初めてでしたが,楽しく実験を進めることができました。
以下は,自分が使い慣れたRubyでも試してみようと思い作ったものです。Arduinoに接続したセンサーの値を,Rubyを使って手軽に取得しネットワークとも連携できるので,応用することで何か面白いことができそうです。
stew_gate.rb
StewGateへtweetをPOSTしてくれるクラスです。
# -*- coding: utf-8 -*- require 'net/http' require 'uri' class StewGate def initialize(token) @query_hash = { "_t" => token } end def tweet(msg) @query_hash["msg"] = URI.encode(msg) query_string = @query_hash.map{|key, value| "#{key}=#{value}" }.join("&") http = Net::HTTP.new('stewgate.appspot.com') http.post('/sg1/post/', query_string) end end if __FILE__ == $0 token = "__Your Token__" sg = StewGate.new(token) sg.tweet("test message.") end
arduino2twitter.rb
Arduinoからシリアルポート経由で送られてくるCdSの情報を取得しStewGateを経由してTwitter上にtweetします。StewGateを使用するときは事前に,ここからトークンを取得する必要があります。
# -*- coding: utf-8 -*- require 'serialport' require 'stew_gate' # Arduinoからシリアルポート経由で値を取得 sp = SerialPort.new('/dev/cu.usbmodem1d11', 9600, 8, 1, SerialPort::NONE) value = sp.readline sp.close # StewGateを経由してtweet token = "__Your Token__" sg = StewGate.new(token) str = "CdS's value = #{value}" puts str sg.tweet(str)
cds.pde
Arduinoで動作させるプログラムです。とても簡単に作成することができます。
int in0; void setup() { Serial.begin(9600); } void loop() { in0 = analogRead(0); Serial.print(in0); delay(100); }