Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

センサーの値をつぶやく(2)

2011-07-10に続く第2弾です。前回は,CdSの値をツィートしましたが,今回は温度センサー(LM60)が手に入ったので,Arduinoに接続された温度センサーの値を,シリアルポート接続でMacOSXに送り,Rubyを使ってツィートしてみました。

stew_gate.rb

2011-07-10に掲載

arduino2twitter.rb

# -*- 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

# StweGateを経由してtweet
token = "__Your Token__"
sg = StewGate.new(token)
puts str = "My room's temperature = #{value}"
sg.tweet(str)

cds.pde

int in0;
double temp;

void setup() {
  Serial.begin(9600);
}

void loop() {
  in0 = analogRead(0);
  in0 = map(in0, 0, 1023, 0, 5000); // (*1)
  temp = (in0 - 424) / 6.25;        // (*2)
  Serial.println(temp);
  delay(1000);
}

(*1)は,シリアル接続で得た値(in0:10bit)を0[mV]から5000[mV]の値にmap関数で対応させています。
(*2)は,LM60のデータシートによると,出力電圧と温度には以下の関係があるためです。
V_o=(+6.25[\mathrm{mV}/^\circ \mathrm{C}] \times T[^\circ \mathrm{C}])+424[\mathrm{mV}]

実行結果

以下のように実行します。

$ ruby -I. arduino2twitter.rb
My room's temperature = 27.52