« June 2009 | Main | August 2009 »

2009.07.25

ArduinoでLivedoor Reader未読数チェックのEthernet Shield版

Ethernet_shield

ArduinoにTCP/IPを喋らせるEthernet Shieldというのがあるのは知っていたが、ちょっと高いし「TCP/IPなんてパソコンに喋らせればいいじゃん」と思っていた。ただ、Livedoor Readerの未読数が100件以上のときにArduinoでLEDを点灯させるを作りながら、未読チェックのためだけにパソコンを起動させておくのも逆に面倒なので、習作のつもりでEthernet Shiled版を作ってみた。

Rubyなどでネットワークプログラムを書くのと比べ

  • 自身のIPと接続先のIPを指定する。DNSは引けない
    (接続先がレンタルサーバなどバーチャルホストの場合、HOSTヘッダを指定する)
  • サーバからのレスポンスはヘッダ部もボディ部も全て受け取り、自分で処理する
  • 1バイトごとに1パケットで送ってしまう。相手によっては、ちょっと顰蹙

といったところでハードルがある。ArduinoでTwitterにポストするのが人気なのは、レスポンスを処理するのに苦労しなくても、投げっぱなしで面白いものになるからだろう。

それはともかく、LEDを点灯するだけなので、

  • Livedoor Readerの未読が100以上であれば1を返すCGIをレンタルサーバ上に置き、
  • Arduino側はHTTPレスポンスを空行が来るまで読み飛ばし、ボディ部の最初が1のときLEDを点灯

というコードを書いた。小型ブレッドボードもEthernet Shieldにすっぽり収まっていい感じ。30分に1回チェックに行くだけなので「おお、快適!」という感じはしないが、パソコンを触る前に「パソコンを立ち上げても、どうせ見るニュースは少ないんだよな」と確認できるのは、ジワジワと手放せないものになってくるんじゃないだろうか。

ソースは相変わらずgistで公開中

http://gist.github.com/154718

Arduino側で指定しているldr.cgi?user=XX&thr=100の部分を書き換えれば、僕の借りているサーバ経由にはなるが、Arduino+Ethernet Shieldだけで動作チェックにはなる。ただし、あまり頻繁にやると僕がLivedoorとさくらインターネットから締め出されるので、豪快にやりたい方はご自身の環境でお願いします。

【AD】

一応、ネットワークプログラミングなので、飛んでいるパケットをWiresharkなどで見た方がデバッグがはかどると思います。変に再送しまくっても相手に迷惑ですし。

パケットキャプチャ入門―LANアナライザWireshark活用術
パケットキャプチャ入門―LANアナライザWireshark活用術 竹下 恵

おすすめ平均
starsネットワークを視覚的に理解
starsトラブルシューティングやケーススタディーがもう少しほしかった
starsWIRESHARKのリファレンス本
stars入門書です
stars自習用には申し分ない、中高生にもどうぞ。

Amazonで詳しく見る
by G-Tools

Ethernet Shieldから出ているパケットを見るために必要なミラーリング対応のHUB。自分のPCをサーバにする場合はサーバで見ればいいので不要ですが、外部のサーバとArduinoを喋らせる場合は必須。

アライドテレシス CentreCOM FS808TP V1 レイヤー2スイッチ(10/100M) RoHS版 0014R アライドテレシス CentreCOM FS808TP V1 レイヤー2スイッチ(10/100M) RoHS版 0014R

アライドテレシス 
売り上げランキング : 54632

Amazonで詳しく見る
by G-Tools

洋書で、かつ予約受付中だけど、凄く気になる。

Programming Interactivity: Unlock the Power of Arduino, Processing, and Openframeworks Programming Interactivity: Unlock the Power of Arduino, Processing, and Openframeworks
Joshua Noble

Oreilly & Associates Inc  2009-07
売り上げランキング : 5201

Amazonで詳しく見る
by G-Tools

| | Comments (0) | TrackBack (0)

2009.07.21

Livedoor Readerの未読数が100件以上のときにArduinoでLEDを点灯させる

前にArduinoからPC(MacBook)へのシリアル通信について書いた(その1その2)。例えばArduinoに接続した加速度センサの値を、PCに処理させたいときに使える。

逆に、PCからArduinoにシリアルで何かを送ってArduinoに仕事をさせることはできないかと考えてみた。

で、具体的な例として、Livedoor Readerの未読数を下記のURLから取得するスクリプト(Rubyとか)をPC上で定期的に走らせ

http://rpc.reader.livedoor.com/notify?user=<userId>

未読が100件以上であれば、PCからArduinoにUSB経由のシリアル通信で送信する。Rubyであれば、下記のように書ける。(ruby-serialportのインストールが必要)

port = "/dev/cu.usbserial-A7006SUC"
sp = SerialPort.new(port,9600,8,1,SerialPort::NONE)
sp.puts(1)
sp.close

Arduino側はSerial.read()で読み込むのだが、この関数は最初の1バイトしか読めないので、LEDを光らせたいときは「1」、消したいときは「0」を送信するということにした。

ソースは、いつも通りgithubに置いておく。

http://gist.github.com/150230

Rubyのスクリプトをcronで定期的に回せば、未読数が100件以上のときだけLEDが光る。LEDを消したいときはArduino の基盤上のリセットボタンを押せばよい。なぜかArduinoにUSBが刺さっているだけなくArduino IDEでシリアルモニタを開いていないと動いてくれないが、これは仕様だろうか。

もちろん、Livedoor Readerの未読数に限らず、PCで(もしくはRubyで)条件判定できるものであれば何でもよい。流行ものとしては

  • twitterのダイレクトメッセージに反応してみる
  • WebHookに反応してみる

なんてことが考えられるが、そもそもPCが稼働していなければいけないのは面倒だと思う。PCを常時起動しなくてもすむよう、Ethernetシールドを試してみようか。

【追記】

実際に試してみました。→こちら

Arduinoイーサネット・シールド Arduinoイーサネット・シールド

スイッチサイエンス 
売り上げランキング : 11038

Amazonで詳しく見る
by G-Tools

| | Comments (0) | TrackBack (0)

2009.07.19

Arduinoのシリアル出力をRubyで処理してみた

Arduinoネタは、まだまだ続く。

Arduinoの出力先としてProcessingもいいが、Rubyで取れるようにしておいた方が、ファイル出力したり、Webに流し込んだりが楽そう。高価なEthernet Shieldに頼らなくても済むし。

ところで、環境は最近買ったMac Book(Mac OS X 10.5.7)で開発環境もスッカラカンだったので、そこから始める。

rubygemsを1.2以降にする

ruby-serialport 0.7.0のREADMEを見たらgemでインストールする方法が書いてあるのだが、Mac OS X(10.5.7)に最初から入っていたgem 1.0.1でインストールしようとしたら、1.2以降を要求されたので、まずgemのアップデートから始める。

sudo gem install rubygems-update

上記コマンドで1.3.4になった。

もしgemが入っていなかったら(gem -vと打って何も表示されなかったら)MacPortsなどでインストールする必要があるが、ここでは割愛。

ruby-serialportのインストール

多分、これでOKだと思うのだが

sudo gem install ruby-serialport

なぜかうまくいかなかったので、RubyForgeから.gemをローカルに落としてきて

sudo gem install ruby-serialport-0.7.0.gem

とやったらOKとなった。

Rubyでシリアルで取得した値をそのまま表示

こちらを参考(というか、ほとんどそのまま)

http://www.ok.kmd.keio.ac.jp/ruby/?p=37

ただ取得した文字列を表示するだけなのでArduinoのIDEと同じだが、センサの値をrubyのライブラリで処理できるのは大きな進歩。

RubyとArduinoのソースはgistに置きました。

http://gist.github.com/149614

Arduinoをはじめよう Arduinoをはじめよう
船田 巧

オライリージャパン  2009-03-27
売り上げランキング : 2460

Amazonで詳しく見る
by G-Tools

| | Comments (0) | TrackBack (0)

2009.07.18

Livedoor Readerに最適化したブログの書き方

ブログをそのまま表示した場合とRSSリーダで表示した場合のレイアウトは当然だが異なる。Arduino関係で、はじめて自分でYouTubeにアップした画像を貼ってみて思ったのだが、RSSになる時点で削除されてしまうタグもある。そういうわけで、こういった点を意識して書いた方がいいかな、と思う点を列挙してみる。

1.【動画あり】などテキスト以外のコンテンツがあることを明記する

ブログによっては静止画も表示されなかったりするが(これは削除されているのではなくReferを見ているからですね)、比較的寛容なココログでもYouTubeのエンベッドはRSSから削られていた。FLashも同様だろう。

ブログで言いたいことのほとんどが動画に込められているときなどは、ローテクだが【動画あり】とか本文に書くしかなさそう。

2.表はHTMLテーブルではなく画像として表示

これは比較的よく言われていることだと思う。ちなみにココログでは普通にHTMLタグも全て出力されているように見えるが、他人のブログで大変なことになっているのを見ることが多いので。

ところで改行すら変なことになっているブログも見かけるが、そういうブログサービスを使っている人は、やめて別のところを探すのが一番早いだろう。

3.画像があるなら最初に持ってくる

僕も多用しているが、Livedoor Readerはショートカットで次のエントリに移動できてしまうので、テキストが1ページ分以上あって、その下に画像が貼られていると、画像まで見てもらえる機会は少ない。そんなわけで、見てもらいたい画像は、できるだけ上に表示させた方が良い。

同じような理由で、広告を貼っている人は広告を上に持ってきた方が良いと思うが、個人的には歓迎しかねる。

4.あまり高さのある画像を使わない

上とも関連するが、Livedoor Reader自体のヘッダ、本文のタイトルが表示されると残された領域は僅かである。僕の環境(1280x800でFirefoxにナビゲーションツールバーとブックマークツールバーを表示)で縦300pxの画像がギリギリである。

じゃあ300pxの画像しか貼っちゃいけないとか、上300px分だけで面白さの伝わる画像を貼るべきだとまでは言わないが、意識しておくと「こんなはずじゃ」とならずにすむ。

ちなみに世の中には、上300pxだけを表示させて興味を掻き立てるのが上手なチラリズムの権化みたいな人が、きっと存在するのだろうと思う。

追記

kwoutというサービスは、チラリズム生成に向いていると思う。

ビジュアライジング・データ ―Processingによる情報視覚化手法
ビジュアライジング・データ ―Processingによる情報視覚化手法増井 俊之 (監訳) 加藤 慶彦

おすすめ平均
stars可視化の一つの手段としてProcessingの概要を知りたい人に
stars情報の可視化入門
stars目からウロコが。。。
stars日本人の本より読みやすい
stars既存のマッシュアップAPIを使うのとは違ったWeb情報の楽しみ方

Amazonで詳しく見る
by G-Tools

| | Comments (0) | TrackBack (0)

2009.07.17

Arduinoで加速度センサを使ってみた

Arduinoネタが続く。

光センサで明るさを検出して「何か」を起こすのもよいが、動きを検出するのも面白そうなので加速度センサを買った。正直、どんなものかわからなかったのだけど、まあ1000円だし。

センサのX軸、Y軸、Z軸の出力をArduinoのアナログインプットの0、1、2に繋ぎ、USB経由でPCにデータを送り込む。Arduinoのシリアルモニタで生データを見てもいいが、Processでシリアル通信をグラフィックに表示させるサンプルを書いてみた。ブレッドボード上に刺したセンサを傾けたり振り回すと画面上の赤い丸が動く。【動画はこちら】

これって加速度というの?というのが正直な感想。センサを動かさなくても微妙に動いていたり、生データのままでは使いにくそうだ。WiiやiPhoneでは相当キャリブレーションやバッファリングをしているのだろう。

主に参考にしたのはこちら。

建築発明工作ゼミ2008: Arduino-Processing シリアル通信1
はてなユーザーの評価  livedoorユーザーの評価

ArduinoとProcessのソースは下記のgistに置いた。USBのデバイス名はArduino IDEのTool/Serial PortでSerial Monitorに出力されるデバイス名に書き換えること。

http://gist.github.com/148434

さて、これで何を作ろう。

| | Comments (1) | TrackBack (0)

2009.07.11

Arduinoで光センサを使ってみた

Arduino_01

いつか、作ってみたいものができたら始めよう、と思っていたarduinoですが、作りたいものも思いつかないまま見切り発車してみました。

Amazonでも買えるキットにはArduino本体に加え、LEDや光センサ、スイッチ、ブレッドボードまで入っていて「Arduinoをはじめよう」に書かれていることを一通りは試せます。写真は手前のCdSセルという光センサの値に応じてLEDの点滅速度が変わるというもの。

センサの値をEthernetシールドからtwitterに投稿するのが流行ってますが、これ単体でもセンサの値をUSB経由でPCに送ってきて、それだけでも色々なものが作れそう。

Arduinoをはじめようキット
Arduinoをはじめようキット
スイッチサイエンス 
売り上げランキング : 945


Amazonで詳しく見る
by G-Tools

| | Comments (0) | TrackBack (1)

2009.07.04

感動する磁石(夏の無駄遣い)

最近、磁石モノが気になってしょうがない。そもそもは、USBハブがぶら〜んとしているのが好きではなく、磁石で固定されたら気持ちいいだろうなと思って探してみたら、いいのがある。

ELECOM 7ポートUSBハブ U2H-Z7SBK
ELECOM 7ポートUSBハブ U2H-Z7SBK
おすすめ平均
stars使いやすいUSBタブ
stars
starsポートの少ないノートパソコンの味方
stars単純に良い品
stars多ポートは快適

Amazonで詳しく見る
by G-Tools

一番の魅力は言うまでもなく好きな位置にガッチリ固定できることだが、色もデザインも無骨でいい感じ。これ使いたさにスチールの家具を選んでもいいかもしれない。

KING JIM テプラPROテ-プ マグネット白/黒文字 SJ24S KING JIM テプラPROテ-プ マグネット白/黒文字 SJ24S

キングジム 
売り上げランキング : 21488

Amazonで詳しく見る
by G-Tools

うちの職場では見かけないが、ホワイトボードをスケジューラにして人の名前を磁石で貼付けているのを見たことがある。あれって、几帳面な人がゴム磁石にテプラを貼ってたんだろうと思っていたら、なんと最初からマグネットが付いているテプラが売られていた。

パナソニック マグネットタップセット(アダプタ付き) WH-6601WP パナソニック マグネットタップセット(アダプタ付き) WH-6601WP

Panasonic 
売り上げランキング : 89485

Amazonで詳しく見る
by G-Tools

手軽に切り離せることも磁石の魅力。そんなわけで頻繁に付け替えることの多い掃除機とかアイロンにどうだろう。あんまり安くないので業務用なのだとは思うが。

マグネットブレス LMN-11B マグネットブレス LMN-11B

ライト精機 
売り上げランキング :

Amazonで詳しく見る
by G-Tools

これは、ちょいとマニアックだろうか。まあ、ネジがなくなりそうな雑多な作業場では嬉しいかもしれない。

マグネット ハンガー マグネット ハンガー

MonotaRO 
売り上げランキング : 78311

Amazonで詳しく見る
by G-Tools

最後はこれ。どう使うのかは、クリックして確認してくだされ。もっと磁石が好きになること間違いなし。

| | Comments (0) | TrackBack (0)

« June 2009 | Main | August 2009 »